【问题标题】:Alerts with several expressions带有多个表达式的警报
【发布时间】:2021-08-27 05:31:00
【问题描述】:

我正在考虑如何根据延迟定义警报的概念。 本质上,我需要将它用于黑盒出口商警报。 根据响应时间,我不会有提示当前连接状态的警报。

good connection
slow connection
no connection

有没有一种方法可以定义一个规则来评估超过 1 个表达式并根据触发的表达式发出带有特定摘要和标签的警报?

【问题讨论】:

    标签: prometheus prometheus-alertmanager prometheus-blackbox-exporter


    【解决方案1】:

    答案是“不”而不是“是”。注释是静态的,您在其中写入的任何内容都将存在于每个触发器中。但是,您可以在注释中执行查询,但我想把任何逻辑带到那里都是矫枉过正的。为了向您展示复杂性,请考虑以下注释:

    # get error codes that occurred during last 5 minutes in the firing service
    error_codes: >-
      Error code(s): {{ range printf `sum(increase(request_duration_seconds_count{status=~"5..",hostname="%s",service="%s"}[5m])) by (status) > 0` .Labels.hostname .Labels.service | query | sortByLabel "status" }}{{ .Labels.status }} {{ end }}
    

    标签的情况有些相同。您在labels: 键下的警报中写入的那些标签是静态的。但是你可以通过加入、重写、添加新的等方式来弄乱警报表达式中的标签。就像注释一样,这会增加很多不合理的复杂性,这会让你不确定你是否真的得到了警报或者是否有错误会在某些情况下让你失望。

    我的建议是保持简单,笨蛋。发出多个警报,但要让它们易于理解、自定义和修复。

    【讨论】:

      猜你喜欢
      • 2012-03-28
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多