[英]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.