具有“缓存”指标的普罗米修斯定制收集器

2024-05-13 02:36:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个prometheus收集器,它可以通过端口9100上的http进行查询,端口9100提供一个度量。curl应该始终提供我在这里使用函数创建的最新度量:

https://github.com/unnuetz/custom-prometheus-collector/blob/master/check.py#L5-L11

我现在的问题是,在每100秒的循环之后,我在这里添加了: https://github.com/unnuetz/custom-prometheus-collector/blob/master/main.py#L20-L23 我正在创建的下一个度量已添加,但我希望在每次调用checker()后都进行“重置”,而不是我创建的单个度量始终只是添加到我的let say注册表中。 有没有办法删除以前添加的所有指标? 重要的是,在100秒之间,start_http_服务器(9100,addr='0.0.0.0')仍然可用,并提供它从上次checker()运行中获得的最新度量数据。 在我的演示文件中,我总是希望只有一个带有随机生成的标签名的度量

enter image description here


Tags: 端口pyhttpsgithubmastercomhttp度量
1条回答
网友
1楼 · 发布于 2024-05-13 02:36:48

您可以使用custom collector,而不是使用内置的Gauge

请注意,它不会在普罗米修斯中拯救你:

  1. 每次普罗米修斯删除你的应用程序时,它都会创建一个新的度量标准
  2. 之前的指标在普罗米修斯中仍然可见,直到它被标记为过时(~5分钟)

如果使用自定义收集器不是一个选项,因为您需要使用全局度量来显示一些代码。可以使用绑定方法注入类似于remove()函数的reset()函数

import CollectorRegistry from prometheus_client.registry

def _resetCollector(self):
    with self._lock:
        # reset whatever name / value you want
        pass

CollectorRegistry.reset = _resetCollector


# wherever you want to reset it
import REGISTRY from prometheus_client.registry
REGISTRY.reset()

当然,每当CollectorRegistry的实现发生变化时,它就会中断

相关问题 更多 >