A partir de Agent 6.0.0, el Trace Agent se activa por defecto. Si ha sido desactivado, se puede reactivar en el contenedor gcr.io/datadoghq/agent al pasar DD_APM_ENABLED=true como una variable de entorno.

Los comandos de CLI en esta página son para el tiempo de ejecución de Docker. Sustituye docker por nerdctl para el tiempo de ejecución del containerd, o podman para el tiempo de ejecución del Podman.

Si estás recopilando trazas de una aplicación contenedorizada (tu Agent y tu app se están ejecutando en contenedores separados), una alternativa a las siguientes instrucciones es inyectar la biblioteca de trazas automáticamente en tu aplicación. Consulta Inyectar bibliotecas para ver las instrucciones.

Rastrear desde el host

La opción de rastrear está disponible en el puerto 8126/tcp desde tu host únicamente al añadir la opción de comando -p 127.0.0.1:8126:8126/tcp to the docker run.

Para hacerlo disponible desde cualquier host, usa -p 8126:8126/tcp en su lugar.

Por ejemplo, el comando siguiente permite al Agent recibir trazas de tu host únicamente:

docker run -d --cgroupns host \
              --pid host \
              -v /var/run/docker.sock:/var/run/docker.sock:ro \
              -v /proc/:/host/proc/:ro \
              -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
              -p 127.0.0.1:8126:8126/tcp \
              -e DD_API_KEY=<DATADOG_API_KEY> \
              -e DD_APM_ENABLED=true \
              -e DD_SITE=<DATADOG_SITE> \
              gcr.io/datadoghq/agent:latest

Donde tu <DATADOG_SITE> es (por defecto, datadoghq.com).

docker run -d -p 127.0.0.1:8126:8126/tcp \
              -e DD_API_KEY=<DATADOG_API_KEY> \
              -e DD_APM_ENABLED=true \
              -e DD_SITE=<DATADOG_SITE> \
              gcr.io/datadoghq/agent:latest

Donde tu <DATADOG_SITE> es (por defecto, datadoghq.com).

Variables de entorno del Docker APM Agent

Utiliza las siguientes variables de entorno para configurar la traza del Docker Agent. Consulta el archivo de ejemplo config_template.yaml para obtener más detalles.

DD_API_KEY
obligatorio - cadena
tu clave API de Datadog.
DD_SITE
opcional; cadena
Tu sitio de Datadog. Establécelo en .
Predeterminado: datadoghq.com
DD_APM_ENABLED
opcional; booleano - por defecto: true
Cuando se establece en true (por defecto), el Datadog Agent acepta trazas y métricas de traza.
DD_APM_RECEIVER_PORT
opcional - entero - por defecto: 8126
Establece el puerto en el que escucha el receptor de la traza del Datadog Agent. Establece 0 para desactivar el receptor HTTP.
DD_APM_RECEIVER_SOCKET
opcional: cadena
Para recopilar tus trazas a través de UNIX Domain Sockets, proporciona la ruta al socket UNIX. Si se establece, tiene prioridad sobre el nombre de host y la configuración del puerto, y debe apuntar a un archivo de socket válido.
DD_APM_NON_LOCAL_TRAFFIC
opcional - Booleano - por defecto: false
Cuando se establece en true, el Datadog Agent escucha el tráfico no local. Si estás rastreando desde otros contenedores, establece esta variable de entorno en true.
DD_APM_DD_URL
opcional - cadena
Para utilizar un proxy para APM, proporciona el endpoint y el puerto como <ENDPOINT>:<PORT>. El proxy debe poder manejar conexiones TCP.
DD_APM_CONNECTION_LIMIT
obligatorio - entero - por defecto: 2000
Establece el máximo de conexiones APM para una ventana temporal de 30 segundos. Consulta Límites de frecuencia del Agent para obtener más detalles.
DD_APM_IGNORE_RESOURCES
opcional - [cadena]
Proporciona una lista de exclusión de recursos para que Datadog Agent los ignore. Si el nombre de recurso de una traza coincide con una o más de las expresiones regulares de esta lista, la traza no se envía a Datadog.
Ejemplo: "GET /ignore-me","(GET\|POST) and-also-me".
DD_APM_FILTER_TAGS_REQUIRE
opcional - objeto
Define reglas para el filtrado de trazas basadas en etiqueta. Para enviarlas a Datadog, las trazas deben tener estas etiquetas (tags). Consulta Ignorar recursos no deseados en APM.
DD_APM_FILTER_TAGS_REGEX_REQUIRE
opcional - objeto
Compatible con Agent 7.49+. Define reglas para el filtrado de trazas basadas en etiquetas con expresiones regulares. Para enviarlas a Datadog, las trazas deben tener etiquetas que coincidan con estos patrones regex.
DD_APM_FILTER_TAGS_REJECT
opcional - objeto
Define reglas para el filtrado de trazas basadas en etiquetas. Si una traza tiene estas etiquetas, no se envía a Datadog. Consulta Ignorar recursos no deseados en APM para obtener más detalles.
DD_APM_FILTER_TAGS_REGEX_REJECT
opcional - objeto
Compatible con Agent 7.49+. Define reglas para el filtrado de trazas basadas en etiquetas con expresiones regulares. Si una traza tiene etiquetas que coinciden con estos patrones regex, la traza no se envía a Datadog.
DD_APM_REPLACE_TAGS
opcional - [objeto]
Define un conjunto de reglas para reemplazar o eliminar etiquetas que contienen información potencialmente sensible.
DD_HOSTNAME
opcional - cadena - por defecto: detectado automáticamente
Establece el nombre de host que se utilizará para métricas si falla la detección automática del nombre de host, o cuando se ejecuta el Datadog Cluster Agent.
DD_DOGSTATSD_PORT
opcional - entero - por defecto: 8125
Establece el puerto DogStatsD.
DD_PROXY_HTTPS
opcional - cadena
Para utilizar un proxy para conectarse a Internet, indica la URL.
DD_BIND_HOST
opcional - cadena - por defecto: localhost
Establece el host para escuchar en DogStatsD y trazas.
DD_LOG_LEVEL
opcional - cadena - por defecto: info
Establece el nivel mínimo de registro. Opciones válidas: trace, debug, info, warn, error, critical y off.

