Boas Práticas de Observabilidade
Serviços Go em produção permanecem depuráveis quando logs, métricas, traces, probes e comportamento de shutdown seguem regras compartilhadas que protegem engenheiros de plantão e orçamentos de observabilidade.
Busque em todas as páginas da documentação
Serviços Go em produção permanecem depuráveis quando logs, métricas, traces, probes e comportamento de shutdown seguem regras compartilhadas que protegem engenheiros de plantão e orçamentos de observabilidade.
request_id e trace_id em cada linha de log com escopo de requisição. A equipe de plantão pode pular de uma linha de log para um trace sem ginástica de grep.err, http.route, user_id). Esquemas consistentes tornam consultas entre serviços possíveis./users/{id} evita séries ilimitadas a partir de IDs.main, não por requisição. Registro duplicado causa pânico e duplica séries./metrics em um listener de administração ou rede restrita. Scrape público vaza detalhes operacionais internos.probe=true. QPS de probe distorce agregados de taxa e duração.context.Context através de handlers HTTP, gRPC e chamadas de banco de dados. Contexto quebrado quebra árvores de trace.span.RecordError. Traces com falha devem permanecer visíveis sob amostragem.TracerProvider.Shutdown ao sair. Spans em buffer são descartados em SIGKILL sem flush.service.name e atributos de recurso de ambiente de implantação. Backends agrupam traces por equipe e estágio./healthz e /readyz no middleware de autenticação. Probes do Kubelet não enviam tokens bearer.http.Server.Shutdown com um contexto limitado. Deployments rolling drenam trabalho em andamento.terminationGracePeriodSeconds do Kubernetes. Evitar SIGKILL no meio da requisição.os.Getenv em handlers. Testes e clareza sofrem com acesso oculto ao ambiente.go test com manipuladores de teste slog para middleware crítico. Regressões no logging de requisições são capturadas em CI.Rótulos de template de rota, separação de prontidão vs liveness, redação de segredos e shutdown SIGTERM são inegociáveis para serviços HTTP.
Sim para logs, métricas, tracing e shutdown.
Substitua as regras de probe por métricas de lag de fila e verificações de saúde do consumidor.
Revisão de código mais regras de lint que proíbem WithLabelValues usando segmentos de caminho dinâmicos ou identificadores de usuário.
Brevemente durante incidentes direcionados com toggles explícitos e feature flags com tempo limitado, nunca como padrão.
O explicador ensina por que os pilares existem.
Esta lista é o checklist aplicável para equipes que enviam serviços.
Prefira slog para código novo, a menos que profiling prove que zap é necessário em seu hot path.
Contador total de requisições, histograma de duração e métricas do coletor de processos Go cobrem a maioria dos dashboards de SLO de API.
Após dobrar o tráfego, adicionar uma dependência ou qualquer incidente relacionado à observabilidade.
Sim.
A escolha do framework não altera a disciplina de probe, shutdown ou cardinalidade.
Copie um template de serviço com middleware, registro de métricas, probes e shutdown já configurados.
Versões de Stack: Esta página foi escrita para Go 1.26.x (GC padrão Green Tea, go fix modernizers - verificar patch na compilação), chi (última versão - verificar na compilação), gin (última versão - verificar na compilação), echo (última versão - verificar na compilação), google.golang.org/grpc (última versão - verificar na compilação), sigs.k8s.io/controller-runtime (última versão - verificar na compilação), kubebuilder (última versão - verificar na compilação), tinygo (última versão - verificar alvos de placa na compilação), wazero (última versão - verificar na compilação) e golangci-lint (última versão - verificar conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 18 de jul. de 2026