如何配置Grafana来捕捉Prometheus的指标急剧下降?

时间:2020-04-02 16:09:26

标签: prometheus grafana

我们正在使用Grafana监视某些事件和火灾警报。数据存储在Prometheus中(但我们没有使用Prometheus Alert Manager)。

昨晚,我们的一项指标存在问题,目前我们尚未对其进行提醒。我想添加一个,但是我正在努力确定这样做的最佳方法。

Image of Grafana dashboard with sine wave pattern - except for sharp drop

在这种情况下,该指标的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设置的哪些组合来有效地识别此更改?

1 个答案:

答案 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