RabbitMQ的高精度队列统计信息

问题描述 投票:1回答:1

我需要以尽可能高的精度记录邮件进入和离开Rabbit中特定队列的速率。我知道该API已经提供了发布和投放费率,但是我对已知时间段内的[[captureing原始传入和传出值感兴趣,因此我可以更精确地estimate和我选择的时间段。

理想情况下,我会按需检查(即按我选择的时间表进行检查),例如到目前为止,已进入队列的消息的当前累积计数(“已发布”消息),以及已消耗的消息的当前累积计数(“已传递”消息)。

有了这些类型的累积计数,我可以:

    计算我自己的
  • deltas
进入或退出队列的消息,例如做Δ_count = cumulative_count(t) - cumulative_count(t-1)计算
  • 吞吐量
  • 比率throughput = Δ_count / Δ_time可能推断
  • 多长时间
  • ”消息整天都在队列中。 在计算这些累计计数时,后两个理想情况下将依赖于精确的时间戳。


    我正在尝试直接使用RabbitMQ’s API解决此问题,但这样做时遇到了问题。在队列中计算邮件的累积计数时,我得到了一个我不期望的数字。

    例如,请看下面的屏幕截图。

    enter image description here

    条目90和91之间的Δ_message_count1810-1633 = 177。因此,正如我所说,我想发布的消息和传递的消息之间的差异也应该为177(尤其是发布的消息比传递的消息多177条)。

    但是,当我计算这些差异时,发现差异不是177

      已发布(传入)消息的Δ:13417517652009 - 13417517651765 = 244
    • 已发送(外发)消息的Δ:1341751765667 - 1341751765450 = 217
  • 所以我们收到244 - 217 =

    27

  • 消息。这表明存在177 - 27 = 150条消息“ unaccounted”为什么?

    [我尝试考虑API提供的重新传递的消息,但是在运行测试时它们是恒定的,这表明没有重新传递的消息,因此我不希望它发挥作用。

    rabbitmq
    1个回答
    0
    投票
    RabbitMQ带有管理UI和HTTP API,它公开了有关节点,连接,队列,消息速率等的大量RabbitMQ指标。对于开发以及在难以或无法引入外部监视的环境中,这是一个方便的选择。

    但是,管理用户界面有许多限制:

    • 监视系统与被监视系统交织在一起
    • 一定的开销仅存储最近的数据(思考时间,没有几天或几个月)t具有基本的用户界面
    • 其设计

    • 强调易用性而不是最佳可用性。
    • 管理UI访问是通过RabbitMQ权限标签系统(或JWT令牌范围的约定)
  • Prometheus和Grafana之类的长期度量标准存储和可视化服务或ELK堆栈是生产系统的更合适的选择。他们提供:

      监视系统与被监视系统的解耦
  • 降低开销
  • 长期指标存储
  • 访问其他相关指标,例如Erlang运行时指标
  • 更强大和可定制的用户界面
  • 轻松共享度量标准数据:度量标准状态和破折号
  • 度量标准访问权限不特定于RabbitMQ
  • 特定于节点的指标的收集和聚合,可以更有效地抵抗单个节点的故障
  • © www.soinside.com 2019 - 2024. All rights reserved.