Rastreando desde otros contenedores

Al igual que con DogStatsD, se pueden enviar trazas al Agent desde otros contenedores usando redes de Docker o IP de Docker host.

Red de Docker

El primer paso es crear una red puente definida por el usuario:

docker network create <NETWORK_NAME>

Los comandos de CLI en esta página son para el tiempo de ejecución de Docker. Sustituye docker por nerdctl para el tiempo de ejecución del containerd, o podman para el tiempo de ejecución del Podman.

Luego, inicia el Agent y el contenedor de la aplicación, conectados a la red que se ha creado previamente:

a

# Datadog Agent
docker run -d --name datadog-agent \
              --network <NETWORK_NAME> \
              --cgroupns host \
              --pid host \
              -v /var/run/docker.sock:/var/run/docker.sock:ro \
              -v /proc/:/host/proc/:ro \
              -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
              -e DD_API_KEY=<DATADOG_API_KEY> \
              -e DD_APM_ENABLED=true \
              -e DD_SITE=<DATADOG_SITE> \
              -e DD_APM_NON_LOCAL_TRAFFIC=true \
              gcr.io/datadoghq/agent:latest
# Application
docker run -d --name app \
              --network <NETWORK_NAME> \
              -e DD_AGENT_HOST=datadog-agent \
              company/app:latest

Donde tu <DATADOG_SITE> es (por defecto, datadoghq.com).

# Datadog Agent
docker run -d --name datadog-agent \
              --cgroupns host \
              --pid host \
              --network "<NETWORK_NAME>" \
              -e DD_API_KEY=<DATADOG_API_KEY> \
              -e DD_APM_ENABLED=true \
              -e DD_SITE=<DATADOG_SITE> \
              -e DD_APM_NON_LOCAL_TRAFFIC=true \
              gcr.io/datadoghq/agent:latest
# Application
docker run -d --name app \
              --network "<NETWORK_NAME>" \
              -e DD_AGENT_HOST=datadog-agent \
              company/app:latest

Donde tu <DATADOG_SITE> es (por defecto, datadoghq.com).

Esto expone el nombre del host datadog-agent en tu contenedor app. Si estás usando docker-compose, los parámetros <NETWORK_NAME> son los que están definidos en la sección networks de tu docker-compose.yml.

Las trazas de tu aplicación deben estas configuradas para que puedan enviar trazas a esta dirección. Configura las variables de entorno con el DD_AGENT_HOST como el nombre del contenedor del Agent y DD_TRACE_AGENT_PORT como el puerto del Agent Trace en tus contenedores de aplicación. Los ejemplos anteriores usan el host datadog-agent y el puerto 8126 (el valor por defecto para que no tengas que configurarlo).

