如何使用配置文件使Prometheus Alertmanager静音?

时间:2019-02-21 11:45:22

标签: kubernetes prometheus prometheus-alertmanager prometheus-operator

我使用的是官方的stable/prometheus-operator图表,确实部署了掌舵的普罗米修斯。

到目前为止,它运转良好,除了烦人的CPUThrottlingHigh警报正在触发许多吊舱(包括自己的Prometheus的config-reloaders containers)。该警报为currently under discussion,我现在想使其通知静音。

Alertmanager具有silence feature,但它是基于Web的:

  

沉默是一种简单的方法,可以简单地使给定警报静音   时间。静默功能是在   警报管理员。

是否可以使用配置文件将来自CPUThrottlingHigh的通知静音?

3 个答案:

答案 0 :(得分:2)

好吧,我通过配置hack inhibit_rule来使其能够正常工作:

inhibit_rules:
- target_match:
     alertname: 'CPUThrottlingHigh'
  source_match:
     alertname: 'DeadMansSwitch'
  equal: ['prometheus']

根据设计,DeadMansSwitch是Prometheus-operator随附的“始终触发”警报,而prometheus标签是所有警报的通用标签,因此CPUThrottlingHigh结尾永远被禁止。它发臭,但有效。

优点:

  • 这可以通过配置文件(使用alertmanager.config helm参数)完成。
  • Prometheus上仍显示CPUThrottlingHigh警报 分析。
  • CPUThrottlingHigh警报仅显示在 Alertmanager用户界面,如果已选中“禁止”框。
  • 我的接收器上没有烦人的通知。

缺点:

  • DeadMansSwitchprometheus标签设计上进行的任何更改都会破坏此情况(仅表示再次触发警报)。

编辑: 我的缺点变成现实...
稳定/ prometheus-operator 4.0.0中的DeadMansSwitch别名just changed。如果使用此版本(或更高版本),则新的警报名称为Watchdog

答案 1 :(得分:1)

我怀疑是否存在一种通过配置使警报静音的方法(除了将警报发送到/dev/null接收者之外,即没有配置电子邮件或任何其他通知机制的接收者,但该警报是否仍会显示在Alertmanager用户界面)。

您显然可以使用alertmanager随附的command line tool amtool来添加静音(尽管我看不到设置静音到期时间的方法)。

或者您可以直接使用API​​(即使未记录该API,并且理论上它可能会更改)。根据{{​​3}},此方法应该有效:

curl https://alertmanager/api/v1/silences -d '{
      "matchers": [
        {
          "name": "alername1",
          "value": ".*",
          "isRegex": true
        }
      ],
      "startsAt": "2018-10-25T22:12:33.533330795Z",
      "endsAt": "2018-10-25T23:11:44.603Z",
      "createdBy": "api",
      "comment": "Silence",
      "status": {
        "state": "active"
      }

}'

答案 2 :(得分:1)

一种选择是将您希望静音的警报路由到“空”接收器。在alertmanager.yaml中:

route:
  # Other settings...
  group_wait: 0s
  group_interval: 1m
  repeat_interval: 1h

  # Default receiver.
  receiver: "null"

  routes:
  # continue defaults to false, so the first match will end routing.
  - match:
      # This was previously named DeadMansSwitch
      alertname: Watchdog
    receiver: "null"
  - match:
      alertname: CPUThrottlingHigh
    receiver: "null"
  - receiver: "regular_alert_receiver"

receivers:
  - name: "null"
  - name: regular_alert_receiver
    <snip>