GH GambleHub

Alertas e notificações: PagerDuty, Opsgenie

Alertas e notificações: PagerDuty, Opsgenie

1) Por que uma plataforma de alertas separada

O objetivo é enviar um sinal imediato e relevante para a pessoa/equipe certa e iniciar o processo de incidente, como o reconhecimento (ack), escalação, comunicação, pós-morte. PagerDuty e Opsgenie dão:
  • Roteiro por serviços/marcas/ambientes.
  • Escalação e agendamento (serviço, follow-the-sun).
  • Deduplicação/correlação de eventos.
  • Janelas silenciosas (maintenance/freeze) e regras de mel.
  • Integração com monitoramento, CI/CD e ChatOps.

Suporte: porta SLO alert de pessoas/máquina runbook reversão/fix pós-mortem.

2) Modelo de sinais e gravidade (severity)

Escala recomendada:
  • critical (page) - violação do SLO/erro no caminho do dinheiro (depósito/retirada), queda na disponibilidade, burn-rate.
  • high (página/tíquete) é uma degradação substancial sem perfuração SLO explícita.
  • medium (tíquete) - capacidade, degradação, retraí.
  • low (informação) - tendências, avisos.

Regra: página apenas para SLO ou desencadeador de negócios explícito.

3) Arquitetura de rotação

1. Origem (Prometheus/Alertmanager, Grafana, monitoramento na nuvem, webhooks próprios).
2. Шлюз (PagerDuty/Opsgenie service/integration).
3. Políticas: rotas de formatação ('service', 'eng', 'region'), 'severity', 'payload'.
4. Escalação: sequência de níveis de serviço (L1→L2→menedzher).
5. Comunicações: canais ChatOps, páginas de status, e-mails.

Exemplo de marcas-chave (normalizar)

'service', 'eng', 'region', 'version', 'runbook', 'release _ id', 'road', 'tenant' (se B2V/multi-tenante).

4) Agendamento on-call e escalação

Schedules: primary/secondary, роли (SRE, DBRE, Sec).
Rotações: diurno/noturno, follow-the-sun, fim de semana.
Overrides: férias/doença.
Ack-timout de 5-10 min → camada seguinte. Por horas de trabalho, para o departamento de perfil; fora é um local on-call.

Conselho: mantenha os passos curtos da escalada à noite (menos cansativo), e mais longo de dia (contexto).

5) Integração com Alertmanager (pattern básico)

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) Ruído, dedução e correlação

Chave de dedução: use fingerprint estável (por exemplo, serviço + rota + código).
Agrupamento: 'group _ by' por serviço/ambiente, para que a cascata 5xx não gere dezenas de páginas.
Motas/janelas silenciosas, durante as migrações/lançamentos/testes de carga.
Supressão por motivo: Se já houver um incidente P1 para 'api-gateway @ prod', suprime o P2/P3 filho.

Anti-Pattern: navegar por CPU/Memory sem efeitos confirmados sobre o SLO.

7) Comunicação com lançamentos e ação automática

Em canárias, os recebem alert de SLO-gate webhook em CI/CD-pause/rollback (Argo Rollouts/Helm).
Alert contém: 'release _ id', 'imagem. tag ', link para pipeline e runbook passo de reversão.

Exemplo de linbook de referência em anotações


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

8) ChatOps e comunicações

Auto-criar um canal de incidente em Slack/Teams, atrelado ao tíquete.
Slash-команды: `ack`, `assign @user`, `status set`, `postmortem start`.
Página de status: atualização automática para P1/P2.

9) Ciclo de vida incidente (mínimo)

1. Trigger (alert de SLO/sensores).
2. Page (primary on-call).
3. Ack (confirmação, TTA).
4. Comunicate (canal/status).
5. Mitigate (rollback/função-flag/isolamento).
6. Resolve (TTR).
7. Postmortem (timeline, razões, ações, aulas, proprietário de tarefas).

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

