本文作者:郭雨杰,阿里云智能技术专家。
Prometheus 集成的 50 多款云产品中,RocketMQ 在可观测方面实现了非常完善的功能,是一个特别具有代表性的云产品。
01RocketMQ如何接入Prometheus
RocketMQ 诞生于阿里内部的核心电商系统,是业务消息的首选 MQ 平台。上图是 RocketMQ 5.0 的系统全貌,在接入层、核心组件和底层运维方面做了非常大的改进,具有功能多样、高性能、高可靠、可观测、易运维等众多优势。
Metrics、Tracing、Logging 是可观测能力的三大支柱。
1. Metrics:RocketMQ 以 Prometheus+Grafana 这种在开源领域广泛使用的产品组合为用户提供了开箱即用的 Dashboard。指标涵盖了消息量、堆积量、各阶段耗时等,该大盘结合 RocketMQ 团队在消息领域多年的研发和运维经验打磨的最佳实践模板,并提供了持续的迭代更新能力。
2. Tracing:RocketMQ 首次引入了 OpenTelemetry tracing 的开源标准,按照消息的维度,重新组织了抽象的 span 拓扑。
3. Logging:Logging 方面主要进行了一些客户端日志的标准化处理,能够更简单方便地利用日志定位问题。
RocketMQ 的所有可观测性数据都是围绕一条消息在生产端、服务端处理、消费阶段展开。从消息的生命周期图上,可以看到一条消息从 Producer 开始发送到 MQ server 接收到的耗时;如果是定时消息根据 Ready time 可以知道定时的时间;从 Consumer 的角度上看,可以知道消息从开始拉取到抵达客户端的网络耗时;从抵达客户端的时间到开始处理消息的等待处理资源耗时;从开始处理消息到最后返回的 ACK 的处理耗时。消息在生命周期的任何一个阶段,都可以清晰地被定义并且被观测到,这就是 RocketMQ 可观测的核心理念。
RocketMQ 团队贡献的 RocketMQ exporter 已被 Prometheus 官方的开源 Exporter 生态所收录,提供了 Broker、Producer、Consumer 各个阶段丰富的监控指标。Exporter 基本逻辑是通过在内部启动多个定时任务周期性地从 MQ 的集群上拉取数据,然后将数据规范化后通过端点暴露给Prometheus。MQAdminExt 类封装了 MQAdmin 暴露的各种接口逻辑。从结构上看,RocketMQ 的 Exporter 是站在第三方视角的观察者角色,而所有的指标来自于MQ 集群的内部。