Интеграция PagerDuty для управления инцидентами
PagerDuty — это платформа управления инцидентами, которая принимает события от мониторинга, определяет кто дежурит, нотифицирует нужного человека по нужному каналу и отслеживает реакцию. Интеграция PagerDuty в существующую инфраструктуру — это 1-3 дня работы с ощутимым результатом.
Архитектура PagerDuty
Services — логические единицы (backend API, payment service, database). Каждый сервис имеет свою escalation policy и on-call schedule.
Integrations — источники событий: Prometheus/Alertmanager, Datadog, CloudWatch, Grafana, Uptime Robot, кастомные webhooks. Каждая интеграция генерирует уникальный endpoint key.
Escalation Policies — правила: кто получает алерт, через сколько минут эскалация, куда эскалировать.
Schedules — on-call расписания с ротациями.
Подключение Prometheus Alertmanager
# alertmanager.yml
route:
group_by: ['alertname', 'cluster']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: 'pagerduty-critical'
routes:
- match:
severity: critical
receiver: 'pagerduty-critical'
- match:
severity: warning
receiver: 'slack-warnings'
receivers:
- name: 'pagerduty-critical'
pagerduty_configs:
- routing_key: '<PAGERDUTY_INTEGRATION_KEY>'
description: '{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}'
severity: '{{ .CommonLabels.severity }}'
details:
firing: '{{ template "pagerduty.default.instances" .Alerts.Firing }}'
Подключение Datadog
В Datadog: Integrations → PagerDuty → Add API key. Настройка в monitor notifications:
@pagerduty-MyService
Или через Datadog Webhook integration для более тонкого контроля payload.
Event Intelligence и шумоподавление
PagerDuty Event Intelligence (платный план) — автоматическое подавление шума:
- Alert Grouping: связанные алерты объединяются в один инцидент. При аварии БД не получаешь 50 алертов от всех сервисов, которые не могут к ней подключиться — только один инцидент.
- Intelligent Alert Grouping: ML-модель группирует на основе исторических паттернов.
- Suppression Rules: временное подавление алертов во время planned maintenance.
Webhooks и автоматизация
PagerDuty Webhooks отправляют события при создании/обновлении/закрытии инцидента:
@app.route('/pd-webhook', methods=['POST'])
def pagerduty_webhook():
data = request.json
event_type = data['event']['event_type']
incident = data['event']['data']
if event_type == 'incident.triggered':
# Создать канал в Slack
create_incident_channel(incident['title'], incident['id'])
# Обновить Status Page
update_status_page('major_outage', incident['title'])
elif event_type == 'incident.resolved':
# Закрыть канал в Slack
archive_incident_channel(incident['id'])
# Восстановить Status Page
update_status_page('operational', '')
return '', 200
PagerDuty + Jira/Linear интеграция
Автоматическое создание тикетов при SEV1/SEV2 инцидентах:
- Native Jira integration: при trigger → создаётся Jira issue с типом Incident
- При resolve → Jira issue переходит в статус Done с комментарием о длительности
Runbook Automation
PagerDuty Runbook Automation (бывший Rundeck): при срабатывании алерта автоматически выполняется runbook — например, restart сервиса, очистка диска, масштабирование ASG. Если помогло — инцидент закрывается автоматически без будильника.
Аналитика и отчёты
PagerDuty Analytics даёт:
- MTTA/MTTR по командам и сервисам
- Responder health score (кто перегружен)
- Noise ratio (сколько алертов actionable vs шум)
- Business impact (time without major incidents)
Сроки интеграции
- Создание сервисов + escalation policies + schedules — 1 день
- Подключение Prometheus/Datadog/CloudWatch — 1 день
- Webhooks + Slack/Jira автоматизация — 1-2 дня
- Тестирование + обучение команды — 1 день







