在普罗米修斯量规中处理陈旧数据

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

上下文:我想为RabbitMQ构建自己的导出器。为此,我设置了一个查询管理API,解析响应并使用Prometheus格式构建适当响应的HTTP服务器

我正在测量队列中的消息数,以便在队列中有太多消息时得到提醒。为此,我建立了以下指标:rabbitmq_queue_messages{queue_name="Q1"}

我的问题是:如果删除队列,会发生什么?例如:

  1. 在T1出口商返回Rabbitmq_queue_messages {queue_name =“ Q1”} 5
  2. 由于某些原因,在T2队列被删除
  3. 在T3,我的出口商再次被要求提供指标。

据我了解,在T3,即使队列不再存在,它也会返回相同的rabbitmq_queue_messages{queue_name="Q1"} 5响应,因为这是仪表在Prometheus上的工作方式。对我来说,这很奇怪,因为在T3,Q1已经不存在了,所以我希望不再为该队列接收数据点,而不是接收过时的数据。

我为此找到的解决方法是根据对出口商的每一个请求建立一个新的普罗米修斯注册表,以一张干净的纸开始,但是似乎有点不客气,我真的不习惯这种方式。

所以,如何避免以普罗米修斯惯用的方式来获取过时的仪表数据?

rabbitmq prometheus
1个回答
0
投票

如果这是使用client_java编写的Java导出器,则只需清除client_java(在Gauge中),而不用构建一个全新的myGauge.clear()

或者,如果它太笨重,并且您有办法在删除队列时得到通知,只需在收到通知时调用Registry

© www.soinside.com 2019 - 2024. All rights reserved.