Activation du profileur Java
Le profileur est fourni dans les bibliothèques de tracing Datadog. Si vous utilisez déjà l’APM pour recueillir des traces pour votre application, vous pouvez ignorer l’installation de la bibliothèque et passer directement à l’activation du profileur.
Prérequis
Le profileur Datadog nécessite JDK Flight Recorder. La bibliothèque du profileur Datadog est prise en charge par OpenJDK 11+, Oracle JDK 11+, OpenJDK 8 (version 8u262+) et Azul Zulu 8+ (version 8u212+). Il n’est pas pris en charge par OpenJ9, car cette technologie n’est pas compatible avec JDK Flight Recorder.
Tous les langages JVM, comme Java, Scala, Groovy, Kotlin et Clojure, sont pris en charge.
Le profileur en continu n’est pas pris en charge sur les plateformes sans serveur, comme AWS Lambda.
Installation
Pour commencer le profiling d’applications, procédez comme suit :
Si vous utilisez déjà Datadog, mettez à jour votre Agent vers la version 7.20.2+ ou 6.20.2+. Si l’APM n’est pas activée 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
.
Téléchargez dd-java-agent.jar
, qui contient les fichiers de classe de l’Agent Java :
wget -O dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'
Remarque : le profileur est disponible dans la bibliothèque dd-java-agent.jar
dans la version 0.55 et les versions ultérieures.
Définissez le flag -Ddd.profiling.enabled
ou la variable d’environnement DD_PROFILING_ENABLED
sur true
pour activer le profileur. Spécifiez les paramètres dd.service
, dd.env
et dd.version
pour pouvoir filtrer et regrouper vos profils en fonction de ces dimensions :
Appelez votre service :
java \
-javaagent:dd-java-agent.jar \
-Ddd.service=<VOTRE_SERVICE> \
-Ddd.env=<VOTRE_ENVIRONNEMENT> \
-Ddd.version=<VOTRE_VERSION> \
-Ddd.profiling.enabled=true \
-XX:FlightRecorderOptions=stackdepth=256 \
-jar <VOTRE_SERVICE>.jar <VOS_FLAGS_DE_SERVICE>
export DD_SERVICE=<VOTRE SERVICE>
export DD_ENV=<VOTRE_ENVIRONNEMENT>
export DD_VERSION=<VOTRE_VERSION>
export DD_PROFILING_ENABLED=true
java \
-javaagent:dd-java-agent.jar \
-XX:FlightRecorderOptions=stackdepth=256 \
-jar <VOTRE_SERVICE>.jar <VOS_FLAGS_DE_SERVICE>
Remarque : 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) :
# Correct :
java -javaagent:dd-java-agent.jar ... -jar my-service.jar -more-flags
# Incorrect :
java -jar my-service.jar -javaagent:dd-java-agent.jar ...
Au bout d’une ou de deux minutes, vous pouvez visualiser vos profils en accédant à l’APM Datadog puis à la page Profiling.
Activer le profileur d’allocation
Avec dd-java-agent v0.84.0+ et Java 15 ou une version antérieure, le profileur d’allocation est désactivé, car il entraîne une surcharge du CPU pour les applications avec de fortes allocations. Cela arrive peu souvent : il est donc conseillé de tester cette configuration dans un environnement staging pour mesurer l’impact que cela peut avoir sur votre application. Pour activer le profileur d’allocation, consultez la rubrique Activer le profil d’allocation.
Procédure à suivre
Vous pouvez configurer le profileur à l’aide des variables d’environnement suivantes :
Variable d’environnement | Type | Description |
---|
DD_PROFILING_ENABLED | Booléen | Alternative à l’argument -Ddd.profiling.enabled . Définissez cette variable d’environnement sur true pour activer le profileur. |
DD_PROFILING_ALLOCATION_ENABLED | Booléen | Remplace l’argument -Ddd.profiling.allocation.enabled . Définissez cette variable sur true pour activer le profileur d’allocation. Le profileur doit au préalable avoir été activé. |
DD_ENV | Chaîne | Le nom de l’environnement, par exemple production . |
DD_SERVICE | Chaîne | Le nom du service, par exemple web-backend . |
DD_VERSION | Chaîne | La version de votre service. |
DD_TAGS | Chaîne | Les 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 . |
Vous avez des doutes sur les prochaines étapes à suivre ?
Le guide Premiers pas avec le profileur en continu présente un exemple de service problématique et vous explique comment utiliser le profileur en continu pour mieux comprendre le problème et le corriger.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: