
Engenharia de alertas: burn rate multijanela e revisão do plantão
Objetivos desta aula
- Calcular burn rate a partir de um SLO baseado em requisições
- Combinar janelas longa e curta em uma regra
- Separar paginação urgente de trabalho planejável
- Tratar ausência de tráfego como condição distinta
- Revisar a qualidade dos alertas com o plantão
Esta aula transforma a ideia de alerta acionável em uma política verificável. O objetivo não é silenciar sintomas, mas chamar alguém apenas quando há uma decisão urgente. Para cada regra, escreva impacto, responsável, ação inicial e canal; sem esses itens, severity: critical é apenas um rótulo.
Considere SLO de disponibilidade de 99,9% em 30 dias, medido por requisições. A fração de falha permitida é 0.001; o burn rate é a proporção observada de erros dividida por esse valor. Assim, 1,44% de erros corresponde a 14.4 vezes a taxa permitida.
A janela longa acumula evidência de impacto; a curta confirma que o problema continua acontecendo. Exigir burn rate acima de 14.4 tanto em uma hora quanto em cinco minutos reduz páginas causadas por uma falha antiga que já cessou. O operador and on(service) combina séries da mesma dimensão.
O limiar tem uma interpretação de orçamento: mantendo o mesmo perfil de tráfego, 14.4 × 1h / 720h representa aproximadamente 2% do orçamento de 30 dias. Para SLO por requisições, o consumo real depende da distribuição do tráfego; valide também contagens acumuladas, em vez de converter tudo automaticamente em minutos.
O bloco usa o contador de histograma já instrumentado, http_request_duration_seconds_count, e pressupõe a label service. As regras de gravação calculam proporções por serviço. Se a sua instrumentação não expõe essa label, adicione-a de forma consistente ou adapte a agregação antes de copiar a regra.
Sem tráfego não significa 100% de disponibilidade. A divisão pode gerar NaN, e ausência de coleta pode eliminar séries; não force zero com um preenchimento que esconda falhas. Monitore scrape e disponibilidade do pipeline separadamente e use uma sonda sintética quando a jornada precisar de validação mesmo sem usuários.
Paginação e ticket têm urgências diferentes. A queima rápida pode chamar o plantão; uma degradação lenta e persistente pode gerar trabalho para o horário útil, conforme a política acordada. for: 2m adiciona persistência, mas também atraso: avalie esse custo no tempo de detecção.
Por fim, faça uma revisão semanal de ruído: quantas notificações exigiram ação, quais duplicaram outras e quais chegaram tarde? Teste regras com promtool, simule recuperação e confira roteamento no Alertmanager. Só ajuste limites após comparar impacto e evidência; reduzir páginas às cegas pode ocultar incidentes.
Na prática
Regras multijanela por serviço
yaml
# Pré-requisito: contador com labels service e status.
groups:
- name: cloudshop-slo
rules:
- record: service:http_errors:ratio1h
expr: |
sum by (service) (rate(http_request_duration_seconds_count{status=~"5.."}[1h]))
/ sum by (service) (rate(http_request_duration_seconds_count[1h]))
- record: service:http_errors:ratio5m
expr: |
sum by (service) (rate(http_request_duration_seconds_count{status=~"5.."}[5m]))
/ sum by (service) (rate(http_request_duration_seconds_count[5m]))
- alert: CloudShopBudgetQueimaRapida
expr: |
(service:http_errors:ratio1h{service="cloudshop-api"} / 0.001 > 14.4)
and on (service)
(service:http_errors:ratio5m{service="cloudshop-api"} / 0.001 > 14.4)
for: 2m
labels:
severity: critical
team: platform
annotations:
summary: "Falhas da API consomem o orçamento rapidamente"
description: "Verificar impacto e seguir docs/runbooks/api-5xx.md"Validar o arquivo antes de recarregar o Prometheus
bash
# Salve o YAML anterior como cloudshop-slo.rules.yml.
# Verifica sintaxe; não substitui testes de comportamento com séries simuladas.
promtool check rules cloudshop-slo.rules.ymlPor que isso importa
Alertas sustentáveis preservam atenção humana para situações que realmente ameaçam a experiência do usuário.
Erro comum
Usar apenas a janela longa e continuar notificando depois que o serviço já se recuperou.
Dica de produção
Adicione testes de regra para erro sustentado, recuperação, baixo tráfego e série ausente antes de ativar paginação.
Alerta de segurança
Notificações devem trazer links e agregados, nunca credenciais ou amostras de dados pessoais; restrinja quem pode criar silêncios.
Pergunta de entrevista
Por que combinar duas janelas e como validar que o alerta não mascara ausência de telemetria?
Glossário
- Burn rate
- Razão entre a taxa de falhas observada e a taxa permitida pelo SLO.
- Regra de gravação
- Expressão PromQL cujo resultado é armazenado como nova série.
- Multijanela
- Uso combinado de intervalos diferentes para avaliar um sintoma.
- Paginação
- Notificação urgente que exige resposta do plantão.
- Fadiga de alertas
- Perda de atenção causada por notificações frequentes e pouco úteis.
Conexão com o CloudShop
Entregar regra multijanela do CloudShop validada, política de canais e registro de revisão de ruído.
Quiz da aula
1. Com SLO de 99,9%, qual o burn rate para 1,44% de erros?
2. Qual o papel da janela curta?
3. Uma série sem dados prova disponibilidade total?
Minhas anotações
Salvo automaticamente neste navegador.
