监控、指标和告警

使用平台监控图表和告警策略来观察 RabbitMQ 资源使用情况、broker 健康状态、队列增长和流量模式。监控应回答两个不同的问题:

  • 实例是否足够健康,能够接受流量?
  • 工作负载是否能够跟上其消息量和保留目标?

指标收集

平台默认会收集 RabbitMQ 指标。内置监控图表提供了最常见的 broker 和资源信号,用于运维检查和性能调优。

默认情况下,RabbitMQ 指标由 broker 在端口 15692 上暴露。如果启用了独立 exporter 集成(spec.exporter.enabled=true),则也可以从 exporter 服务的端口 9419 获取指标。

验证 broker listener 是否存在:

kubectl -n <namespace> exec <instance-name>-server-0 -- \
  rabbitmq-diagnostics listeners

验证 Service 是否暴露了预期的端口:

kubectl -n <namespace> get svc <instance-name>

关键指标类别

类别关注点重要原因
实例可用性RabbitmqCluster 阶段、就绪状态以及服务可达性显示从平台和网络视角看,集群是否可用。
连接和 channel连接数、channel 数、consumer 数突然下降或激增通常表示客户端故障或连接风暴。
发布和投递速率消息输入、投递、确认和重投递速率显示生产者和消费者是否保持平衡。
队列积压messages_readymessages_unacknowledged、队列数量指示 consumer 堆积、consumer 卡住或重试循环。
内存内存使用率、高水位线、内存告警内存告警会阻止发布者并降低吞吐量。
磁盘可用磁盘空间和磁盘告警磁盘告警会阻止发布者,并表明存在积压或存储容量规划问题。
文件描述符和 socket已使用的文件描述符和 socket 数保护 broker 不会耗尽与连接相关的资源。
插件和 listenerManagement、Prometheus、TLS、Shovel 或 Federation listener确认更新后运维功能仍然处于启用状态。

RabbitMQ 默认主要暴露 broker 级别的指标。当你需要更细粒度的每个队列或每个 exchange 分析时,请将 broker 指标与应用指标、队列检查命令以及工作负载特定的图表结合使用。

建议的告警信号

针对以下条件创建或调优告警策略:

信号建议起始值运维含义
实例可用性30 秒内 != 1集群对客户端而言尚未完全可用。
节点内存利用率30 秒内 > 80%内存压力正在上升,可能触发 broker 告警。
节点存储利用率30 秒内 > 80%broker 正在接近磁盘压力和发布阻塞风险。
channel 数基于应用设计设定阈值突然增长可能表明连接抖动或 channel 泄漏。
连接数基于应用设计设定阈值大幅下降或激增通常表明客户端或网络问题。
消息写入频率基于预期工作负载设定阈值下降可能表示生产者问题;激增可能需要扩容或控制积压。
队列堆积ready 或 unacknowledged 消息持续增长consumer 跟不上,或者重试模式不健康。

如何解读常见信号

信号解释建议的后续操作
磁盘告警处于活动状态broker 正在进行自我保护,因为可用空间低于配置的水位线。检查积压、存储使用情况和消息保留策略。
内存告警处于活动状态broker 正处于内存压力之下,可能会阻止发布者。检查连接抖动、队列增长和内存密集型工作负载。
messages_ready 增长consumer 无法足够快地清空队列。检查 consumer 健康状态、扩缩容、积压控制和重试拓扑。
messages_unacknowledged 增长consumer 持有投递的时间长于预期。检查 consumer 延迟、prefetch、下游依赖以及卡住的 consumer。
连接数骤降生产者或消费者失去连接。检查服务暴露、TLS、凭证和 broker 告警。
连接数骤增客户端可能正在反复重连。检查滚动重启、DNS、TLS 故障和应用重连循环。

告警策略指导

前往 Application Service 的 Alerts > Alert Policies 页面,为 RabbitMQ 创建告警策略。内置指标是启用基础覆盖范围最快的方式。当内置指标不足时,创建基于自定义 PromQL 的告警,并在生产环境依赖它们之前先进行测试。

有关配置和使用告警的更多信息,请参阅平台的 Alert Management 文档。

相关信息