Débuter
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Débuter

Le profileur est fourni au sein des bibliothèques de tracing suivantes. Sélectionnez votre langage ci-dessous afin d’activer le profileur pour votre application :

Pour accéder au profileur Node, Ruby, PHP ou .NET, inscrivez-vous à la bêta privée. Nous vous préviendrons lorsque la bêta sera prête.

Le profileur Datadog nécessite Java Flight Recorder. La bibliothèque du profileur Datadog est prise en charge par OpenJDK 11+, Oracle Java 11+, OpenJDK 8 pour la plupart des fournisseurs (version 8u262) et Zulu Java 8+ (version mineure 1.8.0_212+). Tous les langages basés sur JVM, tels que Scala, Groovy, Kotlin, ou encore Clojure sont pris en charge. Pour commencer le profiling d’applications :

  1. Si vous utilisez déjà Datadog, mettez votre Agent à jour vers la version 7.20.2+ ou 6.20.2+. Si l’APM n’est pas activé et que votre application n’est pas configurée pour envoyer des données à Datadog, dans votre Agent, définissez la variable d’environnement DD_APM_ENABLED sur true et le port d’écoute sur 8126/TCP.

  2. Téléchargez dd-java-agent.jar, qui contient les fichiers de classe de l’Agent Java :

    wget -O dd-java-agent.jar 'https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=com.datadoghq&a=dd-java-agent&v=LATEST'
    

    Remarque : le profileur est disponible dans la bibliothèque dd-java-agent.jar dans la version 0.55 et les versions ultérieures.

  3. Définissez le flag -Ddd.profiling.enabled ou la variable d’environnement DD_PROFILING_ENABLED sur true. Mettez à jour l’appel de votre service tel que ci-dessous :

    java -javaagent:dd-java-agent.jar -Ddd.profiling.enabled=true -jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>
    
  4. Au bout d’une ou de deux minutes, visualisez vos profils en accédant à l’APM Datadog puis à la page Profiling.

Remarques :

  • L’argument -javaagent doit figurer avant -jar et être ajouté en tant qu’option JVM et non en tant qu’argument d’application. Pour en savoir plus, consultez la documentation Oracle (en anglais) :

    # Good:
    java -javaagent:dd-java-agent.jar ... -jar my-service.jar -more-flags
    # Bad:
    java -jar my-service.jar -javaagent:dd-java-agent.jar ...
    
  • Nous vous conseillons vivement de spécifier les tags service et version pour vous permettre de filtrer vos profils selon ces dimensions. Utilisez des variables d’environnement pour définir ces paramètres :

Variable d’environnementTypeDescription
DD_PROFILING_ENABLEDBooléenAlternative à l’argument -Ddd.profiling.enabled. Définissez cette variable d’environnement sur true pour activer le profileur.
DD_SERVICEChaîneLe nom de votre service, par exemple, web-backend.
DD_ENVChaîneLe nom de votre environnement, par exemple production.
DD_VERSIONChaîneLa version de votre service.
DD_TAGSChaîneLes tags à appliquer à un profil importé. Doit correspondre à une liste de paires <key>:<value> séparées par des virgules, par exemple : layer:api, team:intake.

Le profileur Datadog nécessite Python 2.7 ou une version ultérieure. Le profiling de mémoire est disponible sur Python 3.5 ou les versions ultérieures. Pour commencer le profiling d’applications :

  1. Si vous utilisez déjà Datadog, mettez votre Agent à niveau vers la version 7.20.2 ou 6.20.2+.

  2. Installez ddtrace, qui contient le tracing et le profileur :

    pip install ddtrace
    

    Remarque : le profileur est disponible dans la bibliothèque ddtrace dans la version 0.36 et les versions ultérieures.

  3. Pour effectuer automatiquement le profiling de votre code, définissez la variable d’environnement DD_PROFILING_ENABLED sur true lorsque vous utilisez ddtrace-run :

    DD_PROFILING_ENABLED=true ddtrace-run python app.py
    

    Remarque : la variable d’environnement DD_PROFILING_ENABLED n’est prise en charge que dans les versions 0.40+ de dd-trace. Utilisez l’autre méthode si vous exécutez une version plus ancienne de dd-trace.

    Autre méthode

    Si vous préférez instrumenter le profileur dans votre code, importez ddtrace.profile.auto. Une fois l’importation terminée, le profileur démarre :

    import ddtrace.profiling.auto
    
  4. Au bout d’une ou de deux minutes, visualisez vos profils en accédant à l’APM Datadog puis à la page Profiler.

