温馨提示×

rabbitmq消息队列centos如何监控

小樊
33
2025-12-23 09:36:54
栏目: 智能运维

CentOS 上监控 RabbitMQ 的实用方案

一 基础检查与内置管理界面

  • 启用管理插件并创建监控专用账号:
    • 启用插件:rabbitmq-plugins enable rabbitmq_management
    • 访问地址:http://<服务器IP>:15672
    • 安全建议:修改默认密码,创建只读监控账号并授权
      • rabbitmqctl add_user monitor <密码>
      • rabbitmqctl set_user_tags monitor monitoring
      • rabbitmqctl set_permissions -p / monitor ".*" ".*" ".*"
  • 命令行巡检(快速定位问题):
    • 节点状态:rabbitmqctl status
    • 队列概况:rabbitmqctl list_queues name messages_ready messages_unacknowledged consumers
    • 连接与通道:rabbitmqctl list_connections name state recv_oct send_oct
    • 交换机:rabbitmqctl list_exchanges name type durable auto_delete
  • 关键关注:队列的 Unacked Message 持续大于 0 且增长,通常意味着消费者处理受阻或异常,需要结合消费者日志与处理能力排查。

二 Prometheus Grafana 监控(推荐)

  • 方式 A 内置 Prometheus 插件(原生指标,轻量)
    • 启用插件:rabbitmq-plugins enable rabbitmq_prometheus
    • 指标端口:默认 5552,验证:curl http://localhost:5552/metrics
    • Prometheus 抓取配置示例:
      • scrape_configs:
        • job_name: ‘rabbitmq’ static_configs:
          • targets: [‘<节点IP>:5552’]
    • Grafana:导入官方仪表盘模板 ID 10981,常用指标包括:
      • rabbitmq_queue_messages(队列消息总数)
      • rabbitmq_queue_consumers(消费者数量)
      • rabbitmq_node_mem_usedrabbitmq_node_disk_free(节点资源)
      • rabbitmq_connections(连接数)
  • 方式 B RabbitMQ Exporter(兼容性强,细粒度)
    • 部署 exporter(示例 v0.10.0):
      • 下载解压后配置 rabbitmq.yml(指向 5672 管理账号或专用账号)
      • 启动:./bin/rabbitmq_exporter
    • Prometheus 抓取:targets: ['<exporterIP>:9419']
    • Grafana 导入社区面板并配置数据源即可。

三 Zabbix 监控

  • 方案一 基于管理 API 的模板
    • 部署社区模板(如 jasonmcintosh/rabbitmq-zabbix):
      • 将脚本放入 /etc/zabbix/scripts/rabbitmq,创建隐藏认证文件 .rab.auth(含 USERNAME/PASSWORD/CONF/LOGLEVEL/LOGFILE/PORT(15672)
      • 修正脚本内路径与日志路径,脚本与目录权限设为 755
      • zabbix_agentd.conf 开启:UnsafeUserParameters=1Timeout=15Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
      • 服务端导入模板,建议使用主动模式(配置 ServerActive
      • 常见报错 /var/log/rabbitmq_zabbix.log 无权限,执行:chown zabbix:zabbix /var/log/rabbitmq_zabbix.log
  • 方案二 Zabbix Agent 2 的 RabbitMQ 插件
    • 安装 Zabbix Agent 2 与插件,配置 Server/ServerActive,导入官方或社区模板,按需选择自动发现队列/连接等监控项。

四 关键指标与告警建议

  • 建议重点监控与阈值示例:
    • 队列深度:rabbitmq_queue_messages > 1000 持续 5 分钟 触发告警(Warning)
    • 未确认消息:rabbitmq_queue_messages_unacknowledged 持续增长或大于阈值
    • 消费者:rabbitmq_queue_consumers == 0(无消费者)
    • 连接数:rabbitmq_connections 突增/突降
    • 资源:rabbitmq_node_mem_used / rabbitmq_node_disk_free 逼近水位
  • 资源水位与稳定性:
    • 内存水位:vm_memory_high_watermark.relative = 0.6
    • 磁盘预警:disk_free_limit.absolute = 1GB
  • 集群与高可用:
    • 建议部署为集群,并使用镜像队列策略提升可用性,例如:rabbitmqctl set_policy ha-all "^ha\\." '{"ha-mode":"all"}'(按需调整匹配规则)。

五 快速排障清单

  • 管理界面与 API 访问异常:确认 15672 端口开放、账号权限正确、管理插件已启用
  • Prometheus 抓取失败:确认 5552(或 9419)端口可达,curl 能返回指标,防火墙/安全组策略正确
  • Zabbix 无数据:检查 UnsafeUserParameters=1、主动模式 ServerActive、脚本与日志权限、模板与主机关联是否正确。

0