prometheus - Prometheus 查询计算 avg_over_time up-time,但想忽略 down-time 小于 1 分钟
问题描述
我是 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 秒内的平均探测时间,因此我们可以尝试忽略 1m 的停机时间。打电话给这个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
导致在给定中运行时间超过 1m 的探针的百分比$__range
。注意:
. ..._over_time
对子查询应用方法很重要。
推荐阅读
- javascript - 如何使用nodejs更改/删除测试模式并在条带中启用实时模式?
- python - Python 到 VBA:如何通过对 VBA 代码中的其他列进行分组来对列值求和?
- c# - C# 错误 cs0534:没有实现抽象成员获取 - 虽然我做到了
- python - 错误:未找到密码学==3.2.1 的匹配分布
- angular - Nx e2e 文件夹结构
- python - 从 python 中的 webElement 中查找 xpath
- flutter - 错误状态:Stream 已被收听。(useStream 不会关闭流)
- node.js - 由第 3 方服务处理身份验证时的授权代码流
- c# - 如何在 .NET Framework 4.8 中使用 accessdatabaseengine_X64 运行 Microsoft Office 版本:18.2008.12711.0?
- reactjs - 在页面索引更改后获取数据