Інтеграція OpsGenie для управління інцидентами
OpsGenie (Atlassian) — альтернатива PagerDuty з більш гнучким ціноутворенням та нативною інтеграцією з екосистемою Atlassian (Jira, Confluence). Для команд, які вже використовують Jira Service Management, OpsGenie включений у плани Advanced/Premium без доплати.
Ключові поняття OpsGenie
Teams — групи інженерів. Алерти маршрутизуються на команди, не на окремих людей.
On-Call Schedules — розписання дежурства з ротацією, override, тимчасовими виключеннями.
Escalation Policies — порядок нотифікації при неответе.
Routing Rules — умовна маршрутизація алертів: за тегами, джерелом, часом суток.
Alert Policies — правила трансформації алертів: шумоподавлення, auto-close, re-routing.
Підключення джерел алертів
Prometheus Alertmanager:
receivers:
- name: 'opsgenie'
opsgenie_configs:
- api_key: '<OPSGENIE_API_KEY>'
message: '{{ .CommonAnnotations.summary }}'
description: '{{ .CommonAnnotations.description }}'
priority: |
{{- if eq .CommonLabels.severity "critical" -}}P1
{{- else if eq .CommonLabels.severity "warning" -}}P3
{{- else -}}P5{{- end -}}
tags: '{{ .CommonLabels.alertname }},{{ .CommonLabels.cluster }}'
Grafana → OpsGenie: У Grafana alert channel вибрати OpsGenie, ввести API key. Нотифікація містить скриншот панелі.
Custom webhook (будь-яке джерело):
curl -X POST https://api.opsgenie.com/v2/alerts \
-H "Authorization: GenieKey $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "High error rate on payment service",
"alias": "payment-high-error-rate",
"priority": "P1",
"tags": ["payment", "production"],
"details": {"error_rate": "5.2%", "threshold": "1%"}
}'
Умна маршрутизація алертів
Routing rules дозволяють спрямовувати алерти в залежності від контексту:
IF alert.tags contains "payment" AND time = business_hours
→ route to: payment-team
→ escalation: payment-escalation
IF alert.tags contains "payment" AND time = off_hours
→ route to: on-call-primary
→ escalation: critical-escalation
IF alert.priority = "P5"
→ create ticket only, no notification
Heartbeat моніторинг
OpsGenie Heartbeats — моніторинг регулярних процесів (cron jobs, batch tasks). Якщо cron не відправив heartbeat у очікуваний час — алерт:
import requests
def send_heartbeat(heartbeat_name: str):
"""Викликати після кожного успішного виконання cron job"""
requests.get(
f"https://api.opsgenie.com/v2/heartbeats/{heartbeat_name}/ping",
headers={"Authorization": f"GenieKey {API_KEY}"}
)
Налаштування: період 1 година, grace period 10 хвилин. Якщо cron не пінговав 70 хвилин — алерт на дежурного.
Інтеграція з Jira Service Management
При JSM Advanced/Premium план — OpsGenie вбудований. Алерт у OpsGenie → автоматично Issue у JSM. При resolve OpsGenie → Issue закривається. Двостороння синхронізація: коментарі та статус оновлюються в обох інструментах.
Для standalone Jira (Software):
- OpsGenie → Jira integration: створює тикет при інциденті
- Severity field → Jira priority mapping
- Assignee → по on-call розписанню
Maintenance Windows
Планові роботи — подавлення алертів на період:
import requests, datetime
def create_maintenance(name: str, start: datetime, end: datetime, services: list):
requests.post(
"https://api.opsgenie.com/v1/maintenance",
headers={"Authorization": f"GenieKey {API_KEY}"},
json={
"description": name,
"time": {
"type": "schedule",
"startDate": start.isoformat(),
"endDate": end.isoformat()
},
"rules": [{"state": "disabled", "entity": {"id": s, "type": "service"}}
for s in services]
}
)
OpsGenie Mobile App
Критично для on-call: нотифікації через push → звонок → SMS у налаштовуваному порядку. Можливість acknowledge та еськалювати прямо з програми без ноутбука.
Терміни інтеграції
- Базова налаштування (teams + schedules + escalation) — 1 день
- Підключення моніторингу (Prometheus, Grafana, CloudWatch) — 1 день
- Routing rules + alert policies — 1 день
- Heartbeats + maintenance windows — 0.5 дня
- Jira інтеграція — 0.5-1 день







