Red Hat Training
A Red Hat training course is available for Red Hat JBoss Operations Network
12.7. 監視
12.7.1. リソースの可用性
新しい Web アプリケーションのデプロイなど、ターゲットリソースが実行している場合にのみ実行される必要があります。より大きなスクリプトに可用性チェックを含めると、状態依存操作が実行されるタイミングを制御するのに役立ちます。
スクリプトの手順は次のとおりです。
- リソースを検索します。この場合、スクリプトはリソースタイプ(Linux プラットフォーム)に一致するリソースのみを検索し、可用性スキャンに最初に一致します。
- 現在の可用性ステータスを取得します。
例12.23 現在の可用性
// get the resource ID criteria = new ResourceCriteria(); criteria.addFilterResourceTypeName('Linux') var res = ResourceManager.findResourcesByCriteria(criteria); // check the current availability AvailabilityManager.getCurrentAvailabilityForResource(res.get(0).id)
JBoss ON サーバーは、リソース情報、現在のステータス、および現在のステータスの開始時間を返します(サーバーが稼働している場合、サーバーが起動した時間)。
Availability: availabilityType: UP endTime: id: 10192 resource: Resource[id=10001, uuid=null, type=<null>, key=null, name=null, parent=<null>] startTime: 1335974397214
12.7.2. 特定のメトリクスの取得
JBoss ON のモニタリング情報はライブ読み取りではありません。スキャンには、ストリーミングではなく定期的にスキャンがあり、ベースラインと平均の情報は(集計)されるという 2 つの理由があります。
The
findLiveData
method は、現在の、対象外の、指定のメトリクスのライブ読み取りをプルする方法です。
スクリプトの手順は次のとおりです。
- リソースタイプに基づいて利用可能なメトリクス定義を検索し、単一のメトリクスに絞り込みます。この例では、Linux プラットフォームの空きメモリーメトリックを取得します。
- リソースを検索します。
- メトリックの現在の読み取りを取得します。
- ターミナルにデータを出力します。
例12.24 アノテーション付きの例
// search for the resource criteria = new ResourceCriteria(); criteria.addFilterResourceTypeName('Linux'); var resources = ResourceManager.findResourcesByCriteria(criteria); // search for the resource type to use in the metrics definition var rt = ResourceTypeManager.getResourceTypeByNameAndPlugin("Linux", "Platforms"); // search for the metric definition var mdc = MeasurementDefinitionCriteria(); mdc.addFilterDisplayName("Free Memory"); mdc.addFilterResourceTypeId(rt.id); var mdefs = MeasurementDefinitionManager.findMeasurementDefinitionsByCriteria(mdc); //get the data var metrics = MeasurementDataManager.findLiveData(resources.get(0).id, [mdefs.get(0).id]); // as a nice little display, print the retrieved metrics value if( metrics !=null ) { println(" Metric value for " + resources.get(0).id + " is " + metrics ); }
この例では、メトリックの現在のライブ読み取りが画面に出力されます。
Metric value for 10001 is [MeasurementDataNumeric[value=[6.3932239872E10], MeasurementData [MeasurementDataPK: timestamp=[Tue May 08 20:10:15 EDT 2012], scheduleId=[10002]]]]
12.7.3. リソースのメトリックデータのエクスポート
raw メトリクスデータは、デフォルトで 1 週間のみデータベースに保存されます。その後、処理された(集計)データのみが保存されます。長期的な履歴データを保持できるように、raw 測定を CSV またはテキストファイルにエクスポートすると便利です。
スクリプトの手順は次のとおりです。
- リソースタイプに基づいて、利用可能なメトリック定義を検索します。この例では、Linux プラットフォーム用です。
- リソースを検索します。
- メトリック情報の日付範囲を設定します。これは、スクリプトが実行される時間との対比で秒単位で設定されます。
- データを書き込むファイル情報を設定します。
- リソースのすべてのメトリクス定義を繰り返し処理し、指定された CSV ファイルにデータを出力します。
例12.25 Linux サーバーのすべてのメトリクス定義のエクスポート
// search for the available metrics definitions var rt = ResourceTypeManager.getResourceTypeByNameAndPlugin("Linux","Platforms") var mdc = MeasurementDefinitionCriteria(); mdc.addFilterResourceTypeId(rt.id); var mdefs = MeasurementDefinitionManager.findMeasurementDefinitionsByCriteria(mdc); // search for the resource criteria = new ResourceCriteria(); criteria.addFilterResourceTypeName('Linux') var resources = ResourceManager.findResourcesByCriteria(criteria); // give the date range for the metrics collection // this is in seconds var start = new Date() - 8* 3600 * 1000; var end = new Date() // setup up the CSV to dump the data to exporter.file = '/opt/myfile.csv' exporter.format = 'csv' // iterate through the metrics definitions for the resource // and export all the collected metrics for all definitions // within the given date range if( mdefs != null ) { if( mdefs.size() > 1 ) { for( i =0; i < mdefs.size(); ++i) { mdef = mdefs.get(i); var data = MeasurementDataManager.findDataForResource(resources.get(0).id,[mdef.id],start,end,1) exporter.write(data.get(0)); // write the data to the CSV file } } else if( mdefs.size() == 1 ) { mdef = mdefs.get(0); var data = MeasurementDataManager.findDataForResource(resources.get(0).id,[mdef.get(0).id],start,end,60) exporter.write(data.get(0)) } }
12.7.4. ベースラインの算出
ベースラインは、独自のパフォーマンスに基づく、特定リソースの通常の操作範囲です。
ベースラインの取得は非常に簡単です。必要なのはリソース ID です。
rhqadmin@localhost:7080$ MeasurementBaselineManager.findBaselinesForResource(10001) one row MeasurementBaseline: computeTime: Tue May 08 21:28:05 EDT 2012 id: 10001 max: 6.4005419008E10 mean: 6.3933904981333336E10 min: 6.380064768E10 schedule: [MeasurementSchedule, id=10002] userEntered: true