Настройка Heartbeat для проверки работы системы мониторинга
Расскажу на примере prometheus, alertmanager, opsgenie.
opsgenie:
0) создаем команду
1) по адресу
https://app.opsgenie.com/settings/heartbeat создаем хартбит по нужным вам параметрам (severity, на кого повесить, описание). Запоминаем имя (далее ${name})
2) идем в интеграции, создаем для prometheus - именуем, назначаем команду, получаем api ключ.
https://app.opsgenie.com/settings/integration/integration-list (далее ${opsgenie_api_key})
alertmanager.yml:
receivers:
- name: deadmansswitch
webhook_configs:
- url: https://api.opsgenie.com/v2/heartbeats/${name}/ping
send_resolved: true
http_config:
basic_auth:
password: ${opsgenie_api_key}
route:
group_by:
- job
group_interval: 5m
group_wait: 10s
receiver: default
repeat_interval: 1m
routes:
- receiver: deadmansswitch
match:
severity: DeadMansSwitch
repeat_interval: 1m
prometheus.yml -> далее если у вас правила вынесены в отдельный файл, если нет, ну, сами поправите)
...
rule_files:
- /etc/prometheus/prometheus.rules
...
prometheus.rules:
groups:
- name: prometheus.alerts.rules
rules:
- alert: PrometheusAlertmanagerE2eDeadManSwitch
expr: vector(1)
for: 5m
labels:
severity: DeadMansSwitch
annotations:
summary: "Prometheus AlertManager E2E dead man switch (instance {{ $labels.instance }})"
description: "Prometheus DeadManSwitch is an always-firing alert. It's used as an end-to-end test of Prometheus through the Alertmanager.\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
Как это работает:
1) в течение 5 минут прометей проверяет выражение
vector(1), которое всегда будет отдавать 1, а значит фейлиться.
2) через 5 минут (а затем еще каждую минуту) он будет пиннать алертменеджер и говорить что есть проблема.
3) Алертменеджер будет долбиться раз в минуту на специальный урл opsgenie.
4) В настройках хартбита вы выставляете время которое считаете нормальным для того чтобы система оповещения лежала. и далее ход конём:
5) если у вас погиб прометей (или сеть до алертменеджера), он не будет долбить алертменеджер и рефрешить гарантированный алерт. в таком случае автоматически происходит разрезолв алерта (по-умолчанию 5 минут) и перестают посылаться сообщения на урл из п.3. Тогда по истечению таймаута из п4. на вашу команду упадет алерт о том что хартбит просрочен.
6) если у вас умер алертменеджер (или связность до апи opsgenie), то по истечению таймаута из п4. на вашу команду упадет алерт о том что хартбит просрочен.
т.о. такая связка гарантирует что вся цепочка от мониторинга до алертменеджера и апишки opsgenie находится в работоспособном состоянии
Источник знаний:
-
https://t.me/metrics_ru-
https://docs.opsgenie.com/docs/heartbeat-api-
https://github.com/prometheus/alertmanager/pull/444#issuecomment-428493861#prometheus #opsgenie #alertmanager