Для пояснения - Общий поток для обработки предупреждений в Prometheus (Alertmanager и интеграция Prometheus) выглядит следующим образом:
SomeErrorHappenInYourConfiguredRule (Правило) -> RouteToDestination (Маршрут) -> TriggeringAnEvent (Получатель) -> GetAMessageInSlack / PagerDuty / Mail / и т. Д.
Например:
если мой кластер машин aws production-a1 не работает, я хочу вызвать событие, отправляющее моей команде "pagerDuty" и "Slack" с соответствующей ошибкой.
Для настройки предупреждений в вашей системе Prometheus важны 3 файла:
- alertmanager.yml - конфигурация ваших маршрутов (получение сработавших ошибок) и получателей (как обрабатывать эти ошибки)
- rules.yml - эти правила будут содержать все пороговые значения и правила, которые вы определите в своей системе.
- prometheus.yml - глобальная конфигурация для интеграции ваших правил в маршруты и приемники вместе (два выше).
Я прилагаю фиктивный пример. Чтобы продемонстрировать идею, в этом примере я буду наблюдать перегрузку на моем компьютере (используя установленный на нем экспортер узлов): On / var / data / prometheus-stack / alertmanager / alertmanager .yml
global:
# The smarthost and SMTP sender used for mail notifications.
smtp_smarthost: 'localhost:25'
smtp_from: '[email protected]'
route:
receiver: defaultTrigger
group_wait: 30s
group_interval: 5m
repeat_interval: 6h
routes:
- match_re:
service: service_overload
owner: ATeam
receiver: pagerDutyTrigger
receivers:
- name: 'pagerDutyTrigger'
pagerduty_configs:
- send_resolved: true
routing_key: <myPagerDutyToken>
Добавьте какое-нибудь правило на /var/data/prometheus-stack/prometheus/<▪yourRuleFile.yml
groups:
- name: alerts
rules:
- alert: service_overload_more_than_5000
expr: (node_network_receive_bytes_total{job="someJobOrService"} / 1000) >= 5000
for: 10m
labels:
service: service_overload
severity: pager
dev_team: myteam
annotations:
dev_team: myteam
priority: Blocker
identifier: '{{ $labels.name }}'
description: 'service overflow'
value: '{{ humanize $value }}%'
На /var/data/prometheus-stack/prometheus/<▪prometheus.yml добавьте этот фрагмент для интеграции alertmanager:
global:
...
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager:9093"
rule_files:
- "yourRuleFile.yml"
...
Обратите внимание, что ключевым моментом в этом примере является service_overload, который подключает и привязывает правило к нужному получателю.
Перезагрузите конфигурацию (снова перезапустите службу или остановите и запустите контейнеры докеров) и протестируйте ее. Если она настроена правильно, вы можете просматривать предупреждения в http://your-prometheus-url:9090/alerts
person
avivamg
schedule
03.10.2019