Débuter avec le tracing APM

Présentation

La solution Application Performance Monitoring (APM) de Datadog vous permet dʼanalyser vos applications en détail, et ainsi d’identifier les goulets d’étranglement, de résoudre les problèmes et d’optimiser vos services.

Ce guide explique comment bien débuter avec lʼAPM et envoyer votre première trace à Datadog :

  1. Configurez la solution APM de Datadog pour envoyer des traces à Datadog.
  2. Exécutez votre application pour générer des données.
  3. Explorez les données collectées dans Datadog.

Prérequis

Pour compléter ce guide, vous avez besoin des éléments suivants :

  1. Créez un compte Datadog si vous ne l’avez pas encore fait.
  2. Recherchez ou créez une clé dʼAPI Datadog.
  3. Démarrez un host ou une VM Linux.

Créer une application

Pour créer une application à observer dans Datadog :

  1. Sur votre host ou VM Linux, créez une nouvelle application Python nommée hello.py. Par exemple, nano hello.py.

  2. Ajoutez le code suivant à hello.py :

    hello.py

      from flask import Flask
      import random
    
      app = Flask(__name__)
    
      quotes = [
          « Ne vous efforcez pas de réussir, mais plutôt d'être utile. - Albert Einstein »,
          « Avoir confiance en nos capacités est la moitié du travail. - Theodore Roosevelt »,
          « L'avenir appartient à ceux qui croient en la beauté de leurs rêves. - Eleanor Roosevelt »
      ]
    
      @app.route('/')
      def index():
          quote = random.choice(quotes)+"\n"
          return quote
    
      if __name__ == '__main__':
          app.run(host='0.0.0.0', port=5050)
      

Configurer l’APM Datadog

Pour configurer la solution APM de Datadog sans avoir à modifier le code de votre application ni le processus de déploiement, utilisez lʼinstrumentation APM en une étape :

Note : lʼinstrumentation APM en une étape est en version bêta. Vous pouvez également configurer lʼAPM en utilisant les bibliothèques de tracing de Datadog.
  1. Exécutez la commande d’installation :

     DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_ENV=<AGENT_ENV> bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
    

    Remplacez <YOUR_DD_API_KEY> par votre clé dʼAPI Datadog, <YOUR_DD_SITE> par votre site Datadog et <AGENT_ENV> par lʼenvironnement sur lequel votre Agent est installé (par exemple, development).

  2. Démarrez une nouvelle session shell.

  3. Redémarrez les services sur votre host ou VM.

  4. Vérifiez que lʼAgent est exécuté :

    sudo datadog-agent status
    

Cette approche permet dʼinstaller automatiquement lʼAgent Datadog, dʼactiver lʼAPM Datadog et dʼinstrumenter votre application au moment de l’exécution.

Exécuter l’application

Lorsque vous configurez lʼAPM Datadog avec lʼinstrumentation en une étape, Datadog instrumente automatiquement votre application au moment de l’exécution.

Pour exécuter hello.py :

  1. Créez un environnement Python virtuel dans le répertoire actuel  :

    python3 -m venv ./venv
    
  2. Activez lʼenvironnement virtuel venv :

    source ./venv/bin/activate
    
  3. Installez pip et flask :

    sudo apt-get install python3-pip
    pip install flask
    
  4. Nommez le service et exécutez hello.py :

    export DD_SERVICE=hello
    python3 hello.py
    

Tester l’application

Testez l’application pour envoyer des traces à Datadog :

  1. Dans une nouvelle invite de commande, exécutez ce qui suit :

    curl http://0.0.0.0:5050/
    
  2. Confirmer qu’une citation aléatoire est renvoyée.

    Believe you can and you're halfway there. - Theodore Roosevelt
    

Chaque fois que vous exécutez la commande curl, une nouvelle trace est envoyée à Datadog.

Explorez les traces dans Datadog

  1. Dans Datadog, accédez à APM > Services. Vous devriez voir un service Python nommé hello :

    Le catalogue des services affiche le nouveau service Python.
  2. Sélectionnez le service pour afficher ses métriques de performances, telles que la latence, le débit et les taux d’erreur.

  3. Accédez à APM > Traces. Vous devriez voir une trace pour le service hello :

    Le Trace explorer affiche la trace correspondant au service hello.
  4. Sélectionnez une trace pour en voir les détails, y compris le flame graph, qui permet d’identifier les goulets d’étranglement en matière de performances.

Configuration avancée de l’APM

Jusqu’à ce stade, vous avez laissé Datadog instrumenter automatiquement l’application hello.py à l’aide de l’instrumentation en une seule étape. Cette approche est conseillée si vous souhaitez capturer les traces essentielles dans les bibliothèques et langages courants sans toucher au code ni installer des bibliothèques manuellement.

Toutefois, si vous avez besoin de recueillir des traces à partir d’un code personnalisé ou si vous souhaitez un contrôle plus précis, vous pouvez ajouter l’instrumentation personnalisée.

Pour illustrer ceci, vous allez importer la bibliothèque de tracing Python de Datadog dans hello.py et créer une span et un tag de span personnalisés.

Pour ajouter des instrumentations personnalisées :

  1. Installez la bibliothèque de tracing Datadog :

    pip install ddtrace
    
  2. Ajoutez les lignes surlignées au code dans hello.py pour créer un tag de span personnalisé get_quote et un tag de span personnalisé quote :

     from flask import Flask
     import random
     from ddtrace import tracer
    
     app = Flask(__name__)
    
     quotes = [
         « Ne vous efforcez pas de réussir, mais plutôt d'être utile. - Albert Einstein »,
         « Avoir confiance en nos capacités est la moitié du travail. - Theodore Roosevelt »,
         « L'avenir appartient à ceux qui croient en la beauté de leurs rêves. - Eleanor Roosevelt »
     ]
    
     @app.route('/')
     def index():
         with tracer.trace("get_quote") as span:
             quote = random.choice(quotes)+"\n"
             span.set_tag("quote", quote)
             return quote
    
     if __name__ == '__main__':
         app.run(host='0.0.0.0', port=5050)
  3. Exécutez hello.py dans lʼenvironnement virtuel mentionné plus haut :

    ddtrace-run python hello.py
    
  4. Exécutez quelques commandes curl dans une invite de commande distincte :

    curl http://0.0.0.0:5050/
    
  5. Dans Datadog, accédez à APM > Traces.

  6. Sélectionnez la trace hello.

  7. Recherchez la nouvelle span personnalisée get_quote dans le flame graph et survolez-la :

    La span personnalisée get_quote sʼaffiche dans le flame graph. Lorsquʼon la survole, le tag de span de la citation sʼaffiche.
  8. Remarquez que le tag de span personnalisé quote s’affiche dans lʼonglet Info.

Pour aller plus loin