写点什么

再下一城!两大社区携手打造 API 日志监控新利器

  • 2021 年 12 月 16 日
  • 本文字数:1532 字

    阅读完需:约 5 分钟

再下一城!两大社区携手打造 API 日志监控新利器

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 线上直播交流群,了解更多社区动态!



用户头像

Github:https://github.com/apache/apisix 2021.06.02 加入

Apache APISIX 是一个云原生、高性能、可扩展的微服务 API 网关。它是基于 OpenResty 和 etcd 来实现,和传统 API 网关相比,Apache APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 API 管理。

评论

发布
暂无评论
再下一城!两大社区携手打造 API 日志监控新利器