Как заставить Prometheus Alertmanager замолчать, используя конфигурационные файлы?
Я использую официальную таблицу стабильных / прометей-операторов, развертываю Прометей со штурвалом.
Пока работает хорошо, кроме надоедливых CPUThrottlingHigh
оповещение, которое запускается для многих модулей (включая собственные контейнеры Prometheus config-reloaders). Это предупреждение в настоящее время обсуждается, и я хочу пока отключить его уведомления.
Alertmanager имеет функцию молчания, но он основан на сети:
Молчание - это простой способ просто отключить звуковые сигналы на определенное время. Молчания настраиваются в веб-интерфейсе Alertmanager.
Есть способ отключить уведомления от CPUThrottlingHigh
используя конфигурационный файл?
4 ответа
Ну, мне удалось это сделать, настроив хакерский injit_rule:
inhibit_rules:
- target_match:
alertname: 'CPUThrottlingHigh'
source_match:
alertname: 'DeadMansSwitch'
equal: ['prometheus']
DeadMansSwitch
По замыслу, "всегда стреляющий" оповещение поставляется с оператором-прометеем, а prometheus
метка является общей меткой для всех оповещений, поэтому CPUThrottlingHigh
в конечном итоге блокируется навсегда. Воняет, но работает.
Плюсы:
- Это можно сделать через файл конфигурации (используя
alertmanager.config
параметр руля). CPUThrottlingHigh
оповещение все еще присутствует на Прометея для анализа.CPUThrottlingHigh
предупреждение отображается в пользовательском интерфейсе Alertmanager только в том случае, если установлен флажок "Запрещено".- Нет раздражающих уведомлений о моих получателях.
Минусы:
- Любые изменения на
DeadMansSwitch
илиprometheus
дизайн этикетки будет нарушать это (только подразумевает срабатывание предупреждений).
Редактировать: мои минусы стали реальными...DeadMansSwitch
altertname только что изменилось в стабильном / prometheus-операторе 4.0.0. Если используется эта версия (или выше), новое имя оповещения Watchdog
,
Один из вариантов - направить оповещения, которые вы хотите отключить, на "нулевой" приемник. В 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>
Я сомневаюсь, что существует способ заставить оповещения замолчать через конфигурацию (кроме маршрутизации указанных оповещений /dev/null
получатель, т. е. тот, у которого нет электронной почты или какого-либо другого настроенного механизма уведомления, но предупреждение все равно будет отображаться в пользовательском интерфейсе Alertmanager).
Вы, очевидно, можете использовать инструмент командной строкиamtool
это идет с alertmanager, чтобы добавить тишину (хотя я не вижу способа установить время истечения для тишины).
Или вы можете использовать API напрямую (даже если он не задокументирован и теоретически может измениться). В соответствии с этой веткой пользователей-прометей это должно работать:
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"]
Однако, это, вероятно, не то, что вы хотите сделать!
Некоторые оповещения являются спамом и не могут быть исправлены, как оповещения для metrics-server на GKE..
Однако в целом предупреждение имеет смысл и может указывать на реальную проблему. Как правило, наилучшей практикой является изменение или удаление ограничения ЦП модуля..
Я провел больше часов своей жизни, чем готов признать, глядя на то, как я писал автоматизированную книгу для Робусты, которая анализирует каждую
CPUThrottlingHigh
и рекомендует лучшие практики.