GH GambleHub

Alert e notifiche: PagerDuty, Opsgenie

Alert e notifiche: PagerDuty, Opsgenie

1) Perché una piattaforma di alert separata

L'obiettivo è di dare un segnale immediato e appropriato alla persona/squadra giusta e avviare il processo di incidente: ammissione (ack), escalation, comunicazione, post-mortem. PagerDuty e Opsgenie danno:
  • Instradamento per servizi/tag/ambienti.
  • Escalation e orari (servizio, follow-the-sun).
  • Deduplicazione/correlazione degli eventi.
  • Finestre silenziose (maintenance/freeze) e regole di miele.
  • Integrazioni con monitoraggio, CI/CD e ChatOps.

2) Modello di segnale e gravità (severity)

Scala consigliata:
  • critical (page) - violazione SLO/errore del percorso di cassa (deposito/ritiro), riduzione della disponibilità, burn-rate.
  • high (page/ticket) è una degradazione significativa senza una prova SLO esplicita.
  • medium - capacità, degrado del beck, retrai.
  • low (informazioni) - tendenze, avvisi.

Regola: pagina solo per SLO o trigger esplicito aziendale.

3) Architettura di instradamento

1. Sorgente (Prometheus/Alertmanager, Grafana, monitoraggio cloud, siti web personalizzati).
2. Шлюз (PagerDuty/Opsgenie service/integration).
3. Criteri: percorsi di tag («service», «eng», «region»), severity, payload.
4. Escalation: sequenza di livelli di servizio (L1→L2→menedzher).
5. Comunicazioni: canali ChatOps, pagine statali, mailing.

Esempio di tag chiave (standardizzare)

servizio, env, region, versione, runbook, release _ id, route, tenant (se B2V/multi-tenant).

4) Pianificazioni on-call e scalate

Schedules: primary/secondary, роли (SRE, DBRE, Sec).
Rotations: diurni/notturni, follow-the-sun, weekend.
Overrides - vacanza/malattia.
→ ack-timeout 5-10 min per il prossimo strato. Per orari di lavoro, nel reparto di specializzazione; fuori è un sito on-call.

Suggerimento: tenete i brevi passi di escalation di notte (meno stanchezza) e più lunghi di giorno (c'è il contesto).

5) Integrazione con Alertmanager (pattern base)

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) Rumore, deadup e correlazione

Chiave di deduplicazione: utilizzare un fingerprint stabile (ad esempio servizio + route + code).
Raggruppa «group _ by» per servizio/ambiente in modo che la cascata 5xx non generi decine di pagine.
Mute/finestre silenziose per il tempo di migrazione/rilascio/test di carico.
Supponendo che se c'è già un incidente P1 per «api-gateway @ prod», sopprimi i P2/P3 secondari.

Anti-Pattern: Un programma CPU/Memory senza effetti confermati su SLO.

7) Comunicazioni con le release e attività auto

In caso di deposito di canne, le riceve un alert da un -gate di webhook in CA/CD-pausa/rollback (Argo Rollouts/Helm).
Alert contiene "release _ id", "immagine. tag ', collegamento a pipline e runbook del passo di ripristino.

Esempio di riferimento runbook nelle annotazioni


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

8) ChatOps e comunicazioni

Creazione automatica di un canale di incidente in Slack/Teams, allineamento al ticket.
Slash-команды: `ack`, `assign @user`, `status set`, `postmortem start`.
Stato pagina aggiornamento automatico P1/P2.

9) Ciclo di vita dell'incidente (minimo)

1. Trigger (alert SLO/sensori).
2. Page (primary on-call).
3. Ack (conferma, TTA).
4. Comunicato (canale/stato).
5. Mitigate (rollback/feature-flag/isolamento).
6. Resolve (TTR).
7. Postmortem (timeline, cause, azioni, lezioni, proprietario delle attività).

Role-kit: IC (incident commander), Ops lead, Comms, Scribe.

10) Campi di paylade utili (normalize)

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) Integrazione delle sorgenti di segnale

