Depuis l’Agent 6.0.0, l’Agent de trace est activé par défaut. S’il a été désactivé, vous pouvez le réactiver dans le conteneur registry.datadoghq.com/agent en transmettant DD_APM_ENABLED=true en tant que variable d’environnement.

Les commandes CLI sur cette page sont destinées au runtime Docker. Remplacez docker par nerdctl pour le runtime containerd, ou podman pour le runtime Podman.

Si vous collectez des traces à partir d'une application conteneurisée (votre Agent et votre application s'exécutant dans des conteneurs séparés), comme alternative aux instructions suivantes, vous pouvez injecter automatiquement le SDK dans votre application. Lisez Injection de bibliothèques pour obtenir des instructions.

Traçage depuis l’hôte

Le traçage est disponible sur le port 8126/tcp depuis votre hôte uniquement en ajoutant l’option -p 127.0.0.1:8126:8126/tcp à la commande docker run.

Pour la rendre disponible depuis n’importe quel hôte, utilisez -p 8126:8126/tcp à la place.

Par exemple, la commande suivante permet à l’Agent de recevoir des traces depuis votre host uniquement :

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> \
              registry.datadoghq.com/agent:latest

Où votre <DATADOG_SITE> se trouve (par défaut 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> \
              registry.datadoghq.com/agent:latest

Où votre <DATADOG_SITE> se trouve (par défaut datadoghq.com).

Variables d’environnement de l’Agent APM Docker

Utilisez les variables d’environnement suivantes pour configurer le traçage pour l’Agent Docker.

Pour toutes les options disponibles et leurs valeurs par défaut, consultez la section apm_config du fichier de configuration d’exemple de l’Agent.

DD_API_KEY
requis - chaîne
Votre clé d’API Datadog.
DD_SITE
optionnel - chaîne
Votre site Datadog. Définissez ceci sur .
Default: datadoghq.com
DD_APM_ENABLED
facultatif – Booléen – par défaut: true
Lorsqu’il est défini sur true (par défaut), le Datadog Agent accepte les traces et les métriques de trace.
DD_APM_RECEIVER_PORT
facultatif – entier – par défaut: 8126
Définit le port sur lequel le récepteur de traces du Datadog Agent écoute : Définissez sur 0 pour désactiver le récepteur HTTP :
DD_APM_RECEIVER_SOCKET
optionnel - chaîne
Pour collecter vos traces via des sockets de domaine UNIX, indiquez le chemin d’accès au socket UNIX : S’il est défini, cela prévaut sur la configuration de l’hôte et du port, et doit pointer vers un fichier de socket valide :
DD_APM_NON_LOCAL_TRAFFIC
facultatif - Booléen - par défaut: false
Lorsqu’il est défini sur true, le Datadog Agent écoute le trafic non local : Si vous effectuez le traçage depuis d’autres conteneurs, définissez cette variable d’environnement sur true :
DD_APM_DD_URL
optionnel - chaîne
Pour utiliser un proxy pour l’APM, indiquez l’endpoint et le port sous la forme <ENDPOINT>:<PORT> : Le proxy doit être capable de gérer les connexions TCP.
DD_APM_CONNECTION_LIMIT
requis - entier - par défaut: 2000
Définit le nombre maximal de connexions APM pour une fenêtre temporelle de 30 secondes : Consultez Limites de débit de l’Agent pour plus de détails.
DD_APM_IGNORE_RESOURCES
optionnel - [chaîne]
Fournit une liste d’exclusion de ressources que le Datadog Agent doit ignorer : Si le nom de la ressource d’une trace correspond à une ou plusieurs expressions régulières de cette liste, la trace n’est pas envoyée à Datadog :
Exemple: "GET /ignore-me","(GET\|POST) and-also-me".
DD_APM_FILTER_TAGS_REQUIRE
optionnel - objet
Définit des règles de filtrage des traces basées sur des tags : Pour être envoyées à Datadog, les traces doivent comporter ces tags : Consultez Ignorer des ressources indésirables dans l’APM.
DD_APM_FILTER_TAGS_REGEX_REQUIRE
optionnel - objet
Pris en charge par l’Agent 7.49+ : Définit des règles de filtrage des traces basées sur des tags avec des expressions régulières. Pour être envoyées à Datadog, les traces doivent comporter des tags correspondant à ces modèles d’expressions régulières :
DD_APM_FILTER_TAGS_REJECT
optionnel - objet
Définit des règles de filtrage des traces basées sur des tags : Si une trace possède ces tags, elle n’est pas envoyée à Datadog : Consultez Ignorer des ressources indésirables dans l’APM pour plus de détails.
DD_APM_FILTER_TAGS_REGEX_REJECT
optionnel - objet
Pris en charge par l’Agent 7.49+ : Définit des règles de filtrage des traces basées sur des tags avec des expressions régulières. Si une trace contient des tags qui correspondent à ces expressions régulières, la trace n’est pas envoyée à Datadog.
DD_APM_REPLACE_TAGS
facultatif - [object]
Définit un ensemble de règles pour remplacer ou supprimer les tags contenant des informations potentiellement sensibles.
DD_HOSTNAME
optionnel - chaîne - par défaut : détecté automatiquement
Définit le nom d’hôte à utiliser pour les métriques si la détection automatique du nom d’hôte échoue, ou lors de l’exécution du Datadog Cluster Agent.
DD_DOGSTATSD_PORT
facultatif - entier - par défaut : 8125
Définit le port DogStatsD.
DD_PROXY_HTTPS
optionnel - _ chaîne_
Pour utiliser un proxy afin de vous connecter à Internet, indiquez l’URL.
DD_BIND_HOST
optionnel - _ chaîne_ - par défaut : localhost
Définit l’hôte sur lequel écouter pour DogStatsD et les traces.
DD_LOG_LEVEL
optionnel - _ chaîne_ - par défaut : info
Définit le niveau de journalisation minimal. Options valides : trace, debug, info, warn, error, critical et off.

Traçage depuis d’autres conteneurs

Comme pour DogStatsD, les traces peuvent être envoyées à l’Agent depuis d’autres conteneurs en utilisant les réseaux Docker ou avec l’IP de l’hôte Docker.

Réseau Docker

Commencez par créer un pont définir par l’utilisateur :

docker network create <NETWORK_NAME>

Les commandes CLI sur cette page sont destinées au runtime Docker. Remplacez docker par nerdctl pour le runtime containerd, ou podman pour le runtime Podman.

Démarrez ensuite l’Agent et le conteneur de l’application, connectés au réseau précédemment créé :

# 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 \
              registry.datadoghq.com/agent:latest
# Application
docker run -d --name app \
              --network <NETWORK_NAME> \
              -e DD_AGENT_HOST=datadog-agent \
              company/app:latest

Où votre <DATADOG_SITE> se trouve (par défaut 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 \
              registry.datadoghq.com/agent:latest
# Application
docker run -d --name app \
              --network "<NETWORK_NAME>" \
              -e DD_AGENT_HOST=datadog-agent \
              company/app:latest

Où votre <DATADOG_SITE> se trouve (par défaut datadoghq.com).

Ceci expose le nom d’hôte datadog-agent dans votre conteneur app. Si vous utilisez docker-compose, les paramètres <NETWORK_NAME> sont ceux définis dans la section networks de votre docker-compose.yml.

Les SDK de votre application doivent être configurés pour soumettre des traces à cette adresse. Définissez les variables d’environnement avec DD_AGENT_HOST comme nom du conteneur de l’Agent, et DD_TRACE_AGENT_PORT comme port de trace de l’Agent dans vos conteneurs d’application. L’exemple ci-dessus utilise l’hôte datadog-agent et le port 8126 (la valeur par défaut, vous n’avez donc pas besoin de la définir).

Vous pouvez également consulter les exemples ci-dessous pour définir manuellement le host de l’Agent dans chaque langage pris en charge.

Mettez à jour la configuration de l’Agent Java avec des variables d’environnement :

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

ou avec des propriétés système :

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
});

Définissez les variables d’environnement avant d’exécuter l’application instrumentée :

# 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

La valeur de la variable d’environnement CORECLR_PROFILER_PATH varie en fonction du système sur lequel l’application s’exécute :

Système d’exploitation et architecture de processusValeur 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

Dans le tableau ci-dessus, <APP_DIRECTORY> fait référence au répertoire contenant les fichiers .dll de l’application.

IP de l’hôte Docker

Le port 8126 du conteneur de l’agent doit être lié directement à l’hôte. Configurez votre traceur d’application pour qu’il envoie des rapports vers la route par défaut de ce conteneur (déterminez-la à l’aide de la commande ip route).

Voici un exemple pour le traceur Python, en supposant que 172.17.0.1 est la route par défaut :

from ddtrace import tracer

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

Socket de domaine Unix (UDS)

Pour soumettre des traces via un socket, le socket doit être monté sur le conteneur de l’Agent et sur votre conteneur d’application.

# 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 \
              registry.datadoghq.com/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

Consultez la documentation d’instrumentation APM spécifique au langage pour les paramètres du traceur.

Pour aller plus loin