用于分布式累积批处理作业的 Prometheus 检测

par*_*man 5 prometheus prometheus-pushgateway

我每天多次运行构建脚本。我的感觉是我和我的同事花了相当多的时间等待这个脚本的执行。现在我想知道:我们每天花多少时间等待脚本执行?。我可以对总体平均值感到满意,即使我真的很想获得每日数据(例如“上周一我们花了 X 分钟等待脚本执行,周二......)

为了找到答案,我用推送网关启动了 Prometheus。在构建脚本中,我向推送网关添加了一个 REST 调用,该调用发布counter标有机器名称的指标(类型:)以及执行脚本所用时间的示例数据。

正在收集数据,但我意识到我收集的数据不足以回答我的问题,我需要将我推送的指标(即:当前运行经过的时间)累积到以前的数据。查看文档,我感觉推送网关不支持此功能:

Pushgateway 显然不是聚合器或分布式计数器,而是指标缓存

我的问题是:

  • 是否可以通过Prometheus Push Gateway收集我想要的指标。如果没有,我有什么选择?
  • 如果可能的话,我应该如何收集哪些指标?

evg*_*nyl 1

总的来说,Pushgateway确实不是一个分布式计数器,但是……

恕我直言,看待 Pushgateway 的正确方式就像“又一个抓取端点”。这意味着,它不会聚合您推送的指标,而只会“按原样”保存它们。但实际上您不需要聚合它 - Prometheus 将从PushGateway 中抓取数据,并且您的所有数据都将在 Prometheus 中可用。

之后 - 您可以通过 Prometheus 运行任何您想要的查询 - 直接从 Prometheus 使用 PromQL,或利用 Grafana。

注意:有很多关于 Pushgateway 的讨论,使用它有其缺点。有一般指南“非目标”建议使用 Pushgateway 作为“最后一个选项” - 建议改为公开 /metrics 路由,即使在工作中也是如此。

PS 如果您认为确实需要聚合指标,您可以查看同一篇文章中提到的Weavework 聚合网关。但再一次 - 我认为这不是你正在寻找的。