Debian 上监控 RabbitMQ 队列状态的可落地方案
一 快速查看与巡检
-
启用管理插件并登录控制台
启用插件:sudo rabbitmq-plugins enable rabbitmq_management
访问地址:http://:15672(默认账号 guest/guest,生产环境请创建专用监控账号)。在控制台可查看 Overview、Queues、Connections 等页面,关注队列的 Ready/Unacked/Messages、Consumers、Message Rates 等关键面板。
-
命令行即时查询
查看队列列表与关键计数:
sudo rabbitmqctl list_queues name messages_ready messages_unacknowledged consumers
如需查看某个 vhost 的队列:
sudo rabbitmqctl -p list_queues name messages_ready messages_unacknowledged consumers
其他常用:list_connections、list_channels、list_exchanges、list_vhosts。
-
HTTP API 获取队列详情
获取某队列信息(示例 vhost 为“/”,队列名为“my_queue”):
curl -u : http://localhost:15672/api/queues/%2F/my_queue
返回 JSON 中包含 messages_ready、messages_unacknowledged、consumers、message_stats 等字段,便于脚本化巡检与对接外部监控系统。
二 长期监控与告警 Prometheus Grafana
-
启用 Prometheus 指标插件
启用插件:sudo rabbitmq-plugins enable rabbitmq_prometheus
指标端点:http://:15692/metrics(默认端口 15692,可在配置中调整)。该端点提供 200+ 指标,涵盖队列长度、消息速率、节点资源等。
-
Prometheus 抓取配置示例
scrape_configs:
- job_name: ‘rabbitmq’
static_configs:
- targets: [‘rabbitmq-node1:15692’,‘rabbitmq-node2:15692’]
metrics_path: /metrics
relabel_configs:
- source_labels: [address]
target_label: instance
-
Grafana 可视化
导入官方 Dashboard:ID 10991(RabbitMQ Management)。常用面板与 PromQL:
- 队列积压趋势:sum(rate(rabbitmq_queue_messages_ready[5m])) by (queue)
- 消息吞吐热力图:sum(rate(rabbitmq_channel_get_rates[1m])) by (node)
可结合队列、节点、vhost 等变量实现多维下钻。
-
生产可用告警规则示例
groups:
- name: rabbitmq.rules
rules:
- alert: HighQueueBacklog
expr: sum(rabbitmq_queue_messages_ready) by (queue) > 1000
for: 5m
labels: {severity: critical}
annotations: {summary: “队列 {{ $labels.queue }} 积压超过阈值”}
- alert: MemoryPressure
expr: erlang_vm_memory_system_bytes / erlang_vm_memory_bytes_total * 100 > 80
for: 2m
labels: {severity: warning}
三 健康检查与自动化脚本
-
节点存活性与基础健康
检查服务状态:sudo systemctl status rabbitmq-server
节点探活:rabbitmq-diagnostics ping(期望输出 “Ping succeeded”)
结构化健康检查:curl -u : ‘http://:15672/api/healthchecks/node’(关注返回状态是否为 ok)。
-
一键巡检脚本示例(Bash)
#!/usr/bin/env bash
set -e
USER=monitor
PASS=password
HOST=localhost
QUEUE=my_queue
VHOST=/
curl -s -u “$USER:$PASS” “http://$HOST:15672/api/queues/$(printf ‘%s’ “$VHOST” | jq -sRr @uri)/$QUEUE”
| jq -r ‘[.name, .messages_ready, .messages_unacknowledged, .consumers] | @tsv’
四 关键指标与阈值建议
- 队列健康
- Ready 持续增长:消费者处理变慢或异常
- Unacked 高:消费者卡住未确认
- Consumers=0:消费者服务宕机或未注册
- 资源与系统
- 内存使用率 > 80% 需告警
- 磁盘剩余空间 < 2GB 需告警
- 文件描述符使用率 > 90% 需告警
- 节点与告警
- 使用节点存活与资源指标(如 erlang_vm_memory_, rabbitmq_node_) 构建多级告警与容量规划面板。