Apache RocketMQ 自 2016 年走入寰球开发者视线以来,目前已倒退成为电商、金融、教育、科技等多畛域技术中台的外围数据底座。

据不齐全统计,国内用户(包含金融、保险、财产和券商等各畛域百强企业)超过 70% 的企业都在外围利用链路上规模化部署了 Apache RocketMQ,包含寰球 5 大云厂商也纷纷上线了无关 Apache RocketMQ 的云产品服务。

除了惯例利用于外围业务音讯的解决,也有十分多的公司开始应用 Apache RocketMQ 进行日志解决与剖析。

插件介绍

为了满足宽广企业用户对于日志解决的需要,Apache APISIX 公布了基于 Apache RocketMQ 的日志插件 rocketmq-logger,反对将 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"    }}'

禁用插件

如果您不再应用该插件,可通过在插件配置中删除相应的 JSON 配置来禁用 rocketmq-logger 插件。该过程无需重新启动服务,输出下方代码即可立刻失效。

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       }   }}'

想要理解更多实际?

12 月 26 日(周日),Apache APISIX 社区将联结 Apache RocketMQ 社区为大家带来更多实际内容的线上分享。想要理解更多利用实际内容,一起来参加此次的线上 Meetup 吧!泛滥精彩议题内容等你来看。

入群交换

扫描下方二维码,退出 Apache APISIX 线上直播交换群,理解更多社区动静!