Skip to main content
O sistema de notificações da plataforma AIOps permite que alertas, mudanças de estado de Issues e violações de SLA sejam comunicados automaticamente para as equipes corretas, nos canais corretos, no momento correto. Combinado com políticas de escalação, garante que nenhum incidente crítico passe despercebido.

Visão Geral

O NotificationEngine é acionado sempre que:

NotificationPolicy CRD

O NotificationPolicy 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.
Combine severities com states para controle fino. Exemplo: notifique critical apenas em Detected e Escalated, evitando ruido de transicoes intermediarias.

ThrottleConfig

Controla a frequência e deduplicação de notificações para evitar alert fatigue.
Definir maxPerHour muito baixo (ex: 5) pode suprimir alertas criticos. Use valores >= 30 para policies que cobrem severidades critical e high. O throttle nunca bloqueia a primeira notificação de um novo incidente.

Canais de Notificação

1. Slack

Envia notificações via Slack Incoming Webhooks usando Block Kit para rich formatting.
Cores por severidade no Block Kit:Payload Block Kit enviado:
Exemplo mínimo:

2. PagerDuty

Integra com PagerDuty via Events API v2 para gerenciamento de incidentes on-call.
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:
Payload enviado (Events API v2):
Resolução automatica: Quando o Issue transiciona para 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.
Mapeamento de prioridades padrão:Responder types:

4. Email

Envia notificações via SMTP com suporte a STARTTLS e templates HTML.
Variáveis disponíveis nos templates:Exemplo com STARTTLS:
Nunca coloque credenciais SMTP diretamente no YAML da NotificationPolicy. Use sempre password_secret apontando para um Kubernetes Secret.

5. Webhook

Envia notificações para endpoints HTTP arbitrarios com assinatura HMAC-SHA256.
Assinatura HMAC-SHA256:Quando secret é definido, toda requisição inclui o header X-ChatCLI-Signature com a assinatura HMAC-SHA256 do body:
Validação no receptor:
Payload JSON enviado:

6. Microsoft Teams

Envia notificações para canais do Microsoft Teams via Adaptive Cards e Incoming Webhooks.
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
Cores por severidade no card:

EscalationPolicy CRD

A EscalationPolicy 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: O EscalationPolicy 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:
Ou via PagerDuty/OpsGenie (o webhook de retorno atualiza a annotation automaticamente).

Exemplos Completos

Política de Notificação: Slack + PagerDuty

Política de Escalação L1 -> L2 -> L3

Email para SLA Breaches

Troubleshooting

Checklist de diagnóstico:
  1. Verifique se a NotificationPolicy existe no namespace correto:
  1. Verifique os logs do operator para erros de dispatch:
  1. Confirme que o matching está correto:
  1. Verifique se o throttle não está suprimindo:
  • Confirme que o webhook_url está 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:
  • Confirme que o routing_key e 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
  • Verifique conectividade SMTP:
  • Confirme credenciais no Secret referenciado em password_secret
  • Verifique se tls_skip_verify: false e o certificado do servidor e valido
  • Cheque a pasta de spam dos destinatarios
  • Verifique annotations do Issue:
  • Confirme que escalation-acknowledged não está setado como true
  • Verifique os logs do EscalationPolicy reconciler
  • Confirme que o timeout do nível não e maior que o tempo desde a criacao
  • Confirme que o secret na 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