Os 3 Pilares da Observabilidade: Além do "Está no ar?"
Antigamente, monitorar um sistema era saber se o servidor estava ligado. Em um mundo de microserviços distribuídos na nuvem, “estar ligado” não é suficiente. Você precisa de Observabilidade. Mas o que compõe esse conceito? Vamos falar sobre os Três Pilares.
O Detetive de Sistemas
Observabilidade é a capacidade de entender o estado interno de um sistema apenas olhando para os seus dados externos. É a diferença entre saber que o carro parou e saber que ele parou porque a vela de ignição falhou no cilindro 3.
1. Métricas (O “Quanto?”)
São dados agregados ao longo do tempo (CPU, Memória, Requisições por Segundo, Latência).
- Ferramentas: Prometheus, Grafana, Datadog.
- Uso: Criar dashboards e alertas. “A latência aumentou 20% nos últimos 5 minutos”.
2. Logs (O “O quê?”)
São registros de eventos específicos que aconteceram no sistema.
- Ferramentas: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Graylog.
- Uso: Investigar a causa raiz de um erro. “O usuário 123 recebeu um NullPointerException na linha 45”.
- Dica: Use Logs Estruturados (JSON) para facilitar a busca.
3. Traces (O “Onde?”)
Mostram o caminho de uma única requisição através de todos os microserviços.
- Ferramentas: Jaeger, Zipkin, AWS X-Ray.
- OpenTelemetry: Para gerar esses traces de forma agnóstica é o OpenTelemetry (OTel). Ele permite que você instrumente seu código uma vez e envie os dados para qualquer provedor.
Troubleshooting de Latência
O Tracing Distribuído é a ferramenta definitiva para resolver o mistério do “Por que está lento?”.
- Spans: Cada Trace é composto por múltiplos “Spans” (intervalos de tempo).
- Causalidade: Se o Span do
Serviço Adura 2s, e ele contém um Span doServiço Bde 1.8s, você sabe instantaneamente que o culpado é oServiço B. - Gargalos de I/O: Muitas vezes, o culpado não é o código, mas uma query SQL lenta ou uma chamada de rede para um serviço legado. O Trace expõe esse tempo de espera de forma visual.
Contexto de Uso (ex: Datadog)
Muitos times utilizam ferramentas modernas como o Datadog, que unifica esses três pilares em uma única plataforma. Isso permite que você clique em um erro no log e veja instantaneamente o trace daquela requisição e a saúde do servidor naquele exato momento.
Curiosidade: Cardinalidade
Ao criar métricas, cuidado com a Cardinalidade. Tentar criar uma métrica para cada userId vai explodir o seu banco de métricas e custar uma fortuna. Guarde dados de alta cardinalidade (como IDs) nos Logs e Traces, e dados agregados nas Métricas.
Uma reflexão final
Da próxima vez que seu sistema apresentar uma lentidão intermitente em produção, pergunte-se: eu tenho os dados necessários para diagnosticar isso em 5 minutos ou vou precisar de 5 horas injetando novos logs e fazendo novos deploys? A observabilidade não é sobre o que você monitora hoje, mas sobre quais perguntas você será capaz de responder amanhã sem precisar alterar uma única linha de código.