Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Tracer des applications Docker

Activez l’Agent de trace dans le conteneur datadog/agent en transmettant DD_APM_ENABLED=true en tant que variable d’environnement.

Tracing depuis le host

Ajoutez l’option -p 127.0.0.1:8126:8126/tcp à la commande docker run pour bénéficier du tracing sur le port 8126/tcp depuis votre host uniquement.

Pour profiter du tracing depuis tous les hosts, utilisez plutôt la commande -p 8126:8126/tcp.

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

docker run -d -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=<VOTRE_CLÉ_API> \
              -e DD_APM_ENABLED=true \
              datadog/agent:latest

Variables d’environnement de l’Agent APM Docker

Voici la liste de l’ensemble des variables d’environnements pour le tracing au sein de l’Agent Docker :

Variable d’environnementDescription
DD_API_KEYClé d’API Datadog
DD_PROXY_HTTPSConfigure l’URL utilisée par le proxy.
DD_HOSTNAMEDéfinit manuellement le hostname à utiliser pour les métriques si la détection automatique échoue, ou lors de l’exécution de l’Agent de cluster Datadog.
DD_DOGSTATSD_PORTDéfinit le port DogStatsD.
DD_BIND_HOSTDéfinit le hostname StatsD et le hostname du récepteur.
DD_LOG_LEVELDéfinit le niveau de journalisation (trace, debug, info, warn, error, critical ou off).
DD_APM_ENABLEDLorsque ce paramètre est défini sur true, l’Agent Datadog accepte les métriques de trace.
DD_APM_CONNECTION_LIMITDéfinit la limite maximale de connexion pour un intervalle de 30 secondes.
DD_APM_DD_URLEndpoint de l’API Datadog vers lequel les traces sont envoyées. Pour le site européen de Datadog, définissez DD_APM_DD_URL sur https://trace.agent.datadoghq.eu.
DD_APM_RECEIVER_PORTPort sur lequel le récepteur de traces de l’Agent Datadog effectue son écoute. Valeur par défaut : 8126.
DD_APM_NON_LOCAL_TRAFFICAutorise le trafic non local pour le tracing depuis d’autres conteneurs.
DD_APM_IGNORE_RESOURCESConfigurez les ressources que l’Agent doit ignorer. Utilisez des expressions régulières séparées par des virgules, par exemple : “GET /ignorer-ceci,(GET|POST) /et-cela”.
DD_APM_ANALYZED_SPANSConfigurez les spans à analyser pour les transactions. Utilisez des instances de <NOM_SERVICE>|<NOM_OPÉRATION>=1 séparées par des virgules, par exemple : mon-app-express|express.request=1,mon-app-dotnet|aspnet_core_mvc.request=1. Vous pouvez également l’activer automatiquement à l’aide du paramètre de configuration dans le client de tracing.
DD_APM_ENVDéfinit l’environnement par défaut de vos traces.
DD_APM_MAX_EPSDéfinit le nombre maximum d’événements APM par seconde.
DD_APM_MAX_TPSDéfinit le nombre maximum de traces par seconde.

Tracing depuis d’autres conteneurs

Comme pour DogStatsD, les traces peuvent être envoyées à l’Agent depuis d’autres conteneurs via les réseaux Docker ou l’IP de host Docker.

Réseau Docker

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

docker network create <NOM_RÉSEAU>

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

# Agent Datadog
docker run -d --name datadog-agent \
              --network <NOM_RÉSEAU> \
              -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=<VOTRE_CLÉ_API> \
              -e DD_APM_ENABLED=true \
              -e DD_APM_NON_LOCAL_TRAFFIC=true \
              datadog/agent:latest

# Application
docker run -d --name app \
              --network <NOM_RÉSEAU> \
              company/app:latest

Cela expose le hostname datadog-agent dans votre conteneur app. Si vous utilisez docker-compose, les paramètres <NOM_RÉSEAU> correspondent aux paramètres définis dans la section networks de votre fichier docker-compose.yml.

Vos traceurs d’application doivent être configurés afin d’envoyer des traces à cette adresse. Définissez les variables d’environnement en indiquant le DD_AGENT_HOST en tant que nom de conteneur de l’Agent et le DD_TRACE_AGENT_PORT en tant port des traces de l’Agent dans vos conteneurs d’application. Dans cet exemple, il s’agit respectivement de datadog-agent et de 8126.

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:/chemin/vers/l/agent-java-dd.jar -jar /votre/app.jar

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

java -javaagent:/chemin/vers/l/agent-java-dd.jar \
     -Ddd.agent.host=datadog-agent \
     -Ddd.agent.port=8126 \
     -jar /votre/app.jar
from ddtrace import tracer

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

import "gopkg.in/DataDog/dd-trace-go.v1/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
})

IP de host Datadog

Le port de conteneur de l’Agent 8126 doit être associé directement au host. Configurez votre traceur d’application afin d’indiquer l’itinéraire par défaut de ce conteneur (utilisez la commande ip route).

L’exemple suivant est basé sur le traceur Python et part du principe que 172.17.0.1 est votre itinéraire par défaut :

from ddtrace import tracer

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

Pour aller plus loin