开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 18 天,点击查看活动详情
本文将介绍最新集成的Apache APISIX 和Apache RocketMQ rocketmq-logger 插件的特性和使用。通过该插件,您可以在使用Apache APISIX 时更方便地连接到RocketMQ 集群。
自2016年Apache RocketMQ受到全球开发者关注以来,已成长为电商、金融、教育、科技等多个领域的技术中台核心数据库。
据不完全统计,国内超过70%的用户(包括金融、保险、财富、券商等各领域百强企业)在核心应用链路上规模部署了Apache RocketMQ,其中全球前5云厂商均有还推出了关于 Apache RocketMQ 的云产品服务。
除了核心业务消息处理的常规应用外,大量公司正在使用 Apache RocketMQ 进行日志处理和分析。
插件介绍
为了满足企业用户对日志处理的需求,Apache APISIX 发布了rocketmq-logger基于Apache RocketMQ 的日志插件,支持将API 接口请求日志以JSON 格式推送到RocketMQ 集群。
该插件使用RocketMQ原生支持的TCP协议,通过OpenResty提供的非阻塞TCP socket API实现高并发和高性能访问。
此外,使用该rocketmq-logger插件发送的 API 日志格式与其他日志插件相同,支持批量日志记录、自定义日志格式、重试支持和其他功能。
此外,该插件还支持TLS加密传输,以及配置AK、SK认证接入Apache RocketMQ,满足用户对数据安全的需求
如何使用
启动RocketMQ
使用以下命令在本地启动RocketMQ,具体参考官方文档。
wget https://dlcdn.apache.org/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zipunzip rocketmq-all-4.9.2-bin-release.zipcd rocketmq-4.9.2/nohup sh bin/mqnamesrv &nohup sh bin/mqbroker -n 127.0.0.1:9876 -c conf/broker.conf &
在 Apache APISIX 中启用插件
在生产环境中为给定路由启用rocketmq-logger插件只需要一个命令。
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"rocketmq-logger": {
"nameserver_list" : [ "127.0.0.1:9876" ],
"topic" : "test",
}
},
"upstream": {
"nodes": {
"127.0.0.1:1980": 1
},
"type": "roundrobin"
},
"uri": "/hello"
}'
启用插件后rocketmq-logger,对端点的任何请求URI/hello都会将日志推送到 Apache RocketMQ。
插件元数据设置
当然,如果你在使用过程中不想使用默认的日志格式,你也可以为插件设置元数据。
调整日志格式后,您需要向端点发送请求/apisix/admin/plugin_metadata以更新元数据,如下面的代码所述。
curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/rocketmq-logger -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"log_format": {
"host": "$host",
"@timestamp": "$time_iso8601",
"client_ip": "$remote_addr"
}
}'
禁用插件
如果您不再使用该插件,您可以rocketmq-logger通过从插件配置中删除适当的 JSON 配置来禁用该插件。这个过程不需要重启服务,输入下面的代码会立即生效。
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"methods": ["GET"],
"uri": "/hello",
"plugins": {},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'