14

我正在使用官方的stable/prometheus-operator图表来使用 helm 部署 Prometheus。

到目前为止,它运行良好,除了针对CPUThrottlingHigh许多 pod(包括自己的 Prometheus 的config-reloaders 容器)触发的烦人警报。此警报目前正在讨论中,我想暂时将其通知静音。

Alertmanager 具有静音功能,但它是基于 Web 的:

静音是在给定时间内简单地将警报静音的简单方法。静音在 Alertmanager 的 Web 界面中配置。

有一种方法可以通过CPUThrottlingHigh使用配置文件来静音通知吗?

4

4 回答 4

16

一种选择是将您想要静音的警报路由到“空”接收器。在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>
于 2019-03-05T06:35:40.293 回答
10

好吧,我通过配置一个骇人听闻的inhibitor_rule来管理它:

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

根据DeadMansSwitch设计,prometheus-operator 附带了一个“始终触发”的警报,并且该prometheus标签是所有警报的通用标签,因此CPUThrottlingHigh最终永远被禁止。它很臭,但有效。

优点:

  • 这可以通过配置文件完成(使用alertmanager.confighelm 参数)。
  • Prometheus上CPUThrottlingHigh仍然存在警报以供分析。
  • CPUThrottlingHigh如果检查了“禁止”框,则只有在AlertManager UI中显示警报。
  • 我的接收器上没有烦人的通知。

缺点:

  • 任何更改DeadMansSwitchprometheus标签设计都会破坏这一点(这仅意味着警报再次触发)。

更新: 我的缺点变得真实......

DeadMansSwitch替代名称刚刚在stable/prometheus-operator 4.0.0 中更改。如果使用此版本(或更高版本),新的警报名称为Watchdog.

于 2019-02-21T18:37:09.767 回答
5

我怀疑是否存在通过配置使警报静音的方法(除了将所述警报路由到/dev/null接收器,即没有配置电子邮件或任何其他通知机制的接收器,但警报仍会显示在 Alertmanager UI 中)。

您显然可以使用 alertmanager 附带的命令行工具amtool来添加静音(尽管我看不到设置静音过期时间的方法)。

或者您可以直接使用 API(即使它没有记录在案并且理论上它可能会改变)。根据这个 prometheus-users 线程,这应该可以工作:

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"
      }

}'
于 2019-02-21T15:17:19.777 回答
0

您可以通过Robusta发送警报来使其静音。(免责声明:我写了罗布斯塔。)

这是一个例子:

- triggers:
  - on_prometheus_alert: {}
  actions:
  - name_silencer:
      names: ["Watchdog", "CPUThrottlingHigh"]

但是,这可能不是您想要做的!

有些CPUThrottlingHigh警报是垃圾邮件,无法像GKE 上的 metrics-server 那样修复。.

但是,一般来说,警报是有意义的并且可以指示一个真正的问题。通常,最佳实践是更改或删除 pod 的 CPU 限制。.

CPUThrottlingHigh当我为 Robusta 编写自动化剧本时,我花费的时间比我愿意承认的要多,它分析了每一个CPUThrottlingHigh并推荐了最佳实践。

于 2021-12-28T11:09:52.120 回答