上下文:我想为RabbitMQ构建自己的导出器。为此,我设置了一个查询管理API,解析响应并使用Prometheus格式构建适当响应的HTTP服务器
我正在测量队列中的消息数,以便在队列中有太多消息时得到提醒。为此,我建立了以下指标:rabbitmq_queue_messages{queue_name="Q1"}
我的问题是:如果删除队列,会发生什么?例如:
据我了解,在T3,即使队列不再存在,它也会返回相同的rabbitmq_queue_messages{queue_name="Q1"} 5
响应,因为这是仪表在Prometheus上的工作方式。对我来说,这很奇怪,因为在T3,Q1已经不存在了,所以我希望不再为该队列接收数据点,而不是接收过时的数据。
我为此找到的解决方法是根据对出口商的每一个请求建立一个新的普罗米修斯注册表,以一张干净的纸开始,但是似乎有点不客气,我真的不习惯这种方式。
所以,如何避免以普罗米修斯惯用的方式来获取过时的仪表数据?
如果这是使用client_java
编写的Java导出器,则只需清除client_java
(在Gauge
中),而不用构建一个全新的myGauge.clear()
。
或者,如果它太笨重,并且您有办法在删除队列时得到通知,只需在收到通知时调用Registry
。