gpt4 book ai didi

prometheus - 如何使用 prometheus 和 node_exporter 获得服务器的整体正常运行时间

转载 作者:行者123 更新时间:2023-12-04 00:02:29 26 4
gpt4 key购买 nike

我正在寻找一个查询来获取上周运行 prometheus 的服务器的平均正常运行时间。它应该是大约 15 小时/周,所以大约 8-10%。

我在 CentOS 7.6.1810 上使用 Prometheus 2.5.0 和 node_exporter。
我最有希望的实验是:

1 - avg_over_time(up{job="prometheus"}[7d])

这是我在寻找获得平均正常运行时间的方法时发现的,但它给了我正好 1。(我猜它忽略了没有发生擦伤的时间?)

2 - sum_over_time(up{job="prometheus"}[7d]) * 15/604800

这在技术上有效,但取决于抓取间隔,在我的情况下为 15 秒。我似乎无法找到从 prometheus 的配置中获取所述间隔的方法,因此我必须将其硬编码到查询中。

我还试图找到获取工作的所有开始和结束时间的方法,但到目前为止无济于事。

最佳答案

干得好。不要问。 (o:

avg_over_time(
(
sum without() (up{job="prometheus"})
or
(0 * sum_over_time(up{job="prometheus"}[7d]))
)[7d:5m]
)

一点一点地解释一下:
  • sum without() (up{job="prometheus"}) : 接 up metric(sum without() 部分用于在保留所有其他标签的同时删除度量名称);
  • 0 * sum_over_time(up{job="prometheus"}[7d]) :为每个 up{job="prometheus"} 生成一个零值向量过去一周看到的标签组合(例如,如果您有多个 Prometheus 实例);
  • or两者结合在一起,因此您可以获得可用的实际值,缺失的值为零;
  • [7d:5m] :PromQL subquery , 产生一个跨越 7 天的范围向量,根据前面的表达式有 5 分钟的分辨率;
  • avg_over_time : 取 up 随时间变化的平均值带有零作为默认值填充的度量,其中缺少。

  • 您可能还想添加 and sum_over_time(up{job="prometheus"}[7d]到该表达式的末尾,仅获得过去 7 天内某个时间点存在的标签组合的结果。否则,由于 7 天范围和 7 天子查询的组合,您将获得前 14 天所有组合的结果。

    无论如何,这都不是一个有效的查询,但它不需要您将抓取间隔硬编码到查询中。按照要求。 (o:

    关于prometheus - 如何使用 prometheus 和 node_exporter 获得服务器的整体正常运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080200/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com