Padrão de Telemetria (OpenTelemetry)¶
Status¶
Aprovado
Contexto¶
Para garantir consistência e correlação entre Métricas, Traces e Logs, é necessário padronizar como os serviços expõem seus atributos de telemetria.
Decisão¶
Aplicações e serviços de negócio devem expor os seguintes atributos no OTEL_RESOURCE_ATTRIBUTES e/ou Labels do Docker. Infraestrutura base pode ter requisitos simplificados.
Atributos Obrigatórios¶
| Atributo | Descrição | Exemplo |
|---|---|---|
service.namespace |
Produto ou domínio | example, pagesaude |
service.name |
Nome lógico do serviço | auth-service |
service.type |
Tipo do serviço | backend, frontend, db |
deployment.environment.name |
Ambiente de deploy (semconv OTel atual) | local, prod, stg |
service.instance.id |
Identidade única da instância | example-auth-service-1 |
Regras de Container¶
- NÃO use
container_name: Permita que o Docker/Orchestrator atribua nomes para suportar escala horizontal (replicas). - Defina o Nome do Projeto: Use
name: <project>nocompose.yamlpara garantir prefixos previsíveis. - Formatação: No
compose.yaml,OTEL_RESOURCE_ATTRIBUTESdeve ser uma string única separada por vírgulas, sem quebras de linha (key=val,key2=val2).
Labels de Observabilidade¶
Para consistência no Prometheus, Grafana, Loki e Tempo, o label canônico de ambiente é environment (valores: prod, stg, local, ops):
| Label | Valor Exemplo |
|---|---|
environment |
prod |
O Alloy Gateway normaliza o atributo deployment.environment.name para o label environment e descarta aliases (env, deployment_environment). O Tempo faz o mesmo para span metrics via dimension_mappings. Regras Prometheus, dashboards e alertas devem filtrar por environment — nunca por env.
Notas: - Labels como
host_namesão injetadas automaticamente pelo Grafana Alloy. - Aplicações ainda na convenção antiga (deployment.environment) seguem funcionando: o gateway aceita as duas formas. Migrar paradeployment.environment.nameem novas integrações.