Java 仮想マシン (JVM) のモニター

Java センサーは、 サポートされるテクノロジーの自動コード・インスツルメンテーション、JVM インスタンスのゼロ構成ヘルス・モニター、およびすべてのシステムにわたる要求のエンドツーエンド・トレースを提供します。

サポートされる情報

サポートされる言語

Instana は、以下の言語をサポートしています。

  • Clojure
  • Java
  • Kotlin
  • Scala

サポートされるオペレーティング・システム

Java センサーは、ホスト・エージェントの要件と整合性のあるオペレーティング・システムをサポートします。これらの要件は、各ホスト・エージェントの「サポートされるオペレーティング・システム」セクション ( Unix でサポートされるオペレーティング・システムなど) で確認できます。

サポートされる Java ランタイムのバージョン

サポートされる Java ランタイムのバージョンとシステム要件については、 システム要件を参照してください。

トレース/アニメーション設定されたフレームワークおよびライブラリー

Java センサーは、多くのテクノロジーを使用して、Java アプリケーションのパフォーマンスに関するデータを収集します。 詳しくは、 Instrumented のフレームワークとライブラリーを参照してください。

インストール

Java センサーは、Instana エージェントによって自動的にデプロイ、構成、およびインストールされます。 Java アプリケーションがインスツルメントされていることを確認するには、 JVM ディストリビューション がサポートされていることを確認してください。

オプションの構成

Instana エージェントをインストールすると、Java センサーが自動的にインストールされ、構成されます。 すぐに使用可能なメトリックおよび分散トレースの構成は必要ありませんが、センサーの個々のコンポーネントを構成することができます。

センサーの構成について詳しくは、 Java 構成を参照してください。

の機能

Java センサーが構成されると、JVM からのメトリックの収集が自動的に開始されます。 これらのメトリックは、Instana UI で表示できます。 Java センサーは、自動トレース、カスタム・トレース、自動プロファイル作成など、Instana の他の機能もサポートします。

メトリック・コレクション

Java センサーは、JVM インスタンスをモニターし、そこから以下のメトリックを収集します。

これらのメトリックを表示するには、以下のステップを実行します。

  1. Instana UI のサイドバーで、 「インフラストラクチャー」を選択します。
  2. 特定のモニター対象ホストをクリックします。

JVM ダッシュボードには、JVM インスタンスについて収集されたすべてのメトリックが表示されます。

構成データ

構成 説明
Java バージョン Java のバージョン。
Java ランタイム Java ランタイム環境 (JRE)。
最大ヒープ JVM に使用可能な最大ヒープ・サイズ。
クラスパス JVM に設定されたクラスパス・パラメーター。

パフォーマンス・メトリック

パフォーマンス・メトリック 説明 データ・ポイント
使用メモリー JVM によって使用される合計メモリー。 測定された現行の KPI 値が表示されます。 バイト・カウントは java.lang.Runtime#totalMemoryから収集されます。
スレッド数 異なる状態 ( newrunnabletimed-waitingwaiting、または blocked) にあるスレッドの数。 選択された期間にわたる値がグラフに表示されます。 -現行スレッド ID は java.lang.management.ThreadMXBean#getAllThreadIdsから収集されます。
-スレッド状態は ThreadMXBean#getThreadInfoから収集されます。
ヒープ・メモリー JVM に使用可能な最大ヒープ・サイズ。 -バイト・カウントは、 java.lang.Runtime#totalMemory - java.lang.Runtime#freeMemoryとして計算されます。
-グラフに表示される最大ヒープ・サイズは、 -Xmx コマンド行パラメーターを解析することによって決定されるか、 java.lang.Runtime#maxMemoryから収集されます。
-合計ヒープ・メモリーのうち、使用されているヒープ・メモリーのパーセンテージ。
メモリー・プール ヒープ・プールと非ヒープ・プールのメモリー・プール使用量は、選択した期間のグラフに表示されます。 -プール情報は ManagementFactory#getMemoryPoolMXBeansから収集されます。
-グラフ値は各プールから収集されます java.lang.management.MemoryUsage
-最大値は getMaxから収集され、初期値は getInitから収集され、現行値は getUsageから収集されます。
ガーベッジ・コレクション 選択した期間のガーベッジ・コレクションのアクティブ化とランタイム値がグラフに表示されます。 -ガーベッジ・コレクション情報は ManagementFactory#getGarbageCollectorMXBeansから収集されます。
-グラフ値は各コレクターから収集されます java.lang.management.GarbageCollectorMXBean
-ガーベッジ・コレクション・ランタイムは getCollectionTimeから収集されます。Javadoc によると、累積ガーベッジ・コレクションのおおよその経過時間 (ミリ秒) です。
-呼び出しカウントは getCollectionCountから収集されます。
- getCollectionTimegetCollectionCount の両方の値は、1 秒間に計算された差分です。
中断 選択した期間にわたるグラフに表示されるアプリケーション実行の遅延。 アプリケーション内の Instana 測定スレッドごとに計算されます。

Health シグネチャー

