我们正在使用Grafana监视某些事件和火灾警报。数据存储在Prometheus中(但我们没有使用Prometheus Alert Manager)。
昨晚,我们的一项指标存在问题,目前我们尚未对其进行提醒。我想添加一个,但是我正在努力确定这样做的最佳方法。
在这种情况下,该指标的Y轴非常低,在一夜之间(图表左侧的02:00-07:00),您可以看到指标下降到接近零。
我们想在晚上8点发现右侧的急剧下降。我们在大约晚上9点(折线)检测到下降到完全为零,但我想确定突然下降。
我们的普罗米修斯查询是:
sum(rate({__name__=~"metric_name_.+"}[1m])) by (grouping)
我尝试查看以下内容:
sum(increase({__name__=~"metric_name_.+"}[1m])) by (grouping)
但是,它们大都以与以下图形相似的图形结尾,但是在Y轴刻度上存在方差,并且很难区分“接近零和安静”和“接近零”,因为这些指标具有从悬崖上掉下来。”
我们可以使用Grafana和Prometheus设置的哪些组合来有效地识别此更改?
答案 0 :(得分:1)
功能错误:对于量规,应使用delta() function。它将在一分钟内暴露掉液滴:
sum(delta(rate({__name__=~"metric_name_.+"}[1m])[1m:])) by (grouping)
下一步是定义下降百分比,该百分比将触发错误-下降80%(注意:为清楚起见,省略sum by(grouping)
)
(-100 * delta(rate({__name__=~"metric_name_.+"}[1m])[1m:]) / rate({__name__=~"metric_name_.+"}[1m] offset 1m)) > 80
然后,一旦检测到掉落,您可能希望持续一段时间的警报。在这种情况下,您必须使用子查询或记录规则(在此处drop_rate_percent
命名):
rules:
- record: metric_name_rate
expr: sum(rate({__name__=~"metric_name_.+"}[1m])) by(grouping)
- record: drop_rate_percent
expr: -100 * delta(metric_name_rate[1m]) / (metric_name_rate offset 1m)
- alert: SteepDrop
expr: max_over_time(drop_rate_percent[15m]) > 80