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.