[英]How to silence Prometheus Alertmanager using config files?
我正在使用官方的stable/prometheus-operator chart 来部署带有 helm 的 Prometheus。
到目前为止,它运行良好,除了为许多 pod(包括自己的 Prometheus 的config-reloaders 容器)触发的烦人的CPUThrottlingHigh
警报。 此警报目前正在讨论中,我想暂时将其通知静音。
Alertmanager 具有静音功能,但它是基于网络的:
静音是在给定时间内简单地将警报静音的直接方法。 静音是在 Alertmanager 的 Web 界面中配置的。
有没有办法使用配置文件将来自CPUThrottlingHigh
通知静音?
一种选择是将您想要静音的警报路由到“空”接收器。 在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>
好吧,我通过配置一个hackishprevent_rule让它工作了:
inhibit_rules:
- target_match:
alertname: 'CPUThrottlingHigh'
source_match:
alertname: 'DeadMansSwitch'
equal: ['prometheus']
DeadMansSwitch
设计是 prometheus-operator 附带的“始终触发”警报,而prometheus
标签是所有警报的通用标签,因此CPUThrottlingHigh
最终会被永远禁止。 它很臭,但有效。
优点:
alertmanager.config
helm 参数)。CPUThrottlingHigh
警报以供分析。CPUThrottlingHigh
警报只会显示在 Alertmanager UI 中。缺点:
DeadMansSwitch
或prometheus
标签设计中的任何更改都将破坏这一点(这仅意味着警报再次触发)。更新:我的缺点变成了现实......
DeadMansSwitch
名称刚刚在 stable/prometheus-operator 4.0.0 中更改。 如果使用这个版本(或更高版本),新的警报名称是Watchdog
。
我怀疑是否存在通过配置使警报静音的方法(除了将所述警报路由到/dev/null
接收器,即没有配置电子邮件或任何其他通知机制的接收器,但警报仍会显示在 Alertmanager UI 中)。
您显然可以使用amtool
附带的命令行工具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"
}
}'
您可以通过Robusta发送警报来使其静音。 (免责声明:我写了罗布斯塔。)
下面是一个例子:
- triggers:
- on_prometheus_alert: {}
actions:
- name_silencer:
names: ["Watchdog", "CPUThrottlingHigh"]
但是,这可能不是您想要做的!
一些CPUThrottlingHigh
警报是垃圾邮件,无法像GKE 上的指标服务器那样修复。 .
但是,通常警报是有意义的,可以指示真正的问题。 通常,最佳实践是更改或删除 pod 的 CPU 限制。 .
在我为 Robusta 编写自动剧本时,我花了比我愿意承认的更多时间来查看CPUThrottlingHigh
,该剧本分析每个CPUThrottlingHigh
并推荐最佳实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.