Remarques :

  • Vous pouvez également effectuer le profiling de votre service en l’exécutant avec le wrapper pyddprofile :

    $ pyddprofile server.py
    
  • Nous vous conseillons vivement d’ajouter des tags tels que service et version pour vous permettre de filtrer vos profils selon ces dimensions et ainsi d’améliorer votre expérience globale du produit. Utilisez des variables d’environnement pour définir les paramètres :

Variable d’environnementTypeDescription
DD_PROFILING_ENABLEDBooléenDéfinissez ce paramètre sur true pour activer le profileur. Pris en charge à partir de la version 0.40+ du tracker.
DD_SERVICEChaîneLe nom du service Datadog.
DD_ENVChaîneLe nom de l’environnement Datadog, par exemple production.
DD_VERSIONChaîneLa version de votre application.
DD_TAGSChaîneLes tags à appliquer à un profil importé. Doit correspondre à une liste de paires <key>:<value> séparées par des virgules, par exemple : layer:api,team:intake.
Conseillé pour une utilisation avancée uniquement.
  • Lorsque votre processus est dupliqué via os.fork, le profileur est arrêté dans le processus enfant.

    Pour Python 3.7+ sur les plateformes POSIX, un nouveau profileur est lancé si vous avez activé le profileur via pyddprofile ou ddtrace.profiling.auto.

    Si vous créez manuellement un Profiler(), utilisez Python < 3.6, ou procédez à l’exécution sur une plateforme non conforme à POSIX, redémarrez manuellement le profileur dans votre enfant avec :

    ddtrace.profiling.auto.start_profiler()
    
  • Si vous souhaitez contrôler manuellement le cycle de vie du profileur, utilisez l’objet ddtrace.profiling.profiler.Profiler :

    from ddtrace.profiling import Profiler
    
    prof = Profiler()
    prof.start()
    
    # At shutdown
    prof.stop()
    

Le profileur Datadog nécessite Go 1.12 ou une version ultérieure. Pour commencer le profiling d’applications :

  1. Si vous utilisez déjà Datadog, mettez votre Agent à niveau vers la version 7.20.2 ou 6.20.2+.

  2. Accédez à dd-trace-go en utilisant la commande :

    go get gopkg.in/DataDog/dd-trace-go.v1
    

    Remarque : le profileur est disponible dans la bibliothèque dd-trace-go dans la version 1.23.0 et les versions ultérieures.

  3. Importez le profileur au démarrage de votre application :

    import "gopkg.in/DataDog/dd-trace-go.v1/profiler"
    
  4. Ajoutez le snippet suivant pour démarrer le profileur :

    err := profiler.Start(
        profiler.WithService("<SERVICE_NAME>"),
        profiler.WithEnv("<ENVIRONMENT>"),
        profiler.WithVersion("<APPLICATION_VERSION>"),
        profiler.WithTags("<KEY1>:<VALUE1>,<KEY2>:<VALUE2>"),
    )
    if err != nil {
        log.Fatal(err)
    }
    defer profiler.Stop()
    
  5. Au bout d’une ou de deux minutes, visualisez vos profils en accédant à l’APM Datadog puis à la page Profiler.

Remarques :

  • Nous vous conseillons vivement d’ajouter des tags tels que service et version pour vous permettre de filtrer vos profils selon ces dimensions et ainsi d’améliorer votre expérience globale du produit. Utilisez la configuration du profileur pour définir les paramètres :
MéthodeTypeDescription
WithServiceChaîneLe nom du service Datadog, par exemple my-web-app.
WithEnvChaîneLe nom de l’environnement Datadog, par exemple production.
WithVersionChaîneLa version de votre application.
WithTagsChaîneLes tags à appliquer à un profil importé. Doit correspond à une liste au format <KEY1>:<VALUE1>,<KEY2>:<VALUE2>.
  • Vous pouvez également définir la configuration du profileur à l’aide de variables d’environnement :
Variable d’environnementTypeDescription
DD_SERVICEChaîneLe nom du service Datadog.
DD_ENVChaîneLe nom de l’environnement Datadog, par exemple production.
DD_VERSIONChaîneLa version de votre application.
DD_TAGSChaîneLes tags à appliquer à un profil importé. Doit correspondre à une liste de paires <key>:<value> séparées par des virgules, par exemple : layer:api,team:intake.

Pour aller plus loin