Instrumentação Python em Containers
Instrumentação de Aplicativos Python em Containers com o Agent OpenTelemetry
Esta documentação explica como instrumentar aplicativos Python em contêiner usando o modelo zero-code, com o agente oficial do OpenTelemetry, adaptado para uso com o Elven Observability. A ideia é garantir coleta de traces (e opcionalmente métricas) sem alterações no código, apenas com ajustes no Dockerfile e nas variáveis de ambiente.
Instalação do Agent no Dockerfile
Adicione no Dockerfile apenas os pacotes necessários de acordo com o seu framework. Veja abaixo os pacotes comuns e os específicos por framework:
Pacotes comuns (sempre instale):
RUN pip install \
opentelemetry-distro \
opentelemetry-exporter-otlp \
opentelemetry-instrumentation-requestsFastAPI:
RUN pip install opentelemetry-instrumentation-fastapiFlask:
RUN pip install opentelemetry-instrumentation-flaskDjango:
RUN pip install opentelemetry-instrumentation-djangoImportante: Não instale instrumentações desnecessárias. Ex: apps com Django não precisam de opentelemetry-instrumentation-fastapi.
Dockerfile de exemplo:
Configuração das Variáveis de Ambiente
Defina as seguintes variáveis para ativar a instrumentação automática e enviar dados para o collector do Elven:
Explicação:
OTEL_SERVICE_NAME: nome do serviço exibido no Grafana/Tempo.OTEL_RESOURCE_ATTRIBUTES: tags extras para enriquecer os traces.OTEL_EXPORTER_OTLP_*: endpoints para envio dos dados.
Como iniciar o app com o agente (CMD)
Use o comando opentelemetry-instrument como wrapper da aplicação. Veja abaixo exemplos por framework:
FastAPI (com Uvicorn)
Flask
Django
Informação: Pode adaptar o comando conforme o seu entrypoint: gunicorn, uvicorn, waitress, etc.
Exemplos por Ambiente
Docker Compose
Kubernetes
ECS (Fargate ou EC2)
Troubleshooting
Traces não aparecem: verifique se o endpoint está acessível e se o
CMDusaopentelemetry-instrumentcorretamente.Timeout na aplicação: verifique se o collector está online e respondendo na porta 4318.
Instrumentação duplicada: evite misturar instrumentação manual com o modo automático.
Erro de dependência: cada framework precisa de sua instrumentação específica, revise o
pip install.
Boas práticas
Dê nomes significativos aos serviços (
OTEL_SERVICE_NAME=projeto-env-modulo).Separe ambientes (
environment=dev,staging,production).Não exponha credenciais nas variáveis de ambiente.
Não use
OTEL_LOG_LEVEL=debugem produção.Teste localmente com
otel-clioucurlpara validar o collector.
Exemplo de .env
.envSeu app Python agora está instrumentado com o Elven Observability, usando auto-instrumentação baseada em OpenTelemetry. Sem dor de cabeça, sem alterar o código-fonte.
Last updated
Was this helpful?

