As monitorações do SRE

Table of contents
- 1. Definição de SLIs, SLOs e SLAs
- 2. Monitoramento baseado em sintomas, não em causas
- 3. Automação e Resposta a Incidentes
- 4. Redução do Toil
- 5. Observabilidade e Diagnóstico
- 6. Gestão de Capacidade e Saturação
- 7. Blameless Postmortems (Análise sem Culpados)
- 8. Práticas de Segurança e Confiabilidade
- Exemplo e Aplicação

No artigo anterior, explorei as documentações do SRE:
Onde são:
PRR
PostMortem
Service overview
Playbooks
Políticas
Vamos explorar agora as monitorações do SRE.
Separei em 8 diretrizes a serem seguidas e na qual o monitoramento deve ser estruturado.
1. Definição de SLIs, SLOs e SLAs
Descrição: O monitoramento deve medir e rastrear os Indicadores de Nível de Serviço (SLIs), como latência, taxa de erros, disponibilidade e saturação. Estes são usados para avaliar se os Objetivos de Nível de Serviço (SLOs) estão sendo atendidos.
Como fazer:
Identifique os SLIs mais relevantes para o seu sistema (por exemplo, tempo de resposta da API, taxa de sucesso das transações, uso de memória/CPU).
Defina metas claras para os SLOs. Por exemplo: "95% das requisições devem ter latência abaixo de 200ms".
Monitore em tempo real para verificar se os SLAs (contratos com clientes) estão sendo atendidos.
Evidências: Painéis de monitoramento que exibam métricas relacionadas a SLIs/SLOs.
2. Monitoramento baseado em sintomas, não em causas
Descrição: O monitoramento deve detectar sintomas de problemas para notificar a equipe antes que os usuários sejam impactados, em vez de tentar prever todas as causas possíveis de falhas.
Como fazer:
Configure alertas com base em SLIs (por exemplo, aumento na taxa de erros ou na latência).
- Evite alertas baseados em métricas de infraestrutura isoladas (como CPU alta), a menos que estejam correlacionadas com impacto no usuário.
Evidências: Relatórios de eventos que mostrem alertas acionados com base em sintomas.
Monitoramento dos Quatro Sinais de Ouro (4 Golden Signals):
Latência: Meça o tempo de resposta das solicitações, diferenciando entre solicitações bem-sucedidas e com falha, para avaliar a experiência do usuário.
Tráfego: Acompanhe a quantidade de demanda no sistema, como o número de solicitações por segundo, para entender o uso e identificar possíveis sobrecargas.
Erros: Monitore a taxa de solicitações que resultam em erros, incluindo códigos de status HTTP 500 e outros tipos de falhas, para manter a integridade do sistema.
Saturação: Avalie a capacidade do sistema, monitorando o uso de recursos como CPU e largura de banda, para prevenir degradações de desempenho.
Configure alertas que sejam acionados quando os SLOs estiverem em risco de serem violados, garantindo que a equipe seja notificada apenas em situações que exigem intervenção.
3. Automação e Resposta a Incidentes
Descrição: Minimize a necessidade de intervenção manual por meio de automação e defina processos claros para gerenciar incidentes.
Como fazer:
Configure automações para resolver problemas comuns, como reiniciar serviços ou escalar recursos automaticamente.
Use um sistema de gerenciamento de incidentes para coordenar respostas rápidas.
Monitore o tempo de resolução de incidentes e revise os processos regularmente.
Evidências: Logs de automação, playbooks de resposta a incidentes e relatórios pós-morte.
Um alerta pode disparar um trigger para um webhook que por sua vez, executa algum script que resolverá automaticamente o problema alarmado.
4. Redução do Toil
Descrição: Reduza tarefas manuais repetitivas e operacionais (toil) por meio de automação. O monitoramento deve suportar essa abordagem.
Como fazer:
Automatize a coleta de métricas e a geração de relatórios.
- Implemente ferramentas de observabilidade que correlacionem logs, métricas e traços em um só lugar.
Evidências: Implementação de ferramentas como Prometheus, Grafana, Elastic Stack ou Datadog para centralizar e automatizar o monitoramento.
5. Observabilidade e Diagnóstico
Descrição: O sistema deve ser observável, permitindo que a equipe investigue e diagnostique problemas rapidamente.
Como fazer:
Use logs estruturados, métricas e rastreamento distribuído (distributed tracing) para obter visibilidade de ponta a ponta.
Adote ferramentas como OpenTelemetry ou Jaeger para rastreamento distribuído.
Configure dashboards para correlacionar métricas de diferentes componentes do sistema.
Evidências: Relatórios de incidentes que mostrem como as ferramentas de observabilidade ajudaram no diagnóstico.
6. Gestão de Capacidade e Saturação
Descrição: Monitore a capacidade do sistema para evitar saturação e gerencie limites de recursos.
Como fazer:
Configure alertas para níveis críticos de utilização de CPU, memória, largura de banda ou outros recursos.
- Realize testes de carga regularmente para prever gargalos.
Evidências: Relatórios de testes de carga e dashboards que mostrem métricas de capacidade.
7. Blameless Postmortems (Análise sem Culpados)
Descrição: Após incidentes, conduza análises pós-morte para documentar causas, impactos e ações corretivas, sem atribuir culpa.
Como fazer:
Estruture as análises pós-morte com perguntas como: "O que aconteceu?", "Por que aconteceu?" e "Como evitar que aconteça novamente?".
- Atualize processos de monitoramento e automação com base nos aprendizados.
Evidências: Relatórios pós-morte documentados.
8. Práticas de Segurança e Confiabilidade
Descrição: Incorpore práticas de segurança ao monitoramento para detectar atividades maliciosas e garantir a confiabilidade.
Como fazer:
Inclua monitoramento para detectar anomalias de segurança, como tentativas de login inválidas ou tráfego suspeito.
- Garanta que todos os dados de monitoramento sejam protegidos contra acessos não autorizados.
Evidências: Logs de segurança e auditoria.
Exemplo e Aplicação
Como deve ser o sistema de monitoramento do seu sistema
Com base nos princípios acima, o sistema de monitoramento deve atender aos seguintes critérios:
Centralização de Métricas e Logs:
Utilize ferramentas como Prometheus, Grafana, Datadog ou Elastic Stack para coletar e exibir métricas em tempo real.
Implemente logs estruturados com ferramentas como Fluentd ou Logstash.
Alertas Inteligentes:
Configure alertas baseados em SLIs diretamente correlacionados ao impacto no usuário.
Utilize ferramentas como Alertmanager, PagerDuty, Cabot, Healthchecks para gerenciar alertas.
Observabilidade Completa:
Adote práticas de rastreamento distribuído com ferramentas como Jaeger, OpenTelemetry, Haystack, Skywalking ou Zipkin.
Monitore métricas de infraestrutura, aplicação e experiência do usuário final.
Automação e Resiliência:
Automatize respostas a incidentes sempre que possível.
Implemente backups e failovers automáticos para aumentar a resiliência.
Relatórios e Dashboards:
Crie dashboards claros e acionáveis para exibir saúde do sistema, SLIs/SLOs e alertas.
Automatize relatórios semanais/mensais de métricas e incidentes.
Testes de Capacidade:
- Realize testes regulares de carga e estresse para identificar gargalos antes que eles impactem os usuários.
Segurança Integrada:
Monitore logs de segurança e configure alertas para atividades suspeitas.
Proteja o sistema de monitoramento contra acessos não autorizados.
Subscribe to my newsletter
Read articles from Esli Silva directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Esli Silva
Esli Silva
Linux hard user since 2003, IT manager, DevOps, Sysadmin, SRE, teacher, Bass player, Krav Maga fighter and Marksman (Sport Shooter).