仅与 Prometheus/Alert Manager 匹配一条规则

仅与 Prometheus/Alert Manager 匹配一条规则

我有几台设备输出指标。如果指标高于阈值(每个设备不同),我会发出警报。在我的alert_rules.yml文件末尾,我有一个捕获所有设备的警报,它会对输出指标值 >1 的任何设备发出警报。这是为了找到可以在规则文件中更早添加其各自规则的设备(设备可能会来来去去)。

我遇到的问题是,所有设备都会触发此 >1 识别规则。即使是那些在其上方定义了规则的设备(如预期的那样)。我如何确保设备仅触发其自己的规则(具有其自定义限制)或识别规则,而不是两者?

答案1

有两种常规方法可以做到这一点:

  1. 将已经核算的设备从捕获所有规则中排除。

根据系统的结构,这可能很容易或很难(有时几乎无法实现),但如果没有示例,您的规则很难提供更多细节。在最简单的情况下,最后警报的表达式将如下所示:

my_metric{device !~ "device1|device2|device3"} > 1
  1. 启用<inhibit_rule>该功能将使已触发警报的设备静音“全部捕获”警报

作为文档解释

当存在与另一组匹配器匹配的警报(源)时,抑制规则会使与一组匹配器匹配的警报(目标)静音。

所以你的情况是这样的

inhibit_rules:
  - source_matchers: [alertname=~"device.*-threshold"]
    target_matchers: [alertname="catch-em-all"]
    equal: [device]

catch-em-all如果名称与正则表达式模式匹配device.*-threshold且标签相同的警报device已触发,则此方法将静音带有名称的警报。使用前请调整您的名称。

相关内容