Health Center API を使用して、Java™ または Node.js アプリケーションから収集された Health Center データを操作する、ユーザー独自のコードを作成できます。
Bluemix™ アプリケーションではこの API を使用できません。
始める前に
Health Center は、Node.js API と Java API を提供します。
Node.js API は、healthcenter npm モジュールで使用可能です。 このモジュールには、最新の Health Center エージェントも含まれています。 このモジュールについて詳しくは、Health Center のインストールを参照してください。
Java API は 2 つのバージョンで提供されています。
- Eclipse で使用できるプラグイン・バージョン。バージョン 3.4 以降の Eclipse のインスタンスが必要です。
- 既存の Java アプリケーションで使用できる、通常の .jar ファイル。
IBM SDK, Java Technology Edition バージョン 6 以降が必要です。
このタスクについて
一般に、Health Center クライアント GUI は、モニターされたアプリケーションからのデータの表示と分析に使用します。ただし、ユーザーは、現在この GUI ではできない方法でデータの小さなサブセットだけを表示したり、データを操作したりすることもできます。Health Center API を使用すると、必要に応じて Health Center データを操作するアプリケーションを作成することができます。
Node.js API を使用するには、API 資料の説明 (
https://www.npmjs.com/package/healthcenter の healthcenter npm モジュールおよび
Health Center npm モジュール・ページで参照可能) をお読みください。
このトピックの他の部分では、Java API の使用方法について説明します。
Java API を以下の方法で使用することができます。
- イベント専用モード
- このモードは、非イベント・モードより最高で 75% 少ないメモリーを使用します。
- このモードでは、ご使用のモニター・アプリケーションがリスナーを作成および登録します。リスナーは、ガーベッジ・コレクション・サイクルなどのモニター対象のランタイム環境のイベントに応答します。 次に、モニター・アプリケーションは、Health Center エージェントに接続してデータを取得します。 データを保管したい場合は、そのためにコードをモニター・アプリケーションに追加する必要があります。
注: パフォーマンス上の推奨事項は、イベント専用モードを使用する場合は、使用可能ではありません。
- 非イベント・モード
- Health Center クライアントのインスタンスが、ご使用のモニター・アプリケーションに組み込まれ、モニター・データを保管します。 アプリケーションは、このインスタンスを使用して Health Center エージェントに接続します。
手順
- オプション: Java API のプラグイン・バージョンを使用するには、Health Center を Eclipse にインストールする必要があります。
- Health Center がまだ Eclipse にインストールされていない場合、新しいソフトウェアのインストールについては、次のソフトウェア Web サイトの URL を指定して、Eclipse の資料の手順に従ってください。
http://public.dhe.ibm.com/software/websphere/runtimes/tools/healthcenter/
- Eclipse で Java アプリケーションを作成します。 このステップの詳しい情報が必要な場合は、Eclipse の資料を使用してください。
- オプション: 既存の Java アプリケーションで API を使用するには、次の手順を実行します。
- Health Center から API パッケージを入手します。 次のリンクを使用します。ただし、このリンクは本書を製品内から表示している場合のみ機能するので注意してください。monitoringapi.jar
- アプリケーションの実行時に、-Xbootclasspath/p コマンド行パラメーターを指定して、ブートストラップ・クラスパスに monitoringapi.jar ファイルを追加します。 例:
java -Xbootclasspath/p:./monitoringapi.jar helloworld
- Health Center コードを Java アプリケーションに追加し、Health Center エージェントに接続します。
- ConnectionProperties オブジェクトを作成します (オプションとして、ホスト名およびポート番号を指定します)。 このオブジェクトは、アプリケーション内の Health Center クライアントを Health Center エージェントに接続するために必要な情報を保管します。詳しくは、クラス ConnectionPropertiesを参照してください。
- ConnectionProperties オブジェクトを HealthCenterFactory.connect(ConnectionProperties
props ... ) メソッドの 1 つに渡すと HealthCenter オブジェクトが返されます。 このオブジェクトは、モニター対象アプリケーションへの接続を表します。
例:
- HealthCenterFactory.connect(ConnectionProperties
props, boolean autoScan) メソッドを使用するときに、autoScan パラメーターを true に設定すると、最初に使用可能なエージェントに接続できます。
- HealthCenter.connect(ConnectionProperties
props java.lang.String agentName) メソッドを使用すると、agentName パラメーターに指定されたエージェントに接続できます。
scanForAgents(ConnectionProperties
props, int numberOfAgents) メソッドを使用すると、エージェント名のリストを取得できます。 このオプションは、MQTT ブローカーを使用して接続する場合、複数のエージェントが同じブローカーを使用できるため便利です。
- HealthCenterFactory.connect(java.io.File filename) メソッドを使用して、アプリケーションを実行するのではなく、保存されているファイルに接続することもできます。
詳しくは、
クラス HealthCenterFactoryを参照してください。
コード例:
...
// Create the connection object:
ConnectionProperties conn1 = new ConnectionProperties("localhost", 1973);
// Connect to the Health Center agent by using the connection object:
HealthCenter hcObject = HealthCenterFactory.connect(conn1, true);
...
- Health Center コードをご使用の Java アプリケーションに追加し、エージェントからデータを取得します。
- イベント専用モードを使用する場合、モードを使用可能にしてから、必要に応じてリスナーを作成および登録します。 CPU やガーベッジ・コレクションなど、データのタイプごとに異なるリスナー実装を作成する必要があります。 その後、リスナーを適切なデータ・オブジェクトに登録し、そのデータ・オブジェクトからモニター対象データを取得します。 例:
...
// Switch on event-only mode:
hcObject.setEventOnlyMode(true);
// Define and create a garbage collection listener.
// The listener receives a garbage collection event object after an event:
class myGCEventListener implements GCEventListener {
@Override
public void gcEvent(GCEvent event) {
System.out.println("GC event detected");
System.out.println("event.gcEventTime " + event.gcEventTime);
System.out.println("event.gcPauseTime " + event.gcPauseTime);
System.out.println("event.heapSize " + event.heapSize);
System.out.println("event.usedHeapAfterGC " + event.usedHeapAfterGC);
System.out.println("event.reason " + event.reason);
System.out.println("event.type " + event.type);
}
}
myGCEventListener gclistener = new myGCEventListener();
// Register the listener with a garbage collection data object:
GCData gcData = hcObject.getGCData();
gcData.addGCListener(gclistener);
// Extract data from the data object:
System.out.println("GC Mode is " + gcData.getGCMode().toString());
...
- 非イベント・モードを使用する場合、HealthCenter オブジェクトを使用して、目的のデータ・タイプを表すデータ・オブジェクトを取得し、その後、そのデータ・オブジェクトからデータを取り出します。 例:
...
// Get the garbage collection data and print it:
GCData gcData = hcObject.getGCData();
System.out.println("GC Mode is " + gcData.getGCMode().toString());
...
HealthCenter オブジェクトを使用して、実行中のアプリケーションから返されるデータの量を制限することもできます。
取り出すことができるデータおよび関連するメソッドとクラスについて詳しくは、Health Center Java API 資料を参照してください。