GH GambleHub

Wpisy i powiadomienia: PagerDuty, Opsgenie

Wpisy i powiadomienia: PagerDuty, Opsgenie

1) Dlaczego oddzielna platforma wpisów

Celem jest dostarczenie natychmiastowego i odpowiedniego sygnału właściwej osobie/zespołowi i rozpoczęcie procesu incydentu: rozpoznawanie (ack), eskalacja, komunikacja, postmortem. PagerDuty i Opsgenie podają:
  • Routing według usług/tagów/środowisk.
  • Eskalacja i harmonogram (dyżur, follow-the-sun).
  • Deduplikacja/korelacja zdarzeń.
  • Ciche okna (konserwacja/zamrażanie) i zasady muzyki.
  • Integracja z monitoringiem, CI/CD i ChatOps.

Wsparcie: SLO-threshold → alert → osoba/maszyna → runbook → rollback/fix → postmortem.

2) Model sygnału i ciężkość

Zalecana skala:
  • krytyczny (strona) - naruszenie SLO/błąd ścieżki pieniężnej (depozyt/wypłata), spadek dostępności, oprocentowanie.
  • wysoka (strona/bilet) - znacząca degradacja bez oczywistego załamania SLO.
  • średni (bilet) - pojemność, degradacja pleców, przekaźnik.
  • niskie (informacja) - trendy, ostrzeżenia.

Reguła: strona przez SLO lub tylko wyraźny wyzwalacz biznesowy.

3) Architektura routingu

1. Źródło (Prometheus/Alertmanager, Grafana, monitoring chmury, własne haki internetowe).
2. Клин (PagerDuty/Opsgate service/integration).
3. Zasady: trasy według tagów („usługa”, „na”, „region”), dotkliwość, ładunek.
4. Eskalacja: kolejność poziomów służby (L1 → L2 → menedzher).
5. Komunikacja: kanały ChatOps, strony stanu, mailingi.

Przykład znaczników kluczowych (standaryzuj)

„usługobiorca”, „,” region „,” wersja „,” runbook „,” release _ id', „trasa”, „najemca” (jeżeli B2B/wielopoziomowy).

4) Harmonogram dyżurów i eskalacji

Harmonogram: pierwotny/wtórny, рола (SRE, DBRE, Sec).
Obroty: dzień/noc, follow-the-sun, weekend.
Nadjazdy: Urlop/choroba.
Eskalacja: ack-timeout 5-10 min → następna warstwa. Przez godziny pracy - do działu profilu; na zewnątrz - platforma dyżurna.

Wskazówka: Zachować krótkie kroki eskalacji w nocy (mniej zmęczenia), a dłużej w ciągu dnia (jest kontekst).

5) Integracja z Alertmanager (podstawowy wzór)

yaml receivers:
- name: pagerduty pagerduty_configs:
- routing_key: ${PAGERDUTY_ROUTING_KEY}
severity: '{{ if eq. Labels. severity "critical" }}critical{{ else }}error{{ end }}'
class: '{{.Labels. service }}'
component: '{{.Labels. env }}'
group: '{{.Labels. region }}'
description: '{{.Annotations. summary }}'
details:
service: '{{.Labels. service }}'
env: '{{.Labels. env }}'
runbook: '{{.Annotations. runbook }}'
release: '{{.Annotations. release }}'
route:
receiver: pagerduty group_by: ["service","env","region"]
group_wait: 30s group_interval: 5m repeat_interval: 2h

Opsgenie (webhook)

yaml receivers:
- name: opsgenie opsgenie_configs:
- api_key: ${OPSGENIE_API_KEY}
responders:
- name: "SRE Primary"
type: team priority: '{{ if eq. Labels. severity "critical" }}P1{{ else }}P3{{ end }}'
details:
trace: '{{.Labels. trace_id }}'
runbook: '{{.Annotations. runbook }}'

6) Hałas, deadup i korelacja

