如何使用Prometheus Alertmanager禁止在工作时间以外发出警报?

时间:2019-08-01 08:54:21

标签: prometheus prometheus-alertmanager

我们的应用程序依赖仅在工作时间内处于活动状态的数据源。我们在Prometheus中设置了警报设置,以便在溪流干dry时通知我们。但是,我们不想在工作时间以外收到“假”警报。

我遵循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处于活动状态时,我仍然会收到其他警报。我找不到关于禁止配置的详细说明的好的资源。

有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:3)

问题出在您的目标服务器上,语法不正确。如inhibit_rule文档所述,无需排除TextWriter

  

为防止警报自行阻止,请同时匹配两个警报   警报不能禁止规则的目标和源端   对于这是真的(包括它本身)。

正则表达式应仅与与您的数据源相关的警报匹配。

添加标签来标识与要禁止和使用的来源相关的警报比使用警报名称更容易。

XmlWriter

这样,将禁止与源相关的任何新警报。