コンテンツにスキップ

テレメトリ

jvmguardは、4種類のソースからスカラー値を観測します。

  • 接続中のVM数やトランザクション数など、jvmguardコレクターが管理するエンティティのカウント。これは監視対象VMでの直接の測定ではなく、jvmguardサーバーでの評価です。
  • ヒープサイズ、CPU使用率、ライブスレッド数など、監視対象VM内で測定されるテレメトリ。
  • 記録設定で設定されたMBeanテレメトリ。
  • jvmguard APIのテレメトリアノテーションを使用した宣言型テレメトリ。

すべてのテレメトリは「テレメトリ」ビューで利用できます。各標準テレメトリ、MBeanテレメトリ、宣言型テレメトリには、「テレメトリ」ノードの下に独自のエントリがあります。

多くのテレメトリは積み上げ面グラフで、個々のラインが合計値に加算されます。例えば、「トランザクション」テレメトリは、時間経過に伴うトランザクションの総数を、さまざまなポリシー違反の個々のラインに分割して表示します。

テレメトリビューを直接アクティブにすると、現在時刻までの10分間隔が表示されます。ここに表示されるデータは1分の解像度で記録されています。トランザクションの観測からデータを取得しない他のテレメトリは、10秒の解像度になります。テレメトリ上部のナビゲーションボタンやテレメトリ自体の端にあるホバーボタンで過去に移動できますが、ある時点で1分ごとの解像度は終わります。jvmguardはテレメトリを段階的に粗い解像度に統合し、段階的に長い期間保持します。合計範囲が少なくとも3時間の間隔にズームアウトすると、2分の解像度とより長い履歴レコードを持つ統合データポイントが表示されます。これで、以前の高い解像度と比較して、さらに過去に移動できます。

解像度と保持時間が変わるすべての表示間隔の完全な表を以下に示します。

表示間隔 解像度 保持時間
10分 10秒(トランザクションベースのデータは1分) 6時間(トランザクションベースのデータは48時間)
3時間 2分 10日
3日 1時間 1年
30日 12時間 無制限

前後の時刻に移動すると、表示される間隔の開始点が表示範囲全体分だけシフトします。

これらの表示間隔の間には、表示される時間範囲を増やすだけで同じ解像度を使用する多くの他の間隔があります。上部のズームボタンまたはテレメトリのコンテキストメニューで、ズームレベルを変更して表示するデータを増減できます。テレメトリをダブルクリックすると、可能な場合、選択した時点にズームインします。

合計値に加算されない複数のデータラインを持つテレメトリもあります。その場合、グラフの上にドロップダウンボックスがあり、テレメトリはラインプロットとして表示されます。

もう1つの例として、ヒープテレメトリは時間経過に伴う使用済みヒープメモリを表示します。

グラフにマウスをホバーすると、詳細な数値を取得できます。積み上げ面グラフでは、凡例アイテムをクリックして個々のデータラインを切り替えられます。

テレメトリのコンテキストメニューには、選択した時点で関連ビューにジャンプするアクションがあります。すべてのテレメトリで、コールツリーとホットスポットのビューにジャンプできます。

「VM」ビューには、現在のテレメトリデータの小さなバージョンがいわゆる「スパークライン」として表示されます。スパークラインにはラベル付きの軸がなく、観測されたスカラー値の最近の変化を視覚的に印象付けることを目的としています。グラフの後に現在の数値が続きます。上付き文字は観測された最大値、下付き文字は表示された時間範囲の最小値を示します。

「テレメトリ」ビューを選択すると、「概要」タブに過去1時間と過去1日のすべてのテレメトリがスパークラインとして表示され、現在値と最大値および最小値が別の列に表示されます。

「VM」ビューでは、スパークライン列のセットを設定できます。これにより、監視対象の値に関して異なるVMとVMグループを相対的に評価できます。スパークラインは、個別に、グループごとの共通スケールで、またはすべてのVMの共通スケールでスケーリングできます。

スパークライン列のセットは、「VM」ビューのツールバーの「テレメトリ」セレクターから選択します。

「VM」ビューまたはテレメトリ概要でスパークラインをクリックすると、選択したスパークラインに表示されていた間隔に最も近い時間間隔で完全なテレメトリビューがアクティブになります。

多くのアプリケーションサーバーとフレームワークは、監視目的で有益な値を持つMBeanを公開しています。MBeanによって公開されるすべての数値は、jvmguardエージェントによってポーリングされ、テレメトリの一部になることができます。このために、JMXサーバーが実際に外部に開かれている必要はありません。MBeanが内部的にいずれかのMBeanサーバーに登録されていれば十分です。

記録設定の「テレメトリ」ステップでは、MBeanテレメトリとそのテレメトリラインを追加できます。テレメトリは、テレメトリの名前、単位、全体的な動作を定義し、テレメトリラインは実際のデータを定義します。

テレメトリラインが合計値の一部である場合、それらを面グラフに積み上げることができます。異なるVMからの監視値を平均する必要がある場合は、「グループ内のすべてのVMの値を平均する」を選択します。それ以外の場合、値は合計されます。合計は、「ログイン中のユーザー数」などのビジネス測定値や、「データベース接続数」などの共有リソースの使用に意味があります。

設定可能な単位は基本単位で、必要に応じて単位接頭辞が追加されます。例えば、「bytes」単位を選択すると、テレメトリの大きな値は自動的に「kB」、「MB」、「GB」として表示されます。記録された値から選択した単位に変換するためにスケールファクターを適用する必要がある場合があります。そのスケールファクターは10の負の累乗として追加できます。例えば、0.01を乗算するには、スケールファクターは2です。

各MBeanラインは、MBeanオブジェクト名MBean値パスによって定義されます。これらの設定を取得する最も簡単な方法は、MBeanライン設定ダイアログの「選択」ボタンをクリックすることです。MBean属性ブラウザーが表示され、監視対象VMの1つから数値を選択できます。設定されたライン名はテレメトリの凡例に表示されます。

jvmguardは、プラットフォームMBeanサーバーが存在しない場合にそれを作成しません。そのため、プラットフォームMBeanサーバーからテレメトリを設定する場合は、起動時にアプリケーションで次を呼び出して、監視対象VMの再起動後にテレメトリが機能することを確認する必要があります。

ManagementFactory.getPlatformMBeanServer();

アプリケーション内の任意のスカラー値を監視するには、数値(プリミティブまたはプリミティブラッパー)を返すpublic staticのパラメータなしメソッドを追加します。次に、メソッドに@Telemetryアノテーションを付けます。含まれているクラスが実際にロードされることを確認する必要があります。そうしないと、jvmguardはアノテーション付きメソッドを検出しません。

カスタムテレメトリを表示するには、「テレメトリ」ビューに移動し、テレメトリドロップダウンでテレメトリを見つけます。

アノテーションテレメトリがjvmguardによって検出されると、アノテーション付きメソッドが現在接続中のVMで利用可能かどうかに関係なく、常にこのリストに表示されます。このようなテレメトリを廃止する場合は、一般設定に移動し、「表示」タブを開いて「非表示の宣言型テレメトリ」セレクターを使用します。ここで選択したテレメトリを非表示にできます。テレメトリはアノテーション付きメソッドではなく名前で一致されることに注意してください。

詳細については、dev.jvmguard.annotation.TelemetryクラスのJavadocを参照してください。jvmguardインストールのapi/docディレクトリにもあります。

表示されるすべての時刻は、サーバーのタイムゾーンで表されます。異なるタイムゾーンにいる場合、表示される時刻とローカルの壁時計時刻との間にオフセットがあります。