【问题标题】:How can Grafana be configured to catch a steep drop in a metric from Prometheus?如何配置 Grafana 以捕捉 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 设置的哪种组合来有效地识别这种变化?

【问题讨论】:

    标签: prometheus grafana


    【解决方案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 的比率为您提供了下降比例的信息。
    • 是的。如果我认为作为实际指标的“急剧下降”是另一个表达式(如比率),那么您应该将我的答案元素应用于您的表达式。请注意,它随后需要可能很昂贵的子查询。记录规则可以节省您的周期和打字。
    猜你喜欢
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多