Tracer des applications Python
La gestion des incidents est désormais disponible pour tous ! La gestion des incidents est désormais disponible pour tous !

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é.

Installation et démarrage

Suivre la documentation intégrée à 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

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 de façon à ce qu’il reçoive des traces à partir de votre application instrumentée. Par défaut, l’Agent Datadog est activé dans votre fichier datadog.yaml, sous apm_enabled: true, et écoute le trafic des traces sur localhost:8126. Pour les environnements conteneurisés, suivez les liens ci-dessous afin d’activer la collecte de traces au sein de l’Agent Datadog.

  1. Définissez apm_non_local_traffic: true dans votre fichier de configuration principal datadog.yaml.

  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é :


  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",
)

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

Le tracing est disponible pour un certain nombre d’environnements, tels que Heroku, Cloud Foundry, AWS Elastic Beanstalk et l'extension Azure App Services.

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.

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 :

Variable d’environnementValeur par défautDescription
DD_TRACE_DEBUGfalseActive la journalisation de debugging dans le traceur.
DATADOG_PATCH_MODULESRemplace les modules patchés pour l’exécution de cette application. Le format doit être le suivant : DATADOG_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.

Variable d’environnementValeur par défautDescription
DD_ENVDé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_SERVICELe 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. Disponible à partir de la version 0.38.
DD_VERSIONDéfinit la version de votre application, p. ex. 1.2.3, 6c44da20 ou 2020.02.13. Disponible à partir de la version 0.38.
DD_TAGSLa liste des tags par défaut à ajouter à chaque span, profil et métrique runtime, p. ex. layer:api,team:intake. Disponible à partir de la version 0.38.
DD_TRACE_ENABLEDtrueActive 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_HOSTlocalhostRemplace l’adresse du host de l’Agent de trace utilisée par le traceur par défaut pour l’envoi des traces.
DATADOG_TRACE_AGENT_PORT8126Remplace le port utilisé par le traceur par défaut pour l’envoi des traces.
DD_TRACE_AGENT_URLL’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 grâce au paramètre apm_config.receiver_socket de votre fichier datadog.yaml ou à la variable d’environnement DD_APM_RECEIVER_SOCKET.
DATADOG_PRIORITY_SAMPLINGtrueActive l’échantillonnage prioritaire.
DD_LOGS_INJECTIONfalseActive la mise en relation des logs et des traces injectées.

Pour aller plus loin