PromQL 查询从固定日期计算服务正常运行时间和停机时间

Posted

技术标签:

【中文标题】PromQL 查询从固定日期计算服务正常运行时间和停机时间【英文标题】:PromQL query to calculate service uptime & downtime from a fixed date 【发布时间】:2021-08-29 06:36:51 【问题描述】:

我正在尝试构建一个基本的 SRE 仪表板来学习 Prometheus/Grafana。

我想计算自今年 1 月 1 日以来服务已运行的小时数和停机小时数,以便我可以从错误预算中减少停机时间。可以使用 PromQL 查询来计算吗?

我更喜欢使用up 等指标,无论使用何种导出器/客户端库,它都可用。

【问题讨论】:

【参考方案1】:

首先,您是要计算 Prometheus 服务的可用性还是 Prometheus 监控的服务的可用性?

如果是第一种情况,那么您可以使用“up”指标,如果是第二种情况,那么您可以使用例如来自 Blackbox 导出器的“probe_success”指标。

查看更多关于“up”和“probe_success”区别here的信息。

查看有关 Blackbox 导出器 here 的更多信息。

您可以使用如下查询计算可用性(百分比):

100 * avg_over_time(probe_successinstance="xxxxx"[1w])

在 Grafana 中,您可以使用全局变量“$__range”作为持续时间 ([$__range]) 在 PromQL 中使用仪表板的当前时间范围。

在 Grafana 文档here 中查看有关全局变量的更多信息。

【讨论】:

嗨..非常感谢您的回复..我正在尝试计算普罗米修斯监控的服务的正常运行时间。我了解您指定的 PromQL 查询,但是否可以执行类似的查询但将固定日期作为范围向量?正如我希望范围向量是当前日期和当年一月一日之间的天数之差 我在答案中添加了更多信息。

以上是关于PromQL 查询从固定日期计算服务正常运行时间和停机时间的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#Prometheus 之 PromQL 介绍

PromQL:查询警报是不是被静音

PromQL 查询之间的区别

具有相关字段但标签不同的 promql 示例

从系列结果 PromQL 中省略标签

初识PromQL