Après avoir instrumenté votre application à l'aide de SkyWalking et rapporté les données de trace vers Managed Service for OpenTelemetry, Managed Service for OpenTelemetry commence à surveiller votre application. Vous pouvez consulter diverses données de surveillance, telles que la topologie des applications, les traces, les transactions anormales, les transactions lentes et l'analyse SQL. Cette rubrique décrit comment utiliser l'agent Java SkyWalking pour l'instrumentation automatique et fournit des informations sur ses attributs configurables.
Prérequis
Ouvrez la page de téléchargement de SkyWalking et téléchargez SkyWalking 6.X.X ou une version ultérieure (la dernière version stable est recommandée). Placez le dossier agent extrait dans un répertoire accessible au processus Java.
Tous les plugins sont stockés dans le répertoire
/plugins. Pour activer un nouveau plugin, ajoutez-le à ce répertoire avant le démarrage. Pour désactiver un plugin, supprimez-le de ce répertoire. Par défaut, les fichiers journaux sont écrits dans le répertoire/logs.
Les fichiers journaux, les plugins et les fichiers de configuration se trouvent dans le dossier de l'agent. Ne modifiez pas la structure des répertoires.
Contexte
SkyWalking est un outil populaire de surveillance des performances des applications (APM) conçu pour les applications construites sur des architectures microservices, Cloud Native et conteneurisées (Docker, Kubernetes et Mesos). Au cœur de SkyWalking se trouve un système de traçage distribué.
Pour utiliser SkyWalking afin de rapporter les données de votre application Java vers la console Managed Service for OpenTelemetry, vous devez d'abord instrumenter l'application. SkyWalking prend en charge l'instrumentation automatique pour des frameworks tels que Dubbo, gRPC, JDBC, OkHttp, Spring, Tomcat, Struts et Jedis, ainsi que l'instrumentation manuelle avec OpenTracing. Cette rubrique décrit la méthode d'instrumentation automatique.
Démo
Référentiel de code : Démo SkyWalking
Instrumentez une application Java avec SkyWalking
Téléchargez l'agent Java SkyWalking.
-
Configurez les informations de connexion et de service dans le fichier de configuration de l'agent Java SkyWalking.
collector.backend_service=<endpoint> // Replace with the endpoint obtained from the prerequisites. agent.authentication=<token> // Replace with the authentication token obtained from the prerequisites. agent.service_name=<service-name> // Replace with your actual service name. -
Spécifiez le chemin vers l'agent SkyWalking en fonction de l'environnement d'exécution de votre application.
RemarqueDans les exemples suivants, remplacez
<skywalking-agent-path>par le chemin absolu vers skywalking-agent.jar dans le dossier de l'agent.Linux Tomcat 7 / Tomcat 8
Ajoutez ce qui suit à la première ligne de
tomcat/bin/catalina.sh:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTSWindows Tomcat 7 / Tomcat 8
Ajoutez ce qui suit à la première ligne de
tomcat/bin/catalina.bat:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"JAR or Spring Boot
Ajoutez le paramètre -javaagent à la commande de démarrage de votre application.
ImportantLe paramètre -javaagent doit apparaître avant le paramètre -jar.
java -javaagent:<skywalking-agent-path> -jar yourApp.jarJetty
Ajoutez les lignes suivantes au fichier de configuration
{JETTY_HOME}/start.ini:--exec -javaagent:<skywalking-agent-path> Redémarrez votre application.
Attributs configurables de l'agent Java
L'agent Java SkyWalking prend en charge un large éventail d'attributs configurables par l'utilisateur. Pour obtenir la liste complète des attributs, consultez le fichier config/agent.config dans la démo d'exemple.
Attributs clés
Les attributs suivants sont basés sur apache-skywalking-java-agent-8.16.0.
Méthodes de configuration
Propriétés système
Utilisez le préfixe -Dskywalking. suivi du nom de l'attribut issu du fichier agent.config. Par exemple :
# Configure agent.service_name using a system property
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=<your_service_name> -jar your-project.jar
Options de l'agent
Ajoutez les attributs au chemin de l'agent dans les arguments JVM.
# Syntax
-javaagent:/path/to/skywalking-agent.jar=[key1]=[value1],[key2]=[value2]
# Example
java -javaagent:/path/to/skywalking-agent.jar=agent.service_name=<your-service-name>,agent.authentication=<your-token> -jar your-project.jar
Variables d'environnement
L'agent SkyWalking lit automatiquement les variables d'environnement. Vous pouvez trouver la variable d'environnement correspondante pour chaque attribut dans le fichier config/agent.config. Par exemple, la variable d'environnement pour agent.service_name est SW_AGENT_NAME.
agent.service_name=${SW_AGENT_NAME:default_name}
# Set the environment variable
export SW_AGENT_NAME=<your_service_name>
Priorité
Les paramètres de configuration sont appliqués selon la priorité suivante, de la plus élevée à la plus faible : options de l'agent, propriétés système, variables d'environnement et fichier de configuration.
Plug-ins de l'agent Java
L'agent Java SkyWalking prend en charge une variété de middlewares, de frameworks et de bibliothèques. Tous les plug-ins pris en charge sont disponibles dans le dossier /plugins de l'application de démonstration.
Activation des plug-ins
Tous les plug-ins présents dans le dossier /plugins sont actifs par défaut. Pour désactiver un plug-in, supprimez son fichier JAR du dossier /plugins.
Plug-ins officiellement pris en charge
Tous les plug-ins officiellement pris en charge se trouvent dans le dossier /plugins.
Plug-ins optionnels
Les plug-ins optionnels résident dans le dossier optional-plugins du package de l'agent ou dans un dépôt tiers. Pour activer un plug-in optionnel, déplacez son fichier JAR vers le dossier /plugins.
optional-plugins/
apm-customize-enhance-plugin-8.16.0.jar
apm-ehcache-2.x-plugin-8.16.0.jar
apm-fastjson-1.x-plugin-8.16.0.jar
apm-gson-2.x-plugin-8.16.0.jar
apm-guava-cache-plugin-8.16.0.jar
apm-jackson-2.x-plugin-8.16.0.jar
apm-kotlin-coroutine-plugin-8.16.0.jar
apm-mybatis-3.x-plugin-8.16.0.jar
apm-quartz-scheduler-2.x-plugin-8.16.0.jar
apm-resttemplate-6.x-plugin-8.16.0.jar
apm-sentinel-1.x-plugin-8.16.0.jar
apm-shenyu-2.4.x-plugin-8.16.0.jar
apm-spring-annotation-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.0.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.1.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-3.x-plugin-8.16.0.jar
apm-spring-tx-plugin-8.16.0.jar
apm-spring-webflux-5.x-plugin-8.16.0.jar
apm-springmvc-annotation-6.x-plugin-8.16.0.jar
apm-trace-ignore-plugin-8.16.0.jar
apm-zookeeper-3.4.x-plugin-8.16.0.jar
trace-sampler-cpu-policy-plugin-8.16.0.jar
Plug-ins Bootstrap
En raison de risques potentiels pour la stabilité, tous les plug-ins bootstrap sont optionnels. Ils se trouvent dans le dossier bootstrap-plugins. Pour activer un plug-in bootstrap, déplacez son fichier JAR vers le dossier /plugins.
bootstrap-plugins/
apm-jdk-forkjoinpool-plugin-8.16.0.jar
apm-jdk-http-plugin-8.16.0.jar
apm-jdk-threading-plugin-8.16.0.jar
apm-jdk-threadpool-plugin-8.16.0.jar
Plug-ins pris en charge
Certains plug-ins sont disponibles uniquement via un dépôt tiers en raison d'impacts potentiels sur les performances ou de limitations d'utilisation. Pour plus d'informations, consultez le dépôt SkyAPM Java Plugin Extension.
Développement de plug-ins
Pour développer un plug-in personnalisé pour l'agent Java SkyWalking, reportez-vous à la documentation officielle.
Managed Service for OpenTelemetry prend en charge le rapport de traces. Consultez la documentation officielle pour obtenir des détails sur le développement d'un plug-in de trace personnalisé.
FAQ
Q : Pourquoi mon application n'apparaît-elle pas après la connexion de l'agent SkyWalking au serveur ?
R : Ce problème survient lorsque les données de traçage distribué ne sont pas rapportées. Pour le vérifier, examinez le fichier {chemin de l'agent skywalking}/logs/skywalking-api.log. Si les données sont correctement rapportées, vous verrez un journal DEBUG de l'agent SkyWalking similaire à celui ci-dessous. Le message clé, TraceSegmentServiceClient : 1 trace segments have been sent to collector., confirme que les données de traçage distribué ont été envoyées avec succès au collecteur.
DEBUG 2020-03-09 17:18:16:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:19:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:21:301 DataCarrier.DEFAULT.Consumer.0.Thread TraceSegmentServiceClient : 1 trace segments have been sent to collector.
DEBUG 2020-03-09 17:18:22:353 SkywalkingAgent-2-GRPCChannelManager-0 GRPCChannelManager : Selected collector grpc service running, reconnect:false.
DEBUG 2020-03-09 17:18:22:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:25:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
Si aucun rapport de données n'a lieu, les causes possibles incluent un échantillonnage activé, des filtres configurés ou une absence de requêtes générant des traces distribuées.
Q : ARMS prend-il en charge SkyWalking Java Agent 9.x ou les versions ultérieures ? Comment résoudre les problèmes de compatibilité dans un environnement JDK 21 ?
R : ARMS prend en charge la connexion aux agents open source SkyWalking. Toutefois, la compatibilité de versions spécifiques de l'agent Java SkyWalking (telles que skywalking-java-agent:9.2.0 ou skywalking-java-agent:9.6.0) avec les versions JDK est déterminée par la communauté open source. Pour confirmer la compatibilité des versions, consultez la documentation officielle de SkyWalking.
Si vous exécutez JDK 21 et rencontrez l'erreur Unsupported class file major version 65, la cause réside dans le fait que les anciennes versions de l'agent (comme la 8.7.0) dépendent d'une version de Byte-buddy qui ne prend pas en charge Java 21 (version majeure du fichier de classe 65). Pour résoudre ce problème, utilisez l'une des méthodes suivantes :
Mettez à niveau votre agent Java SkyWalking vers la version 8.16.0 ou ultérieure. Cette version intègre une release de Byte-buddy compatible avec Java 21.
Rétrogradez le JDK de votre application vers une version prise en charge par votre agent actuel.
Si vous avez besoin d'une prise en charge stable pour les versions JDK supérieures, nous vous recommandons d'utiliser plutôt l'agent de surveillance d'applications propriétaire ARMS.
Q : L'agent SkyWalking a-t-il un impact significatif sur l'utilisation du disque local du Pod ?
R : L'agent SkyWalking a un impact minimal sur le disque local du Pod. L'agent écrit uniquement temporairement des journaux dans le stockage local (chemins par défaut : ArmsAgent/log ou le répertoire /logs dans le dossier de l'agent). Il ne stocke pas de manière persistante les données de trace. La consommation principale de ressources de l'agent SkyWalking concerne le CPU et la mémoire, et non le disque. Les fichiers journaux sont conservés pendant une courte période et sont automatiquement nettoyés par le système. Par conséquent, l'impact de l'agent SkyWalking sur l'utilisation du disque local du Pod est négligeable.