Prometheus/Alertmanager è la fonte principale di SLO/RED.
Grafana Alerting è più semplice per i dashboard/metriche aziendali.
OpenTelemetry/SpanMetrics-latency/error lungo le rotte.
Eventi K8s - Crash del cluster (control-plane, PDB violazione).
Database/Code - lag/locks/replication.
Web hook applicazioni - Segnali di dominio (errore PSP, sfogo di frodo).

12) Regole e compliance

RBAC per la creazione/modifica di regole, pianificazioni, mute.
Controllo: chi ha riconosciuto/assegnato/modificato lo stato, i timestempi.
Riduzioni PII nei pagliacci (ID del ticket invece di email/telefono utente).
DR: cosa facciamo quando il canale fallback non è disponibile.

13) Esempi di pratiche (PagerDuty vs Opsgenie)

FunzionalitàPagerDutyOpsgenie
Scalate/pianificazioniMaturi, flessibiliMaturi, flessibili
Ruoli/modelli di incidenteForti Invident WorkflowsIncident Templates/Stakeholders
Canali auto/commsBuona integrazioneProfondo Slack/MS Teams
Prezzi/licenzeSpesso più costoso, molti add-onSolitamente più economico alla partenza
Instradamento per tagForte (Service Directory)Forte (Routing Rule)
Entrambe le piattaforme chiudono il 95% degli stessi script; scegli il costo, la UX e le integrazioni dello stack.

14) Finestre silenziose e congelamento

Freeze: proibisce il cercapersone nelle finestre di rilascio pianificate, lasciando solo P1.
Mit per tag: «eng = stage», «region = dr», «service = batch».
Mute temporale: durante la migrazione di database/carichi di lavoro, con un proprietario esplicito.

15) Metriche di efficienza (SRE/DORA per alert)

MTTA/MTTR (nel taglio comandi/servizi/turni).
% di alert con runbook (obiettivo 95%).
Percentuale di pagine-alert SLO (obiettivo 90%).
Ratio utile/rumoroso (obiettivo 3:1).
% di attività automatiche (pausa/rollback tramite webhook) - crescere.
Burn-down postmortem action items in 14/30 giorni.

16) Anti-pattern

Raggruppamento di ferro (CPU, disco) senza impatto sull'utente.
L'assenza dì group _ by "è" tempesta "degli alert.
Niente finestre silenziose. Le release colorano di rosso.
Payload senza «service/eng/runbook» - Impossibile instradare/agire.
Nessuna scala di severity e regole (ciascuna sorgente a suo modo).
Avvertimenti «eterni» che nessuno ripara (alert-dovere).

17) Assegno foglio di implementazione (0-45 giorni)

0-10 giorni

Allineare la scala severity e standardizzare i tag/annotazioni.
Crea servizi nel PagerDuty/Opsgenie, configura schedule e scalate di base.
Aggancia Alertmanager/Grafana, abilita «group _ by» e deadup.

11-25 giorni

Inserisci alert SLO (multi-window burn), aggiungi link runbook.
Configura i canali automatici, i comandi ack/assign.
Abilita finestre silenziose per rilasci/migrazioni.

26-45 giorni

Integrare auto-pausa/rollback per canarini (webhook).
Immettere report MTTA/MTTR e allert (pulizia dei rumori).
Standardizzare il controllo post-mortem e action items.

18) Snippet finiti

Grafana Alerting (JSON body mupping)

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 da alert di Argo Rollouts pause

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

Opsgenie - Routing Rule (pseudo)

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

19) Conclusione

Un tracciato forte di alert è un processo + disciplina: stratificazione orientata a SLO, routing e scalate corrette, tag e payload unificati, finestre silenziose, attività automatiche (pausa/rollback). Scegli l'Opsgenie per budget e UX, ma attenetevi alle stesse regole di rumore, servizio e responsabilità - in questo caso il software sarà raro, preciso e utile, e gli incidenti sono brevi e gestibili.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.