Prometheus监控RabbitMQ
RabbitMQ 集群虽然官方提供了管理 UI 来监控集群状态,但是从设计上来说这种方式并不是特别方便。
RabbitMQ 从 3.8.0 版本开始就内置了对 Prometheus 和 Grafana 的支持。实质上是通过 rabbitmq_prometheus
这个插件来获取对 Prometheus 度量标准的支持,该插件是通过专用的 TCP 端口来暴露相关 RabbitMQ 指标的,默认端口是 15692。这些度量标准提供了对 RabbitMQ 节点状态和运行时的状态的支持。
查看本地环境
查看本地操作系统及内核版本:
1 | # |
查看三节点 rabbitmq 集群及 erlang 版本:
1 | $ rpm -qa|egrep "erlang|rabbit" |
修改集群名称(可选)
RabbitMQ 集群都有一个描述性的名称,改与不该都不影响具体的功能。
1 | # 查看集群名称 |
启用插件 rabbitmq_prometheus
1 | rabbitmq-plugins enable rabbitmq_prometheus |
web 后台看到 15692 端口已监听:
验证监控指标:
1 | curl 127.0.0.1:15692/metrics |
Prometheus 监控配置
配置 Prometheus 让其监控上 RabbitMQ 集群,修改 Prometheus 配置文件,增加如下内容:
1 | - job_name: 'rabbitmq_nodes' |
默认情况下 Prometheus 每 60s 拉取一次指标,RabbitMQ 也会定期更新相关指标,默认为 5000ms,相关参数是 collect_statistics_interval 可以根据需要对其进行更改。
对于生产环境建议 Prometheus 拉取时间设置为 15s, RabbitMQ 更新指标的时间间隔最小值设置为 10000(10s)即 collect_statistics_interval 参数设置为 10000。
Grafana 仪表盘设置
Prometheus 监控配置完成后,我们就可以导入 Grafana 的仪表盘了,RabbitMQ 官方有提供相关仪表盘文件,我们直接导入即可,具体项目地址 rabbitmq-prometheus
官方提供的 Dashboard 配置文件都可以使用,我这里仅仅导入了 RabbitMQ-Overview.json
导入成功后就可以通过 Grafana 查看该 RabbitMQ 集群的相关信息了,具体信息可以参考下图:
上述内容都是基于 rabbit 3.8 版本及其以后的版本,对于 3.8 版本之前的版本可以使用单独的插件 rabbitmq_exporter 来暴露 /metrics
指标数据。