设计理念
中间件类监控设计体系的架构设计如图10-1所示。
消息发送者、消息消费者在与RocketMQ集群进行交互时会收集相关的统计信息并存储在内存中,一般都会采用滑动窗口机制避免统计数据在内存中不断积压,造成内存溢出。
监控采集客户端可以定时将RocketMQ集群中存储的指标抽取到一个存储介质中,通常会使用时序数据库,例如InfluxDB,监控界面从存储介质中查询数据后进行可视化展示。
实现监控系统需要定义监控指标,即指定服务端需要采集哪些数据,开源的RocketMQ当前版本主要采集如下数据。

Figure 1. 图10-1 监控设计架构
1)TOPIC_PUT_NUMS:以主题为维度统计消息写入数量。 2)TOPIC_PUT_SIZE:以主题为维度统计消息写入字节数。 3)GROUP_GET_NUMS:以消费组为维度统计消息获取条数。 4)GROUP_GET_SIZE:以消费组为维度统计消息获取字节数。 5)SNDBCK_PUT_NUMS:以消费组为维度统计重试消息发送数量。 6)BROKER_PUT_NUMS:以集群为维度统计消息写入条数。 7)BROKER_GET_NUMS:以集群为维度统计消息获取条数。 8)GROUP_GET_LATENCY:以消费组为维度统计消息拉取延迟时间。