温馨提示×

Debian RabbitMQ如何监控队列状态

小樊
31
2026-01-01 22:47:20
栏目: 智能运维

Debian 上监控 RabbitMQ 队列状态的可落地方案


一 快速查看与巡检

  • 启用管理插件并登录控制台
    启用插件:sudo rabbitmq-plugins enable rabbitmq_management
    访问地址:http://:15672(默认账号 guest/guest,生产环境请创建专用监控账号)。在控制台可查看 Overview、Queues、Connections 等页面,关注队列的 Ready/Unacked/MessagesConsumersMessage 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_) 构建多级告警与容量规划面板。

0