我正在尝试学习普罗米修斯(并最终使用它grafana)。到目前为止,我正在尝试学习的主要用例是能够从客户端进行更新(没有Prometheus scrape)。我有一个pushgateway,我希望我的脚本/进程能够更新prometheus(然后grafana获取该统计信息)。 我刚开始时有一个简单的脚本,可以获取cpu利用率(按百分比计算)并将其发送给prometheus:
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway, Summary, Histogram
from time import sleep
from random import randint, random
registry = CollectorRegistry()
cpu_util_sum_metric = Summary('cpu_util_summary', 'cpu_util_summary', registry=registry)
cpu_util_hist_metric = Summary('cpu_util_hist', 'cpu_util_hist', registry=registry)
for i in range(90):
cpu_util = randint(0, 100)
cpu_util_sum_metric.observe(float(cpu_util))
cpu_util_hist_metric.observe(float(cpu_util))
print('cpu util is: {}'.format(cpu_util))
res = push_to_gateway('localhost:9091', job='cpu_stats', registry=registry)
print('push_to_gateway result is:', str(res))
sleep(5)
运行此命令时,在prometheus浏览器中,我看到以下指标(基于我的“ cpu_util_hist”和“ cpu_util_sum”):
首先,我想我会在'cpu_util_hist'或'cpu_util_summary'的不同时间戳(在excel中有点像)上有一个单点,可以用来绘制普罗米修斯或格拉法纳。我该如何实现?我需要将它们作为总和来计算比率/利率吗?我对普罗米修斯有什么误解。
答案 0 :(得分:0)
我会告诉你我如何看待这个问题,我们将让其他人纠正我;-)
Prometheus“更喜欢”从端点提取指标。这是它的先天行为,对reasons
Pushgateway之所以存在,是因为并非每个系统本身都可以充当Prometheus的抓取目标,以获取其指标。在这种情况下,Pushgateway充当了应用程序的代理抓取目标;应用程序将指标发送到Pushgateway,Prometheus抓取Pushgateway。
当Prometheus抓取一个端点时,它将成为当时所获取的测量的时间戳。对于Pushgateway,时间戳记为Pushgateway刮擦时间而不是应用时间。
指标不带有时间戳。
Prometheus根据通过这些抓取(直接从应用程序的度量标准端点拉出或直接从Pushgateway端点代理度量标准从应用程序拉出)中获取的度量标准构建时间序列,该频率由抓取的频率决定。
我认为您的问题的答案是,随着时间的流逝,如果Prometheus配置为抓取接收代码的推送指标的Pushgateway端点,它将为您建立指标的时间序列。 Prometheus包含其自己的查询功能,您可以使用该功能来验证该假设并向自己证明。
一旦您确信它的工作方式,您就可以对您的Prometheus时间序列源使用Grafana来代替使用Grafana绘制数据。