Tracer des applications Python

Exigences de compatibilité

Les versions 2.7+ et 3.5+ de Python sont prises en charge. Pour obtenir la liste complète des bibliothèques prises en charge, consultez la page Exigences de compatibilité.

La configuration du tracing implique de configurer le Profileur en continu. Il vous suffit ensuite d’activer le Profileur pour commencer à recevoir les données de profiling depuis votre application.

Installation et démarrage

Suivre la documentation dans l’application (conseillé)

Suivez les instructions de démarrage rapide fournies dans l’application Datadog pour profiter d’une expérience optimale, et notamment :

  • Obtenir des instructions détaillées en fonction de la configuration de votre déploiement (hosts, Docker, Kubernetes ou Amazon ECS) ;
  • Définir les tags service, env et version de façon dynamique ;
  • Activer le profileur en continu, l’ingestion de 100 % des traces et l’injection des ID de trace dans les logs durant la configuration.

Sinon, pour commencer le tracing d’applications écrites en Python, installez la bibliothèque de tracing Datadog, ddtrace, avec pip :

pip install ddtrace

Remarque : cette commande nécessite la version 18.0.0 (ou une version ultérieure) de pip. Pour Ubuntu, Debian ou tout autre gestionnaire de packages, mettez à jour votre version de pip à l’aide de la commande suivante :

pip install --upgrade pip

Pour instrumenter votre application Python, utilisez alors la commande ddtrace-run incluse. Pour l’utiliser, ajoutez ddtrace-run en préfixe à la commande de votre point d’entrée Python.

Par exemple, si votre application est lancée avec python app.py, exécutez la commande suivante :

ddtrace-run python app.py

Configurer l’Agent Datadog pour l’APM

Installez et configurez l’Agent Datadog pour recevoir des traces de votre application désormais instrumentalisée. Par défaut, l’Agent Datadog est activé dans votre fichier datadog.yaml sous apm_config avec enabled: true et écoute le trafic de trace à localhost:8126. Pour les environnements coneteneurisés, suivez les liens ci-dessous pour activer la collecte de trace dans l’Agent Datadog.

  1. Positionnez apm_non_local_traffic: true dans la section apm_config de votre fichier de configuration datadog.yaml principal.

  2. Consultez les instructions de configuration spécifiques pour vous assurer que l’Agent est configuré de façon à recevoir des traces dans un environnement conteneurisé :

Docker
Kubernetes
Amazon ECS
ECS Fargate

  1. Après avoir instrumenté votre application, le client de tracing envoie, par défaut, les traces à localhost:8126. S’il ne s’agit pas du host et du port adéquats, modifiez-les en définissant les variables d’environnement ci-dessous :

    DD_AGENT_HOST et DD_TRACE_AGENT_PORT

    Vous pouvez également définir le hostname et le port dans le code :

    import os
    from ddtrace import tracer
    
    tracer.configure(
        hostname="custom-hostname",
        port="1234",
    )
    

  1. Définissez DD_SITE dans l’Agent Datadog sur pour vous assurer que l’Agent envoie les données au bon site Datadog.

Pour configurer l’APM Datadog dans AWS Lambda, consultez la documentation dédiée au tracing de fonctions sans serveur.

La trace est disponible pour un certain nombre d’autres environnements, comme Heroku, Cloud Foundry, AWS Elastic Beanstalk, et Azure App Service.

Pour les autres environnements, veuillez consulter la documentation relative aux intégrations pour l’environnement qui vous intéresse. Contactez l’assistance si vous rencontrez des problèmes de configuration.

Une fois le traceur configuré et exécuté avec votre application, utilisez la commande ddtrace-run --status pour vérifier que les configurations fonctionnent comme prévu. Notez que la sortie de cette commande ne reflète pas les changements de configuration effectués dans le code pendant l’exécution.

Pour découvrir des options d’utilisation, de configuration et de contrôle plus avancées, consultez la documentation relative à l’API de Datadog.

Configuration

Lorsque vous utilisez ddtrace-run, les variables d’environnement suivantes sont disponibles :

