Debian 上监控 RabbitMQ 的实用方案
一 快速检查与内置工具
- 服务运行状态:使用 systemd 查看进程与自启状态
- 命令:systemctl status rabbitmq-server(或 service rabbitmq-server status)
- 关注:Active: active (running)、最近日志、是否开机自启
- 命令行巡检:获取节点与资源概况
- 命令:rabbitmqctl status、rabbitmqctl cluster_status
- 关注:节点名、内存/磁盘、文件描述符、集群成员与健康
- 诊断工具:更细粒度的健康检查
- 命令:rabbitmq-diagnostics status、rabbitmq-diagnostics memory_breakdown
- 用途:快速定位内存、连接、运行时状态异常
- Web 管理界面:启用后直观查看队列、连接、通道、速率与节点信息
- 启用:rabbitmq-plugins enable rabbitmq_management
- 访问:http://<服务器IP或主机名>:15672
- 安全:默认账户 guest/guest 仅允许本机登录,生产环境请创建专用监控/管理账号并分配权限
二 指标监控与可视化
- 启用 Prometheus 指标插件
- 命令:rabbitmq-plugins enable rabbitmq_prometheus
- 指标端点:默认 http://:15692/metrics,包含队列长度、消息速率、节点状态等 200+ 指标
- Prometheus 抓取配置示例
- scrape_configs:
- job_name: ‘rabbitmq’
static_configs:
- targets: [‘rabbitmq-node1:15692’, ‘rabbitmq-node2:15692’]
metrics_path: /metrics
- Grafana 可视化
- 推荐导入官方仪表盘模板 ID:10991
- 常用面板:队列积压趋势、消息吞吐热力图、节点资源使用
- 关键指标与 PromQL 示例
- 队列积压:sum(rate(rabbitmq_queue_messages_ready[5m])) by (queue)
- 内存压力:erlang_vm_memory_system_bytes / erlang_vm_memory_bytes_total * 100 > 80
- 节点存活:rabbitmq_nodes_running 用于集群健康聚合
三 告警规则示例
- 队列积压告警:当队列在 5 分钟 内持续积压超过阈值
- 规则:
- alert: HighQueueBacklog
expr: sum(rate(rabbitmq_queue_messages_ready[5m])) by (queue) > 1000
for: 5m
labels: severity: critical
annotations:
summary: “队列 {{ $labels.queue }} 积压超过阈值”
- 内存压力告警:当系统内存占用超过 80%
- 规则:
- alert: MemoryPressure
expr: erlang_vm_memory_system_bytes / erlang_vm_memory_bytes_total * 100 > 80
for: 2m
labels: severity: warning
annotations:
summary: “节点内存使用率超过 80%”
四 安全与运维要点
- 创建最小权限的监控账号
- 命令:
- rabbitmqctl add_user monitor
- rabbitmqctl set_user_tags monitor monitoring
- rabbitmqctl set_permissions -p / monitor “." ".” “.*”
- 访问与网络
- 管理界面端口 15672、指标端口 15692 建议仅对监控/管理网段开放
- 避免使用 guest/guest 远程登录,遵循最小权限原则
- 内存阈值与健康
- 在 /etc/rabbitmq/rabbitmq.conf 中设置:
- vm_memory_high_watermark.relative = 0.6(示例:内存使用达 60% 触发流控)
- 结合 rabbitmq-diagnostics 与 Prometheus 建立容量与压力的持续观测基线