如何获取RabbitMQ队列确认统计信息

0 投票
1 回答
6759 浏览
提问于 2025-04-18 16:24

我正在使用pika这个库,想知道怎么获取确认统计数据。

我已经安装了管理插件,可以通过它查看确认统计数据,但我想直接通过像pika这样的库来访问这些数据。

1 个回答

10

编辑:

今天我会使用内置的 Prometheus 插件 来收集详细的统计数据。


如果你想获取数据,可以直接在 Python 中使用一个 HTTP 客户端,通过 RabbitMQ 管理 API 来获取你需要的数据。

这个 API 使用起来相对简单,不过这个特定功能的文档可能不是特别完善。不过,你可以很容易地找到你需要的信息,并用它来生成你想要的数据。

你可以这样调用队列信息:

  • http://127.0.0.1:15672/api/queues/%2F/Test

只需把 Test 替换成你想要收集数据的队列名称。

然后你可以添加一些选项来获取更详细的信息:

  • ?lengths_age=60&lengths_incr=5&msg_rates_age=60&msg_rates_incr=5

  • 例如 http://127.0.0.1:15672/api/queues/%2F/queue_name?lengths_age=60&lengths_incr=5&msg_rates_age=60&msg_rates_incr=5

输出结果大概是这样的:

{"memory": 21816,
 "message_stats":
     {
         "publish": 4,
         "publish_details":
             {
              "rate": 0.0,
              "samples": [....]
         },
         "messages": 4,
         "messages_details": 
             {
                 "rate": 0.0, 
                 "samples": [....],
                 "avg_rate": 0.0, 
                 "avg": 4.0},
         "messages_ready": 4,
         "messages_ready_details": {
             "rate": 0.0,
             "samples": [....],
             "avg_rate": 0.0,
             "avg": 4.0
         },
.....

如果你想查看 RabbitMQ 服务器的整体情况,而不是某个特定的队列,可以使用这个 API 调用。

  • http://127.0.0.1:15672/api/overview?lengths_age=60&lengths_incr=5&msg_rates_age=60&msg_rates_incr=5

关于这个 API 的一般文档可以在 这里 找到。

撰写回答