DD_TRACE_DEBUG
Valeur par défaut : false
Active les logs de debugging dans le traceur.
DD_PATCH_MODULES
Remplace les modules patchés pour l’exécution de cette application. Format à utiliser : DD_PATCH_MODULES=module:patch,module:patch...

Nous vous conseillons d’utiliser DD_ENV, DD_SERVICE et DD_VERSION pour définir les paramètres env, service et version pour vos services. Consultez la documentation sur le tagging de service unifié pour en savoir plus sur la configuration de ces variables d’environnement.

DD_ENV
Définit l’environnement d’une application, p. ex. prod, pre-prod ou staging. Découvrez comment configurer votre environnement. Disponible à partir de la version 0.38.
DD_SERVICE
Le nom de service à utiliser pour cette application. La valeur est transmise lorsque vous configurez un middleware pour les intégrations de framework Web comme Pylons, Flask ou Django. Si vous n’utilisez pas d’intégration Web pour le tracing, nous vous conseillons de définir le nom de service dans le code (par exemple, se référer à la documentation Django). Disponible à partir de la version 0.38.
DD_SERVICE_MAPPING
Permet de définir des mappages de nom de service afin de renommer des services dans les traces, par exemple : postgres:postgresql,defaultdb:postgresql. Disponible à partir de la version 0.47.
DD_VERSION
Définit la version de votre application, p. ex. 1.2.3, 6c44da20 ou 2020.02.13. Disponible à partir de la version 0.38.
DD_TAGS
La liste des tags par défaut à ajouter à chaque span et profil, p. ex. layer:api,team:intake. Disponible à partir de la version 0.38.
DD_TRACE_ENABLED
Valeur par défaut : true
Active l’instrumentation des frameworks web et des bibliothèques. Lorsqu’elle est définie sur false, le code de l’application ne génère aucune trace.
DD_AGENT_HOST
Valeur par défaut : localhost
Remplace l’adresse du host de l’Agent de trace utilisée par le traceur par défaut pour l’envoi des traces.
DD_AGENT_PORT
Valeur par défaut : 8126
Remplace le port utilisé par le traceur par défaut pour l’envoi des traces.
DD_TRACE_AGENT_URL
L’URL de l’Agent de trace auquel le traceur transmet des données. Lorsque ce paramètre est défini, il est utilisé à la place du hostname et du port. Prend en charge les sockets de domaine Unix (UDS) grâce au paramètre apm_config.receiver_socket de votre fichier datadog.yaml ou à la variable d’environnement DD_APM_RECEIVER_SOCKET, définie sur l’Agent Datadog. Par exemple, DD_TRACE_AGENT_URL=http://localhost:8126 pour une URL HTTP et DD_TRACE_AGENT_URL=unix:///var/run/datadog/apm.socket pour UDS.
DD_DOGSTATSD_URL
L’URL de connexion à l’Agent Datadog pour les métriques DogStatsD. Lorsque ce paramètre est défini, il est utilisé à la place du hostname et du port. Prend en charge les sockets de domaine Unix (UDS) grâce au paramètre dogstatsd_socket de votre fichier datadog.yaml ou à la variable d’environnement DD_DOGSTATSD_SOCKET, définie sur l’Agent Datadog. Par exemple, DD_DOGSTATSD_URL=udp://localhost:8126 pour une URL UDP et DD_DOGSTATSD_URL=unix:///var/run/datadog/dsd.socket pour UDS.
DD_DOGSTATSD_HOST
Valeur par défaut : localhost
Remplace l’adresse du host de l’Agent de trace utilisée par le traceur par défaut pour l’envoi des métriques DogStatsD. Utiliser DD_AGENT_HOST pour remplacer DD_DOGSTATSD_HOST.
DD_DOGSTATSD_PORT
Valeur par défaut : 8126
Remplace le port utilisé par le traceur par défaut pour l’envoi des métriques DogStatsD.
DD_LOGS_INJECTION
Valeur par défaut : false
Active la mise en relation des logs et des traces injectées.

Pour aller plus loin