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

Posted

技术标签:

【中文标题】如何配置 Grafana 以捕捉 Prometheus 指标的急剧下降?【英文标题】:How can Grafana be configured to catch a steep drop in a metric from Prometheus? 【发布时间】:2020-07-14 16:32:04 【问题描述】:

我们正在使用 Grafana 来监控某些事件和火灾警报。数据存储在 Prometheus 中(但我们没有使用 Prometheus 警报管理器)。

昨晚,我们的一个指标出现问题,我们目前没有警报。我想添加一个,但我正在努力确定添加的最佳方法。

在这种情况下,该指标的 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】:

你用错了函数:对于仪表,你应该使用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

【讨论】:

感谢@michael-doubez。我不确定我是否做对了,我很抱歉。如果我过滤到单个主机以避免总和问题,我最终会得到这样的图表:i.stack.imgur.com/CYhqV.png。它与rate 函数的形状相同,但轴要小得多。切换到仪表仅显示带有0.00031 的值。您能否详细说明您的查询 - 例如为什么是100?为什么要将增量除以总数?此外,> 80% 也会导致错误(“在 char 189 处解析错误:找不到有效表达式”,如果相关的话,我正在使用 prometheus 1.6.3)。感谢您的帮助! 这是我的完整查询,以提供图像中的一些额外上下文:100 * (delta(__name__=~"[[env]]_pubsub_mm_events_live_ref.+",host="ip-172-20-4-73"[1m]) / __name__=~"[[env]]_pubsub_mm_events_live_ref.+",host="ip-172-20-4-73" offset 1m) 是的,对不起。应该是 80% 而不是 80% - 我被逻辑冲昏了头脑。 逻辑是计算一分钟(或更长时间)的下降百分比。 delta(foo[1m]) 为您提供范围内的值差异,foo offset 1m 为您提供增量开头的值。这些值乘以 -100 的比率为您提供了下降比例的信息。 是的。如果我认为作为实际指标的“急剧下降”是另一个表达式(如比率),那么您应该将我的答案元素应用于您的表达式。请注意,它随后需要可能很昂贵的子查询。记录规则可以节省您的周期和打字。

以上是关于如何配置 Grafana 以捕捉 Prometheus 指标的急剧下降?的主要内容,如果未能解决你的问题,请参考以下文章

如何将用户和团队导入 grafana?

更新 Grafana 配置文件以配置自定义 SMTP 设置

如何使用 SpringBoot 2、InfluxDB 和 Grafana 理解微米指标?

更新Grafana配置文件以配置自定义SMTP设置

How to monitor mongodb replica set using prometheu

附12 grafana配置文件