概述
我是普罗米修斯的新手。我的自定义导出程序将IP地址作为输入。进行一些流处理,然后向Prometheus注册表注册新的度量。下面是代码,
#!/usr/bin/env python3
from prometheus_client import start_http_server, Gauge, Counter
from prometheus_client import REGISTRY
from prometheus_client.metrics_core import GaugeMetricFamily
import time
count = 0
class TestExporter:
def collect(self):
global count
count += 5
for i in range(3):
yield self.check_stream(count, i)
def check_stream(self, count, host):
# some processing time
# lets assume 5 seconds
time.sleep(5)
metric = GaugeMetricFamily('aa_stream_test', 'testing stream delete', labels=['stream'])
if count > 100:
metric.add_metric(['B', str(host)], count)
else:
metric.add_metric(['A', str(host)], count)
print (count, 'registering . . .')
return metric
if __name__ == '__main__':
REGISTRY.register(TestExporter())
# Start up the server to expose the metrics.
start_http_server(8000)
print("started server...")
while True:
time.sleep(1)
问题
在check_stream
函数中,我定义了处理请求所需的估计时间。截至目前,我已将其设定为5秒。(但可能有所不同(
check_stream
函数执行了3次,所以如果我使用函数time.sleep(3)
,我可以在prometheus图中看到度量。因为总时间是CCD_ 4,其小于10秒普罗米修斯废料时间。但如果我使用time.sleep(5)
,它总共需要5*3=15
,即>=
废料间隔时间。在这里,我并没有在图中看到任何普罗米修斯的值。它是空的。
请帮忙。谢谢
Prometheus配置的scrape_timeout
默认为10秒。
普罗米修斯试图抓取你的目标,如果目标的响应时间超过scrape_timeout
,那么它将超时(而不是抓取指标(。
您应该在Prometheus服务器配置中增加scrape_timeout
,以便服务器在尝试抓取目标时不会超时。