Como usar o Grafana OnCall para gestão de plantão e escalonamento
1. Introdução ao Grafana OnCall e seus conceitos fundamentais
O Grafana OnCall é uma ferramenta open-source de gestão de incidentes que permite gerenciar plantões, escalonar alertas e coordenar respostas a incidentes diretamente integrada ao ecossistema Grafana. Diferente de soluções proprietárias como PagerDuty ou Opsgenie, o OnCall oferece controle total sobre os dados e uma integração nativa com o Grafana Alerting.
Os principais componentes do Grafana OnCall incluem:
- Schedules: Cronogramas que definem quem está de plantão em cada período
- Escalation Chains: Cadeias de escalonamento que determinam como os alertas progridem
- Rotations: Padrões de rotação de plantonistas (semanal, quinzenal, personalizado)
- Integrations: Conexões com fontes de alerta externas
Casos de uso típicos incluem equipes SRE que precisam garantir cobertura 24/7, times de DevOps que gerenciam múltiplos serviços e organizações que buscam uma alternativa open-source para gestão de incidentes.
2. Configuração de equipes e usuários no OnCall
Para começar, é necessário configurar equipes e usuários. Acesse o Grafana OnCall e navegue até a seção de configuração:
1. Acesse Configuration → Teams
2. Clique em "New Team" e defina:
- Nome: "Equipe SRE"
- Papéis: Admin, Editor, Viewer
3. Em Users, adicione membros:
- email: joao@exemplo.com
- canais: email, slack, telegram
4. Configure permissões por time:
- Team A: Acesso total a schedules e escalations
- Team B: Apenas visualização de alertas
O cadastro de usuários pode ser feito individualmente ou via integração com provedores de identidade (LDAP, OAuth). Cada usuário pode configurar múltiplos canais de notificação:
Usuário: Maria Silva
- Email: maria@exemplo.com (prioridade 1)
- SMS: +5511999999999 (prioridade 2)
- Slack: @maria (prioridade 3)
- Telegram: @maria_silva (prioridade 4)
3. Criação e gerenciamento de escalas de plantão (Schedules)
Os schedules definem quem está disponível para responder a incidentes em cada momento. Para criar um schedule:
1. Vá para Schedules → Create Schedule
2. Nome: "Plantão SRE Semanal"
3. Adicione rotation:
- Tipo: Weekly
- Início: Segunda-feira 08:00
- Duração: 7 dias
- Participantes: João (semana 1), Maria (semana 2)
4. Configure overrides para férias:
- Data: 15/01/2025 a 20/01/2025
- Substituir: João → Pedro
É possível visualizar o calendário e exportá-lo para ferramentas externas:
Calendário do Schedule "Plantão SRE"
Semana 1 (02/01 a 08/01): João
Semana 2 (09/01 a 15/01): Maria
Semana 3 (16/01 a 22/01): Pedro (override - férias João)
Exportar: Settings → iCal URL → Copiar link para Google Calendar
4. Estruturação de políticas de escalonamento (Escalation Chains)
As escalation chains definem como os alertas progridem quando não são respondidos:
Cadeia: "Escalonamento SRE Padrão"
Nível 1: Engenheiro Primário
- Ação: Notificar (todos os canais)
- Timeout: 5 minutos
- Se não respondido: Escalar para nível 2
Nível 2: Engenheiro Secundário
- Ação: Notificar + Repetir a cada 2 minutos
- Timeout: 10 minutos
- Se não respondido: Escalar para nível 3
Nível 3: Gerente de Plantão
- Ação: Notificar (apenas email e SMS)
- Timeout: 15 minutos
- Condição de parada: acknowledge ou resolved
Para criar uma escalation chain:
1. Acesse Escalation Chains → Create
2. Nome: "Escalonamento Crítico"
3. Adicione etapas:
- Etapa 1: Notificar schedule "Plantão SRE" - timeout 5min
- Etapa 2: Notificar schedule "Engenheiros Sênior" - timeout 10min
- Etapa 3: Notificar usuário "Gerente" - timeout 15min
- Etapa 4: Escalar para "Gestão de Incidentes"
4. Configure condições de parada:
- Parar se: acknowledged ou resolved
5. Integração com fontes de alerta (Alert Groups)
O Grafana OnCall se integra com diversas ferramentas via webhooks e integrações nativas:
Integração com Grafana Alerting:
1. Em Integrations → New Integration
2. Tipo: Grafana Alerting
3. Nome: "Alertas de Infraestrutura"
4. Mapeamento de severidade:
- critical → escalation chain "Crítico"
- warning → escalation chain "Normal"
- info → apenas notificação
Integração com Prometheus:
1. Configure webhook no Alertmanager:
receivers:
- name: 'oncall'
webhook_configs:
- url: 'https://seu-oncall/alertmanager/webhook'
send_resolved: true
2. Mapeie labels:
- severity: critical → escalation "Crítico"
- team: sre → schedule "Plantão SRE"
Templates de notificação personalizados:
Template para Slack:
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Alerta Crítico*: {{ alert_name }}\nSeveridade: {{ severity }}\nServiço: {{ service }}"
}
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": "Acknowledge",
"url": "{{ acknowledge_url }}"
},
{
"type": "button",
"text": "Ver no Grafana",
"url": "{{ grafana_url }}"
}
]
}
]
}
6. Gestão de incidentes e fluxo de resposta
O fluxo de resposta a incidentes no OnCall segue um processo claro:
1. Recebimento do alerta:
- Notificação enviada para canais configurados
- Alerta aparece em Alert Groups
2. Acknowledge (reconhecimento):
- Botão "Acknowledge" no alerta
- Ação: Para notificações da escalation chain
- Registro: Quem e quando reconheceu
3. Resolve (encerramento):
- Botão "Resolve" quando incidente é resolvido
- Ação: Finaliza escalation chain
- Registro: Tempo total de resposta
4. Ações manuais:
- Silenciar: Ignorar alertas por período definido
- Reatribuir: Mudar responsável pelo alerta
- Comentários: Adicionar notas sobre o incidente
Integração com runbooks:
Runbook para "Alta Latência no Banco de Dados":
1. Acknowledge alerta
2. Verificar métricas no Grafana
3. Executar script de diagnóstico
4. Se necessário, reiniciar serviço
5. Resolver alerta
6. Adicionar comentário com ações tomadas
7. Monitoramento e otimização do OnCall
Para otimizar a gestão de plantão, monitore métricas-chave:
Métricas de Desempenho:
- Tempo médio de acknowledge: 2.3 minutos
- Tempo médio de resolução: 15.7 minutos
- Alertas não reconhecidos: 3 (últimos 7 dias)
- Cobertura de plantão: 98.5%
Relatórios de SLA:
- SLA 99.9%: Todos alertas respondidos em 5 minutos
- SLA 99.5%: Todos alertas resolvidos em 30 minutos
- Auditoria: Ações realizadas por usuário e período
Ajustes baseados em dados:
Com base nos dados dos últimos 30 dias:
- Aumentar timeout do nível 1 de 5 para 8 minutos
- Adicionar mais um engenheiro no schedule de finais de semana
- Reduzir notificações para alertas de severidade "info"
8. Boas práticas e cenários avançados
Estratégias para evitar fadiga de alerta:
1. Escalonamento inteligente:
- Alertas críticos: Notificar imediatamente
- Alertas warning: Agrupar e notificar a cada 30 minutos
- Alertas info: Apenas em horário comercial
2. Horários de silêncio:
- DND (Não Perturbar): 22h às 06h
- Override: Finais de semana e feriados
- Exceções: Alertas críticos sempre notificam
3. Regras de agrupamento:
- Por serviço: Agrupar alertas do mesmo serviço
- Por severidade: Agrupar por nível de criticidade
- Por host: Agrupar alertas do mesmo host
Migração de ferramentas legadas:
Migração do PagerDuty para Grafana OnCall:
1. Exportar schedules do PagerDuty (CSV)
2. Importar no Grafana OnCall
3. Recriar escalation chains equivalentes
4. Configurar webhooks para redirecionar alertas
5. Testar com alertas não críticos
6. Migrar gradualmente times e serviços
Referências
- Documentação Oficial do Grafana OnCall — Guia completo de instalação, configuração e uso do Grafana OnCall
- Grafana OnCall: Getting Started Guide — Tutorial passo a passo para iniciar com o OnCall
- Grafana OnCall Schedules and Rotations — Documentação detalhada sobre criação e gerenciamento de schedules
- Grafana OnCall Escalation Chains — Guia de configuração de cadeias de escalonamento
- Integrating Grafana OnCall with Alertmanager — Tutorial de integração com Prometheus Alertmanager
- Grafana OnCall Best Practices — Artigo do blog oficial da Grafana com melhores práticas
- Migrating from PagerDuty to Grafana OnCall — Guia de migração do PagerDuty para o Grafana OnCall