Monitoramento e observabilidade

Monitoramento acompanha condições conhecidas: por exemplo, se a taxa de erro excede um limite. Observabilidade é a capacidade de explorar os sinais do sistema para entender estados internos e investigar perguntas novas. Uma não substitui a outra: alertas detectam impacto; contexto ajuda a explicar causas.

Três sinais que se complementam

Logs: eventos com contexto

Logs estruturados descrevem eventos discretos, como recusa de pagamento ou falha ao publicar mensagem. Inclua horário, serviço, ambiente, operação e identificadores de correlação úteis. Não registre segredos, tokens, dados pessoais sem necessidade nem mensagens inteiras por padrão.

Métricas: comportamento agregado

Métricas mostram contagens, taxas, latências e saturação ao longo do tempo. Para endpoints, percentis ajudam a perceber caudas de latência que a média esconde. Mantenha dimensões de cardinalidade controlada: um identificador único por usuário como label pode explodir armazenamento e custo.

Traces: caminho de uma operação

Um trace relaciona spans que representam etapas, como receber uma requisição, consultar banco e publicar evento. Propagar contexto entre serviços permite localizar espera e erros numa jornada. Amostragem é útil em alto volume, mas precisa preservar traces de erro ou latência conforme a estratégia adotada.

Correlação num fluxo assíncrono

Considere um pedido que publica evento e só recebe resposta depois. O trace pode terminar na publicação, enquanto o consumidor inicia outro trace ligado ao contexto propagado ou a um identificador de negócio. Não confunda correlation ID com identidade ou autorização; IDs ajudam a localizar trabalho, não provam confiança.

Uma mensagem deve carregar contexto de rastreamento e identificador de operação apropriado, sem carregar dados confidenciais. Quando o broker ou uma integração não propaga contexto automaticamente, instrumente a fronteira e registre claramente onde a continuidade do trace ocorre.

Instrumentação com OpenTelemetry

OpenTelemetry fornece APIs e convenções abertas para instrumentar traces, métricas e logs e exportá-los a um backend. Isso ajuda a desacoplar instrumentação do fornecedor, mas não elimina decisões de custo, retenção, sampling, segurança e operação do coletor.

// Exemplo mínimo de span manual em .NET, com OpenTelemetry configurado no host.
private static readonly ActivitySource Fonte =
    new("WhollyInvested.Pedidos");

using var atividade = Fonte.StartActivity("pedido.confirmar");
atividade?.SetTag("pedido.resultado", "aceito");
await confirmarPedido(cancellationToken);

Prefira instrumentação automática e bibliotecas oficiais quando cobrirem o caso; spans manuais devem acrescentar contexto de negócio útil, sem transformar cada método numa etapa de telemetria.

Alertas que ajudam a agir

Alerta uma condição que exige resposta, não cada exceção isolada. Relacione disponibilidade e latência aos objetivos de serviço (SLOs), monitore orçamento de erro e nomeie quem deve agir. A profundidade da fila, idade da mensagem mais antiga, dead-letter, retries e saúde de consumidores são sinais importantes de mensageria.

Não alerte apenas por volume de logs nem por uma métrica sem impacto para o usuário. Uma página útil explica o sintoma, o impacto, o link para investigação e o procedimento de mitigação.

Leituras relacionadas