首页 > 解决方案 > Prometheus avg_over_time 和除非包含太多数据

问题描述

在我的一个 Grafana 仪表板上,我很想显示在检查的时间范围内(最后 12 小时)有一些停机时间的实例的所有指标。但是在没有停机的情况下过滤掉所有其他人。

我正在使用 prometheus blackbox 导出器提供的数据,我很想获得在我正在查看的时间范围内(例如 12 小时)不是 100% 可用的所有实例的 avg_over_time。

我的基本查询如下所示:

avg_over_time(probe_success{job="blackbox"}[15m])

为了过滤掉所有不符合预期的东西,我尝试了某事。像这样(试图保持可读性):

_base_qery_ unless on(instance) _base_qery_ < 0.95 

但这也将包括带有实例标签的系列,这些标签没有出现在_base_qery_ < 0.95.

官方文档中,我期望这种类型的过滤

vector1 除非 vector2 产生一个由 vector1 的元素组成的向量,对于这些元素,vector2 中没有与标签集完全匹配的元素。两个向量中的所有匹配元素都被删除。

我暂时的解决方法是这个查询(其中 12 小时是我用 Grafana 观察到的完整时间范围):

    avg_over_time(probe_success{job="blackbox"}[15m]) and avg_over_time(probe_success{job="blackbox"}[12h]) < 1

但我很想让 15 分钟范围的版本正常工作。

标签: prometheusprometheus-blackbox-exporter

解决方案


推荐阅读