首页 > 解决方案 > RabbitMQ HealthCheck 基于使用管理 API 的“Stuck”队列

问题描述

我正在尝试针对 RabbitMQ 监控 API 编写健康检查。我想在队列中至少有一条消息并且最后一分钟没有收到 Ack 时发出警报。

我的 api 查询如下所示:http://rmqhost:15672/api/queues/MyVHost/MyQueue?msg_rates_age=60&msg_rates_incr=60

我正在查看消息deliver_get_details.avg_rateack_details.avg_rate字段,如果消息大于零,并且两个平均速率都为零,那么我会提醒队列卡住或性能不佳。

结果在大部分时间都有效,但在开始和结束时有时消息大于零,并且 avg_rates 也为零(导致警报),但我刚刚将消息排队,或者消息只在那里停留了 30 秒。

有没有更可靠的方法来请求我需要在消息“卡住”至少一分钟后正确提醒的指标?

管理指标 API 的文档似乎缺乏,我猜测哪些字段最适合该任务(https://rawcdn.githack.com/rabbitmq/rabbitmq-server/v3.8.16/deps/ rabbitmq_management/priv/www/api/index.html )

标签: rabbitmqrabbitmq-management

解决方案


推荐阅读