Java の監視に必要なシステム要件
Instana バージョン7から26までのすべての Java ランタイムに対応しています。 バグのないランタイム環境を確保するには、最新の Java 仮想マシン( JVM )のバージョンを使用してください。 JVM の監視に関するその他の要件については、以下のセクションを参照してください。
対応している JVM ディストリビューション
Instana 以下の JVM ディストリビューションに対応しています:
- Amazon Corretto
- Azul Zulu
- IBM J9 (詳細については、 IBM、 J9、および OpenJ9 の「考慮事項」、ならびに IBM、 J9、および OpenJ9 の「制限事項」 を参照してください)
- Eclipse OpenJ9 (詳細については、 IBM、 J9、および OpenJ9 の「考慮事項」 を参照してください)
- OpenJDK
- AdoptOpenJDK
- Oracle HotSpot
- SAP JVM
- Sun HotSpot
- BEA JRockit
- 日立 JVM
IBM J9 および OpenJ9 に関する考慮事項
Instana エージェントは、Attach API を通じて、 IBM、 J9、 Eclipse、 OpenJ9、 Java の各仮想マシンに接続します。 J9 ワークロードでは、 Java-Dcom.ibm.tools.attach.directory=<directory_name> システムプロパティを使用することで、 API 関連ファイルのデフォルトの保存先を変更できます。 Instana エージェントは、 Java の監視および Java AutoTrace において、この移動されたアタッチディレクトリをサポートしています。
IBM J9 および 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注:IBM J9 では、引-javaagent数が必須です。これは、古いバージョンの J9 JVM では、遅延アタッチメントに対するインストルメンテーションがサポートされていないためです。 「遅延アタッチメント」とは、アプリケーションの起動後にエージェントを JVM にアタッチすることを指します。 これらの古いバージョンの J9 では、この方法でクラスに計測機能を追加できないため、 JVM は起動時に.-javaagentを通じてノーオペレーション(no-op)エージェントをロードする必要があります。 このinstana-javaagent-1.0.0.jarファイルは、この添付プロセスを有効にすることのみを目的とした、軽量な静的ノーオペレーション(no-op)エージェントです。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 の場合は、以下の手順を実行します。
-Xshareclasses:none設定を使用して、クラス共有を無効にします。-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 Runtimes 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 またはそれ以降のバージョンにアップグレードしてください。 Java 8から 1.8.0_40 までのビルドには、ラムダ関数の実装に関連する多くの既知の問題があります。 したがって、 Java 8 において、 Instana エージェントは、 1.8.0_40 およびそれ以前のバージョンをサポートしていません。 そのため、いくつかの異常終了が修正されているため、新しいバージョンにアップグレードする必要があります。
Java Runtimes 9 以降のバージョンに関する注意事項
Java バージョン9では、Jigsawフレームワークに基づくモジュール化されたビルドが導入されました。 Java Runtimes 9 以降をご利用の場合は、以下の手順を実行してください:
``や`
jmod`を使用して作成jlinkされたものなど、カスタムランタイムイメージを使用する場合は、インスツルメントされた JVM に以下のモジュールを含めるようにしてください:java.instrumentjdk.attach
お使いの Java 9以降のランタイムに必要な
java.instrumentおよびjdk.attachモジュールが含まれているかどうかを確認するには、次のコマンドを実行してください:java --list-modulesJVM 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として実行されます。Instana この設定に対応しています。 ただし、サービスを開始する前に、そのサービスが実行されている 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 Runtime 21 に関する注意事項
Java Runtime 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 の監視を正常に行うには、エージェントを実行するrootユーザーと JVM を実行するユーザーが、当該 $TMP ディレクトリに対する必要な読み取りおよび書き込み権限を持っていることを確認してください。 また、 Instana$TMP/.instana$TMP ディレクトリ内のファイルを削除しないでください。
スパンレート制限
エージェントのログに や Suppressed spans due to high number of short といったログが表示された場合、 Discarded span due to queue overflowJava Tracer のスパン処理に高負荷がかかっていることを意味します。 その結果、 Java のTracerは、アプリケーションのパフォーマンス低下を防ぐため、スパン数を数個削減しています。
負荷を軽減するため、 Java Tracer は以下の手順を実行します:
- これは、短期間の出口スパンを抑止します。
- 負荷がまだ高い場合は、スパンをバッチ単位でグループ化します。
- バッチ処理が成功しない場合は、いくつかのスパンがドロップされます。