各センサーには、着信メトリックに対して継続的に評価されるヘルス・シグニチャーのキュレートされた知識ベースがあります。 これらの正常性シグネチャーは、ユーザーの影響に依存する問題またはインシデントを発生させるために使用されます。

組み込みイベント は、エンティティー上の失敗したヘルス・シグニチャーに基づいて問題またはインシデントをトリガーし、 カスタム・イベント は、エンティティーの個々のメトリックのしきい値に基づいて問題またはインシデントをトリガーします。

Java センサーの組み込みイベントについて詳しくは、 組み込みイベントのリファレンスを参照してください。

カスタム・メトリック

Instana は、いくつかの一般的な Java メトリック・ライブラリーをサポートしています。

その他のメトリック

Java センサーは、構成、パフォーマンス、およびカスタム・メトリックとは別に、ライブ・スレッド・ダンプやヒープ・ダンプなどの他のメトリックも収集します。

ライブ・スレッド・ダンプ

JVM のライブ・スレッド・ダンプを表示するには、「スレッド・ダンプの取得」をクリックします。

ヒープ・ダンプ

JVM のヒープ・ダンプを作成するには、「ヒープ・ダンプの取得」をクリックします。 ヒープ・ダンプを保管するには、JVM のローカル・ロケーションを指定します。

Instana AutoTrace™

デフォルトでは、Java センサーはすべての要求をモニターし、それらの要求ごとに分散トレースを自動的に作成します。 この分散トレースには、クロス・ホスト・トレースおよびクロス言語トレースが含まれます。

詳しくは、 Instana AutoTrace™を参照してください。

ロギング

Java Tracer は、 WARN 以上のレベルのログのみをキャプチャーします。

ロギングとトレースのより正確な相関を有効にするために Log4j、 Log4j2、または Logback を使用すると、Instana は、マップされた診断コンテキスト (MDC) にトレース ID を自動的に取り込みます。 MDC 変数名は instana.trace.id です。 フォーマット・ストリングでのロギング・フレームワークの使用について詳しくは、ご使用のロギング・フレームワークの資料を参照してください。

カスタム・トレース

Java センサーは、完全に自動化されたすぐに使用可能なトレース・インスツルメンテーションを提供します。 ただし、場合によっては、カスタム・トレースを Instana ダッシュボードに送信することもできます。 以下のメソッドを使用して、カスタム・トレースを実装できます。

Java トレース SDK

Instana でまだサポートされていないフレームワークをインスツルメントする場合、またはカスタム・アプリケーションの要求をモニターする場合は、 Java Trace SDKを使用して、 GitHub リポジトリーを表示します。

SDK を使用してカスタム・トレースを実装する前に、 トレースのベスト・プラクティスを参照してください。

構成ベースの Java トレース SDK

Java Trace SDK を使用すると、ソース・コードを操作する必要がある場合や、ソース・コードを操作できる人に連絡する必要がある場合がありますが、これは実行可能ではなく、望ましいことでもありません。 このような場合は、 構成ベースの Java トレース SDKを使用します。 プログラマチック Java Trace SDKより機能が豊富ではありませんが、構成ベースの Java Trace SDK では、多くの一般的なユース・ケースをカバーするスパンおよびタグの宣言構成が可能です。

構成ベースの Java トレース SDKを使用してカスタム・トレースを実装する前に、 トレースのベスト・プラクティスを参照してください。

Java OpenTracing API

OpenTracing API によって記述されるトレースを収集するには、 Java OpenTracingを使用する必要があります。 詳しくは、 OpenTracingを参照してください。

重要: Java OpenTracing API を使用する前に、自動トレース (Instana AutoTrace™) を無効にしてください。 詳しくは、 自動インスツルメンテーションの無効化を参照してください。

OpenCensus Instana トレース・エクスポーター

Instana は、Java で作成されたアプリケーション用の OpenCensus Trace Exporter を提供します。 Instana エージェント・プロセスをプロキシーとして使用すると、Instana は、Census でインスツルメントされたアプリケーションによってエクスポートされたトレースをバックエンドに転送します。

詳しくは、 OpenCensus 「エクスポーター」を参照してください。

重要: Census と同じホストでエージェントを使用する場合は、自動トレースを無効にします (Instana AutoTrace™)。 詳しくは、 自動インスツルメンテーションの無効化を参照してください。

Instana AutoProfile™

プロファイルは、パフォーマンスのホット・スポットとボトルネックをコード・レベルで見つけるのに不可欠です。 リソース使用量の削減とパフォーマンスの向上に役立ちます。

AutoProfile™ は、プロセスのプロファイルを生成して Instana に報告します。 プロファイル作成を手動で開始する必要がある開発時プロファイラーやオンデマンド・プロファイラーとは異なり、 AutoProfile™ は、重要な実稼働環境に適したプロファイル作成を自動的にスケジュールし、継続的に実行します。

詳しくは、 Instana AutoProfile™ の資料を参照してください。

JVM の除外

JVM 環境で INSTANA_IGNORE 環境変数を true に設定して、Instana エージェントが JVM に接続されないようにすることができます。

トラブルシューティング

Instana でモニターの問題が発生する場合があります。 詳細については、「トラブルシューティング」を参照してください。