请求编写Prometheus告警规则监控RabbitMQ队列剩余空间
RabbitMQ队列剩余空间告警Prometheus表达式
前提条件
确保你的RabbitMQ Exporter已采集到以下指标:
rabbitmq_queue_messages:队列当前消息数rabbitmq_queue_max_length_bytes:队列配置的x-max-length-bytes值(部分Exporter需开启对应采集参数才能获取)
告警表达式逻辑
你提供的计算逻辑存在表述偏差:剩余空间大于90%属于空闲充足状态,无需告警;实际应在**已用空间占比超过90%(剩余空间不足10%)**时触发告警。基于修正后的逻辑,对应的PromQL表达式如下:
(32768 * rabbitmq_queue_messages{queue=~"queue-test[1-6]", vhost="v-host"}) / rabbitmq_queue_max_length_bytes{queue=~"queue-test[1-6]", vhost="v-host"} > 0.9
完整告警规则示例
将以下内容添加到你的Prometheus告警规则文件中:
groups: - name: rabbitmq_queue_space_alerts rules: - alert: RabbitMQQueueSpaceUsageHigh expr: | (32768 * rabbitmq_queue_messages{queue=~"queue-test[1-6]", vhost="v-host"}) / rabbitmq_queue_max_length_bytes{queue=~"queue-test[1-6]", vhost="v-host"} > 0.9 for: 2m labels: severity: warning annotations: summary: "RabbitMQ队列空间使用率过高" description: "队列 {{ $labels.queue }} 已用空间占比超过90%,当前占比约 {{ $value | round 2 }}%,最大限制为 {{ $value | multiply 115747500 | humanizeBytes }}。"
说明
queue=~"queue-test[1-6]":匹配你指定的6个目标队列,可根据实际队列名称调整正则规则vhost="v-host":替换为你的RabbitMQ虚拟主机实际名称32768:你提供的单条消息最大字节数for: 2m:持续2分钟满足条件才触发告警,避免瞬时波动导致的误报
内容的提问来源于stack exchange,提问作者Slashlinux
相关产品推荐
相关产品推荐

