npa*_*ath 3 prometheus prometheus-node-exporter
我正在寻找一个查询来获取上周运行 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]
)
Run Code Online (Sandbox Code Playgroud)
一点一点地解释一下:
sum without() (up{job="prometheus"}):采用up度量标准(该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:
| 归档时间: |
|
| 查看次数: |
7395 次 |
| 最近记录: |