Javaモニタリングのシステム要件
Instanaは、バージョン7から25までのすべてのJavaランタイムをサポートしています。 バグのないランタイムのために、最新のJava仮想マシン(JVM)バージョンを使用する。 JVMを監視するためのその他の要件については、以下のセクションを参照のこと。
対応JVMディストリビューション
Instana は、以下の JVM ディストリビューションをサポートしています:
- Amazon Corretto
- Azul Zulu
- J9IBM (詳細については、 および OpenJ9 を考慮し、 OpenJ9J9IBM および IBMJ9 制限事項を参照してください)
- OpenJ9Eclipse (詳細については、 および OpenJ9J9IBM を考慮してください)
- OpenJDK
- AdoptOpenJDK
- Oracle HotSpot
- SAP JVM
- Sun HotSpot
- BEA JRockit
- 日立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 serverJARファイルは 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ランタイム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.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ファイルとして実行されます。インスタナはこの設定をサポートしている。 しかし、サービスを開始する前に、サービスを実行している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 short や Discarded span due to queue overflow のようなログが表示された場合、Java Tracer のスパン処理に高負荷がかかったことを意味します。 その結果、Javaトレーサーは、アプリケーションのパフォーマンス問題を回避するために、いくつかのスパンをドロップする。
負荷を軽減するために、Java Tracerは以下のステップを実行する:
- 持続時間の短い出口スパンを抑制する。
- それでも負荷が高い場合は、スパンを一括してグループ化する。
- バッチングがうまくいかないと、数スパン落ちる。