我有几台设备输出指标。如果指标高于阈值(每个设备不同),我会发出警报。在我的alert_rules.yml
文件末尾,我有一个捕获所有设备的警报,它会对输出指标值 >1 的任何设备发出警报。这是为了找到可以在规则文件中更早添加其各自规则的设备(设备可能会来来去去)。
我遇到的问题是,所有设备都会触发此 >1 识别规则。即使是那些在其上方定义了规则的设备(如预期的那样)。我如何确保设备仅触发其自己的规则(具有其自定义限制)或识别规则,而不是两者?
答案1
有两种常规方法可以做到这一点:
将已经核算的设备从捕获所有规则中排除。
根据系统的结构,这可能很容易或很难(有时几乎无法实现),但如果没有示例,您的规则很难提供更多细节。在最简单的情况下,最后警报的表达式将如下所示:
my_metric{device !~ "device1|device2|device3"} > 1
启用
<inhibit_rule>
该功能将使已触发警报的设备静音“全部捕获”警报
作为文档解释
当存在与另一组匹配器匹配的警报(源)时,抑制规则会使与一组匹配器匹配的警报(目标)静音。
所以你的情况是这样的
inhibit_rules:
- source_matchers: [alertname=~"device.*-threshold"]
target_matchers: [alertname="catch-em-all"]
equal: [device]
catch-em-all
如果名称与正则表达式模式匹配device.*-threshold
且标签相同的警报device
已触发,则此方法将静音带有名称的警报。使用前请调整您的名称。