Klucz Dedup: użyj stabilnego odcisku palca (na przykład usługi + trasa + kod).
Grupowanie: 'group _ by' przez serwis/środowisko, dzięki czemu kaskada 5xx nie spawn dziesiątki stron.
Mutes/ciche okna: podczas migracji/zwolnień/testów obciążenia.
Tłumienie z jakiegoś powodu: jeśli istnieje już incydent P1 dla 'api-gateway @ prod', tłumić P2/P3 dziecka.

Anty-wzór: Strona przez procesor/pamięć bez potwierdzenia wpływu na SLO.

7) Połączenie z zwolnieniami i automatycznymi akcjami

Z depresją kanaryjską, PagerDuty/Opsgenie otrzymać alert z bramy SLO → webhook w CI/CD → pauza/rollback (Argo Rollouts/Helm).
Alert zawiera: 'release _ id',' image. znacznik ", odniesienie do rurociągu i książeczki startowej.

Przykład linku do książki startowej w adnotacjach


runbook: https://runbooks. company/rollback/api-gateway#canary

8) Chatopy i komunikacja

Automatyczne tworzenie kanału incydentu w Slack/Teams, łącząc się z biletem.
Slash-команна: 'ack', 'assign @ user', 'status set', 'postmortem start'.
Strona statusu - Aktualizacje automatycznie na P1/P2.

9) Cykl życia incydentu (minimum)

1. Wyzwalacz (alert ze SLO/czujników).
2. Strona (podstawowy dyżur).
3. Ack (potwierdzenie, TTA).
4. Komunikacja (kanał/stan).
5. Zminimalizuj (rollback/feature-flag/isolation).
6. Rozstrzygnięcie (TTR).
7. Postmortem (linia czasu, powody, działania, lekcje, właściciel zadania).

Zestaw ról: IC (dowódca incydentu), ołów operacyjny, Comms, Scribe.

10) Pola ładunkowe (normalizacja)

json
{
"service": "payments-api",
"env": "prod",
"region": "eu-central-1",
"severity": "critical",
"event_class": "slo_burn",
"summary": "Withdraw 5xx > 0. 5% for 10m",
"runbook": "https://runbooks/payments/withdraw-5xx",
"release_id": "rel-2025-11-03-14-20",
"image": "ghcr. io/org/payments:1. 14. 2",
"trace_id": "8a4f0c2e9b1f42d7",
"annotations": { "canary": "25%" }
}

11) Integracja źródeł sygnału

Prometheus/Alertmanager jest głównym źródłem SLO/RED.
Grafana Alerting jest łatwiejszy dla desek rozdzielczych/mierników biznesowych.
OpenTelemetry/SpanMetrics - opóźnienie/błąd na trasie.
K8s zdarzenia - awarie klastra (sterownik, naruszenia PDB).
DB/Kolejki - lag/locks/replication.
Webhaki aplikacji - sygnały domeny (błąd PSP, przepięcie oszustwa).

12) Polityka i zgodność

RBAC do tworzenia/modyfikowania zasad, harmonogramów, mutas.
Audyt: kto rozpoznał/wyznaczył/zmienił status, znaczniki czasowe.
Minimalizacja PII w ładunkach (identyfikator biletu zamiast e-maila/telefonu użytkownika).
DR-plan: co robimy, gdy PagerDuty/Opsgenie jest niedostępny (kanał awaryjny).

13) Case Studies (PagerDuty vs Opsgenie)

SzansaPagerDutyOpsgenie
Eskalacje/harmonogramyDojrzałe, elastyczneDojrzałe, elastyczne
Role/szablony incydentówSilne przepływy pracy incydentówSzablony incydentów/zainteresowane strony
Automatyczne kanały/komunikatoryDobre integracjeGłębokie zespoły Slack/MS
Ustalanie cen/licencjeCzęsto droższe, wiele dodatkówZwykle tańsze na początku
Routing taguStrong (Katalog usług)Strong (Zasady routingu)
Obie platformy obejmują 95% tych samych scenariuszy; wybrać według kosztów, UX, i integracje stosu.

