如何打造一款 Apache APISIX 插件

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

在过去的几个月,社区用户为 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 文件,详细步骤可

### 集成和配置 Apache APISIXAPISIX Dashboard Apache APISIX 是一个高性能的 API 网关,而 APISIX Dashboard 是用于管理其配置的可视化工具。为了实现两者的集成与配置,需完成以下步骤: #### 1. 部署 Apache APISIX 实例 在集成之前,需要确保 Apache APISIX 已经部署完成。可以通过以下方式部署: - **本地部署**:适用于开发和测试环境,可使用 Docker 或源码安装。 - **远程部署**:适用于生产环境,通常通过服务器集群部署 APISIXApache APISIX 的配置文件通常位于 `conf/config.yaml`。在部署完成后,确保 APISIX 正常运行,并能够通过网络访问其管理 API。 #### 2. 配置 APISIX Dashboard APISIX Dashboard 需要与 Apache APISIX 实例通信,因此需要配置 Dashboard 的连接信息。具体步骤如下: - **修改 Dashboard 的配置文件**:通常在 `.env` 文件中配置 APISIX 的地址和认证信息。 ```env # 示例配置 VUE_APP_API_URL=http://<APISIX_IP>:<PORT> VUE_APP_API_KEY=<API_KEY> ``` 其中 `<APISIX_IP>` 是 Apache APISIX 的 IP 地址,`<PORT>` 是 APISIX 管理 API 的端口(默认为 `9080`),`<API_KEY>` 是 APISIX 的管理密钥。 - **环境变量配置**:如果项目支持通过环境变量配置,可以直接设置环境变量以覆盖默认配置。 #### 3. 验证网络连通性 确保 APISIX Dashboard 可以访问 Apache APISIX 的管理 API。可以通过以下方式验证: - 使用 `curl` 命令测试 APISIX 的管理 API 是否可达: ```bash curl http://<APISIX_IP>:<PORT>/apisix/admin/routes ``` 如果返回 JSON 格式的路由信息,则表示 APISIX 管理 API 可用。 - 检查防火墙设置,确保 Dashboard 所在的服务器能够访问 APISIX 的管理端口。 #### 4. 启动 APISIX Dashboard 完成配置后,启动 APISIX Dashboard。通常使用以下命令启动: - **开发环境**: ```bash npm run dev ``` - **生产环境**: ```bash npm run build npm run start ``` 启动完成后,通过浏览器访问 Dashboard 的地址(默认为 `http://localhost:9000`),并使用配置的 APISIX 管理密钥登录。 #### 5. 使用 APISIX Dashboard 管理 APISIX 登录 Dashboard 后,可以使用以下功能管理 Apache APISIX: - **API 管理**:创建、编辑和删除 API 路由,支持多种协议和插件配置 [^3]。 - **插件管理**:通过界面配置身份验证、限流、日志记录等插件 [^3]。 - **监控与日志**:实时查看 API 的运行状态和性能指标 [^3]。 - **用户权限管理**:支持多用户和权限管理,确保不同角色的用户只能访问其权限范围内的资源 。 #### 6. 安全配置 在生产环境中,建议采取以下安全措施: - **HTTPS 配置**:为 APISIX Dashboard 和 Apache APISIX 启用 HTTPS,确保通信安全。 - **认证机制**:配置 API 密钥或 OAuth 认证,限制对管理 API 的访问。 #### 7. 参考官方文档 由于 Apache APISIX 和 Dashboard 的配置可能随版本更新而变化,建议参考最新的官方文档以获取准确的配置信息 [^2]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

API7.ai 技术团队

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

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

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

打赏作者

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

抵扣说明:

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

余额充值