Javaモニタリングのシステム要件

Instanaは、バージョン7から25までのすべてのJavaランタイムをサポートしています。 バグのないランタイムのために、最新のJava仮想マシン(JVM)バージョンを使用する。 JVMを監視するためのその他の要件については、以下のセクションを参照のこと。

注: Java 6は2025年9月より非推奨となり、2026年9月までにサポートが終了する予定です。

対応JVMディストリビューション

Instana は、以下の JVM ディストリビューションをサポートしています:

J9IBM および OpenJ9 考慮事項

Instanaエージェントは、Attach APIを IBMJ9 介してJava仮想マシンに EclipseOpenJ9 接続します。 API関連ファイルのデフォルトの添付パスは、Java -Dcom.ibm.tools.attach.directory=<directory_name> システムプロパティを使用してワーク J9 ロード上で変更できます。 Instanaエージェントは、Java監視およびJava AutoTrace.NET監視向けに、この再配置されたアタッチディレクトリをサポートします。

J9IBM および OpenJ9 制限事項

Instana は IBM J9 をサポートしていますが、以下の制限があります:

  • OpenJ9 v0.37.0、 IBM SDK 8.0.8.5、 IBM Semeru 8.0.372.0 より前のJVMはサポートされていません。

  • -javaagent がコマンドライン引数として設定されていない場合、 IBM J9 のバージョンによっては、必要な機能をすべてサポートしていない可能性がある。 したがって、以下のコマンドを実行して、JavaエージェントでJVMを起動する:

    java -javaagent:instana-javaagent-1.0.0.jar -jar app.jar server
     

    JARファイルは Artifact publicからダウンロードできる。 ページにログインするには、以下の認証情報を使用する:

    • ユーザー名:_
    • Password: <your-download-key>

    Java 8 - Service refresh 3 fix pack 22(2016年12月)を使用している場合は、 -XX:+EnableHCR オプションを使用して同じ操作を行います。 この一時的なオプションを使うことで、後発のエージェントはクラスを再定義したり、再変換したりすることができる。 さらに、エージェントログに以下のログ行が存在する場合、起動パラメータとして -XX:+EnableHCR オプションを渡す。

    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
     

    しかし、 -XX:+EnableHCR オプションはパフォーマンス上のペナルティが発生する可能性があり、将来のアップデートで不要になった場合には削除される可能性がある。

  • IBM からのトレースとメトリクス収集を有効にするには、追加のコマンドライン・スイッチが必要になる場合があります。 J9:

    • -Dcom.ibm.tools.attach.enable=yes をデフォルト設定として使用する。

    • IBM J9 SDK 6 または IBM J9 SDK 7 の場合は、以下の手順を実行してください:

      1. 設定 -Xshareclasses:none を使ってクラス共有を無効にする。
      2. 設定 -Xshareclasses:enableBCI を使用して、バイトコード・インスツルメンテーション(BCI)をサポートするクラス共有の実装を有効にします。
      注: 注意事項 IBM J9 SDK設定のデフォルトには以下の違いがあります:バージョン 6(JRE 1.6.0 )とバージョン 7(JRE 1.7.0 )のデフォルトは、BCI をサポートしないクラス共有の実装です。 従って、クラス共有をオフにするか、BCIサポートをオンにする必要がある。 バージョン8(JRE 1.8.0 )では、BCIをサポートするクラス共有の実装がデフォルトになっています。

Javaランタイム8またはそれ以前のバージョンに関する考慮事項

Java Runtimes 8またはそれ以前のバージョンを使用している場合は、以下の操作を完了してください:

  • Amazon Corretto、Azul Zulu、OpenJDK、Oracle HotSpot、または SAP JVM で、各モニター対象 JVM のランタイムで tools.jar ファイルを使用可能にします。 ファイルは $JAVA_HOME/lib/tools.jar にある。

  • Java 8を使用している場合は、Java 8 1.8.0_181 またはそれ以降のバージョンにアップグレードしてください。 1.8.0_40 までの Java 8 ビルドには、ラムダ関数の実装に関連する既知の問題が多数ある。 そのため、Java 8 では、Instana エージェントは 1.8.0_40 以前のバージョンをサポートしていません。 したがって、いくつかのクラッシュが修正されているため、それ以降のバージョンにアップグレードする必要があります。

Java ランタイム 9 またはそれ以降のバージョンに関する考慮事項

Java 9では、 Jigsawフレームワークに基づいてモジュール化されたビルドが導入されている。 Java Runtimes 9またはそれ以降のバージョンを使用している場合は、以下の操作を完了してください:

  • カスタムランタイムイメージを使用する場合、たとえば jmod または jlink で作成されたものなど、カスタム・ランタイム・イメージを使用する場合は、インスツルメンテッド・JVMに以下のモジュールが含まれていることを確認してください:

    • java.instrument
    • jdk.attach

    お使いのJava 9以降のランタイムに必要な java.instrumentjdk.attach モジュールが含まれているかどうかを確認するには、次のコマンドを実行します:

    java --list-modules
     

    JVM 8以前でコマンドを実行すると、 Unrecognized option: --list-modules のエラー・メッセージが表示される。

  • Apache TomcatがWindows上でサービスとして実行されている場合、監視対象のプロセスは C:\java12\bin\java.exe ファイルとしてではなく、C:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe ファイルとして実行されます。

    インスタナはこの設定をサポートしている。 しかし、サービスを開始する前に、サービスを実行しているJVM上の bin ・ディレクトリが PATH。 パスを設定するには、以下のコマンドを実行する:

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

    サーバーの jvm.dll ファイルが C:\java12\bin\instrument.dll ファイルをロードする必要があるため、パスを設定する必要があります。 パス上にファイルが指定されていない場合、サーバーはそのファイルを見つけることができず、以下のエラーが表示されます:

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

Javaランタイムに関する考察 21

Javaランタイム21を使用している場合、以下の警告メッセージが表示されることがあります:

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
 

この問題を防ぐには、アプリケーションを起動する前に、仮想マシンの引数に以下のコマンドを追加する:

-XX:+EnableDynamicAgentLoading
 
注: 仮想スレッドのサポートが可能になりました。

$TMP ディレクトリのパーミッション要件

Instana ホストエージェントは、 $TMP/.instana ディレクトリに一時的な JAR ファイルを作成します。 これらのJARファイルはJVMモニタリングに必要である。 JVMモニタリングを成功させるためには、エージェントを実行するルート・ユーザーとJVMを実行するユーザーが、 $TMP ディレクトリに対して必要な読み取り権限と書き込み権限を持っていることを確認してください。 また、 $TMP$TMP/.instana ディレクトリからInstanaファイルをクリーンアップしないでください。

スパンレートの制限

エージェントのログに Suppressed spans due to high number of shortDiscarded span due to queue overflow のようなログが表示された場合、Java Tracer のスパン処理に高負荷がかかったことを意味します。 その結果、Javaトレーサーは、アプリケーションのパフォーマンス問題を回避するために、いくつかのスパンをドロップする。

負荷を軽減するために、Java Tracerは以下のステップを実行する:

  1. 持続時間の短い出口スパンを抑制する。
  2. それでも負荷が高い場合は、スパンを一括してグループ化する。
  3. バッチングがうまくいかないと、数スパン落ちる。