Visão Geral
ONotificationEngine é acionado sempre que:
NotificationPolicy CRD
ONotificationPolicy define quais eventos disparam notificações, para quais canais, e com quais regras de throttling.
Campos do Spec
NotificationRule
Cada regra define um par match + channels. Múltiplas regras podem ser definidas em uma mesma policy.NotificationMatch
Todos os campos são opcionais. Se omitido, funciona como wildcard (match all). Quando múltiplos campos são definidos, a lógica é AND entre campos e OR dentro de cada campo.ThrottleConfig
Controla a frequência e deduplicação de notificações para evitar alert fatigue.Canais de Notificação
1. Slack
Envia notificações via Slack Incoming Webhooks usando Block Kit para rich formatting.Configuração completa do Slack
Configuração completa do Slack
Cores por severidade no Block Kit:
Payload Block Kit enviado:
2. PagerDuty
Integra com PagerDuty via Events API v2 para gerenciamento de incidentes on-call.Configuração completa do PagerDuty
Configuração completa do PagerDuty
Mapeamento de severidades padrão:
Deduplicação:O
dedup_key garante que atualizações de um mesmo incidente não criem alertas duplicados no PagerDuty. O padrão usa o nome do Issue, mas pode ser customizado:Resolved, o NotificationEngine envia event_action: resolve com o mesmo dedup_key, fechando o incidente no PagerDuty automaticamente.3. OpsGenie
Integra com OpsGenie para alertas e on-call management com prioridades P1-P4.Configuração completa do OpsGenie
Configuração completa do OpsGenie
Mapeamento de prioridades padrão:
Responder types:
4. Email
Envia notificações via SMTP com suporte a STARTTLS e templates HTML.Configuração completa do Email
Configuração completa do Email
Variáveis disponíveis nos templates:
Exemplo com STARTTLS:
5. Webhook
Envia notificações para endpoints HTTP arbitrarios com assinatura HMAC-SHA256.Configuração completa do Webhook
Configuração completa do Webhook
Assinatura HMAC-SHA256:Quando
secret é definido, toda requisição inclui o header X-ChatCLI-Signature com a assinatura HMAC-SHA256 do body:6. Microsoft Teams
Envia notificações para canais do Microsoft Teams via Adaptive Cards e Incoming Webhooks.Configuração completa do Microsoft Teams
Configuração completa do Microsoft Teams
Adaptive Card gerado:O NotificationEngine monta um Adaptive Card com secoes de:
- Header com severidade colorida
- Detalhes do recurso (namespace, kind, name)
- Análise da IA (se disponível)
- Ações sugeridas
- Link para o dashboard Grafana
EscalationPolicy CRD
AEscalationPolicy define a cadeia de escalação automática quando um alerta não é reconhecido (acknowledged) dentro do timeout definido.
Campos do Spec
EscalationLevel
EscalationTarget
Como a Escalação Funciona
Tracking via annotations: OEscalationPolicy reconciler rastreia o estado da escalação usando annotations no Issue CR:
Acknowledgement:
Para parar a cadeia de escalação, o on-call deve reconhecer o alerta:
Exemplos Completos
Política de Notificação: Slack + PagerDuty
Política de Escalação L1 -> L2 -> L3
Email para SLA Breaches
Troubleshooting
Notificações não estão sendo enviadas
Notificações não estão sendo enviadas
Checklist de diagnóstico:
- Verifique se a
NotificationPolicyexiste no namespace correto:
- Verifique os logs do operator para erros de dispatch:
- Confirme que o matching está correto:
- Verifique se o throttle não está suprimindo:
Slack retorna erro 404 ou invalid_payload
Slack retorna erro 404 ou invalid_payload
- Confirme que o
webhook_urlestá correto e o app Slack está instalado no workspace - Verifique se o canal existe e o bot tem permissao de postar
- Teste o webhook manualmente:
PagerDuty não cria incidentes
PagerDuty não cria incidentes
- Confirme que o
routing_keye uma Integration Key (não API Key) - Verifique se o serviço no PagerDuty está ativo
- Valide o payload no PagerDuty Event Debugger
- Confirme que o evento não está sendo deduplicado pelo
dedup_key
Emails não chegam
Emails não chegam
- Verifique conectividade SMTP:
- Confirme credenciais no Secret referenciado em
password_secret - Verifique se
tls_skip_verify: falsee o certificado do servidor e valido - Cheque a pasta de spam dos destinatarios
Escalação não avança de nível
Escalação não avança de nível
- Verifique annotations do Issue:
- Confirme que
escalation-acknowledgednão está setado comotrue - Verifique os logs do EscalationPolicy reconciler
- Confirme que o
timeoutdo nível não e maior que o tempo desde a criacao
Webhook retorna erro de assinatura
Webhook retorna erro de assinatura
- Confirme que o
secretna policy e o mesmo usado no receptor para verificação - Verifique se o receptor está lendo o body raw antes de parsear JSON
- Use
hmac.compare_digest(ou equivalente) para evitar timing attacks
Prometheus Metrics
O sistema de notificações expõe métricas para observabilidade completa:
Alertas Prometheus recomendados:
Próximo Passo
SLOs e SLAs
Gestão de Service Level Objectives com burn rate alerting
Workflow de Aprovação
Controle de mudancas com approval policies e blast radius
AIOps Platform
Deep-dive na arquitetura AIOps
K8s Operator
Configuração e CRDs do operator