Configuration système requise pour la surveillance d' Java

Instana prend en charge toutes les versions d' Java, de la version 7 à la version 26. Utilisez les versions les plus récentes de la machine virtuelle d' Java ( JVM ) pour bénéficier d'un environnement d'exécution sans bug. Pour connaître les autres exigences relatives à la surveillance de l' JVM, consultez les sections suivantes.

Remarque :Java 6 est obsolète à compter de septembre 2025, et son support devrait prendre fin d'ici septembre 2026.

Distributions d' JVM s prises en charge

Instana prend en charge les distributions suivantes d' JVM :

  • Amazon Corretto
  • Azul Zulu
  • IBM J9 (Pour plus d'informations, consultez IBM, J9 et OpenJ9 (considérations) ainsi que IBM, J9 et OpenJ9 (limitations))
  • Eclipse OpenJ9 (Pour plus d'informations, consultez les pages IBM, J9 et OpenJ9 )
  • OpenJDK
  • AdoptOpenJDK
  • Oracle HotSpot
  • SAP JVM
  • Sun HotSpot
  • BEA JRockit
  • Hitachi JVM

IBM J9 et les considérations relatives à l' OpenJ9

L'agent d' Instana se connecte aux machines virtuelles IBM, J9, Eclipse, OpenJ9 et Java via l'outil Attach API. Le chemin d'accès par défaut pour les fichiers liés à l' API ation peut être modifié sur les charges de travail d' J9 à l'aide de la propriété système -Dcom.ibm.tools.attach.directory=<directory_name>Java. Instana L'agent prend en charge ce répertoire d'attaches déplacé pour la surveillance de Java et Java AutoTrace.

IBM J9 et les limites d' OpenJ9

Instana prend en charge IBM J9 sous réserve des restrictions suivantes :

  • Les JVM antérieures à OpenJ9 v0.37.0, IBM SDK 8.0.8.5 ou IBM Semeru 8.0.372.0 ne sont pas prises en charge.

  • Si -javaagent n'est pas défini en tant qu'argument de ligne de commande, certaines versions d' IBM J9 risquent de ne pas prendre en charge toutes les fonctions requises. Par conséquent, lancez l' JVM ation avec l'agent Java en exécutant la commande suivante :

    java -javaagent:instana-javaagent-1.0.0.jar -jar app.jar server
     
    Remarque : -javaagent l'argument est obligatoire pour IBM J9 car les anciennes versions de J9 JVM ne prennent pas en charge l'instrumentation pour une intégration tardive. On parle d'« attachement tardif » lorsqu'un agent est associé à une instance d' JVM e après le démarrage de l'application. Étant donné que ces anciennes versions d' J9 ne permettent pas d'instrumenter les classes de cette manière, l' JVM e doit charger un agent « no-op » (sans opération) au démarrage via -javaagent. Ce instana-javaagent-1.0.0.jar fichier est un agent statique léger et inactif dont le seul but est de permettre ce processus de montage.

    Vous pouvez télécharger le fichier JAR depuis Artifact public. Pour vous connecter à la page, utilisez les informations d'identification suivantes :

    • Nom d'utilisateur : _
    • Mot de passe : <your-download-key>

    Si vous utilisez Java s 8 - Service Pack 3, mise à jour 22 (décembre 2016), utilisez -XX:+EnableHCR l'option pour effectuer la même opération. A l'aide de cette option temporaire, les agents associés tardivement peuvent redéfinir ou retransformer des classes. De plus, si la ligne de journal suivante apparaît dans les journaux de l'agent, transmettez -XX:+EnableHCR l'option en tant que paramètre de démarrage.

    WARN  | instana-http-client-thread-16-2 | LoggerEndpoint   | com.instana.agent - 1.1.680 | JVM (1234) - JVM does not support retransformation, tracing is currently unsupported
     

    Toutefois, l'option -XX:+EnableHCR peut entraîner une baisse des performances et être supprimée lors d'une mise à jour ultérieure lorsqu'elle n'est plus nécessaire.

  • Des commutateurs de ligne de commande supplémentaires peuvent être nécessaires pour activer la fonction de trace et la collecte de métriques à partir d' IBM J9:

    • Utilisez -Dcom.ibm.tools.attach.enable=yes comme paramètre par défaut.

    • Pour IBM J9 SDK 6 ou IBM J9 SDK 7, procédez comme suit:

      1. Désactivez le partage des classes à l'aide du paramètre -Xshareclasses:none.
      2. Activez une implémentation du partage de classes qui prend en charge l'instrumentation BCI (bytecode instrumentation) à l'aide du paramètre -Xshareclasses:enableBCI.
      Remarque : Remarques : IBM J9 Les paramètres par défaut de configuration du SDK présentent les différences suivantes : la version 6 (JRE 1.6.0 ) et la version 7 (JRE 1.7.0 ) utilisent par défaut une implémentation du partage de classes qui ne prend pas en charge le BCI. Par conséquent, le partage de classes doit être désactivé ou le support BCI doit être activé. La version 8 ( 1.8.0 JRE) utilise par défaut une implémentation du partage de classes qui prend en charge le BCI.

Remarques concernant les versions 8 ou antérieures de l'environnement d'exécution d' Java

Si vous utilisez les environnements d'exécution d' Java, version 8 ou antérieure, veillez à effectuer les opérations suivantes :

  • Sur Amazon Corretto, Azul Zulu, OpenJDK, Oracle HotSpot ou SAP JVM, rendez le fichier tools.jar disponible dans l'environnement d'exécution de chaque machine virtuelle Java surveillée. Le fichier se trouve dans $JAVA_HOME/lib/tools.jar.

  • Si vous utilisez l' Java e 8, effectuez une mise à niveau vers l' Java e 8 1.8.0_181 ou une version ultérieure. Les versions 8 de l' Java, jusqu'à la version 1.8.0_40, présentent de nombreux problèmes connus liés à la mise en œuvre de la fonction lambda. Ainsi, pour l' Java e 8, l'agent « Instana » ne prend pas en charge l' 1.8.0_40 e ni les versions antérieures. Par conséquent, vous devez effectuer une mise à niveau vers des versions ultérieures car certaines pannes y sont corrigées.

Remarques concernant les versions 9 ou ultérieures d' Java

Java La version 9 introduit des builds modulaires basés sur le framework Jigsaw. Si vous utilisez les environnements d'exécution d' Java, version 9 ou ultérieure, procédez comme suit :

  • Si vous utilisez une image d'exécution personnalisée, telle que celles créées avec jmod ou jlink , veillez à inclure les modules suivants dans l' JVM instrumentée :

    • java.instrument
    • jdk.attach

    Pour vérifier si votre environnement d'exécution d' Java 9 ou version ultérieure contient les modules requis java.instrumentjdk.attach et, exécutez la commande suivante :

    java --list-modules
     

    Si vous exécutez la commande sur une JVM 8 ou antérieure, Unrecognized option: --list-modules Un message d'erreur s'affiche.

  • Si Apache Tomcat est exécuté sur Windows en tant que service, les processus surveillés ne s'exécutent pas sous l'identité de l'utilisateur « C:\java12\bin\java.exe file », mais sous celle de l'utilisateurC:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe « file ».

    Instana prend en charge cette configuration. Mais avant de démarrer le service, le bin répertoire situé sur l' JVM e qui exécute le service doit se trouver sur le PATH. Pour définir le chemin d'accès, exécutez la commande suivante :

    set PATH=%PATH%;C:\java12\bin
     

    Le chemin doit être défini car le fichier jvm.dll du serveur doit charger le fichier C:\java12\bin\instrument.dll . Si le fichier n'est pas spécifié dans le chemin, le serveur ne le trouve pas et l'erreur suivante s'affiche:

    com.sun.tools.attach.AgentLoadException: Failed to load agent library: instrument was not loaded.Can't find dependent libraries
     

Considérations relatives à la version 21 d' Java

Si vous utilisez le moteur d'exécution Java 21, vous pourriez voir s'afficher les messages d'avertissement suivants :

WARNING: A Java agent has been loaded dynamically (/tmp/.instana/javaagent-loader-1.3.56.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
 

Pour éviter ce problème, ajoutez la commande suivante dans les arguments de machine virtuelle avant de démarrer votre application:

-XX:+EnableDynamicAgentLoading
 
Remarque : la prise en charge des threads virtuels est désormais disponible.

$TMP exigences en matière de droits d'accès aux répertoires

L'agent hôte d' Instana crée des fichiers JAR temporaires dans le $TMP/.instana répertoire. Ces fichiers JAR sont nécessaires pour la surveillance d' JVM. Pour garantir le bon fonctionnement de la surveillance d' JVM, assurez-vous que l'utilisateur root qui exécute l'agent et l'utilisateur qui exécute l' JVM t disposent des droits de lecture et d'écriture nécessaires pour accéder au $TMP répertoire. De plus, ne supprimez pas les fichiers d' Instana s des répertoires $TMP$TMP/.instana et.

Limitation de la vitesse de variation

Si vous constatez la présence d'entrées telles que Suppressed spans due to high number of short ou dans le Discarded span due to queue overflowjournal de l'agent, cela signifie que le Tracer d' Java a été soumis à une charge importante lors du traitement des spans. Par conséquent, le traceur d' Java s réduit le nombre de segments afin d'éviter des problèmes de performances dans l'application.

Pour réduire la charge, le Tracer d' Java procède comme suit :

  1. Elle supprime les plages d'exit dont la durée est courte.
  2. Si la charge est toujours élevée, elle regroupe les étendues par lots.
  3. Si la création de lots n'aboutit pas, elle supprime quelques plages.