Prometheus 查询计算 avg_over_time 的正常运行时间,但希望忽略小于 1 分钟的停机时间
Prometheus query to calculate avg_over_time up-time, but want to ignore down-time less than 1 minute
我是 Prometheus 的新手,在下面进行了查询,试图以百分比形式显示某个网站的平均正常运行时间以进行 SLA 监控(例如 Google)。
(avg_over_time(probe_success{instance="https://www.google.com/"}[$__range])) * 100
但是,是否可以让计算忽略任何少于 1 分钟的停机时间?
为探测器制定 SLA 的最佳方法是使用分位数函数,例如:
quantile_over_time(0.99, probe_success{instance="https://www.google.com/"}[$__range])
不完全是这个查询,但需要从基础上考虑分位数。
也就是说,直接回答问题,避免 1 分钟的停机时间,这可以帮助:
avg_over_time(((avg_over_time(probe_success{instance="https://www.google.com"}[75s]) * 75) > bool(60))[$__range:]) * 100
现在让我们剖析这个查询:
avg_over_time(probe_success{instance="https://www.google.com"}[75s])
获取超过 75 秒的探测平均值,因此我们可以尝试忽略 1 米的停机时间。称之为 UP_TIME_PERCENTAGE
.
UP_TIME_PERCENTAGE * 75
提供过去 75 秒内的正常运行时间(以秒为单位)。调用此 UP_TIME_75S
.
UP_TIME_75S > bool(60)
提供一个布尔值 1 或 0 时间轴,指示正常运行时间是否超过一分钟。称之为 IS_UP_MORE_THAN_1M
avg_over_time(IS_UP_MORE_THAN_1M[$__range:]) * 100
导致给定 $__range
中正常运行时间超过 1 米的探测器的百分比。注意 :
。在子查询上应用 ..._over_time
方法很重要。
我是 Prometheus 的新手,在下面进行了查询,试图以百分比形式显示某个网站的平均正常运行时间以进行 SLA 监控(例如 Google)。
(avg_over_time(probe_success{instance="https://www.google.com/"}[$__range])) * 100
但是,是否可以让计算忽略任何少于 1 分钟的停机时间?
为探测器制定 SLA 的最佳方法是使用分位数函数,例如:
quantile_over_time(0.99, probe_success{instance="https://www.google.com/"}[$__range])
不完全是这个查询,但需要从基础上考虑分位数。
也就是说,直接回答问题,避免 1 分钟的停机时间,这可以帮助:
avg_over_time(((avg_over_time(probe_success{instance="https://www.google.com"}[75s]) * 75) > bool(60))[$__range:]) * 100
现在让我们剖析这个查询:
avg_over_time(probe_success{instance="https://www.google.com"}[75s])
获取超过 75 秒的探测平均值,因此我们可以尝试忽略 1 米的停机时间。称之为 UP_TIME_PERCENTAGE
.
UP_TIME_PERCENTAGE * 75
提供过去 75 秒内的正常运行时间(以秒为单位)。调用此 UP_TIME_75S
.
UP_TIME_75S > bool(60)
提供一个布尔值 1 或 0 时间轴,指示正常运行时间是否超过一分钟。称之为 IS_UP_MORE_THAN_1M
avg_over_time(IS_UP_MORE_THAN_1M[$__range:]) * 100
导致给定 $__range
中正常运行时间超过 1 米的探测器的百分比。注意 :
。在子查询上应用 ..._over_time
方法很重要。