RabbitMQ 指标口
RabbitMQ 官方插件 rabbitmq_prometheus 暴露指标的默认端口:开启后 15692 的 /metrics 提供队列深度、消息速率、连接与通道数,以及 Erlang VM 的 GC 等指标。它与管理台 15672 分工不同:指标口只读,适合被监控系统抓取。
基本信息
| 服务 | rabbitmq_prometheus 插件 |
|---|---|
| 协议 | TCP/HTTP(/metrics) |
| 默认端口 | 15692(管理台 15672、AMQP 5672) |
| 开启方式 | rabbitmq-plugins enable rabbitmq_prometheus |
| 暴露面 | 仅监控网段 |
典型使用场景
- 队列堆积与消费速率监控
- 连接数与通道数异常检测
- 节点资源与 GC 指标观察
- 业务口与指标口分工:5672 给业务,15692 给监控
- 压测时验证吞吐与堆积之间的关系
开启与指标核对
开启与指标核对
rabbitmq-plugins enable rabbitmq_prometheus
rabbitmq-plugins list | grep prometheus
curl -s http://mq01:15692/metrics | grep -E 'rabbitmq_queue_messages_ready|rabbitmq_queue_messages_unacked' | head
ss -lntp | grep -E '15692|15672|5672'排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 插件状态 | rabbitmq-plugins list | 未启用:15692 不监听,抓取长期失败 |
| 抓取 | curl -s http://mq:15692/metrics | 返回 404:插件版本或路径与预期不同 |
| 队列细分 | ready 与 unacked 两个指标 | 只看总深度:消费者假死时告警不触发 |
| 节点资源 | VM 与磁盘相关指标 | 磁盘告急触发流控,生产端被阻塞 |
队列堆积要区分 ready 与 unacked:ready 表示消息没人取,unacked 表示取了没确认。前者一般是消费能力不足或消费者离线,后者可能是消费者卡在业务逻辑里,两者的处置方向完全不同。
指标口与管理台的分工
15672 管理台面向人,能改队列与用户;15692 指标口面向机器,只读且轻量。若让监控系统用管理台账号抓数据,等于让监控账号持有管理权限;正确做法是让 Prometheus 只抓 15692,管理台按需限制来源。
指标口默认不做认证(取决于插件与版本),只应开在监控网段;确需跨网段抓取时,建议前置带认证与限流的代理,而不是直接把 15692 放开。
把 15692 暴露到公网:队列规模、拓扑与节点信息全部可读,为下一步攻击提供完整靶标。
抓取间隔要与业务波动匹配:间隔过长看不出短时堆积,过短则给管理面增加无谓开销,一般按业务峰值的持续时长来定。