如何打造一款 Apache APISIX 插件

本文详述了一位前端工程师开发 Apache APISIX 'file-logger' 插件的全过程,包括功能介绍、开发实现、验证测试等步骤。该插件用于自定义日志格式,支持将请求和响应数据写入指定文件,方便监控和调试。
摘要由CSDN通过智能技术生成

在过去的几个月,社区用户为 Apache APISIX 添加了许多插件,丰富了 Apache APISIX 的生态。从使用者的角度而言,更多样化的插件出现无疑是一件好事,它们在完善 Apache APISIX 高性能和低延迟的基础之上,满足了使用者对于网关的更多期望,即 “一站式”和“多功能”。

社区的贡献者们是如何为 Apache APISIX 开发插件的呢?Apache APISIX 博客上的文章似乎都没有详细讲述过开发插件的流程。那么这次我们换一个视角,从插件开发者的角度出发,一起来看看一款插件诞生的全过程吧!

本篇文章记录了一个没有后端经验的前端工程师开发 file-logger 插件的过程。在详细说明实现过程之前,先向大家简单介绍下 file-logger 的功能。

功能介绍

file-logger 支持使用 Apache APISIX 插件元数据生成自定义的日志格式,用户可以通过 file-logger 插件将 JSON 格式的请求和响应数据附加到日志文件中,也可以将 Log 数据流推送到指定位置。

试想,在监控某一个路由的访问日志时,很多时候我们关注的不仅是某些请求和响应数据的值,还希望将日志数据单独写入到指定的文件中。这时就可以使用 file-logger 插件来帮忙实现这些需求。

不支持在 Docs 外粘贴 block

具体实现过程中我们可以通过 file-logger 将日志数据单独写入指定的日志文件,简化监控和调试的过程。

开发实现过程

介绍完 file-logger 的功能之后,大家也算对这个插件有了更多的认识。下面为大家详细讲解一下,没有服务端经验的我是如何从 0 开始为 Apache APISIX 完成该插件并添加相应测试的。

确定插件名称及优先级

打开 Apache APISIX 插件开发指南,按照先后顺序需要确定以下几项:

  1. 确定插件分类。
  2. 确定插件优先级,并更新 conf/config-default.yaml 文件。

因为此次开发的 file-logger 属于日志类型的插件,所以我参考了Apache APISIX 已有的日志插件的名称和排序,将 file-logger 放到了这里:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccxmaesp-1644982750516)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=YzY3MDllNzU1Mzc2YTViMjQzMWQ2YjczNmQyYjViZGRfVzhGY1U1QkhQQTNwZzBxSVhiRnByRVp3N2piaWxuMVZfVG9rZW46Ym94Y25qbzdaZmptOHo4RGVXWFJxSG5FNXhjXzE2NDQ5ODIzNTA6MTY0NDk4NTk1MF9WNA)]

咨询了其他插件的作者和社区的热心成员之后,最终确认了该插件的名称 file-logger 和优先级 399

需要注意,插件的优先级与执行顺序有关,优先级的值越大,执行越靠前。而插件名称的排序与执行顺序无关。

创建最小可执行插件文件

确认好插件名称和优先级后,便可在 apisix/plugins/ 目录下创建我们的插件代码文件,这里有两点需要注意下:

  1. 如果是直接在 apisix/plugins/ 目录下直接创建插件代码文件,就无需更改 Makefile 文件。

  2. 如果你的插件有新建自己的代码目录,那么就需要更新 Makefile 文件,详细步骤可参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

API7.ai 技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值