Інтеграція PagerDuty для управління інцидентами
PagerDuty — це платформа управління інцидентами, яка приймає події від моніторингу, визначає, хто дежурить, сповіщає потрібну людину потрібним каналом і відслідковує реакцію. Інтеграція PagerDuty у існуючу інфраструктуру — 1-3 дня роботи з відчутним результатом.
Архітектура PagerDuty
Services — логічні одиниці (backend API, платіжний сервіс, база даних). Кожен сервіс має власну 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: тимчасове подавлення алертів під час запланованого обслуговування.
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 — наприклад, перезапуск сервісу, очищення диска, масштабування ASG. Якщо допомогло — інцидент закривається автоматично без будильника.
Аналітика та звіти
PagerDuty Analytics дає:
- MTTA/MTTR по командам та сервісам
- Responder health score (хто перевантажений)
- Noise ratio (скільки алертів actionable vs шум)
- Business impact (час без серйозних інцидентів)
Терміни інтеграції
- Створення сервісів + escalation policies + schedules — 1 день
- Підключення Prometheus/Datadog/CloudWatch — 1 день
- Webhooks + Slack/Jira автоматизація — 1-2 дня
- Тестування + навчання команди — 1 день







