【发布时间】:2019-08-01 08:54:21
【问题描述】:
我们的应用程序依赖于仅在工作时间处于活动状态的数据源。我们在 Prometheus 中设置了警报,以便在流干涸时通知我们。但是,我们不希望在工作时间以外收到“虚假”警报。
我关注this post 设置了一个“假警报”,该警报会在工作时间以外触发,并且应该禁止所有其他警报。
设置如下所示。在普罗米修斯中:
rules:
# This special alert will be used to inhibit all other alerts outside business hours
- alert: QuietHours
expr: day_of_week() == 6 or day_of_week() == 0 or europe_amsterdam_hour >= 18 or europe_amsterdam_hour <= 7
for: 1m
labels:
notification: page
severity: critical
annotations:
description: 'This alert fires during quiet hours. It should be blackholed by Alertmanager.'
europe_amsterdam_hour 函数被定义为规则,为简洁起见,本示例中省略了。
在警报管理器中:
routes:
# ensure to forward to blackhole receiver during quiet hours
- match:
alertname: QuietHours
receiver: blackhole
inhibit_rules:
- source_match:
alertname: QuietHours
target_match_re:
alertname: '[^(QuietHours)]'
我验证了触发 QuietHours 警报的逻辑是有效的。它在工作时间后很好地触发并在工作时间解决。但是,抑制部分似乎不起作用,因为当 QuietHours 处于活动状态时,我仍然会收到其他警报。我找不到一个很好的资源来详细解释抑制配置。
任何想法我做错了什么?
【问题讨论】:
-
您确定您正在使用的正则表达式吗?从技术上讲,它的意思是“匹配不在列表中的单个字符(QuietHors)”
-
Thnx Elad,我知道它确实并不完美,但如果不支持前瞻语法,则很难进行负匹配。
标签: prometheus prometheus-alertmanager