【问题标题】:How to use RabbitMQ http api to see what queue had a messages in a ready state如何使用 RabbitMQ http api 查看哪些队列有消息处于就绪状态
【发布时间】:2015-06-08 18:17:26
【问题描述】:

我有一个包含数千个队列的 RabbitMQ 服务器设置。其中只有大约 5 个是持久队列。不时有一个队列的备份,其中大约有 5-10 条消息处于就绪状态。这些消息似乎不在持久队列中。我想找出哪些队列的消息处于就绪状态,但唯一表明它正在发生的迹象是在 Web 管理控制台的概述页面上,该页面适用于所有队列。

有没有办法查询 Rabbit 以告诉我在几分钟内处于就绪状态的消息的统计信息以及它们在哪个队列中?

【问题讨论】:

    标签: performance rabbitmq


    【解决方案1】:

    我会使用 HTTP API。

    http://rabbit-broker:15672/api/queues

    这将为您提供 JSON 中当前队列状态的列表,因此您必须不断轮询它。为您要监控的时间段存储给定队列“名称”的“messages_ready”。现在,您将能够看到哪些队列具有积压峰值。

    您可以使用简单的 curl 以及您喜欢的 HTTP 客户端平台。

    请注意:您要连接的用户必须具有监控标签才能访问所有队列信息。

    开箱即用没有简单的方法 AFAIK,您必须手动单击队列并在最后一小时查看他们在 UI 中的图表,这很乏味。

    【讨论】:

      【解决方案2】:

      我有类似的要求,但我找到了比投票更好的方法。 docs 表示,如果您在请求中使用特殊参数,您可能会通过 api 获取原始样本。

      例如,在您的情况下,如果您对就绪状态的消息感兴趣,您可以向您的队列询问队列长度的历史记录,例如过去 60 秒,每 1 秒采样一次(注意 15672 是默认端口被rabbitmq_management使用):

      http://rabbitHost:15672/api/queues/vhost/queue?lengths_age=60&lengths_incr=1

      对于默认 vhost=/ 它将是:

      http://rabbitHost:15672/api/queues/%2F/queue?lengths_age=60&lengths_incr=1

      然后在结果 json 中会有一些额外的 _details 对象,如下所示:

      "messages_ready_details": {
          "avg": 8.524590163934427,
          "avg_rate": 0.08333333333333333,
          "samples": [{
                  "timestamp": 1532699694000,
                  "sample": 5
              }, {
                  "timestamp": 1532699693000,
                  "sample": 11
              }, 
              <... more samples ...>
          ],
          "rate": -6.0
      },
      "messages_ready": 5,
      

      然后,您可以根据这些原始数据进行所需的任何统计。 如果您在

      中使用不同的参数,则会出现其他原始数据样本

      会出现什么采样?需要什么参数才能出现?
      发送和接收的消息                                          msg_rates_age / msg_rates_incr
      发送和接收的字节数                                                 data_rates_age / data_rates_incr
      队列长度                                                               lengths_age / lengths_incr
      节点统计信息(例如文件描述符、可用磁盘空间)       node_stats_age / node_stats_incr

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-14
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        • 1970-01-01
        • 2020-05-11
        相关资源
        最近更新 更多