异常抑制(负匹配)

Inhibition with exceptions (negative matchers)

由于禁止规则的例外情况,我对禁止规则有疑问。

例如,我们有 50 个团队,每个团队都处理他们的警报。当数据中心出现故障时(例如由于网络问题),我们希望禁止除 Team_1234567890Team_ABCDEFGHIJ[= 之外的所有警报26=].

问题是 Alertmanager 不支持抑制的负匹配器: 用于路由和抑制的负匹配器 #1023 - https://github.com/prometheus/alertmanager/issues/1023

Golang 和 Prometheus/Alertmaneger 不支持“?!”正则表达式中的负面展望: https://github.com/google/re2/wiki/Syntax

本例如何设置禁止规则?

谢谢, 丹尼斯

在 AM 中实施否定匹配之前,您需要为这两支球队添加独特的路线。并照常抑制其他队伍。

或者,如果你想走消音器路线, https://github.com/prometheus/alertmanager/blob/master/README.md#amtool

可以在此处找到更详细的手册页 https://manpages.debian.org/testing/prometheus-alertmanager/amtool.1.en.html

您可以使用 amtool 添加消音器,以便在触发第一个网络故障警报后立即暂停其他 50-2 团队的所有警报。

您确实需要对何时插入/移除消音器有创意。

除非你已经有一个不想被警报风暴的团队列表,否则你确实需要 运行 一个否定匹配 PromQL 到 return 那 48 个团队名称,并将它们分开|,

amtool silence add alertname=~".*" instance=~"team1|team2..."

Julien Pivotto (roidelapluie/Github) 编写了此用例的解决方案: https://github.com/prometheus/alertmanager/issues/1023#issuecomment-671851280

你可以使用普罗米修斯

alerting:
  alert_relabel_configs:
  - source_labels: [team]
    regex: Team_1234567890|Team_ABCDEFGHIJ
    target_label: dc_team_alert
    replacement: "yes"

并抑制

target_match:
   dc_team_alert: ""

我有类似的原因,结果是 - job: "!(dev_mapr_alarms_exporters)" - 对于我的具体情况,完成了工作。我能够将这两组分开。这是我的配置的一部分。

  routes:
- receiver: "jiralert"
  group_wait: 10s
  match_re:
    severity: critical|warning
    job: "!(dev_mapr_alarms_exporters)"
  group_by: ['alertname', 'job']
  group_interval: 5m
  repeat_interval: 30m
  continue: true
- receiver: "jiralert"
  group_wait: 10s
  match_re:
    job: dev_mapr_alarms_exporters
  group_by: ['alertname', 'job']
  group_interval: 5m
  repeat_interval: 30m
  continue: true