Opcionalmente, consulta los ejemplos a continuación para configurar el host del Agent manualmente en cada lenguaje compatible.

Se puede actualizar la configuración del Java Agent con variables de entorno:

DD_AGENT_HOST=datadog-agent \
DD_TRACE_AGENT_PORT=8126 \
java -javaagent:/path/to/the/dd-java-agent.jar -jar /your/app.jar

o mediante propiedades de sistema:

java -javaagent:/path/to/the/dd-java-agent.jar \
     -Ddd.agent.host=datadog-agent \
     -Ddd.agent.port=8126 \
     -jar /your/app.jar
from ddtrace import tracer

tracer.configure(
    hostname='datadog-agent',
    port=8126,
)
Datadog.configure do |c|
  c.agent.host = 'datadog-agent'
  c.agent.port = 8126
end

Note: This documentation uses v2 of the Go tracer, which Datadog recommends for all users. If you are using v1, see the migration guide to upgrade to v2.

package main

import (
  "github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"
)

func main() {
    tracer.Start(tracer.WithAgentAddr("datadog-agent:8126"))
    defer tracer.Stop()
}
const tracer = require('dd-trace').init({
    hostname: 'datadog-agent',
    port: 8126
});

Establece las variables de entorno antes de ejecutar tu app instrumentado:

# Environment variables
export CORECLR_ENABLE_PROFILING=1
export CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
export CORECLR_PROFILER_PATH=<SYSTEM_DEPENDENT_PATH>
export DD_DOTNET_TRACER_HOME=/opt/datadog

# For containers
export DD_AGENT_HOST=datadog-agent
export DD_TRACE_AGENT_PORT=8126

# Start your application
dotnet example.dll

El valor de la variable de entorno CORECLR_PROFILER_PATH varia, dependiendo del sistema en el se esté ejecutando la aplicación:

Sistema Operativo y Arquitectura de ProcesoValor de CORECLR_PROFILER_PATH
Alpine Linux x64<APP_DIRECTORY>/datadog/linux-musl-x64/Datadog.Trace.ClrProfiler.Native.so
Linux x64<APP_DIRECTORY>/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so
Linux ARM64<APP_DIRECTORY>/datadog/linux-arm64/Datadog.Trace.ClrProfiler.Native.so
Windows x64<APP_DIRECTORY>\datadog\win-x64\Datadog.Trace.ClrProfiler.Native.dll
Windows x86<APP_DIRECTORY>\datadog\win-x86\Datadog.Trace.ClrProfiler.Native.dll

En la tabla de arriba, <APP_DIRECTORY> se refiere al directorio que contiene los archivos .dll de la aplicación.

IP del Docker host

El puerto del contenedor del Agent 8126 debería estar vinculado al host directamente. Configura el rastreador de tu aplicación a la ruta por defecto de este contenedor (usa el comando ip route para obtenerlo).

A continuación hay un ejemplo para el Python Tracer, suponiendo que 172.17.0.1 es la ruta por defecto:

from ddtrace import tracer

tracer.configure(hostname='172.17.0.1', port=8126)

Unix Domain Socket (UDS)

Para enviar trazas mediante un socket, éste debe estar montado en el contenedor del Agent y su contenedor de aplicación.

# Datadog Agent
docker run -d --name datadog-agent \
              --network <NETWORK_NAME> \
              --cgroupns host \
              --pid host \
              -v /var/run/docker.sock:/var/run/docker.sock:ro \
              -v /proc/:/host/proc/:ro \
              -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
              -v /var/run/datadog/:/var/run/datadog/ \
              -e DD_API_KEY=<DATADOG_API_KEY> \
              -e DD_APM_ENABLED=true \
              -e DD_SITE=<DATADOG_SITE> \
              -e DD_APM_NON_LOCAL_TRAFFIC=true \
              -e DD_APM_RECEIVER_SOCKET=/var/run/datadog/apm.socket \
              gcr.io/datadoghq/agent:latest
# Application
docker run -d --name app \
              --network <NETWORK_NAME> \
              -v /var/run/datadog/:/var/run/datadog/ \
              -e DD_TRACE_AGENT_URL=unix:///var/run/datadog/apm.socket \
              company/app:latest

Consulta la documentación específica en tu idioma de la Instrumentación de APM para conocer la configuración del trazador.

Referencias adicionales