10) Campos de paladar úteis (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) Integração de fontes de sinal

Prometheus/Alertmanager é a principal fonte de SLO/RED.
Grafana Alerting - mais fácil para dashboards/metricas de negócios.
«Latency/Errador».
Eventos K8s - acidentes do cluster (controle-plano, PDB violações).
BD/Filas - lag/locks/reprodução.
Webhooks de aplicativos - sinais de domínio (erro PSP, pouso de frode).

12) Políticas e complicações

RBAC para criação/alteração de políticas, agendamentos, mouts.
Auditoria: quem reconheceu/designou/alterou status, temporizadores.
Minimização PII em paladares (ID do tíquete em vez de email/telefone do usuário).
Plano Dr.: O que fazemos quando o PagerDuty/Opsgenie não está disponível (canal fallback).

13) Exemplos de práticas (PagerDuty vs Opsgenie)

OpçãoPagerDutyOpsgenie
Escalar/agendarMaduras, flexíveisMaduras, flexíveis
Papéis/modelos de incidenteForte Invident WorkflowsIncident Templates/Stakeholders
Canal automático/comsBoas integraçõesSlack profundo/MS Teams
Preços/licençasMuitas vezes mais caro, muitos add-oonsNormalmente mais barato no início
Roteiro por marcas de formataçãoForte (Service Diretoria)Forte (Roting Rulas)
Ambas as plataformas fecham 95% dos mesmos cenários; escolha em valor, UX e integração da sua pilha.

14) Janelas silenciosas e congelamento

Freeze: Proibir paging em janelas de lançamento programadas, deixando apenas P1.
Mit de formatação: 'eng = estágio', 'region = dr', 'service = batch'.
Mute temporal: quando o banco de dados/cargas é migrado, com um dono explícito.

15) Métricas de eficiência (SRE/DORA para alertas)

MTTA/MTTR (em corte de comandos/serviços/turnos).
% de alertas com runbook (meta ≥ 95%).
Proporção de página-alert SLO (meta ≥ 90%).
Ratio útil/ruído (alvo ≥ 3:1).
% de atividade automática (pause/rollback via webhook) - criar.
Burn-down postmortem action items em 14/30 dias.

16) Anti-pattern

Página por «ferro» (CPU, disco) sem afetar o usuário.
Falta de 'group _ by' → 'tempestade' de alertas.
Não há janelas calmas. Os releitores pintam tudo vermelho.
Paylades sem 'service/eng/runbook' - Não é possível routar/agir.
Não há uma única escala de severity e regras (cada fonte é diferente).
Avisos «eternos» que ninguém conserta (alert-dever).

17) Folha de cheque de implementação (0-45 dias)

0-10 dias

Alinhar a escala severity e normalizar tags/anotação.
Criar serviços em PagerDuty/Opsgenie, personalizar schedulas e escalas básicas.
Vincular Alertmanager/Grafana, incluir 'group _ by' e o Dedup.

11 a 25 dias

Digite alertas SLO (multi-window burn), adicione um link runbook.
Configurar ChatOps: canais automáticos, comandos ack/assign.
Incluir janelas silenciosas para lançamentos/migração.

26-45 dias

Integrar auto-pause/rollback para canarinhos (webhooks).
Digite relatórios MTTA/MTTR e de higiene de alert (limpeza de ruídos).
Normalizar pós-mortem e controlar action items.

18) Snippets prontos

Grafana Alerting → PagerDuty (JSON body mapping)

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 de alert → 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) Conclusão

Um forte traçado de alertas é um processo + disciplina: Estrato orientado pelo SLO, rotação e escalação bem ajustadas, marcas de formatação e payloads, janelas silenciosas, ChatOps e ações automáticas (pause/rollback). Selecione PagerDuty ou Opsgenie em orçamento e UX, mas mantenha as mesmas regras de ruído, serviço e responsabilidade - para que a aplicação seja rara, precisa e útil e os incidentes sejam curtos e controláveis.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.