prometheus监控RocketMQ的方法
RocketMQ 官方提供了 rocketmq-exporter,通过连接 NameServer 拉取整个集群的 Broker、Topic、Consumer Group 指标,暴露为 Prometheus 格式。
只需部署一个 Exporter 实例,就能监控整个集群(所有 Broker),不需要每台机器都装。
如是是多集群监控,需要第一个集群对应一个rocketmq-exporter。
一、部署 Exporter
未开启 ACL,部署方式
docker run -d \ --name rocketmq-exporter \ -e JAVA_OPTS="-Xms256m -Xmx256m" \ -e "rocketmq.config.namesrvAddr=192.168.1.1:9876;192.168.1.2:9876;192.168.1.3:9876" \ -p 5557:5557 \ --restart=always \ -e TZ=Asia/Shanghai \ #apache/rocketmq-exporter swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/slpcat/rocketmq-exporter:latest已开启 ACL,部署方式
docker run -d \ --name rocketmq-exporter \ -e JAVA_OPTS="-Xms256m -Xmx256m" \ -e "rocketmq.config.namesrvAddr=192.168.1.1:9876;192.168.1.2:9876;192.168.1.3:9876" \ -e "rocketmq.config.accessKey=YourAccessKey" \ -e "rocketmq.config.secretKey=YourSecretKey" \ -e "rocketmq.config.enableACL=true" \ -p 5557:5557 \ --restart=always \ -e TZ=Asia/Shanghai \ #apache/rocketmq-exporter swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/slpcat/rocketmq-exporter:latest镜像可根据自己的的下载方式更换
备注:enableACL=true 这个参数必须加!默认是 false,即使你传了 accessKey/secretKey 也不会生效,
Exporter 会以无认证方式连接 Broker,然后报 username cannot be null
二、 验证
查看启动日志
docker logs -f -n 20 rocketmq-exporter确认有指标输出
curl http://192.168.1.2:5557/metrics | head -20看看有没有 broker 相关指标
curl -s http://192.168.1.2:5557/metrics | grep rocketmq_broker
看到 rocketmq_broker、rocketmq_producer_offset、rocketmq_consumer_offset 等指标就说明采集正常。
二、Prometheus 配置
在 Prometheus 配置文件 prometheus.yml 中添加 Exporter 的采集 Job:
scrape_configs: - job_name: 'rocketmq' static_configs: - targets: ['192.168.1.2:5557'] metrics_path: '/metrics' scrape_interval: 15s同时确保告警规则文件已引入:
rule_files: - "/prometheus/rules/*.yml"重载 Prometheus 配置:
#方式一:调用 API(推荐,需启动时加 --web.enable-lifecycle)
curl -X POST http://localhost:9090/-/reload
#方式二:发送信号(仅限非 Docker 部署,Docker 内 PID namespace 隔离,宿主机拿不到进程号)
kill -HUP $(pidof prometheus)
如果是多集群按如下方式配置
- job_name: rocketmq static_configs: - targets: ['10.1.1.1:5557'] labels: cluster: rmq-A - targets: ['10.1.2.1:5558'] labels: cluster: rmq-B - targets: ['10.1.3.1:5559'] labels: cluster: rmq-C - targets: ['10.1.4.1:5560'] labels: cluster: rmq-D - targets: ['10.1.5.1:5561'] labels: cluster: rmq-E - targets: ['10.1.6.1:5562'] labels: cluster: rmq-F三、grafana模板
推荐 Grafana Dashboard 14612