14) Ciche okna i mrozy

Zamrażanie: Zakaz przywoływania w planowanych oknach wydania, pozostawiając tylko P1.
Zapamiętanie tagu: '= etap', 'region = dr', 'service = batch'.
Tymczasowa muta: podczas migracji baz danych/testów obciążenia - z wyraźnym właścicielem.

15) Wskaźniki wydajności (SRE/DORA dla wpisów)

MTTA/MTTR (w podziale na zespoły/usługi/zmiany).
% wpisów z książką startową (cel ≥ 95%).
Udział wpisów stron według SLO (cel ≥ 90%).
Stosunek użyteczności do hałasu (cel ≥ 3:1).
% akcji automatycznych (pauza/rollback poprzez webhook) - rośnie.
Elementy akcji po spaleniu w ciągu 14/30 dni.

16) Anty-wzory

Strona według sprzętu (procesor, dysk) bez wpływu na użytkownika.
Brak 'group _ by' → „burza” wpisów.
Nie ma cichych okien - zwalnia malować wszystko czerwone.
Ładunki użytkowe bez 'serwisu//Runbook' - nie można kierować/działać.
Nie ma jednej skali dotkliwości i reguł (każde źródło jest inne).
„Wieczne” ostrzeżenia, że nikt nie naprawia (dług alarmowy).

17) Lista kontrolna realizacji (0-45 dni)

0-10 dni

Wyrównać skalę ciężkości i ujednolicić znaczniki/adnotacje.
Tworzenie usług w PagerDuty/Opsgenie, konfiguracja harmonogramów i podstawowych eskalacji.
Powiązać Alertmanager/Grafana, włączyć 'group _ by' i deadup.

11-25 dni

Wprowadź wpisy SLO (multi-window burn), dodaj link runbook.
Konfiguracja ChatOps: auto kanały, ack/przypisać polecenia.
Włącz ciche okna w wersjach/migracjach.

26-45 dni

Zintegruj auto-pauza/rollback dla kanarków (webhooks).
Wprowadź raporty MTTA/MTTR i higienę ostrzegania (czyszczenie hałasu).
Standaryzuj postmortem i kontroluj elementy akcji.

18) Gotowe snippety

Grafana Alerting → PagerDuty (mapowanie ciała JSON)

json
{
"routing_key": "${PAGERDUTY_ROUTING_KEY}",
"event_action": "trigger",
"payload": {
"summary": "{{.RuleName }}: {{ index. Labels \"service\" }}",
"severity": "{{ if eq (index. Labels \"severity\") \"critical\" }}critical{{ else }}error{{ end }}",
"source": "grafana",
"component": "{{ index. Labels \"env\" }}",
"group": "{{ index. Labels \"region\" }}"
},
"links": [
{ "href": "{{.DashboardURL }}", "text": "Dashboard" },
{ "href": "{{ index. Labels \"runbook\" }}", "text": "Runbook" }
]
}

Webhook od alarmu → Argo Rollouts pauza

bash curl -X POST "$ARGO_API/rollouts/pause" \
-H "Authorization: Bearer $TOKEN" \
-d '{"name":"api-gateway","namespace":"prod"}'

Opsgenie - Reguła routingu (pseudo)

yaml if:
tags: ["service:payments","env:prod"]
severity: ["P1","P2"]
then:
route_to: "SRE-Payments"
notify: ["Primary OnCall","Secondary"]

19) Wniosek

Silny kontur wpisów to proces + dyscyplina: stratyfikacja zorientowana na SLO, kompetentne routing i eskalacja, jednolite znaczniki i ładunki, ciche okna, ChatOps i automatyczne działania (pauza/rolka). Wybierz PagerDuty lub Opsgenie na budżet i UX, ale trzymać się tych samych zasad hałasu, obowiązków i odpowiedzialności - wtedy strona będzie rzadkie, dokładne i przydatne, a incydenty będą krótkie i zarządzalne.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.