Estoy tratando de conectarme a datadog desde mi backend fastapi. Actualmente estoy tratando de hacer esto en localhost usando un archivo docker-compose para permitir que tanto mi datadog-agent como mi back-end-container se ejecuten en la misma red. Aquí hay un ejemplo mínimo.
dd-minimal - docker-compose.yml - backend-client - Dockerfile - app - main.pydocker-compose.yml
version: "3.7" networks: my_network: services: datadog: image: datadog/agent:latest environment: DD_API_KEY: <my-api-key> DD_APM_ENABLED: 'true' volumes: - /var/run/docker.sock:/var/run/docker.sock - /proc/:/host/proc/:ro - /sys/fs/cgroup:/host/sys/fs/cgroup:ro ports: - "8126:8126/tcp" networks: - my_network backend-web-client: image: gql-backend-api build: dockerfile: Dockerfile context: ./backend-client environment: DD_TRACE_ANALYTICS_ENABLED: 'true' DD_AGENT_HOST: 172.21.0.2 ports: - "5555:8080" networks: - my_network depends_on: - datadogDockerfile
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8-slim COPY ./app /app RUN pip install ddtrace==0.41.0 CMD exec ddtrace-run gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 main:api -k uvicorn.workers.UvicornWorkerprincipal.py
import os import uvicorn from fastapi import FastAPI api = FastAPI() if __name__ == "__main__": uvicorn.run(api, host="127.0.0.1", port=int(os.environ.get("PORT", 8080)))Ejecuto docker-compose up y luego verifico la ip de mi dd-container con
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dd-minimal_datadog_1y actualícelo en el archivo de redacción.
Cuando vuelvo a ejecutar docker-compose up, aparece el siguiente error
- DATADOG TRACER DIAGNOSTIC - Agent not reachable. Exception raised: [Errno 111] Connection refused.Cualquier ayuda será muy apreciada
Es posible que deba configurar la variable de entorno DD_APM_NON_LOCAL_TRAFFIC=true en su contenedor de agente de datadog.
Ref: https://docs.datadoghq.com/agent/docker/apm/?tab=linux#docker-apm-agent-environment-variables