2

我正在使用 blackbox_exporter 和 prometheus 监控一些服务。这对于计算服务可用性非常有用,但我在质疑自己是否可以使用 PromQL 获得最近 x 天的停机时间范围的摘要?

例如,如果 probe_success 在下午 1 点到下午 1:30 之间变为 0,然后从下午 3 点到下午 3:15 再次变为 0,我想在 Grafana 中获得这样的列表:

停机时间:

1 PM - 1:30 PM | 30 mins
3 PM - 3:15 PM | 15 mins

等等。

4

1 回答 1

0

PromQL 很难解决您的问题。Prometheus 是一个时间序列数据库,您希望从这些指标中恢复事件。

有一种方法可以恢复指标状态 0/1 发生变化的事件:

  • 您将使用检测范围与指标的轮询间隔匹配的changes()函数来提取更改事件(如果轮询间隔错误,您将看到重复的更改并可能错过某些事件)

    changes(metric[30s]) != 0
    
  • 然后使用实际的度量值来识别上/下开关

    (changes(metric[30s]) != 0) * metric
    

您可以使用子查询可视化输出:((changes(metric[30s]) != 0) * metric)[2d:]

0 @1627421720
1 @1627427120
0 @1627508120
1 @1627513520

该值为您提供新状态,时间戳(在@之后)为您提供事件的纪元时间(大约取决于轮询时间)。

我们离您想要的不远,困难在于如何获取这些指标并将它们转换为合并表。

我在回答这个问题时使用了 Grafana v8.0.4,我看不到将它集成到当前表格可视化中的方法。我最好的建议是使用HTML 面板并运行您自己的 JavaScript 来显示您想要的内容。

于 2021-07-29T11:09:58.130 回答