Oracle Enterprise Manager

Cloud Control拡張プログラマーズ・リファレンス

13cリリース1

F11802-01(原本部品番号:E64573-03)

2016年2月

Oracle Enterprise Manager Cloud Control拡張プログラマーズ・リファレンス, 13cリリース1

F11802-01

Copyright © 2011, 2016 Oracle and/or its affiliates. All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle およびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

1 プラグイン開発の開始

- 1.1 プラグインの作成プロセスについて

- 1.2 拡張開発キット(EDK)について

- 1.2.1 EDKの内容

- 1.3 拡張開発キット(EDK)のインストール

- 1.4 プラグインの設計

- 1.5 基本プラグインの作成

- 1.6 中間プラグインの作成

- 1.7 拡張プラグインの作成

2 プラグインの定義

- 2.1 プラグインの定義の概要

- 2.2 プラグイン・メタデータについて

- 2.2.1 プラグインIDの定義

- 2.2.2 プラグイン・バージョンの定義

- 2.3 プラグイン定義ファイルの作成

- 2.3.1 plugin.xmlファイルの作成

- 2.3.1.1 plugin.xml要素の概要

- 2.3.1.2 プラグインの動作保証

- 2.3.2 plugin_registry.xmlファイルの作成

- 2.3.2.1 plugin_registry.xmlの要素の概要

- 2.4 プラグイン定義ファイルの検証

- 2.5 プラグインへのログ・ビューア・サポートの追加

- 2.6 アップグレードのプラグインの定義

- 2.7 プラグインの非推奨化

3 ターゲット・メタデータ・ファイルの作成

- 3.1 ターゲット・メタデータ・ファイル作成の概要

- 3.2 ターゲット定義ファイルの概要

- 3.3 ターゲット・タイプ・メタデータ・ファイルの作成

- 3.3.1 基本のターゲット・タイプ・メタデータ・ファイルの作成

- 3.3.2 ターゲット・タイプ・メタデータ・ファイルのネーミング

- 3.3.3 ターゲット・タイプ・メタデータの定義

- 3.3.4 ターゲット資格証明の定義

- 3.3.5 タイプ・プロパティの定義

- 3.3.6 インスタンス・プロパティの定義

- 3.3.6.1 静的なインスタンス・プロパティ

- 3.3.6.2 動的なインスタンス・プロパティ

- 3.4 ターゲットから収集するメトリックの定義

- 3.4.1 メトリック定義ファイル

- 3.4.2 基本のResponseメトリック・グループの定義

- 3.4.3 拡張メトリックの定義

- 3.4.4 リポジトリ・メトリックの定義

- 3.4.5 メトリックのカテゴライズ

- 3.4.6 適応しきい値の定義

- 3.4.7 主なメトリック・メタデータ要素の概要

- 3.4.8 メトリック定義のトラブルシューティング

- 3.5 デフォルトの収集ファイルの作成

- 3.5.1 収集に向けた類似のメトリックのグループ化

- 3.5.2 基本のメトリック収集の定義

- 3.5.3 拡張メトリック収集の定義

- 3.5.4 ターゲット構成データ収集の定義

- 3.5.5 デフォルトの主な収集メタデータ要素の概要

- 3.5.6 収集プロセスのトラブルシューティング

- 3.6 ターゲット・メタデータの作成のガイドライン

- 3.6.1 ターゲット・メタデータの定義

- 3.6.2 コレクションの定義

- 3.6.2.1 アラート・メッセージのガイドライン

- 3.6.2.2 メトリック評価順序

- 3.6.2.3 収集頻度

- 3.6.2.4 行数の制御

- 3.7 ターゲット・メタデータのローカライズ

- 3.7.1 ターゲット・メタデータのローカリゼーションについて

- 3.7.2 リソース・バンドル・パッケージの定義

- 3.7.3 メトリック・メッセージのローカライズ

- 3.7.4 リソース・バンドルのパッケージ化

- 3.7.4.1 リソース・プロパティ・バンドルのコンテンツについて

- 3.7.4.2 リソース・バンドルのパッケージ化

- 3.8 新規ターゲット・タイプのチェック

- 3.9 ターゲット・タイプ定義のテスト

- 3.9.1 メトリック・ブラウザのアクティブ化

- 3.9.2 メトリックの表示

- 3.10 メタデータXMLの検証

- 3.11 ターゲット作成プロセスのトラブルシューティング

4 プラグイン・ビルダー

- 4.1 概要

- 4.2 プラグイン・ビルダーを使用するための前提条件

- 4.3 プラグイン・ビルダーのインストール

- 4.3.1 プラグイン・ビルダーのインストールおよび新しいJDeveloperインスタンス

- 4.3.2 既存のJDeveloperインスタンスへのプラグイン・ビルダーのインストール

- 4.4 Enterprise Managerプラグイン・プロジェクトの作成

- 4.5 サンプル・プラグインを使用したプラグイン・プロジェクトの作成

- 4.6 ターゲットの検出

- 4.6.1 既存のプラグインの検出メタデータの更新

- 4.6.2 基本検出情報の表示

- 4.7 Enterprise Managerへのプラグイン・アーカイブのデプロイ

- 4.8 新しいターゲット・タイプの追加

- 4.9 ターゲット・タイプ情報の更新

- 4.9.1 インスタンス・プロパティの追加

- 4.9.2 動的プロパティの追加

- 4.9.3 資格証明タイプの追加

- 4.9.4 資格証明セットの追加

- 4.9.5 ターゲットのメトリック・プロパティの追加

- 4.9.5.1 ColumnDescriptorの追加

- 4.9.5.2 QueryPropertiesの追加

- 4.9.5.3 ExecutionDescriptor表の追加

- 4.9.5.4 ExecutionDescriptorビューの追加

- 4.9.5.5 ターゲットの収集項目の構成

- 4.10 ターゲットの収集項目の追加

- 4.11 収集項目プロパティの挿入または更新

- 4.12 プラグイン・ビルダーの削除

- 4.13 付録

- 4.13.1 構造ビューの使用

- 4.13.2 プロパティ・インスペクタの使用

- 4.13.3 プラグイン・プロジェクトのディレクトリ構造

5 Information Publisherレポートの追加

- 5.1 Information Publisherレポート追加の概要

- 5.1.1 前提条件

- 5.2 SYSTEMレポートの概要

- 5.2.1 「レポート定義」ページについて

- 5.3 レポート定義ファイルの理解

- 5.4 レポート定義ファイルの作成

- 5.4.1 レポート定義ファイルの開発プロセスについて

- 5.4.1.1 SQLまたはPL/SQL問合せの定義

- 5.4.1.2 Enterprise Managerコンソールからのテスト・レポートの対話的な作成

- 5.4.1.3 EM CLIを使用したレポート定義ファイルの生成

- 5.4.2 レポートのライフサイクルについて: レポート定義の更新

- 5.5 XMLレポート定義インタフェースの理解

- 5.5.1 レポート定義タグについて

- 5.5.1.1 <ReportDefinition>

- 5.5.1.2 <ReportElement>

- 5.5.1.3 <ReportElementParamters>

- 5.5.2 要素パラメータの使用

- 5.5.2.1 表要素パラメータについて

- 5.5.2.2 グラフ要素について

- 5.5.3 メトリック詳細要素の理解

- 5.5.4 テキスト要素パラメータの使用

- 5.5.5 レポート全体のパラメータについて

- 5.6 ImportExport.xsdファイルの使用

- 5.7 Enterprise Managerコマンド・ライン・インターフェース(EM CLI)の動詞について

- 5.8 開発ガイドラインについて

6 BI Publisherレポートの開発

- 6.1 Oracle BI Publisherの概要

- 6.1.1 前提条件

- 6.2 トレーニングとリソース

- 6.3 レポートのデータ・ソースについて

- 6.4 レポートの開発

- 6.5 Enterprise Manager EDKを使用したステージングとBI Publisherレポートのデプロイ

7 ターゲット構成データの収集

- 7.1 ターゲット構成データ収集の概要

- 7.1.1 前提条件

- 7.2 構成定義ファイルについて

- 7.3 エンタープライズ構成管理表のモデル化

- 7.3.1 構成収集表の定義

- 7.3.1.1 EM_ECM_OH_HOME_INFO表

- 7.3.1.2 EM_ECM_OH_DEP_HOMES表

- 7.3.1.3 EM_ECM_OH_COMPONENT表

- 7.3.1.4 EM_ECM_OH_COMP_INST_TYPE表

- 7.3.1.5 構成メタデータについての追加情報

- 7.3.2 構成管理スナップショット・メタデータ要素の概要

- 7.3.3 構成メタデータのパッケージ化

- 7.3.4 構成管理フレームワークへのメタデータの登録

- 7.3.5 翻訳のサポート

- 7.3.6 構成データのアップグレード

- 7.3.7 標準収集メトリックとRAWメトリックの変更

- 7.3.8 構成収集データのテスト

- 7.3.9 トラブルシューティング

- 7.4 UIの「インベントリおよび使用状況」リージョンのカスタマイズ

- 7.4.1 インベントリ選択肢XMLについて

- 7.4.1.1 InventoryChoice要素について

- 7.4.1.2 サポートされるパラメータ・タイプについて

- 7.4.1.3 適用可能なターゲット・タイプ(必須)

- 7.4.1.4 MasterData (必須)

- 7.4.1.5 詳細データ(必須)

- 7.4.1.6 ロールアップ・タイプ/ShowBy選択肢のリスト(オプション)

- 7.4.1.7 ターゲット・コンテキスト問合せ

- 7.4.1.8 UIColumnMappingタグ

- 7.4.1.9 DLFファイル

- 7.4.2 インベントリ選択肢XMLメタデータ・ファイルのサンプル

8 ジョブ・タイプの追加

- 8.1 ジョブ・タイプの追加の概要

- 8.2 ジョブ・タイプについて

- 8.3 新しいジョブ・タイプの導入

- 8.4 新しいジョブ・タイプのXMLでの指定

- 8.4.1 ジョブ・タイプ・カテゴリの理解

- 8.4.2 エージェントにバインドされたジョブ・タイプの使用

- 8.4.3 ジョブ・ステップについて

- 8.4.3.1 ステップセットのステータスへの影響

- 8.4.3.2 ジョブ・パラメータの渡し方

- 8.4.3.3 ジョブ・ステップの出力とエラーについて

- 8.5 コマンドの使用

- 8.5.1 remoteOpコマンドの使用

- 8.5.1.1 補助資格証明の使用

- 8.5.2 fileTransferコマンドの使用

- 8.5.3 putFileコマンドについて

- 8.5.4 getFileコマンドの使用

- 8.5.5 execAndSuspendコマンドの使用

- 8.6 コマンドのエラー・コードについて

- 8.7 Oracle Management Serviceでの長時間のコマンドの実行

- 8.7.1 長時間のコマンドを処理するためのジョブ・ディスパッチャの構成

- 8.8 パラメータ・ソースの指定

- 8.8.1 SQLParameterソースの理解

- 8.8.1.1 PL/SQLプロシージャを使用したスカラーおよびベクトル・パラメータのフェッチ

- 8.8.2 ユーザー・パラメータ・ソースについて

- 8.8.3 インライン・パラメータ・ソースについて

- 8.8.4 checkValueパラメータ・ソースの使用

- 8.8.5 プロパティ・パラメータ・ソースについて

- 8.8.6 パラメータ・ソースとパラメータ置換の理解

- 8.8.7 パラメータ暗号化について

- 8.9 資格証明情報の指定

- 8.9.1 資格証明使用について

- 8.9.2 資格証明バインディングの概要

- 8.9.3 XSD要素 - 資格証明使用と資格証明バインディング

- 8.10 セキュリティ情報の指定

- 8.11 ロック情報の指定

- 8.12 ジョブまたはステップの一時停止

- 8.13 ジョブの再起動

- 8.13.1 再起動および再発行

- 8.13.2 デフォルトの再起動動作

- 8.13.3 restartModeディレクティブの使用

- 8.14 「ジョブ・アクティビティ」および「ジョブ・ライブラリ」ページへのジョブ・タイプの追加

- 8.14.1 「ジョブ・アクティビティ」ページへのジョブ・タイプの追加

- 8.14.1.1 displayInfoタグの追加

- 8.14.2 「ジョブ・ライブラリ」ページへのジョブ・タイプの追加

- 8.14.2.1 ジョブ・タイプを編集可能にする設定

- 8.15 例: XMLでのジョブ・タイプの指定

- 8.16 パフォーマンスの問題について

- 8.16.1 パラメータ・ソースの使用

- 8.17 Enterprise Managerへのジョブ・タイプの追加

- 8.17.1 Oracleプラグイン・アーカイブ(OPAR)へのジョブ・タイプの追加

9 管理ユーザー・インタフェースの定義

- 9.1 管理ユーザー・インタフェースの定義の概要

- 9.1.1 Flex実装

- 9.1.2 メタデータのみの実装

- 9.1.3 前提条件

- 9.2 MPCUIの概念

- 9.2.1 統合クラス

- 9.2.2 アクティビティ

- 9.2.3 ページ

- 9.2.4 サービス

- 9.2.4.1 データ・サービス

- 9.2.4.2 操作サービス

- 9.2.4.3 非同期サービスのリクエスト処理

- 9.2.5 URL

- 9.3 プラグイン用のUIオプション

- 9.3.1 メタデータのみの実装

- 9.3.2 Flex実装

- 9.3.2.1 MXML

- 9.3.2.2 ActionScript

- 9.3.2.3 SWFバイナリ・ファイル

- 9.3.2.4 ホーム・ページの定義

- 9.4 MPCUIメタデータ・ファイルの作成

- 9.4.1 MPCUIメタデータ要素の概要

- 9.5 メタデータの定義

- 9.5.1 メタデータ実装の制限事項

- 9.5.2 統合メタデータの定義

- 9.5.2.1 ページの定義

- 9.5.2.2 UIコンポーネントへのデータのマッピング

- 9.5.3 ナビゲーションの定義

- 9.6 MPCUIアプリケーションの定義

- 9.6.1 アプリケーション・アクティビティ(統合クラス)の定義

- 9.6.2 ページの定義

- 9.6.2.1 ページ・クラス

- 9.6.2.2 ページ・モデル

- 9.6.2.3 ページ・コントローラ

- 9.6.3 ダイアログの定義

- 9.6.4 トレインおよびトレイン・ページの定義

- 9.6.5 URLの定義

- 9.7 プラグインとのMPCUI実装のパッケージ化

- 9.8 FlexベースUIへのメタデータベースUIの変換

- 9.9 システムのホームページの定義

- 9.9.1 systemUiIntegrationメタデータの定義

- 9.9.2 システム・リージョンの定義

- 9.9.2.1 システム・ステータス・リージョンの定義

- 9.9.2.2 システムの問題リージョンの定義

- 9.9.2.3 システムのジョブ・アクティビティ・リージョンの定義

- 9.10 ナビゲーションの定義

- 9.10.1 アクティビティへのナビゲーション

- 9.10.2 URLおよびリンク

- 9.10.3 外部アプリケーションへのリンクの追加

- 9.11 Enterprise Managerデータへのアクセス

- 9.11.1 メトリック・サービス

- 9.11.1.1 メトリック値サービスの透過的な使用

- 9.11.1.2 MetricValuesDataServiceタグの使用

- 9.11.1.3 コントローラからのメトリック値サービスの呼出し

- 9.11.1.4 メトリック・データソース・フィルタ

- 9.11.2 カスタム・データソース

- 9.11.2.1 カスタム・データソースの作成

- 9.11.2.2 UIコンポーネントへのデータソースのバインディング

- 9.11.2.3 カスタム・データソースの更新

- 9.11.3 計算されるデータソース

- 9.11.4 パッケージ化されたSQLおよび問合せサービス

- 9.11.4.1 パッケージ化されたSQLの記述に関するガイドライン

- 9.11.4.2 プラグインでのSQLのパッケージ化

- 9.11.4.3 ターゲット・タイプ情報の取得

- 9.11.5 ターゲット・サービスの操作

- 9.11.5.1 ターゲット・プロパティ・サービス

- 9.11.5.2 関連ターゲット・サービス

- 9.11.5.3 メトリック・メタデータ・サービス

- 9.11.5.4 可用性サービス

- 9.11.6 サービス・リクエスト・パフォーマンスの監視

- 9.11.7 サービス・リクエストの自動ポーリング

- 9.11.8 サービス・リクエストのバッチ処理

- 9.11.9 ソフトウェア・ライブラリ検索サービス

- 9.12 タスク自動化の実行

- 9.12.1 自動化サービス

- 9.12.1.1 ジョブの発行または実行

- 9.12.1.2 ジョブのステータスおよびステップの詳細の取得

- 9.12.1.3 タイマーを使用したジョブ・ステータスの定期的なチェック

- 9.12.1.4 ジョブの停止および削除

- 9.12.1.5 リモート操作

- 9.12.2 資格証明の操作

- 9.12.2.1 資格証明情報の取得

- 9.12.2.2 ジョブへの資格証明の受渡し送信およびリモート操作

- 9.12.2.3 再利用可能な資格証明UIコンポーネント

- 9.12.2.4 モニタリング資格証明の管理

- 9.13 セッション状態の格納

- 9.14 ページ・レイアウト・コンポーネントの定義

- 9.14.1 リージョンの定義

- 9.15 パッケージ化されたリージョンの包含

- 9.15.1 「可用性」リージョン

- 9.15.2 「インシデントと問題」リージョン

- 9.15.3 「ジョブ・サマリー」リージョン

- 9.15.4 「資格証明」リージョン

- 9.16 グラフの定義

- 9.16.1 折れ線グラフ

- 9.16.1.1 折れ線グラフのデータソースの指定

- 9.16.1.2 凡例の制御

- 9.16.2 面グラフ

- 9.16.3 横棒グラフ

- 9.16.3.1 棒のグループ化

- 9.16.4 列グラフ(縦棒グラフ)

- 9.16.5 円グラフ

- 9.17 表の定義

- 9.17.1 データ・サービス

- 9.17.2 カスタム・データ・プロバイダ

- 9.17.3 選択した行の取得

- 9.18 ダイアログの定義

- 9.18.1 ダイアログの登録

- 9.18.2 ダイアログの表示およびクローズ・イベントの待機

- 9.19 トレインの定義

- 9.19.1 トレイン定義の例

- 9.19.2 トレイン・コントローラ

- 9.19.3 トレインの状態

- 9.19.4 トレイン・イベント

- 9.20 情報アイテムと情報表示(ラベルと値のペア)の定義

- 9.21 組込みレンダラの使用

- 9.22 リンクの定義

- 9.23 Enterprise Managerイメージの包含

- 9.24 処理カーソルの表示

- 9.25 処理ウィンドウの定義

- 9.26 ターゲット・タイプ用のアイコンの定義

- 9.27 ターゲット・ナビゲータの表示

- 9.28 ガイドされた検出用のUIの定義

- 9.28.1 ガイドされた検出について

- 9.28.2 ガイドされた検出のサポート

- 9.28.3 ガイドされた検出のユーザー・インタフェースの構築

- 9.28.3.1 検出アプリケーションおよび統合クラス

- 9.28.4 検出アプリケーションの構造

- 9.28.5 検出サービスの使用

- 9.28.6 ターゲット情報サービスの使用

- 9.28.7 ターゲット管理サービスの使用

- 9.29 ロギングについて

- 9.29.1 コードへのロギングの追加

- 9.29.2 ログ出力を取得するオプション

- 9.29.2.1 Adobe Flash BuilderからのMPCUIの実行

- 9.29.2.2 Enterprise ManagerコンソールからのMPCUIの実行

- 9.30 開発環境オプション

- 9.30.1 Flex SDKおよびApache Antを使用したMPCUIの開発

- 9.30.2 Adobe FlashまたはFlex BuilderでのMPCUIの開発

- 9.30.2.1 Adobe Flash Builderの構成

- 9.30.2.2 デモ・サンプル・プロジェクトの設定

- 9.30.2.3 Adobe Flash Builderからのデモ・サンプルのMPCUIの実行

- 9.30.2.4 デモ・サンプルのFlex UIの要素

- 9.30.2.5 デモ・サンプルの更新

- 9.30.2.6 デプロイされたプラグインの変更

- 9.30.3 MPCUI用のAdobe Flash Builderプロジェクトの設定

- 9.30.3.1 開始する前に

- 9.30.3.2 Adobe Flash Builderプロジェクトの作成

- 9.30.3.3 MPCUIプロジェクト・プロパティの設定

- 9.30.3.4 適切なMPCUIライブラリ・リンケージの検証

- 9.30.3.5 新しいEnterprise Manager OMSでの以前のSWCファイルの使用

- 9.30.3.6 MPCUI RSLキャッシュについて

- 9.30.3.7 Adobe Flash Playerのキャッシュのクリア

- 9.31 ホームページのカスタマイズの移行

- 9.32 アクセシビリティ・ガイドライン

- 9.32.1 Enterprise Managerでのアクセシビリティ・オプション

- 9.32.2 クリティカルな問題のサマリー

- 9.32.3 MPCUIコンポーネントの使用

- 9.32.4 読取りおよびタブ移動の順序の制御

- 9.33 ローカリゼーション・サポート

- 9.33.1 バンドルの登録

- 9.33.2 MXMLからの文字列の参照(ページ、ダイアログ、定義)

- 9.33.3 ActionScript(コントローラ・コード)からの文字列へのアクセス

- 9.34 オンライン・ヘルプの表示

10 インシデント・マネージャのカスタマイズ

- 10.1 インシデント・マネージャのカスタマイズの概要

- 10.2 サポートされたカスタマイズについて

- 10.3 イベント固有のカスタマイズXMLの作成

- 10.3.1 イベント固有のカスタマイズ・メタデータ要素の概要

- 10.3.2 イベントについて

- 10.3.2.1 共通イベント属性

- 10.3.2.2 ターゲット可用性イベント

- 10.3.2.3 メトリック・アラート・イベント

- 10.4 カスタマイズされたイベントの詳細の追加

- 10.5 「ガイドされた解決」リージョン内のコンテンツの指定

- 10.5.1 XMLを使用した推奨の追加

- 10.5.2 セクションのカスタマイズ

- 10.6 My Oracle Supportのナレッジの検索文字列の定義

- 10.7 カスタマイズの条件の定義

- 10.8 カスタマイズの登録

- 10.9 カスタマイズ後のインシデント・マネージャのテスト

11 導出されたアソシエーションの使用

- 11.1 導出されたアソシエーションの概要

- 11.1.1 前提条件

- 11.2 Enterprise Managerアソシエーションの概念について

- 11.2.1 即時利用可能なアソシエーション・タイプについて

- 11.2.2 アソシエーション導出の使用

- 11.2.3 アソシエーションの自動検出および昇格について

- 11.2.4 ガイドされた検出時のアソシエーションの作成について

- 11.2.5 システム・ステンシルから導出されたアソシエーションの使用

- 11.2.6 ルールから導出されたアソシエーション

- 11.3 アソシエーション導出ルール管理について

- 11.3.1 アソシエーション導出ルールの構文とセマンティクスの使用

- 11.3.2 XMLメタデータ・ファイル構文とセマンティクスについて

- 11.3.3 ルール・セマンティクスの使用

- 11.3.4 パフォーマンスの維持

- 11.3.5 正規問合せおよびトリガー・パターンについて

- 11.3.6 問題の診断

- 11.3.7 役立つ例

- 11.3.7.1 仮想マシン上のホスト

- 11.3.7.2 ターゲットinstalled_at Oracleホーム

- 11.3.7.3 リスナーとデータベース

- 11.3.8 統合の機械的手順の適用

- 11.3.9 特殊トリガー: ホスト名変更トリガー

- 11.3.10 アクティブ化式について

- 11.3.11 トラブルシューティングとデバッグ

- 11.4 パフォーマンスの確認

- 11.4.1 データ収集でのカスタム構成仕様の使用

- 11.5 オーバーラップ・アソシエーションの使用

- 11.5.1 ルールによって導出されるアソシエーション間のオーバーラップ

- 11.6 コンポジットおよびシステム・ターゲット・タイプのアソシエーションの作成

- 11.6.1 コンポジット・メンバーシップと包含アソシエーション

- 11.6.2 その他の非コンポジット・アソシエーション(コンポジット・トポロジ)

- 11.6.3 システム・メンバーシップ・アソシエーション

- 11.6.4 外部ターゲットへのアソシエーション

- 11.6.5 アソシエーション作成のタイミングについて

- 11.7 よくある質問

- 11.7.1 ルール問合せではどの表を参照できますか

- 11.7.2 ターゲット・プロパティを使用するときのガイドラインはありますか

- 11.7.3 検出されたアソシエーションと導出されたアソシエーションにはどのような関係がありますか

12 ターゲット検出の定義

- 12.1 ターゲット検出の定義の概要

- 12.2 検出XMLの作成

- 12.2.1 汎用的な検出統合の例

- 12.2.2 検出スクリプトの例

- 12.2.3 検出メタデータ要素の概要

- 12.3 検出スクリプトの作成

- 12.3.1 検出されたターゲットDTD

- 12.4 検出XMLおよび検出コンテンツのパッケージ化

- 12.4.1 検出メタデータ・ファイルの場所

- 12.4.2 検出コンテンツのパッケージ化

- 12.4.2.1 検出スクリプトで必要なJavaコンテンツ

- 12.5 検出の設定およびテスト

- 12.6 手動によるターゲットの追加

- 12.6.1 手動によるホスト・ターゲットの追加

- 12.6.2 手動による非ホスト・ターゲットの追加

- 12.7 Enterprise Managerによる監視のためのターゲットの構成および昇格

- 12.8 汎用的な検出フレームワークの使用例

- 12.8.1 ユーザー入力を必要とする検出統合の例

- 12.9 プラグインの自動検出の構成

13 コンプライアンス標準の追加

- 13.1 コンプライアンス標準の追加の概要

- 13.1.1 前提条件

- 13.2 コンプライアンス標準ルールについて

- 13.2.1 リポジトリ・チェックベースのルールの定義

- 13.2.2 リアルタイム監視ルールの定義

- 13.2.2.1 監視できるエンティティ・タイプ

- 13.2.2.2 リアルタイム監視ファセットについて

- 13.2.2.3 リアルタイム・モニタリング・ファセットの作成

- 13.2.2.4 時間ウィンドウのリアルタイム・モニタリング・ファセットの作成

- 13.2.2.5 リアルタイム・モニタリング・ルールの作成

- 13.3 コンプライアンス標準の定義

- 13.4 コンプライアンス・フレームワークの定義

- 13.5 コンプライアンス・コンテンツの定義

- 13.6 コンプライアンス・コンテンツの削除

- 13.7 翻訳のサポート

- 13.8 コンプライアンスXMLのパッケージ

- 13.9 コンプライアンス標準およびルールの設定とテスト

- 13.9.1 コンプライアンス・コンテンツのインストール

- 13.9.2 コンプライアンス標準のテスト

- 13.9.3 テストの制約

- 13.10 その他のコンプライアンス例

- 13.11 自己更新を使用したコンプライアンス・コンテンツの公開

14 プラグインの検証、パッケージ化およびデプロイ

- 14.1 プラグインの検証、パッケージ化およびデプロイの概要

- 14.2 プラグインのステージング

- 14.2.1 プラグイン・ディレクトリ内のファイル権限の変更

- 14.3 プラグインの検証

- 14.4 プラグイン・アーカイブの作成

- 14.5 Enterprise Managerへのプラグイン・アーカイブのインポートおよびデプロイ

- 14.5.1 プラグインをインポートするための前提条件

- 14.5.1.1 ソフトウェア・ライブラリの設定

- 14.5.1.2 EM CLIユーティリティの設定

- 14.5.2 プラグイン・アーカイブのインポート

- 14.5.3 Oracle Management Service (OMS)へのプラグインのデプロイ

- 14.5.4 プラグインのデプロイに関する重要事項

- 14.6 ターゲット・インスタンスの追加

- 14.7 メタデータ登録サービス(MRS)を使用したデプロイ済メタデータ・ファイルの更新

- 14.7.1 ターゲット・タイプおよびデフォルト収集

15 ソフトウェア・ライブラリ・メタデータの定義

- 15.1 ソフトウェア・ライブラリ・フレームワークの概要

- 15.2 ソフトウェア・ライブラリ・メタデータの定義

- 15.2.1 フォルダの定義

- 15.2.2 タイプの定義

- 15.2.3 サブタイプの定義

- 15.2.3.1 エンティティ・プロパティ・ファイル

- 15.2.4 エンティティの定義

- 15.3 ソフトウェア・ライブラリ・メタデータ・ファイルの編成

- 15.4 Enterprise Managerへのソフトウェア・ライブラリ・メタデータの追加

- 15.4.1 手順1: メタデータXMLの検証

- 15.4.2 手順2: OPARへのメタデータXMLの追加

- 15.5 ソフトウェア・ライブラリ・エンティティの使用

- 15.5.1 ジョブ・タイプの使用

- 15.5.2 EMCLI動詞の使用

16 資格証明の定義

- 16.1 セキュリティの概念の概要

- 16.1.1 資格証明タイプの理解

- 16.1.2 名前付き資格証明について

- 16.1.3 認証ターゲット・タイプ

- 16.1.4 資格証明セットの概要

- 16.1.5 資格証明ストアの使用

- 16.1.6 資格証明参照について

- 16.2 資格証明メタデータの定義

- 16.2.1 資格証明要素の概要

17 チャージバック・エンティティ・タイプの定義

- 17.1 チャージバック拡張ツールキット

- 17.2 新しいチャージバック・エンティティ・タイプを開発およびテストする手順

- 17.3 チャージバック・モデル

- 17.4 サンプル・チャージバックMDS XMLファイル

- 17.5 チャージバックMDSの登録

- 17.6 エンティティ・タイプ・プラグインのテスト

18 WebサービスおよびJMXを使用した監視

- 18.1 概要

- 18.2 Enterprise ManagerでのWebサービスを使用した監視

- 18.2.1 メタデータ・ファイルおよびデフォルトの収集ファイルの作成

- 18.2.1.1 WebサービスCLIコマンドライン・ツールの構文

- 18.2.1.2 Webサービス・コマンドライン・ツールのセキュリティ

- 18.2.1.3 ファイルの生成

- 18.3 Enterprise ManagerでのWS-Management使用の監視

- 18.3.1 メタデータ・ファイルおよびデフォルトの収集ファイルの作成

- 18.3.1.1 WS-Management CLIコマンドライン・ツールの構文

- 18.3.1.2 コマンドライン・ツールのセキュリティ

- 18.3.1.3 ターゲットのメタデータ・ファイルおよび収集ファイルの生成

- 18.4 JMXインスツルメント処理されたスタンドアロンのJavaアプリケーションまたはJVMターゲットの監視

- 18.4.1 メタデータ・ファイルおよびデフォルトの収集ファイルの生成

- 18.4.1.1 JMXコマンドライン・ツールの構文

- 18.4.1.2 ファイルの生成

- 18.4.2 メタデータ・ファイルおよびデフォルトの収集ファイルの使用方法

- 18.5 Oracle WebLogic Application ServerにデプロイされたJMXアプリケーションの監視

- 18.5.1 jmxcliを使用したメタデータ・ファイルおよびデフォルトの収集ファイルの作成

- 18.5.1.1 JMXコマンドライン・ツールの構文

- 18.5.1.2 ファイルの生成

- 18.5.1.3 ターゲット・ステータス情報の表示

- 18.5.2 メタデータ・ファイルおよびデフォルトの収集ファイルの使用方法

- 18.6 管理エージェントへのターゲットの追加

- 18.6.1 Webサービス・ターゲットの追加: CalculatorService

- 18.6.2 WS-Managementターゲットの追加: TrafficLight

- 18.6.3 スタンドアロンJavaアプリケーションまたはJVMターゲットの構成

- 18.6.4 Weblogic上のカスタムJ2EEアプリケーションのターゲット・インスタンスの追加

- 18.7 監視資格証明の設定

- 18.8 監視対象メトリックの表示

- 18.9 JMXメトリック拡張の作成

- 18.9.1 Enterprise Managerコンソールの使用

- 18.9.2 JMXCLIを使用したメトリック拡張アーカイブの作成

- 18.10 スタンドアロンのJVMまたはOracle Coherenceのメトリックの公開

- 18.10.1 Enterprise Managerコンソールの使用

- 18.10.2 JMXCLIの使用

- 18.11 RESTfulサービスの使用の監視

19 Receiveletの使用

- 19.1 Receiveletについて

- 19.2 SNMP Receivelet

20 fetchletの使用

- 20.1 fetchletの概要

- 20.2 OSコマンドfetchlet

- 20.2.1 OS fetchlet

- 20.2.2 OS行fetchlet(行に分割)

- 20.2.3 OS行トークンfetchlet(トークン化された行)

- 20.2.4 メトリック収集用の特定ユーザーとしてのOS fetchletの起動

- 20.3 SQL fetchlet

- 20.4 SNMP fetchlet

- 20.5 HTTPデータfetchlet

- 20.5.1 URL fetchlet(RAW)

- 20.5.2 URL行fetchlet(行に分割)

- 20.5.3 URL行トークンfetchlet(トークン化された行)

- 20.6 URLXML fetchlet

- 20.7 URLタイミングfetchlet

- 20.8 ダイナミック・モニタリング・サービス(DMS)fetchlet

- 20.8.1 Oracle Management Agent統合に対してDMSを使用する利点

- 20.8.2 DMS fetchlet/Oracle Management Agent統合の方法

- 20.8.2.1 DMSデータと管理エージェントの統合

- 20.9 JDBC fetchlet

- 20.10 WBEM fetchlet

- 20.11 JMX fetchlet

- 20.12 Webサービスfetchlet

- 20.12.1 認証に対する資格証明の使用

- 20.13 WS-Management fetchlet

- 20.13.1 資格証明の使用

- 20.14 REST fetchlet

- 20.14.1 レスポンス処理

- 20.14.2 HTTPSおよび自己署名付き証明書の使用

- 20.14.3 REST CLIを使用したメタデータの生成

21 Enterprise Manager DTD

- 21.1 用語

- 21.2 ターゲット・メタデータDTD要素

- 21.2.1 TargetMetadata

- 21.2.1.1 属性

- 21.2.1.2 要素

- 21.2.1.3 使用場所

- 21.2.1.4 例

- 21.2.2 Display

- 21.2.2.1 属性

- 21.2.2.2 要素

- 21.2.2.3 使用場所

- 21.2.2.4 例

- 21.2.3 SSH_ERROR_MSG

- 21.2.3.1 属性

- 21.2.3.2 要素

- 21.2.3.3 使用場所

- 21.2.3.4 例

- 21.2.4 TypeProperties

- 21.2.4.1 属性

- 21.2.4.2 要素

- 21.2.4.3 使用場所

- 21.2.4.4 例

- 21.2.5 TypeProperty

- 21.2.5.1 属性

- 21.2.5.2 要素

- 21.2.5.3 使用場所

- 21.2.5.4 例

- 21.2.6 AssocTarget

- 21.2.6.1 属性

- 21.2.6.2 要素

- 21.2.6.3 使用場所

- 21.2.6.4 例

- 21.2.7 AssocPropDef

- 21.2.7.1 属性

- 21.2.7.2 要素

- 21.2.7.3 使用場所

- 21.2.7.4 例

- 21.2.8 DiscoveryHelper

- 21.2.8.1 属性

- 21.2.8.2 要素

- 21.2.8.3 使用場所

- 21.2.9 DiscoveryHint

- 21.2.9.1 属性

- 21.2.9.2 要素

- 21.2.9.3 使用場所

- 21.2.10 MetricClass

- 21.2.10.1 属性

- 21.2.10.2 要素

- 21.2.10.3 使用場所

- 21.2.10.4 例

- 21.2.11 MetricCategory

- 21.2.11.1 属性

- 21.2.11.2 要素

- 21.2.11.3 使用場所

- 21.2.11.4 例

- 21.2.12 Metric

- 21.2.12.1 属性

- 21.2.12.2 要素

- 21.2.12.3 使用場所

- 21.2.12.4 例

- 21.2.13 ValidIf

- 21.2.13.1 属性

- 21.2.13.2 要素

- 21.2.13.3 使用場所

- 21.2.13.4 例

- 21.2.14 CategoryProp

- 21.2.14.1 属性

- 21.2.14.2 要素

- 21.2.14.3 使用場所

- 21.2.14.4 例

- 21.2.15 ValidMidTierVersions

- 21.2.15.1 属性

- 21.2.15.2 要素

- 21.2.15.3 使用場所

- 21.2.15.4 例

- 21.2.16 TableDescriptor

- 21.2.16.1 属性

- 21.2.16.2 要素

- 21.2.16.3 使用場所

- 21.2.16.4 例

- 21.2.17 ColumnDescriptor

- 21.2.17.1 属性

- 21.2.17.2 要素

- 21.2.17.3 使用場所

- 21.2.17.4 例

- 21.2.18 CategoryValue

- 21.2.18.1 属性

- 21.2.18.2 要素

- 21.2.18.3 使用場所

- 21.2.18.4 例

- 21.2.19 CustomTableMapper

- 21.2.19.1 属性

- 21.2.19.2 要素

- 21.2.19.3 使用場所

- 21.2.19.4 例

- 21.2.20 ColumnMapper

- 21.2.20.1 属性

- 21.2.20.2 要素

- 21.2.20.3 使用場所

- 21.2.20.4 例

- 21.2.21 QueryDescriptor

- 21.2.21.1 属性

- 21.2.21.2 要素

- 21.2.21.3 使用場所

- 21.2.21.4 例

- 21.2.22 Property

- 21.2.22.1 属性

- 21.2.22.2 要素

- 21.2.22.3 使用場所

- 21.2.22.4 例

- 21.2.23 Label

- 21.2.23.1 属性

- 21.2.23.2 要素

- 21.2.23.3 使用場所

- 21.2.23.4 例

- 21.2.24 ShortName

- 21.2.24.1 属性

- 21.2.24.2 要素

- 21.2.24.3 使用場所

- 21.2.24.4 例

- 21.2.25 Icon

- 21.2.25.1 属性

- 21.2.25.2 要素

- 21.2.25.3 使用場所

- 21.2.25.4 例

- 21.2.26 Description

- 21.2.26.1 属性

- 21.2.26.2 要素

- 21.2.26.3 使用場所

- 21.2.26.4 例

- 21.2.27 Unit

- 21.2.27.1 属性

- 21.2.27.2 要素

- 21.2.27.3 使用場所

- 21.2.27.4 例

- 21.2.28 MonitoringMode

- 21.2.28.1 属性

- 21.2.28.2 要素

- 21.2.28.3 使用場所

- 21.2.28.4 例

- 21.2.29 AltSkipCondition

- 21.2.29.1 属性

- 21.2.29.2 要素

- 21.2.29.3 使用場所

- 21.2.29.4 例

- 21.2.30 CredentialInfo

- 21.2.30.1 属性

- 21.2.30.2 要素

- 21.2.30.3 使用場所

- 21.2.30.4 例

- 21.2.31 CredentialType

- 21.2.31.1 属性

- 21.2.31.2 要素

- 21.2.31.3 使用場所

- 21.2.31.4 例

- 21.2.32 CredentialTypeColumn

- 21.2.32.1 属性

- 21.2.32.2 要素

- 21.2.32.3 使用場所

- 21.2.32.4 例

- 21.2.33 CredentialTypeColumnValue

- 21.2.33.1 属性

- 21.2.33.2 要素

- 21.2.33.3 使用場所

- 21.2.33.4 例

- 21.2.34 CredentialTypeRef

- 21.2.34.1 属性

- 21.2.34.2 要素

- 21.2.34.3 使用場所

- 21.2.34.4 例

- 21.2.35 CredentialTypeRefColumn

- 21.2.35.1 属性

- 21.2.35.2 要素

- 21.2.35.3 使用場所

- 21.2.35.4 例

- 21.2.36 CredentialSet

- 21.2.36.1 属性

- 21.2.36.2 要素

- 21.2.36.3 使用場所

- 21.2.36.4 例

- 21.2.37 CredentialSetColumn

- 21.2.37.1 属性

- 21.2.37.2 要素

- 21.2.37.3 使用場所

- 21.2.37.4 例

- 21.2.38 CredentialSetColumnValue

- 21.2.38.1 属性

- 21.2.38.2 要素

- 21.2.38.3 使用場所

- 21.2.38.4 例

- 21.2.39 InstanceProperties

- 21.2.39.1 属性

- 21.2.39.2 要素

- 21.2.39.3 使用場所

- 21.2.39.4 例

- 21.2.40 InstanceProperty

- 21.2.40.1 属性

- 21.2.40.2 要素

- 21.2.40.3 使用場所

- 21.2.40.4 例

- 21.2.41 DynamicProperties

- 21.2.41.1 属性

- 21.2.41.2 要素

- 21.2.41.3 使用場所

- 21.2.41.4 例

- 21.2.42 ExecutionDescriptor

- 21.2.42.1 属性

- 21.2.42.2 要素

- 21.2.42.3 使用場所

- 21.2.42.4 例

- 21.2.43 GetTable

- 21.2.43.1 属性

- 21.2.43.2 要素

- 21.2.43.3 使用場所

- 21.2.43.4 例

- 21.2.44 GetView

- 21.2.44.1 属性

- 21.2.44.2 要素

- 21.2.44.3 使用場所

- 21.2.44.4 例

- 21.2.45 Filter

- 21.2.45.1 属性

- 21.2.45.2 要素

- 21.2.45.3 使用場所

- 21.2.45.4 例

- 21.2.46 Column

- 21.2.46.1 属性

- 21.2.46.2 要素

- 21.2.46.3 使用場所

- 21.2.46.4 例

- 21.2.47 ComputeColumn

- 21.2.47.1 属性

- 21.2.47.2 要素

- 21.2.47.3 使用場所

- 21.2.47.4 例

- 21.2.48 In

- 21.2.48.1 属性

- 21.2.48.2 要素

- 21.2.48.3 使用場所

- 21.2.49 GroupBy

- 21.2.49.1 属性

- 21.2.49.2 要素

- 21.2.49.3 使用場所

- 21.2.49.4 例

- 21.2.50 By

- 21.2.50.1 属性

- 21.2.50.2 要素

- 21.2.50.3 使用場所

- 21.2.50.4 例

- 21.2.51 AggregateColumn

- 21.2.51.1 属性

- 21.2.51.2 要素

- 21.2.51.3 使用場所

- 21.2.51.4 例

- 21.2.52 Union

- 21.2.52.1 属性

- 21.2.52.2 要素

- 21.2.52.3 使用場所

- 21.2.52.4 例

- 21.2.53 Table

- 21.2.53.1 属性

- 21.2.53.2 要素

- 21.2.53.3 使用場所

- 21.2.53.4 例

- 21.2.54 JoinTables

- 21.2.54.1 属性

- 21.2.54.2 要素

- 21.2.54.3 使用場所

- 21.2.54.4 例

- 21.2.55 Where

- 21.2.55.1 属性

- 21.2.55.2 要素

- 21.2.55.3 使用場所

- 21.2.55.4 例

- 21.2.56 PushDescription

- 21.2.56.1 属性

- 21.2.56.2 要素

- 21.2.56.3 使用場所

- 21.2.56.4 例

- 21.3 ターゲット収集DTD要素

- 21.3.1 TargetCollection

- 21.3.1.1 属性

- 21.3.1.2 要素

- 21.3.1.3 使用場所

- 21.3.1.4 例

- 21.3.2 CollectionLevel

- 21.3.2.1 属性

- 21.3.2.2 要素

- 21.3.2.3 使用場所

- 21.3.2.4 例

- 21.3.3 CollectionItem

- 21.3.3.1 属性

- 21.3.3.2 要素

- 21.3.3.3 使用場所

- 21.3.3.4 例

- 21.3.4 MetricColl

- 21.3.4.1 属性

- 21.3.4.2 要素

- 21.3.4.3 使用場所

- 21.3.4.4 例

- 21.3.5 LimitRows

- 21.3.5.1 属性

- 21.3.5.2 要素

- 21.3.5.3 使用場所

- 21.3.5.4 例

- 21.3.6 ItemProperty

- 21.3.6.1 属性

- 21.3.6.2 要素

- 21.3.6.3 使用場所

- 21.3.6.4 例

- 21.3.7 Filter (ターゲット収集用)

- 21.3.7.1 属性

- 21.3.7.2 要素

- 21.3.7.3 使用場所

- 21.3.7.4 例

- 21.3.8 Condition

- 21.3.8.1 属性

- 21.3.8.2 要素

- 21.3.8.3 使用場所

- 21.3.8.4 例

- 21.3.9 KeyColumn

- 21.3.9.1 属性

- 21.3.9.2 要素

- 21.3.9.3 使用場所

- 21.3.9.4 例

- 21.3.10 FixitJob

- 21.3.10.1 属性

- 21.3.10.2 要素

- 21.3.10.3 使用場所

- 21.3.10.4 例

A 即時利用可能なアソシエーション

B プラグイン・テクニカル・チェックリスト

- B.1 プラグインの確認

- B.2 ターゲットの確認

- B.3 カスタマイズされたUIの確認

- B.4 ジョブ・タイプの確認

- B.5 レポートの確認

- B.6 プラグインのテスト

索引

はじめに

このドキュメントでは、Enterprise Managerフレームワークの拡張性および関連する参照情報を説明します。

注意:
このドキュメントの最新バージョンは、Oracle Enterprise Managerの次のオンライン・ドキュメント・セットの拡張性に関するページに移動してください。

http://www.oracle.com/pls/em131/homepage">>http://www.oracle.com/pls/em131/homepage

対象読者

このドキュメントは、カスタム・ターゲット・タイプの管理や即時利用可能なターゲット・タイプの管理性の拡張を行う機能サポートするようにOracle Enterprise Managerを拡張する、プラグイン開発者を対象としています。

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティへの取組みの詳細は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoまたはhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs (聴覚障害者向け)を参照してください。

関連ドキュメント

Oracle Enterprise Managerの詳細は、Oracle Enterprise Managerの次のオンライン・ドキュメント・セットを参照してください。

http://www.oracle.com/pls/em131/homepage">>http://www.oracle.com/pls/em131/homepage

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 プラグイン開発の開始

この章の内容は次のとおりです。

- プラグインの作成プロセスについて

- 拡張開発キット(EDK)について

- 拡張開発キット(EDK)のインストール

- プラグインの設計

- 基本プラグインの作成

- 中間プラグインの作成

- 拡張プラグインの作成

1.1 プラグインの作成プロセスについて

プラグインの作成には、次の手順が含まれています。すべての手順は、このマニュアルで説明されています。

1. プラグインを設計します。

2. プラグインを開発します。これには、プラグイン機能を有効にする要件メタデータ・ファイルの作成が含まれています。

3. プラグインをステージングします。

4. プラグインを検証します。

5. アーカイブ(.opar)ファイルとしてプラグインをパッケージ化します。

6. プラグインをEnterprise Manager Cloud Controlにインポートします。

7. Oracle Management Serviceにプラグインをデプロイします。

8. ターゲットの監視を開始するために環境からターゲットを追加します。このとき、管理エージェントがターゲットを監視するために必要なプラグイン・ファイルは、エージェントに送信されます。

9. 期待したとおりにプラグインが動作することを確認するために、プラグインをテストします。

引き続き、プラグイン・メタデータを変更すると、メタデータ登録サービスを使用して、プラグイン・アーカイブを再デプロイすることなく、新しいメタデータ・ファイルをEnterprise Managerにアップロードできます。このサービスの使用方法の詳細は、第14.7項「メタデータ登録サービス(MRS)を使用してデプロイされたメタデータ・ファイルの更新」を参照してください。

さらに、更新したそれぞれのバージョンのプラグインを追跡するには、プラグイン・バージョンを次のプラグイン・メタデータ・ファイルで加算する必要があります。

- プラグインがデプロイされるOracle Management Serviceに対して、プラグインを記述するplugin.xmlファイルのPluginVersion属性。第2.3.1項「plugin.xmlファイルの作成」を参照してください。

- プラグインがデプロイされる管理エージェントに対して、プラグインを記述するplugin_registry.xmlファイルのVersion属性。第2.3.2項「plugin_registry.xmlファイルの作成」を参照してください。

1.2 拡張開発キット(EDK)について

Enterprise Manager Cloud Controlアーキテクチャのキー・コンポーネントは拡張フレームワークです。Enterprise Managerプラットフォームを拡張するOracle Partnerを有効にするために、拡張開発キット(EDK)が製品に提供されています。

EDKは、次のものを含む、ツール、ユーティリティおよびドキュメントの集まりです。

- Enterprise Managerの拡張性についてのマニュアル: Enterprise Managerプラグインの一般的なガイドラインの提供

- リファレンスの実装: 様々なEnterprise Manager機能のリファレンス・コード、コード・スニペットなど

- EDK適合性を確認するためのビルド・タイム・ツール: Enterprise Manager拡張性ガイドラインへの違反の検証と報告を行うために使用できるツール

- パッケージ化ツール: プラグイン・コンポーネント・ツール(empdk)をパッケージ化するツール

- 検証ツール: プラグイン・コード・コンポーネントを検証し、違反(ある場合)を報告するツール

Enterprise Manager EDKには、empdkと呼ばれるコマンドライン・ユーティリティがあります。このユーティリティを使用して、プラグイン・アーカイブをパッケージ化または検証します。empdkコマンドおよびそのオプションの詳細は、第14.3項「プラグインの検証」を参照してください。

EDKのダウンロード後、ローカル・システムでEDKを解凍し、現在のディレクトリをその解凍場所に変更します。EDKには、プラグインの開発に役立つリファレンス・マニュアル、およびプラグインの開発時に統合する必要のあるAPIリファレンスが含まれています。

EDKのダウンロードの詳細は、拡張開発キット(EDK)のインストールに関する項を参照してください。

1.2.1 EDKの内容

EDKアーカイブには、次のディレクトリが格納されています。

- /bin
次の作業に使用するempdkユーティリティが含まれています。

- プラグインの構造の検証

- プラグインのパッケージ化

- 既存の(Cloud Control 12より前の)プラグインのメタデータを新しいメタデータ形式への変換

- /doc
管理ビューについてのマニュアルを含め、『Oracle Enterprise Manager拡張プログラマーズ・ガイド』、『Oracle Enterprise Manager拡張プログラマーズ・リファレンス』およびAPIリファレンス・マニュアルが含まれています。提供されるマニュアルへのリンクについてoverview.htmlを確認します。

索引ページ(sdk_api_ref.html)を使用して、EDK APIリファレンス・マニュアルに直接アクセスすることもできます。

- /lib
EDKで使用される内部ライブラリが含まれています。

- /oui
EDKで使用される内部ライブラリが含まれています。

- /samples
demo_hostsample.zipとしてパッケージ化されたプラグインの完全なリファレンス実装が含まれています。含まれているサンプルのメタデータ・ファイルは、EDKマニュアル全体で参照されるファイルの例として使用されます。

サンプル・プラグインの構築、デプロイおよび使用についての詳細は、アーカイブにパッケージ化されたREADMEを参照してください。

EM CLIおよびEM CTLを含め、このマニュアルで参照される他のユーティリティは、Enterprise Managerにインストールされています。通常、Oracle Management Service (OMS)ホストにデプロイされます。

1.3 拡張開発キット(EDK)のインストール

プラグインの開発を開始する前に、拡張開発キット(EDK)をインストールします。

注意:
EDKをインストールするには、次のものが必要です。

- 自己更新コンソールの最新バージョンのEDK ZIPアーカイブ。(Cloud Controlコンソールから自己更新コンソールにアクセスするには、「設定」、「拡張性」、「自己更新」の順に選択します。)

- Javaバージョン1.7.0_51以上。

- Solaris、Linux、HP-UX、AIXまたはNew Technology File System (NTFS)を持つWindowsを実行するローカル・システム

EDKをインストールするには、次の手順を実行します。

1. 次のオプションのいずれかを使用して、EDK ZIPアーカイブをローカル・システムにダウンロードします。

- Enterprise Manager Cloud Control

1. Enterprise Manager Cloud Controlにログインします。

2. 「設定」メニューで、「拡張性」、「開発キット」の順に選択します。
拡張開発キット(EDK)ページが表示されます。

3. 「EDKのインストール中」で、「拡張開発キットをワークステーションにダウンロードします。」を選択します。

4. 13.1.0.0.0_edk_partner.zipをローカル・システムに保存します。

- Enterprise Managerコマンドライン・ユーティリティ(EM CLI)

注意:
EM CLIの設定の詳細は、第14.5.1.2項「EM CLIユーティリティの設定」を参照してください。

コマンド・プロンプトを開き、次のコマンドを実行します。

emcli get_ext_dev_kit

このコマンドでは、コマンドを実行したディレクトリと同じディレクトリにEDK zipアーカイブがダウンロードされます。このコマンドには、パラメータは必要ありません。

2. JAVA_HOME環境変数を設定し、PATHに含まれていることを確認します。例:

setenv JAVA_HOME /usr/local/packages/j2sdk1.7.0_51

setenv PATH $JAVA_HOME/bin:$PATH

3. ダウンロードしたEDK ZIPアーカイブをローカル・システム上のディレクトリでパッケージ化を解除します。例:

Unzip 13.1.0.0.0_edk_partner.zip

このコマンドでは、EDK ZIPアーカイブのパッケージ化を解除したディレクトリ(release_edk_partner)で次のディレクトリが作成されます。

release_edk_partner
|
bin
doc
lib
oui
samples
README

ディレクトリの内容の詳細は、EDKの内容に関する項を参照してください。

1.4 プラグインの設計

プラグインを作成する前に、ターゲット・タイプの監視と管理を行うために収集する必要のある情報を最初に決定する必要があります。内容は次のとおりです。

- 収集する必要のあるパフォーマンス・メトリックおよび構成メトリックの識別。

- 各メトリックの収集頻度の決定。メトリックの収集頻度は5分間に1回を下回らないようにすることをお薦めします。

- 顧客固有の運用に基づいた、これらのメトリックに対するデフォルトの警告およびクリティカルしきい値の指定。しきい値を超えるたびに、Enterprise Managerは、考えられる問題を管理者に通知するアラートを生成します。

1.5 基本プラグインの作成

原則として、次のように基本的な必須メタデータを含む、基本の監視プラグインの作成から開始します。

- 次の内容を定義するターゲット・タイプ定義ファイル。

- 必要な「レスポンス」メトリック・グループ。これには、ステータス・メトリックとパフォーマンス・メトリックが含まれています。

- ターゲットで認証するために必要な資格証明。

詳細は、第3章「ターゲット・メタデータ・ファイルの作成」を参照してください。

- メトリック・データと構成データを収集する頻度を定義する、デフォルトの収集ファイル。詳細は、「デフォルトの収集ファイルの作成」を参照してください。

- 収集したターゲット・データを表示するOracle Business Intelligence Publisher (BI Publisher)レポート。
詳細は、第6章「BI Publisherレポートの開発」を参照してください。

作成後、プラグインを検証およびパッケージ化します。第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

最後の手順として、プラグインをEnterprise Manager Cloud Controlにデプロイし、テストを開始して「レスポンス」メトリックのデータが返されることを確認します。

関連項目:
EDKでは、サンプルのホスト・プラグインを提供しています。これには、前述のすべての機能の例が含まれています。詳細は、サンプル・プラグインにバンドルされたREADMEを参照してください。

1.6 中間プラグインの作成

基本プラグインを作成した後、さらに複雑な機能を追加することによって、プラグインの機能を拡張する場合があります。

- さらに複雑なメトリックを追加します。
詳細は、「拡張メトリックの定義」を参照してください。

- ターゲットの構成データを収集する機能を提供します。これは、特定の時点でのターゲットの構成のスナップショットを作成するために使用します。
詳細は、第7章「ターゲット構成データの収集」を参照してください。

- メタデータ・ベースのメタデータ・カスタム・ユーザー・インタフェースを作成します。これは、基本的に、Enterprise Managerに対するターゲット・メトリックを表示するためのカスタムのターゲット・ホームページを追加します。
詳細は、第9章「管理ユーザー・インターフェースの定義」を参照してください。

- ターゲット・アソシエーションを定義します。これは、プラグインで管理されるターゲットのトポロジ・モデルを作成するために使用できます。
詳細は、第11章「導出されたアソシエーションの使用」を参照してください。

- ターゲット・タイプに固有の特定のタスクを実行するジョブ・タイプを定義します。
詳細は、第8章「ジョブ・タイプの追加」を参照してください。

1.7 拡張プラグインの作成

基本プラグインまたは中間プラグインの作成および検証に成功すると、拡張機能を追加してこれを拡張する場合があります。拡張機能には、次のものがあります。

- プラグインで管理されるターゲット・タイプの新規追加インスタンスを自動的に検出する機能の追加。
詳細は、第12章「ターゲット検出の定義」を参照してください。

- Flexベースのカスタム管理ユーザー・インタフェースの構築。このページは、Cloud Controlコンソールを介して、他のターゲット・ホームページでアクセスされます。
詳細は、第9章「管理ユーザー・インターフェースの定義」を参照してください。

- ターゲット・タイプに固有のコンプライアンス標準および監視ルールの定義。
詳細は、第13章「コンプライアンス標準の追加」を参照してください。

2 プラグインの定義

この章では、プラグインを作成するために定義する必要があるプラグイン・メタデータについて説明します

内容は次のとおりです。

- プラグインの定義の概要

- プラグイン・メタデータについて

- プラグイン定義ファイルの作成

- プラグイン定義ファイルの検証

- プラグインへのログ・ビューア・サポートの追加

- アップグレードのプラグインの定義

- プラグインの非推奨化

2.1 プラグインの定義の概要

プラグイン開発者は、プラグイン定義プロセスにおいて、次の手順に従う必要があります。

1. プラグイン識別子(ID)を定義します。
詳細は、プラグインIDの定義に関する項を参照してください。

2. プラグイン・バージョンを定義します。
詳細は、プラグイン・バージョンの定義に関する項を参照してください。

3. 次のように、プラグイン定義ファイルを作成します。

1. plugin.xmlファイルを作成します。
plugin.xmlファイルはプラグインを記述するメタデータを提供します。

詳細は、第2.3.1項「plugin.xmlファイルの作成」を参照してください。

2. plugin_registry.xmlファイルを作成します。
plugin_registry.xmlファイルは、プラグインがデプロイされる管理エージェントで必要なメタデータを提供します。

詳細は、第2.3.2項「plugin_registry.xmlファイルの作成」を参照してください。

4. プラグイン定義ファイルを次のプラグイン・ステージング・ディレクトリ(plugin_stage)にパッケージ化します。

- plugin_stage/plugin.xml

- plugin_stage/agent/plugin_registry.xml

詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

5. プラグイン定義ファイルを検証します。
詳細は、第2.4項「プラグイン定義ファイルの検証」を参照してください。

2.2 プラグイン・メタデータについて

基本プラグインでは、プラグイン自体のためのメタデータが必要です。これには、Oracle Management Serviceと管理エージェントで使用される名前とバージョンなどの情報、監視対象のターゲットが稼働しているかを示すメトリックの定義、およびメトリック・データを収集する頻度の定義などが含まれています。

2.2.1 プラグインIDの定義

プラグインは、一意のプラグイン識別子(ID)で識別されます。プラグインIDは、次の3つの部分から構成されています。

- ベンダーID (8文字)。例: test

- 製品ID (8文字)。例: switch

- プラグイン・タグ(4文字)。例: xkey

注意:

- ベンダーID、製品IDおよびプラグイン・タグは、先頭に数字を指定できません。また、特殊文字を含めることもできません 。すべてこれらの項目には英数字のみを指定してください。

- プラグイン・タグは、小文字のxで始まる必要があり、4文字を超えることはできません。すべての文字が小文字である必要があります。

- 1つ以上のプラグインを定義する場合、各プラグインのプラグイン・タグが個別および一意であることを確認してください。

- 既存のプラグインの前の名前を維持する場合、AgentSideCompatibility要素を使用する必要があります。それ以外の場合、プラグイン検証に失敗します。プラグイン検証の詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。AgentSideCompatibility要素の詳細は、表2-1を参照してください。

前述の例で作成したプラグインIDは、次のとおりです。

test.switch.xkey

注意:
プラグインIDは、Enterprise Manager全体で一意である必要があります。

2.2.2 プラグイン・バージョンの定義

各プラグインにバージョンを割り当てる必要があります。プラグインのバージョニングの構成は、次のとおりです。

a.b.c.d.e

- a.b: 開発に使用するEnterprise Manager拡張開発キット(EDK)のバージョン(13.1、13.2など)。

- c: 開発者が割り当てるプラグインのバージョン。この値は、同じEnterprise Manager Cloud Controlのリリースで、プラグインがリリースされるたびに加算されます。

- d: プラグインがベータ・バージョンか本番バージョンかを示します。0はベータ・バージョンを示し、1以上は本番バージョンを示します。

- e: 予備。デフォルト値は0です。

全部組み合せると、Enterprise Manager Cloud Control 13cで最初に作成されるプラグインのバージョンを次の例に示します。

13.1.1.1.0

注意:
プラグインを作成およびデプロイするたびに、プラグインのバージョンを加算して更新することをお薦めします。たとえば、13.1.1.1.0、13.1.2.1.0、13.1.3.1.0などです。

2.3 プラグイン定義ファイルの作成

次の2つのメタデータ・ファイルが、Enterprise Manager Cloud Control 13cに対してデプロイされるすべてのプラグインに必要です。

- plugin.xml
このファイルはプラグインのデプロイメント中に使用されます。これには、名前やバージョンなどのプラグインを識別するプロパティが含まれます。また、Enterprise Manager Cloud Controlに追加されるターゲット・タイプのセットを宣言します。

- plugin-registry.xml
このファイルは、管理エージェントにデプロイされるプラグインに含まれるコンポーネントを宣言します。

2.3.1 plugin.xmlファイルの作成

plugin.xmlファイルはプラグインを記述するメタデータを提供します。

次の項では、plugin.xmlに含めることができる、必須のタグおよび一部のオプションのタグについて説明します。

この例は、プラグイン用のサンプルのplugin.xmlを示しています。

<?xml version = '1.0' encoding = 'UTF-8'?>
<Plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/plugin_
metadata plugin_metadata.xsd"
xmlns="http://www.oracle.com/EnterpriseGridControl/plugin_metadata">

<PluginId vendorId="test" productId="demo" pluginTag="xkey"/>

<PluginVersion value="13.1.1.1.0"/>

<ShortDescription>Test plugin for the Test Demo Plug-in.</ShortDescription>
<Readme><![CDATA[Brief details about the Test Demo plug-in]]></Readme>
<!--
<AgentSideCompatibility>
<Version>Previous_Version</Version>
</AgentSideCompatibility>
-->

<TargetTypeList>
<TargetType name="test_demo_xkey" isIncluded="TRUE">
<VersionSupport>
<SupportedVersion supportLevel="Basic" minVersion="9.2.0.1"
maxVersion="9.8.0.0.0"/>
</VersionSupport>
</TargetType>
</TargetTypeList>

<PluginDependencies>
<DependentPlugin pluginDependencyType="RunTime">
<DepPluginId vendorId="test" productId="switch" pluginTag="xyz1"/>
<BaseVersion version="11.2.0.1.0"/>
</DependentPlugin>
<DependentPlugin pluginDependencyType="RunTime">
<DepPluginId vendorId="test" productId="switch" pluginTag="xyz2"/>
<BaseVersion version="11.2.0.1.0"></BaseVersion>
</DependentPlugin>  </PluginDependencies>
<PluginAttributes Type="MP" Category="Databases"/>
</Plugin>

2.3.1.1 plugin.xml要素の概要

表2-1に、plugin.xmlファイルに含まれるキー要素を示します。

表2-1 plugin.xmlファイル内のキー要素

要素

必須

説明

Plugin

Y

ファイルのルート要素。

PluginID

Y

プラグインに割り当てられている一意の識別子。

詳細は、プラグインIDの定義に関する項を参照してください。

PluginVersion

Y

プラグイン・バージョン。

詳細は、プラグイン・バージョンの定義に関する項を参照してください。

PluginOMSOSAruId

N

プラグインがデプロイされるOracle Management Serviceのオペレーティング・システム(OS)ID。通常、この要素は2000 (一般)に設定されています。

詳細は、第2.3.1.2項「プラグインの動作保証」を参照してください。

Readme

Y

Cloud Controlコンソールのプラグイン・ページに表示されるプラグインの情報を示します。

プラグイン・ページにアクセスするには、「設定」メニューから、「拡張性」、「自己更新」、「プラグイン」の順に選択します。

PluginAttributes

N

プラグイン・タイプ、表示名、カテゴリなどのプラグインの属性を定義します。

メタデータ・プラグインのデフォルトのプラグイン・タイプは、MPです。デフォルトのカテゴリは、Othersです。

有効なタイプの値は次のとおりです。

- MP
デフォルトUIを持つメタデータ・プラグイン

- MPP
カスタムUIを持つメタデータ・プラグイン

有効なカテゴリの値は次のとおりです。

- Applications

- Databases

- Middleware

- Cloud

- Engineered Systems

- Servers, Storage and Network

- Others
注意: Othersではなく特定のカテゴリ値を使用することをお薦めします。

TargetTypeList

N

プラグインにパッケージ化されているターゲット・タイプ名をそれぞれ指定する1つ以上のTargetType要素を含みます。

ターゲット・タイプのメタデータ・ファイルの詳細は、「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

各TargetType要素には、ターゲット・タイプのバージョンがサポートされているかどうかを識別するVersionSupport要素も含まれています。

PluginDependencies

N

プラグインに存在する依存性を記述します。依存性は次のように記述されます。

- RunTimeMandatory: この依存性は、現在のプラグインが依存するプラグインが現在のプラグインをデプロイする前に存在する必要があることを示します。たとえば、依存するプラグインが存在しない場合、プラグインAをデプロイできません。プラグインAは実行時にプラグインBの機能を使用しますが、プラグインBが見つからない場合はこの機能が中断します。

- RunTime: この依存性は、機能の依存性を含む現在のプラグインのデプロイメントが依存するプラグインなしで続行できることを示します。現在のプラグインが依存するプラグインが後で環境に使用される場合、依存機能が有効化されます。依存性の他に、前提条件を記述することもできます。現在サポートされている前提条件のタイプはバグです。

- CompileTime: この依存性は、依存プラグインが現在のプラグインのデプロイメント前に存在する必要があることを示します。つまり、現在のプラグインが依存プラグインからAPIを明示的に使用し、作成時間の依存性を持ちます。

AgentSideCompatibility

N

現在のプラグインと互換性がある以前のプラグイン・バージョンを識別します。

この要素を指定することによって、管理エージェント側の以前のプラグイン・メタデータがOMS側のプラグイン・メタデータの新しいバージョンと互換性があることを明示的に示します。つまり、以前のプラグインをアップグレードした後、メトリック、しきい値、構成収集などの機能を中断せずにデータをOMSの新しいバージョンにアップロードできます。

プラグインの新しいバージョンと互換性がないプラグインの以前のバージョンがある場合、この要素を使用して互換性があるバージョンのみをリストできます。たとえば、バージョン12.1.0.2.0が13.1.1.1.0 (新しいプラグイン・バージョン)と互換性がない場合、12.1.0.3.0および12.1.0.4.0をリストして12.1.0.3.0および12.1.0.4.0プラグインのみが新しい13.1.1.1.0プラグインと互換性があることを示すことができます。

2.3.1.2 プラグインの動作保証

注意:
すべてのメタデータ・プラグインはOMS側で汎用である必要があります。また、すべてのプラットフォームで暗黙的に動作保証されています。ただし、プラグインでは管理エージェントでOSの動作保証を指定できます。

Enterprise Managerは多数のOSプラットフォームでリリースされるため、それぞれのOSプラットフォームでのプラグインの動作方法を考慮する必要があります。plugin.xmlファイルには、動作保証メカニズムをサポートする要素と属性が含まれています。

プラグインがOSプラットフォームのサブセットにのみ該当する場合は、表2-2で定義されているタグを使用できます。<Certification>セクションに何の情報も指定しない場合、プラグインはすべてのプラットフォームで動作保証されているとみなされます。

表2-2 動作保証のタグ

タグ

説明

Component type

プラグイン・コンポーネントを指定します。

有効な値は次のとおりです。

- Agent: 管理エージェント・コンポーネント

- Discovery: 検出コンポーネント

PortARUId value

OSまたはプラットフォームのARU IDを指定します。

有効な値は次のとおりです。

- 46: Linux x86 (32ビット)

- 212: AIX 5Lおよび6.1 (64ビット)

- 226: Linux x86-64 (64ビット)

- 23: Solaris Sparc (64ビット)

- 267: Solaris x86-64 (64ビット)

- 233: Microsoft Windows x86-64 (64ビット)

次の例は、プラグインがLinux 32およびLinux 64プラットフォームでのみ動作するように設計されていることを示しています。動作保証されたポートを指定しない場合、プラグインはデフォルトですべてのオペレーティング・システムとプラットフォームで動作保証されています。ただし、少なくとも1つのPortARUId要素を指定した場合、そのコンポーネントは指定したプラットフォームでのみ動作保証されています。

注意:
管理エージェントと検出コンポーネントは、同じ値を持つ必要があります。

例: 汎用プラグインの動作保証

<Certification>
<Component type="Agent">
<CertifiedPorts>
<PortARUId value="46" />
<PortARUId value="226" />
</CertifiedPorts>
</Component>
<Component type="Discovery">
<CertifiedPorts>
<PortARUId value="46" />
<PortARUId value="226" />
</CertifiedPorts>
</Component>
</Certification>

2.3.2 plugin_registry.xmlファイルの作成

plugin_registry.xmlファイルは、プラグインがデプロイされる管理エージェントで必要なメタデータを提供します。これはプラグイン・アーカイブ内の/agentディレクトリにパッケージ化され、ターゲットを監視する管理エージェントにデプロイされます。

次の例は、plugin_registry.xmlファイルのサンプルを示しています。TargetTypes要素には、プラグイン・アーカイブ内のターゲット・タイプのメタデータ・ファイルの場所への参照が含まれています。場所は、管理エージェントのサブディレクトリから始まる、plugin_stageディレクトリ・ルートに対する相対ディレクトリ、またはplugin_registry.xmlファイルが存在する場所です。

同様に、TargetCollections要素には、プラグインのデフォルト収集メタデータ・ファイルへの参照が含まれています。これも、プラグインにパッケージ化されています。

例: plugin_registry.xmlファイルのサンプル

<?xml version="1.0"?>
<PlugIn ID="test.demo.xkey" Description="Demo Sample Host Plugin" Version="13.1.1.1.0" HotPluggable="false"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/plugin plugin.xsd">
<TargetTypes>
<FileLocation>metadata/test_switch_key.xml</FileLocation>  </TargetTypes>
<TargetCollections>
<FileLocation>default_collection/test_switch_key_collection.xml</FileLocation>
</TargetCollections>
<PlugInLibrary>
<FileLocation>archives/em-as-fmw-fetchlet.jar</FileLocation>
<FetchletRegistration>
<Fetchlet ID="DMS" ExecutionClass="oracle.sysman.as.fetchlets.DMSFetchlet" Version="" Description="" Adapter=""/>
</FetchletRegistration>
<AdditionalClassPath>
<FileLocation>archives/dms.jar</FileLocation>
</AdditionalClassPath>
</PlugInLibrary>
</PlugIn>

2.3.2.1 plugin_registry.xml要素の概要

表2-3に、ファイル内に含まれているキー要素を示します。

表2-3 plugin_registry.xmlファイル内のキー要素

要素

必須

説明

Plugin

Y

ファイルのルート要素。次の属性があります。

- ID: 必須。プラグインに割り当てられている一意の識別子。
詳細は、プラグインIDの定義に関する項を参照してください。

- Description: オプション。プラグインを説明するタイトル。

- Version: 必須。プラグイン・バージョン。
詳細は、プラグイン・バージョンの定義に関する項を参照してください。

TargetTypes

N

1つ以上のFileLocation要素が含まれています。それぞれの要素で、プラグインにパッケージ化されているターゲット・タイプのメタデータ・ファイルのパスとファイル名を指定します。

ターゲット・タイプのファイルの詳細は、ターゲット・タイプのメタデータ・ファイルの作成に関する項を参照してください。

TargetCollections

N

1つ以上のFileLocation要素が含まれています。それぞれの要素で、ターゲット・タイプのデフォルトの収集を指定します。

このファイルの詳細は、「デフォルトの収集ファイルの作成」を参照してください。

PlugInLibrary

N

プラグインにパッケージ化されている様々なタイプのアーティファクト(fetchlet、receiveletなど)をリストします。

PlugInLibrary要素には、次の下位要素が含まれています。

- FileLocation: 必須。次に示したfetchletの実装を含むJARの場所を定義します。

- FetchletRegistration: オプション。fetchlet ID (「plugin_registry.xmlファイルのサンプル」の例ではDMS)をfetchletインタフェースの実装を含むクラスにマップするエントリを作成します。

- ReceiveletRegistration: オプション。receiveletインタフェースの実装を含むクラスにreceivelet IDをマップする、エントリを作成します。

- AdditionalClassPath: オプション。特定のライブラリ用にプラグインによってロードされるように追加のJARファイルを指定します。

AdditionalClassPath

N

すべてのプラグイン・ライブラリによって共有されるプラグインによってロードされるように追加のJARファイルを指定します。

2.4 プラグイン定義ファイルの検証

plugin.xmlおよびplugin_registry.xmlファイルが正しく定義されていることを確認するには、EDKの/binディレクトリから次のコマンドを入力します。

empdk validate_plugin -stage_dir plugin_stage

前述のコマンドのplugin_stageは、プラグインのステージング・ディレクトリを示します。

EDKの詳細は、第1.2項「拡張開発キット(EDK)」を参照し、empdkコマンドおよびその使用方法の詳細は、第14.3項「プラグインの検証」を参照してください。

2.5 プラグインへのログ・ビューア・サポートの追加

Enterprise Manager Cloud Controlリリース12c (12.1.0.3)から、デプロイされたプラグイン用のログ・ファイルをCloud Controlのログ・ビューアで表示できます。このコンポーネントにアクセスするには、Cloud Controlの「エンタープライズ」メニューから「モニタリング」を選択し、「ログ」を選択します。

次の手順に従って、この機能を有効にします。

1. プラグイン用のログ・ビューア登録XMLファイルを作成します。このXMLファイルのDTDは次のとおりです。
oracle/sysman/emSDK/logmgmt/registration/LogMgmtTargetTypeRegistration.xsd

2. このファイルをプラグイン・ディレクトリ構造内のoms/metadata/logmgmt/にパッケージ化します。

次に、ログ・ビューア登録ファイルの例を示します。

例: ログ・ビューア登録ファイルのサンプル

<LogMgmtUITargetConfig TARGET_TYPE="%your targe type%">
<LogViewerImpl CLASS_NAME="oracle.sysman.emas.model.logmgmt.MASLogViewer"/>
<VersionProperties VALID_VERSIONS="11" MIN_META_VER="11.00000"VERSION_
CATEGORY_PROP_WILDCARD_CHAR="*"/>
</LogMgmtUITargetConfig>

2.6 アップグレードのプラグインの定義

プラグインの開発中に、プラグインの後続のバージョンを計画する場合、プラグインをアップグレードできる、つまり古いバージョンのプラグインを削除せずに新しいバージョンをデプロイできることを確認する必要があります。

プラグインをアップグレードできることを確認するには、次の手順を実行します。

1. 新しいplug-in.xmlファイルで、互換性のある以前のバージョンのプラグインを明示的に指定して、AgentSideCompatibilityタグを含めます。
AgentSideCompatibilityタグの詳細は、表2-1を参照してください。

注意:

- 少なくとも以前のバージョンを2つ含めることをお薦めします。

- 以前のプラグイン・メタデータが新しいバージョンと互換性がない場合、アップグレード後にメトリックおよび収集エラーが表示される可能性があります。プラグインのアップグレードの問題を回避するためにAgentSideCompatibility要素に互換性のあるバージョンのプラグインをリストすることをお薦めします。

2. AgentSideCompatibility要素に以前のプラグインのバージョンを指定する場合、プラグイン・ステージング・ディレクトリにこれらのプラグイン・バージョンのOPARをバンドルする必要があります。
プラグイン・ステージング・ディレクトリ(plugin_stage)で、released_pluginsディレクトリを作成し、このディレクトリに以前にリリースされたプラグインのOPARアーカイブ(たとえば、12.1.0.2.0_test.demo.xkey_2000_0.opar)を配置します。

プラグイン・ステージング・ディレクトリの詳細は、第14.2項「プラグインのステージング」を参照してください。

3. プラグインの以前のすべてのバージョンのアップグレード・テストを実行して、次のようにすべての機能が正しく動作していることを確認します。

- メトリック収集の検証

- 構成収集の検証

- アップグレードのためにメトリック収集エラーがないことの確認

- 更新されたメトリックしきい値およびテンプレートが予期したとおりに選択されていることの確認

- 更新されたジョブ・メタデータが予期したとおりに選択されていることの確認

2.7 プラグインの非推奨化

プラグインを非推奨としてマークするには、plugin.xmlファイルに次の行を追加します。

<Deprecated />

例:

<?xml version = '1.0' encoding = 'UTF-8'?>
<Plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/plugin_        metadata plugin_metadata.xsd"
xmlns="http://www.oracle.com/EnterpriseGridControl/plugin_metadata">

<PluginId vendorId="test" productId="demo" pluginTag="xkey"/>

<PluginVersion value="12.1.0.1.0"/>

<Deprecated/>

<ShortDescription>Test plugin for the Test Demo Plug-in.</ShortDescription>
<Readme><![CDATA[Brief details about the Test Demo plug-in]]></Readme>
.
.
.

注意:
プラグインが非推奨としてマークされても、次のメジャー・リリースで廃止されるまで引き続き同じレベルのサポートが提供されます。

3 ターゲット・メタデータ・ファイルの作成

この章では、ターゲット・メタデータ・ファイル作成プロセスの手順について説明します。内容は次のとおりです。

- ターゲット・メタデータ・ファイル作成の概要

- ターゲット定義ファイルの概要

- ターゲット・タイプ・メタデータ・ファイルの作成

- ターゲットから収集するメトリックの定義

- デフォルトの収集ファイルの作成

- ターゲット・メタデータの作成のガイドライン

- ターゲット・メタデータのローカライズ

- 新規ターゲット・タイプのチェック

- ターゲット・タイプ定義のテスト

- メタデータXMLの検証

- ターゲット作成プロセスのトラブルシューティング

3.1 ターゲット・メタデータ・ファイル作成の概要

プラグイン開発者は、ターゲット・メタデータ・ファイルの作成において、次の手順に従う必要があります。

1. ターゲット定義ファイルを作成します。
ターゲット・タイプ・メタデータ・ファイルは、取得するデータ、およびこのターゲット・タイプでそのデータを取得する方法を管理エージェントに指示します。

詳細は、項3.3「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

2. ターゲットから収集するためのメトリックを定義します。
メトリックは、ターゲットから収集されたデータの特定部分を参照します。関連する一連のメトリックは、集合となってメトリック・グループを構成します。

詳細は、3.4項「ターゲットから収集するメトリックの定義」を参照してください。

3. 収集するターゲット構成データを定義します。
ターゲットの構成データを収集し、特定時点のターゲットの構成を表すスナップショットとして管理リポジトリに保存できます。各構成スナップショットは、特定のターゲット・インスタンスと関連付けられます。

詳細は、第7章「ターゲット構成データの収集」を参照してください。

4. デフォルトの収集ファイルを作成します。
デフォルトの収集ファイルは、ターゲットから収集され、収集スケジュールなどの情報とともに管理リポジトリにアップロードされるメトリック・データを定義します。

詳細は、項3.5「デフォルトの収集ファイルの作成」を参照してください。

5. 様々な定義ファイルを、プラグインのステージング・ディレクトリ(plugin_stage)にパッケージ化します。

- ターゲット・タイプ・メタデータ・ファイル

- plugin_stage/oms/metadata/targetType/target_type.xml

- plugin_stage/agent/metadata/target_type.xml

注意:
このファイルの同一のコピーを、/omsおよび/agentの両方のディレクトリに配置する必要があります。

- デフォルトの収集ファイル

- plugin_stage/oms/metadata/default_collection/target_type.xml

- plugin_stage/agent/default_collection/target_type.xml

注意:
このファイルの同一のコピーを、/omsおよび/agentの両方のディレクトリに配置する必要があります。

- 構成メタデータ・ファイル
plugin_stage/oms/metadata/snapshotlive/target-type_ecmdef.xml

詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

3.2 ターゲット定義ファイルの概要

プラグインがEnterprise Manager Cloud Controlによる監視と管理を許可するターゲット・タイプを定義するには、XMLメタデータ・ファイルが2つ必要です。

- ターゲット・タイプ・メタデータ・ファイル
ターゲット・タイプの定義には、主に、管理エージェントがターゲットに対して収集する必要のあるメトリックが含まれます。ファイルには、ターゲット・タイプに対して収集されるすべてのメトリックのリスト、および各メトリックの計算方法の詳細が含まれます。

詳細は、項3.3「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

- デフォルトの収集ファイル
このファイルは、メトリック・データが収集される間隔、またはターゲットから受信する間隔を定義します。各メトリックのオプションのアラートしきい値および対応するオプションのアラート・メッセージを指定できます。Cloud Controlユーザーは、デフォルトの収集間隔をオーバーライドできますが、デフォルト値はこのファイルに指定する必要があります。

詳細は、項3.5「デフォルトの収集ファイルの作成」を参照してください。

この章では、プラグイン・ターゲットの構成データの収集に必要なメタデータ定義についても説明します。これは高度な機能ですが、多くのプラグインで便利です。詳細は、7.2項「構成定義ファイルについて」を参照してください。

後続の項には、ターゲット・タイプおよびデフォルトの収集メタデータ・ファイルの作成方法のサマリーと、ターゲット構成データ収集の概要が記載されています。

3.3 ターゲット・タイプ・メタデータ・ファイルの作成

ターゲット・タイプ・メタデータ・ファイルは、取得するデータ、およびこのターゲット・タイプについてそのデータを取得する方法をOracle Management Agentに指示します。

表3-1で説明するように、最上位の定義レベルでは、ターゲット・タイプ・メタデータ・ファイルは4つの主要XML要素から構成されます。

表3-1 ターゲット・タイプ・メタデータ・ファイルの主要要素

要素

説明

TargetMetadata

名前やバージョンなど、プラグインの情報を指定します。

Metric

1つ以上のメトリックが含まれ、そのそれぞれがターゲットから収集されるデータの特定部分を定義する、メトリック・グループを定義します。

InstanceProperties

ターゲット・インスタンスの作成時に移入されるプロパティを定義します。

CredentialTypes/CredentialSets

ターゲット・インスタンスとの認証でプラグインにより必要とされる資格証明を指定します。

Enterprise Managerには、最も一般的なターゲット・タイプを扱う事前定義済ターゲット・タイプ・メタデータ・ファイルが付属しています。事前定義済ターゲット・メタデータ・ファイルが、監視する必要のあるターゲットのタイプに適合しない場合は、次のいずれかを実行します。

- ターゲット・タイプ・メタデータ・ファイルを作成し、新しいターゲット・タイプを定義

- 事前定義済メタデータ・ファイルのいずれかを、新しいターゲット・タイプを定義するためのテンプレートとして使用し、ファイルを新規プラグインとして再パッケージ化

この項では、ターゲット・タイプ・メタデータ・ファイルの構造を簡単に説明します。ターゲット・タイプ・メタデータ・ファイルの完全な例は、EDKを参照してください。

edk/samples/plugins/SampleHost/oms/metadata/targetType/demo_hostsample.xml

このディレクトリ・パスで、edkは、EDKアーカイブを展開したディレクトリを表しています。EDKアーカイブの詳細は、1.2項「拡張開発キット(EDK)」を参照してください。

ターゲット・タイプ・メタデータ・ファイル作成の詳細は、3.6項「ターゲット・メタデータの作成のガイドライン」を参照してください。

3.3.1 基本のターゲット・タイプ・メタデータ・ファイルの作成

次の例は、ターゲット・タイプ・ファイルに含まれている必要がある最低限の必須情報を示しています。

例: ターゲット・タイプ・ファイル

<TargetMetadata META_VER="2.0" TYPE="demo_hostsample">
<Display>
<Label NLSID="hs_displayname">Demo Plugin Sample Host</Label>
</Display>
<Metric NAME="Response" TYPE="TABLE">
<Display>
<Label NLSID="hs_response_displayname">Response</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Status" TYPE="NUMBER">
<Display>
<Label NLSID="hs_response_status">Status (up/down)</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OSLineToken">
<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>
<Property NAME="fake" SCOPE="INSTANCE"
OPTIONAL="TRUE">USE_FAKE_DATA</Property>
<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>
<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/emx/demo_hostsample/datacollector.pl --collect Response --fake %fake%</Property>
<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>
<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>
</QueryDescriptor>
</Metric>
<InstanceProperties>
<InstanceProperty NAME="SAMPLE_DATA" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="EMPLOYEE_ID_iprop">Employee ID</Label>
</Display>
</InstanceProperty>
</InstanceProperties>
</TargetMetadata>

後続の項では、前述の例で示したXML定義の詳細を説明します。

3.3.2 ターゲット・タイプ・メタデータ・ファイルのネーミング

新しいターゲット・タイプを追加する際は、Enterprise Managerのネーミング規則に従うことお薦めします。このネーミング規則により、複数のベンダーの類似する製品が使用されている環境で、ファイルのネーミングが一貫性を持つようになります。ターゲットのネーミング規則は、vendorID_productID_PluginTagという形式に従います。

例:

test_demo_targetType.xml

3.3.3 ターゲット・タイプ・メタデータの定義

ターゲット定義ファイルのヘッダーの後の最初の行は、ターゲット・タイプを識別します。次の引用では、メタデータ・バージョン(META_VER="2.0")およびターゲット・タイプ(TYPE="test_demo_targetType")を定義しています。

<TargetMetadata META_VER="2.0" TYPE="test_demo_targetType">

TargetMetadata要素のTYPE属性およびMETA_VER属性は、デフォルトの収集メタデータ・ファイルのTargetCollection要素のTYPE属性およびMETA_VER属性と一致している必要があります。デフォルトの収集メタデータ・ファイルの詳細は、項3.5「デフォルトの収集ファイルの作成」を参照してください。

管理エージェントごとに使用可能なメタデータ・バージョンは1つのみですが、メタデータをバージョニングすることにより、管理対象環境内に同じターゲット・タイプ・メタデータの異なるバージョンを同時に存在させることが可能になります。ターゲット・メタデータ・ファイルを更新するたびに、メタデータのバージョンを更新する必要があります。

メタ値の構文は、MajorNumber.MinorNumberです。MinorNumberの値は1桁または2桁にできます。MinorNumberに1桁または2桁を使用し、プラグインのライフサイクル全体を通してその構文を引き続き使用することを決めることが重要です。

1桁のMinorNumberは最大9回まで更新でき、その後MajorNumber値を増やす必要があります。例:

1.0, 1.1, 1.2, ...,1.9, 2.0, 2.1

2桁のMinorNumberは最大99回まで改訂できます。例:

1.01, 1.02, 1.09, ..., 1.10, 1.11, ..., 1.99, 2.01

1桁形式と2桁形式を組み合せることはできません。たとえば、バージョンを1.9から1.10に上げることは有効ではありません。

プラグインの開発中に1つ以上のメトリックのメタデータを変更するか、資格証明を変更するか、ターゲット・プロパティ・ファイルを更新する場合、TargetMetadata要素のMETA_VER属性の値を次の桁値に増分してください。たとえば、現在のバージョンが1.0の場合、メトリック・データを変更するときはその値を1.1に設定してください。

<TargetMetadata META_VER="1.1" TYPE="demo_hostsample">

メトリックを変更するたびに、引き続きバージョンを増分させます。そうしないと、前のバージョンがデプロイされていた同じ開発またはテスト用インストールにプラグインがデプロイされると、NullPointerExceptionエラーが発生することがあります。

プラグインの開発が完了したら、META_VER値は安全に実際の本番バージョンに設定できます。

3.3.4 ターゲット資格証明の定義

ほとんどの場合、データの収集やジョブの実行を行う各ターゲット・インスタンスとの認証にはプラグインが必要です。認証の有効化に必要な資格証明タイプおよび資格証明セットは、ターゲット・タイプ・メタデータ・ファイル内のCredentialInfo要素に定義されます。

詳細は、第16章「資格証明の定義」を参照してください。

ターゲットの資格証明情報には、資格証明フィールド(列)とターゲット・タイプに固有の資格証明セットが含まれ、定義されます。Enterprise Managerのセキュリティ・フレームワークには、これらの資格証明を管理し、様々な管理機能を実行する際に使用するための機能が用意されています。

3.3.5 タイプ・プロパティの定義

拡張フレームワークでは、タイプ・プロパティを使用して、フレームワーク処理のターゲット・タイプを内部的に分類します。これはエンド・ユーザーには表示されません。対応するサブシステムでは、ターゲット・タイプの機能を有効化する際や、適切な検証チェックを実行する際に、タイプ・プロパティが使用されます。

タイプ・プロパティ・レベルに設定された値は、特定のターゲットにのみ適用されるインスタンス・プロパティとは異なり、そのタイプのすべてのターゲットとあらゆるメタバージョン全体に適用されます。

次の例では、ターゲット・タイプがターゲットのシステム・クラスであることを指定しています。拡張フレームワークではこの設定を使用して、すべてのシステム・ページのターゲットを表示します。

<TypeProperties>
<TypeProperty PROPERTY_NAME="is_system" PROPERTY_VALUE="1"/>
</TypeProperties>

表3-2に、使用可能なタイプ・プロパティを説明します。

表3-2 タイプ・プロパティ

プロパティ名

説明

is_system

システム・タイプのモデリングとしてタイプを指定します。この値は、すべてのシステム・タイプに設定する必要があります。

- is_cluster: クラスタのモデリングとしてタイプを指定します。クラスタは、システムのサブセットです。

- is_end_user: ユーザーが選択したエンティティから構成されたシステムに設定します。これらはシステムのサブセットです。

注意: is_nameプロパティでは、プロパティ値は常に1に設定されます。

is_service

サービスのモデリングとしてタイプを指定します。

注意: is_nameプロパティでは、プロパティ値は常に1に設定されます。

is_aggregate

この値は、Enterprise Managerにより自動的に設定されます。変更しないでください。

is_group

使用しないでください。

is_composite

使用しないでください。

is_install

この値は、インストール・ホームの管理可能なエンティティ(Oracleホームなど)に設定します。

is_existence

この値は、存在のみの状態で検出されたエンティティ、つまり、検出されたがまだOracleによって管理できないエンティティに設定します。

使用可能な値は次のとおりです。

- 1: 存在のみの状態で検出されたエンティティを示します。

注意: エンティティがOracleの管理対象エンティティになった場合は、このエントリをターゲット・タイプ・メタデータ・ファイルから削除し、ターゲット・タイプを再度登録する必要があります。

priv_propagation_mode

このプロパティは権限の伝播に使用され、権限の伝播モードを指定します。

使用可能な値は次のとおりです。

- 0: 権限の伝播は行われません。

- 1: インスタンス・レベルで権限の伝播が行われます。

- 2: すべてのターゲットで権限が伝播されます。

disallow_redundancy_group

特定のターゲット・タイプ(冗長性グループの無効化が設定されている)の冗長性グループを無効化するために、冗長性グループ機能によって使用されます。冗長性グループにこのタイプをメンバーとして含めることを許可するかどうかを指定します。

使用可能な値は次のとおりです。

- 1: 冗長性は許可されません。

member_target_type

ターゲット・タイプを指定されたmember_target_typeにロックするために、冗長性グループ機能によって使用されます。

TargetVersion

(すべてのターゲット・ページおよびプラグイン資格証明の)ターゲット・タイプのターゲット・バージョンを表す、インスタンスまたは動的プロパティの名前を指定します。

注意: ターゲット・タイプを定義する場合にこのプロパティを含めることをお薦めします。

例: タイプ・プロパティの定義

<TargetMetadata META_VER="1.1" TYPE="oracle_dbsys" CATEGORY_PROPERTIES="" RESOURCE_BUNDLE_PACKAGE="oracle.sysman.db.rsc">
<Display>
<Label NLSID="oracle_dbsys_nlsid">Database System</Label>
</Display>

<TypeProperties>
<TypeProperty PROPERTY_NAME="is_system" PROPERTY_VALUE="1"/>
<TypeProperty PROPERTY_NAME="priv_propagation_mode" PROPERTY_VALUE="2"/>
</TypeProperties>

<MonitoringMode MEDIATOR="Repository"/>
</TargetMetadata>

3.3.6 インスタンス・プロパティの定義

インスタンス・プロパティは、ターゲット・インスタンスの作成時に移入されます。ターゲット・タイプ・メタデータ・ファイル内のInstanceProperties記述子は、この特定のターゲット・タイプの新規ターゲット・インスタンスを追加する際に管理者がEnterprise Manager Cloud Controlコンソールで指定する必要のあるプロパティを定義します。

InstancePropertiesセクションは、ターゲット・タイプ・メタデータ・ファイル内の様々な場所に定義できますが、一貫性を維持するために、このセクションをファイルの最後に定義することをお薦めします。ターゲット・タイプ・メタデータ・ファイルで定義されるインスタンス・プロパティは、ターゲット・タイプ・メタデータ・ファイル内のこれらのインスタンス・プロパティに対して指定される値に解決されます。

ターゲット・インスタンス・プロパティは、名前の付いた値であり、ターゲットのメトリックの計算、またはターゲットのホームページでの表示に使用できます。ターゲット・インスタンス・プロパティのリストをメタデータで指定して、データ駆動のユーザー・インタフェースがターゲットを登録できるようにすること、またOracle Management Agentがターゲット・インスタンスの完了を検証できるようにすることができます。

3.3.6.1 静的なインスタンス・プロパティ

インスタンス・プロパティは、ターゲット・インスタンスの作成時に移入されます。この例では、プロパティは必須(OPTIONAL="FALSE)であり、資格証明プロパティです。

<InstanceProperties>
<InstanceProperty NAME="password" OPTIONAL="FALSE" CREDENTIAL="TRUE">
<Display>
<Label NLSID="USER_PASSWORD">User Password</Label>
</Display>
</InstanceProperty>
</InstanceProperties>

3.3.6.2 動的なインスタンス・プロパティ

動的なインスタンス・プロパティの値は、ターゲット・インスタンスからデータを収集している管理エージェントによって戻されます。通常、メトリック収集を実行するfetchletに渡すプロパティを定義するために、QueryDescriptor内で使用されます。QueryDescriptor要素の詳細は、表3-4を参照してください。fetchletの詳細は、第20章「fetchletsの使用」を参照してください。

次の例のプロパティは、3.4.2項「基本のResponseメトリック・グループの定義」で説明されています。

<InstanceProperties>
<DynamicProperties NAME="AruidInfo" FORMAT="ROW" OPT_PROP_LIST="ARUID">
<QueryDescriptor FETCHLET_ID="OSLineToken">
<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>
<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>
<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>
<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/hostaruid.pl</Property>
<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>
<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>  </QueryDescriptor>
</DynamicProperties>
</InstanceProperties>

動的プロパティを使用すると、特定のプロパティの値を正しく指定するようユーザーに要求するかわりにそのプロパティを計算できるため、ターゲットの構成に関連する作業が削減されます(たとえば、データベースのVersionプロパティは特定のアドレッシング情報を確実に計算できます)。

動的プロパティは、XMLファイルで定義されている順番で計算されるため、順番の遅い動的プロパティでは、必要な場合には、XMLファイルのそれより前の動的プロパティの値を使用することが可能です。

管理エージェントは、ターゲットの再起動が検出されるたび(ターゲット・ステータスが「稼働中」に変化するたび)にプロパティを再計算することで、これらの動的プロパティを正常に計算するにはターゲットが稼働している必要があるという事実に対応しています。

注意:
一部のプロパティは、ターゲットにアクセスせずに計算できるため、ターゲットが停止している場合でも、動的プロパティを計算できる場合があります。
ターゲットの停止中に動的プロパティを計算するには、次の属性を含めます。

COMPUTE_WHEN_DOWN="TRUE"

3.4 ターゲットから収集するメトリックの定義

メトリックは、Cloud Controlのターゲット監視機能の中核です。様々なターゲットを監視および管理するCloud Controlの機能を説明する際、実際に説明するのは、ターゲット・メトリックを収集、処理、表示する機能についてです。

メトリックは、ターゲットから収集されたデータの特定部分を参照します。

メトリックには、2つの基本的なタイプがあります。

- プル・メトリック
このモデルでは、プラグインにより、デフォルトの収集ファイルに指定された頻度でメトリック・データのターゲットがポーリングされます。これが、プラグインにより使用される最も一般的なタイプのメトリックです。

このタイプのメトリックでは、入力として引数(たとえば、スクリプト、SQL文、ターゲット・インスタンスのプロパティ)を受け取り、書式設定されたデータを返すパラメータ化されたデータ・アクセス・メカニズムであるfetchletを使用する必要があります。

プラグインで使用できるよう、事前定義済のfetchletが用意されています。使用可能なfetchletのリストおよびその使用方法の詳細は、第20章「fetchletsの使用」を参照してください。

- プッシュ・メトリック
このモデルでは、プラグインは、リクエストなしでターゲットから非同期で送信される通知を受信します。このタイプのメトリックには、プラグインでのそのような通知の受信を可能にするreceiveletが必要です。fetchlet同様、事前定義済のreceiveletが用意されています。receiveletの使用方法の詳細は、第19章「Receiveletの使用」を参照してください。

3.4.1 メトリック定義ファイル

ターゲット・メタデータでは、プラグインで収集する各タイプのメトリック、メトリック・データの収集方法と時期、およびCloud Control内で生成されるインシデントをトリガーするメトリックしきい値の種類を定義する必要があります。

注意:
Cloud Control UIから表示できるすべてのメトリックは、適切な表示ラベルおよびNLSIDを持つ必要があります。

メトリック・グループおよび個々のメトリックのメタデータは、プラグインにパッケージ化されている2つのメタデータ・ファイルに定義されます。

- ターゲット・タイプ・メタデータ・ファイル
ターゲット・タイプ・メタデータ・ファイルの内容は、主にメトリック定義、資格証明情報およびターゲット・プロパティで構成されています。メトリックが使用するfetchletまたはreceiveletは、ターゲット・タイプ・メタデータ・ファイル内のQueryDescriptorまたはPushDescriptor要素に定義されます。

主なメトリック定義要素の詳細は、3.4.7項「主なメトリック・メタデータ要素の概要」を参照してください。

- デフォルトの収集メタデータ・ファイル
各メトリックに対してデータが収集される頻度は、デフォルトの収集メタデータ・ファイルに定義されます。各メトリックのメトリック・アラート・イベント条件とそのようなアラートの表示メッセージも、このファイルで定義されます。

デフォルトの収集メタデータ・ファイルの詳細は、3.5項「デフォルトの収集ファイルの作成」を参照してください。

3.4.2 基本のResponseメトリック・グループの定義

事実上、各ターゲット・タイプの次のメトリックを含む、1つ以上のResponseメトリック・グループを指定することをお薦めします。

- ターゲットの可用性を示すステータス・メトリック(すべてのターゲット・タイプに必要)

対応するデフォルトの収集ファイルでは、ターゲットのステータスを起動または停止で表すStatusメトリックにクリティカルの条件を定義する必要があります。詳細は、3.5.2項「基本のメトリック収集の定義」を参照してください。

次の例(レスポンス・メトリック)では、Statusメトリックを定義します。Statusの戻り値は次のとおりです。

- 0: ターゲットのステータスは停止です。

- 1: ターゲットのステータスは起動です。

メトリック・データが収集されるプロセスは、QueryDescriptor要素に定義されます。この記述子は、OSLineToken fetchletでPerlスクリプト(emrepresp.pl)を起動してデータを収集することを指定します。Perlスクリプトは、収集されたデータを含む標準の出力(stdout)データ・ストリームをfetchletに戻します。

OSLineToken fetchlet実行に渡される各プロパティは、QueryDescriptor要素のPropertyタグに指定されます。

- OSLineToken fetchletでは、commandというGLOBALプロパティが実行されるコマンドに設定されている必要があります。通常、それぞれのトークンには固有の必須プロパティがあります。OSLineToken fetchletの詳細は、20.2項「OSコマンドfetchlet」を参照してください。

- 管理エージェントにプラグインがデプロイされると、プラグイン・アーカイブの/agent/scriptsディレクトリにパッケージ化されている関連付けられたスクリプトまたはバイナリが、管理エージェントの次のディレクトリに書き込まれます。ここで、AGENT_HOMEは、管理エージェントのプラグイン・ホーム・ディレクトリで、plugin_nameはプラグインの名前です。

AGENT_HOME/plugins/plugin_name

scriptsDirプロパティは、この場所を定義するトークンです。

注意:
Enterprise Manager 11g以前では、プラグインにバンドルされたスクリプトは、管理エージェントの下位のスクリプト・ディレクトリにコピーされていました。ただし、このリリースでは、プラグインに含まれるスクリプトは直接使用されます。これにより、QueryDescriptor要素内のscriptsDirプロパティの動作が変わります。以前は、管理エージェントの下位のディレクトリを参照していましたが、現在はプラグインの下位のディレクトリを参照しています。管理エージェントの下位のスクリプト・ディレクトリを参照する必要がある場合は、sdkScriptsDirプロパティを使用してください。

- scriptプロパティは、実行するスクリプト(data_collector.pl)を指定します。
EDKには、このスクリプトのサンプルがあります。

edk/samples/plugins/HostSample/demo_hostsample/stage/agent/scripts/emx/demo_hostsample

- startsWithおよびdelimiterプロパティは、実行されるスクリプトのSTDOUTの形式を指定します。この場合、スクリプトは次のような単一の行を戻します。
em_result="value for Load|value for Status"

例: レスポンス・メトリック

<Metric NAME="Response" TYPE="TABLE">
<TableDescriptor>
<ColumnDescriptor NAME="Status" TYPE="NUMBER">
<Display>
<Label NLSID="oracle_emrep_resp_status">Status</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OSLineToken">
<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>
<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property
<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>
<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/emrepresp.pl</Property>
<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>
<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>
</QueryDescriptor>
</Metric>

これらの要素の定義は、3.4.7項「主なメトリック・メタデータ要素の概要」を参照してください。

3.4.3 拡張メトリックの定義

CPUパフォーマンス・データを収集するメトリックや、別のメトリックの値から値が計算されるメトリックなど、さらに複雑なメトリックを定義できます。EDKには、そのような拡張メトリックまたは複雑なメトリックの定義例を参照できる、サンプルのターゲット・タイプ・メタデータ・ファイルが用意されています。

edk/samples/plugins/HostSample/demo_hostsample/stage/oms/metadata/targetType/demo_hostsample.xml

次の例は、CPUパフォーマンス・データを収集するメトリックを含むメトリック・グループを示しています。前述の例のように、QueryDescriptor要素には、OSLineToken fetchletでdata_collector.plスクリプトを起動してデータを収集することが指定されています。

例: 拡張メトリックの定義

<Metric NAME="CPUProcessesPerf" TYPE="TABLE">
<Display>
<Label NLSID="hs_cpuprocessesperf_displayname">Host Process CPU Performance
Statistics</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="ProcPID" TYPE="NUMBER" IS_KEY="TRUE">
<Display>
<Label NLSID="hs_cpuprocessesperf_procpid">PID</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="ProcUser" TYPE="STRING" IS_KEY="FALSE">
<Display>
<Label NLSID="hs_cpuprocessesperf_procuser">User</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="ProcCPU" TYPE="NUMBER" IS_KEY="FALSE">
<Display>
<Label NLSID="hs_cpuprocessesperf_proccpu">CPU Usage (%)</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="ProcCmd" TYPE="STRING" IS_KEY="FALSE">
<Display>
<Label NLSID="hs_cpuprocessesperf_proccmd">Command</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OSLineToken">
<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>
<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>
<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>
<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/emx/demo_hostsample/data_
collector.pl</Property>
<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>
<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>
</QueryDescriptor>
</Metric>

次の例は、テスト・メトリックを示しています。管理エージェントは、一部のメトリックをチェックして、有効なインスタンス・プロパティを使用してターゲットが正しく指定されているかどうかを判断できます。IS_TEST_METRIC属性をTRUEに設定すると、ターゲット・インスタンスの追加時にテスト・ボタンが表示されます。

例: テスト・メトリックの定義

<Metric NAME="Ping" TYPE="TABLE" IS_TEST_METRIC="TRUE" USAGE_TYPE="HIDDEN">
<Display>
<Label NLSID="label_metrics_ping">Ping Test</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="tcpIpPing" TYPE="NUMBER">
<Display>
<Label NLSID="test_ping">TCP Ping, Milliseconds</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OSLineToken">
<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>
<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>
<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl
%sdkScriptsDir%/osresp.pl</Property>
<Property NAME="ENVEM_TARGET_NAME" SCOPE="INSTANCE">hostName</Property>
<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>
<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>
</QueryDescriptor>
</Metric>

3.4.4 リポジトリ・メトリックの定義

デフォルトでは、管理エージェントがメトリックを収集しますが、リポジトリ・メトリックを定義することができます。リポジトリ・メトリックは管理リポジトリで収集されます。

リポジトリ・メトリックを定義するには、メトリック要素を定義する際、REPOSITORY属性を使用する必要があります。メトリック要素の詳細は、表3-4を参照してください。

次の例は、リポジトリ・メトリックが定義されているターゲット・メタデータXMLファイルからの抽出を示しています。

注意:
リポジトリ・メトリックを定義する際、メトリックのTYPE属性をTABLEに設定する必要があります。RAWはリポジトリ・メトリックでサポートされていません。

例: リポジトリ・メトリックの定義

<Metric NAME="Response"
TYPE="TABLE"
REPOSITORY="TRUE">
<Display>
<Label NLSID="REPOS_SQL">REPOS_SQL</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Status" TYPE="NUMBER">
<Display>
<Label NLSID="Status">Status</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="REPOSITORY_SQL">
<Property NAME="Type">SQL</Property>
<Property NAME="Source">SELECT target_guid, 1 as Status from mgmt_targets where target_type='tvmrtm200'</Property>
</QueryDescriptor>
</Metric>

3.4.5 メトリックのカテゴライズ

メトリックのカテゴライズの目的は、収集されるデータの性質を定義することです。これは、Cloud Controlコンソールの「すべてのメトリック」ページに表示されるメトリックに対してのみです。

メトリック・カテゴリを定義する場合は次のガイドラインを使用することをお薦めします。

- Cloud Controlコンソールの「すべてのメトリック」ページで、ユーザーに表示されるすべてのメトリックおよびメトリック・グループをカテゴライズします。

- 表3-3に記載されている公開済のカテゴリ値のみを使用します。

- メトリック・グループ内のすべてのメトリックが同じカテゴリに属する場合、メトリック・グループ・レベルでカテゴリを設定し、メトリック・レベルでカテゴリを空のままにしておくことができます。グループ内のすべてのメトリックは、このカテゴリを継承します。メトリック・グループ・レベルでは1つのカテゴリのみを設定できます。例は、「メトリック・グループ・レベルでのカテゴリの定義」を参照してください。

- メトリック・グループ内のメトリックが様々なカテゴリを持つ場合、メトリック・グループ・レベルでカテゴリを設定しないでください。このような場合は、メトリック・レベルでカテゴリを設定します。各メトリックはカテゴリを1つのみ持つことができます。例は、「メトリック・レベルでのカテゴリの定義」を参照してください。

メトリック・フレームワークは、Defaultメトリック・クラスと、このクラス内にメトリック・カテゴリのセットを持ちます。表3-3に、使用可能なメトリック・カテゴリのリストを示します。Defaultメトリック・クラス内の適切なカテゴリにメトリックをカテゴライズできます。

表3-3 メトリック・カテゴライズ

カテゴリ

説明

可用性

ターゲットまたはコンポーネントが稼働しているかどうかを知ることができます。主にResponseまたはStatusメトリックで使用されます。

容量

何か持つ量を定義します。

フォルト

コンポーネントの非動作、メモリの破損またはデータの破損を招く重大なエラーです。

ロード

エンティティに実行が求められている作業量です。

LoadType

エンティティが実行を求められている作業の特性を示します。

レスポンス

どれだけ迅速にシステムが応答するかです。

BusinessKPI

ビジネスの点で成果を測定します。

使用率

エンティティが使用しているものの割合

セキュリティ

セキュリティ問題に関するレポート。

次の例では、MyMetricGroup内でDefaultというメトリック・クラスとLoadというメトリック・カテゴリを持つすべてのメトリックをカテゴライズします。

例: メトリック・グループ・レベルでのカテゴリの定義

<Metric NAME="MyMetricGroup" TYPE="TABLE">
<Display>    <Label>MyMetricGroup</Label>  </Display>
<CategoryValue CLASS="Default" CATEGORY_NAME="Load"/>
<TableDescriptor>
<ColumnDescriptor NAME="MyMetric1" TYPE="NUMBER">    </ColumnDescriptor>
<ColumnDescriptor NAME="MyMetric2" TYPE="NUMBER">    </ColumnDescriptor>
</TableDescriptor> </Metric>

次の例では、Defaultというメトリック・クラスとLoadというメトリック・カテゴリを持つMyMetric1メトリックと、Defaultというメトリック・クラスとLoad Typeというメトリック・カテゴリを持つMyMetric2メトリックをカテゴライズします。

例: メトリック・レベルでのカテゴリの定義

<<Metric NAME="MyMetricGroup" TYPE="TABLE">
<Display>
<Label>MyMetricGroup</Label>
</Display>  <TableDescriptor>
<TableDescriptor>
<ColumnDescriptor NAME="MyMetric1" TYPE="NUMBER">
<Display>
<Label>MyMetric1</Label>
</Display>
<CategoryValue CLASS="Default" CATEGORY_NAME="Load"/>
</ColumnDescriptor>
<ColumnDescriptor NAME="MyMetric2" TYPE="NUMBER">
<Display>
<Label>MyMetric2</Label>
</Display>
<CategoryValue CLASS="Default" CATEGORY_NAME="Load Type"/>
</ColumnDescriptor>
</TableDescriptor>
</Metric>

3.4.6 適応しきい値の定義

Enterprise Managerには、問題なく適応できるメトリックしきい値を統計学的に計算するオプションが用意されており、このオプションはすべてのターゲットに使用できます。

適応しきい値の詳細は、Oracle Enterprise Manager管理ガイドを参照してください。

ターゲット・タイプに名前付き構成を指定できます。このクイック構成には、事前構成済のメトリック値と計算メカニズムが含まれています。

クイック構成を定義する手順は次のとおりです。

1. クイック構成ファイルを作成して、メトリックのグループに対して事前定義済の値およびしきい値の計算メソッドを決定します。
次の例では、ホスト・ターゲット・タイプのクイック構成を定義します。

例: 適応しきい値のクイック構成

<?xml version="1.0" encoding="UTF-8"?>
<baselineIntegration xmlns="http://www.oracle.com/EnterpriseGridControl/BaselineIntegration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/BaselineIntg.xsd"
targetType="host" version="12.1.0.4">
<quickConfigration>
<quickConfigDescription defaultText="Default text " resourceBundle="a.b.c.abcMsg" nlsId="SEC_CONFIG" />
<baselineConfig configType="MV" subinterval="NX" interval="7" defaultText="Security Config" resourceBundle="a.b.c.abcMsg" nlsId="SEC_CONFIG">
<metricSetting metricName="memfreePct" metricGroup="Load" thrsholdMethod="SIGLVL" warnignLvl=".99" criticalLvl=".999" numOccurrence="10" insufficientDataAction="UNSET" />
<metricSetting metricName="cpuUtil" metricGroup="Load" thrsholdMethod="PCTMAX" warnignLvl="20" criticalLvl="30" numOccurrence="11" insufficientDataAction="UNSET" />
metricSetting metricName="swapUtil" metricGroup="Load" thrsholdMethod="PCTMAX" warnignLvl="40" criticalLvl="50" numOccurrence="12" insufficientDataAction="UNSET" /
</baselineConfig>
<baselineConfig configType="MV" subinterval="NX" interval="21" defaultText="Space Config" resourceBundle="a.b.c.abcMsg" nlsId="SPACE_CONFIG">
<metricSetting metricName="memfreePct" metricGroup="Load" thrsholdMethod="SIGLVL" numOccurrence="3" warnignLvl=".99" criticalLvl=".999" insufficientDataAction="PRESERVE" />
<metricSetting metricName="cpuUtil" metricGroup="Load" thrsholdMethod="PCTMAX" warnignLvl="25" numOccurrence="2" criticalLvl="35" insufficientDataAction="PRESERVE" />
metricSetting metricName="activeMem" metricGroup="Load" thrsholdMethod="PCTMAX" warnignLvl="45" criticalLvl="55" numOccurrence="5" insufficientDataAction="PRESERVE" /
<metricSetting metricName="memUsedPct" metricGroup="Load" thrsholdMethod="PCTMAX" warnignLvl="65" criticalLvl="75" numOccurrence="2" insufficientDataAction="PRESERVE" />
</baselineConfig>
</quickConfigration>
</baselineIntegration>

2. プラグイン・デプロイメントの前にファイルを次の場所に配置してクイック構成ファイルをEnterprise Managerに登録します。

plugin_stage/oms/metadata/adaptiveThreshold/

プラグイン・デプロイメントの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

3. エンド・ユーザーは、Cloud Control UIからクイック構成をアクティブ化します(「メトリックと収集設定」ページから、「高度なしきい値管理」を選択)。
高度なしきい値管理機能の使用の詳細は、Oracle Enterprise Manager管理ガイドを参照してください。

3.4.7 主なメトリック・メタデータ要素の概要

表3-4 メトリックの定義に使用される主な要素

要素

説明

Metric

必須。それぞれがColumnDescriptorに定義されている、1つ以上のメトリックを含むメトリック・グループを定義します。Metric要素には次の属性があります。

- NAME: メトリック・グループの名前で、最大長は64文字です。

- TYPE: 有効な値はTABLEまたはRAWです。通常はTABLEに設定します。作成後にメトリックのタイプを変更しないでください。
TABLE - メトリック・データは汎用表にロードされます。これらのメトリックは通常、パフォーマンス・メトリックまたは使用率メトリックです。これらはEnterprise Managerコア・インフラストラクチャを使用して、Cloud Controlコンソールでグラフ作成および表示を行います。

RAW - メトリック定義に指定された表にメトリック・データはロードされます。この表の名前は、SYSMANスキーマ内で有効な表の名前である必要があります。更新可能なビューは使用できません。STORAGE_TABLE_NAMEまたはSTORAGE_COLUMN_NAMEを変更しないでください。

- REPOSITORY: メトリックを管理エージェントによって収集するか、管理リポジトリで収集するかを指定します。有効な値は次のとおりです。
TRUE: メトリックは管理リポジトリで収集されます。

FALSE: メトリックは管理エージェントによって収集されます(デフォルト)。この属性を含めない場合、定義済のメトリックが管理エージェントによって収集されます。

- IS_TEST_METRIC: 管理エージェントは、一部のメトリックをチェックして、有効なインスタンス・プロパティを使用してターゲットが正しく指定されているかどうかを判断できます。この属性は、このメトリックをテスト・メトリックの1つとしてマークします。デフォルトでは、この値はFALSEに設定されます。この値をTRUEに設定すると、ターゲット・インスタンスの追加時にテスト・ボタンが表示されます。

- USAGE_TYPE: メトリックを表示可能にするかどうかを指定します。
VIEW_COLLECT: USAGE_TYPE=VIEW_COLLECTの場合、メトリックはEnterprise Manager Cloud Control UIに表示されます。

COLLECT_UPLOAD: USAGE_TYPE=COLLECT_UPLOADの場合、収集スケジュールを変更するために、メトリックは「メトリック収集設定」ページに表示されます。

HIDDEN: USAGE_TYPE=HIDDENの場合、メトリックは表示されず、管理エージェントは、メトリックによって収集されたデータを管理リポジトリにアップロードしません。

注意: メトリックのUSAGE_TYPEを変更しないでください。

TableDescriptor

MetricのTYPE属性がTABLEに設定されている場合に必要です。1つ以上のColumnDescriptor要素が含まれ、それぞれに収集するメトリックが定義されています。

ColumnDescriptor

収集される単一のメトリックを定義します。次の属性があります。

- NAME: メトリックの名前で、最大長は64文字です。

- TYPE: メトリック・データが管理リポジトリに格納される方法を説明します。値は、NUMBERまたはSTRINGです。
注意: ネストした表はサポートされていません

- IS_KEY: メトリックを管理リポジトリで主キー列として扱うかどうかを示します。値はTRUEまたはFALSE (デフォルト)です。
注意: メタ・バージョンにまたがる主要な列の数または順序を変更しないでください。安定したキー値を使用することをお薦めします。行番号、タイムスタンプまたはセッションIDをキー値として使用しないでください

- TRANSIENT: メトリックは管理リポジトリにアップロードされません。率データの計算にはこの属性を使用します。値はTRUEまたはFALSE (デフォルト)です。詳細は、第3.6.1項「ターゲット・メタデータの定義」を参照してください。

- COMPUTE_EXPR: この属性は、列の値を計算するための式を指定します。表記述子であらかじめ定義されている列を計算に含めることができます。アンダースコア(_)接頭辞を列名に付けることは、列の前の値を意味します。
事前定義済の特別値のリストについては、第21章「Enterprise Manager DTD」の第21.2.17項「ColumnDescriptor」を参照してください。

QueryDescriptor

TableDescriptorで説明されているデータのセットを戻すコマンドで、実行するものを定義します。要素には1つ以上のProperty要素が含まれ、それぞれがコマンドの起動時に渡すプロパティを定義しています。

注意: %property_name%という書式を使用すると、以前に定義されたプロパティを参照できます。例:

<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>
<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>

要素には、リクエストの処理に使用されるfetchletのメカニズムを識別するFETCHLET_ID属性が含まれます。fetchletの起動に必要なプロパティは、QueryDescriptor内の1つ以上のProperty要素に指定されます。

次に、プラグイン開発者が一般的に使用するfetchletを示します。

- OS: 指定されたオペレーティング・システム・コマンドまたはスクリプトを実行し、コマンドの結果を1つのセル表で戻します。

- OSLines: fetchletに似ていますが、行ごとにトークン化された出力を戻します。

- OSLineToken: fetchletに似ていますが、出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。

- HTTPDataLineToken: 指定されたURLに対するHTTPリクエストを起動します。

- SQL: 指定されたOracleデータベースに対して、指定されたSQLスクリプトを実行します。

- Snmp: 指定されたSNMPエージェントに対して、指定されたSNMPコールを起動します。

- WBEM: 指定されたCIMOMオブジェクト・リポジトリに対して、指定されたWBEMコールを起動します。

使用可能なfetchletの完全なリストおよびその使用方法の詳細は、第20章「fetchletsの使用」を参照してください。

SCOPEプロパティは、プロパティ値を取得する場所を定義します。次の有効範囲オプションを使用できます。

- SCOPE="GLOBAL"。現在のターゲット・タイプ・メタデータ・ファイル内に定義されている他の変数からプロパティ値を取得します。これには、「plugin_registry.xmlファイルのサンプル」の例にある「|」などの定数が含まれます。

- SCOPE="INSTANCE"。インスタンス・プロパティからプロパティ値を取得します。

- SCOPE="ENVxxx"。環境変数xxxからプロパティ値を取得します。

- SCOPE="SYSTEMGLOBAL"。$AGENT_HOME/sysman/configディレクトリにあるemd.propertiesファイルからプロパティ値を取得します。

- SCOPE="USER"。コレクタまたはユーザーからプロパティ値を取得します。

PushDescriptor

オブジェクト識別子(OID)を定義します。管理エージェントはSNMP receiveletを使用して、ターゲット・タイプの管理情報ベース(MIB)での定義に従ってSNMPトラップをリスニングします。PushDescriptorは、receiveletのメトリック定義の一部です。

TableDescriptorで説明されているデータのセットを戻すコマンドで、実行するものを定義します。要素には1つ以上のProperty要素が含まれ、それぞれがコマンドの起動時に渡すプロパティを定義しています。

注意: %property_name%という書式を使用すると、以前に定義されたプロパティを参照できます。例:

<Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>

要素には、リクエストの処理に使用されるreceiveletのメカニズムを識別するRECVLET_ID属性が含まれます。receiveletの起動に必要なプロパティは、PushDescriptor内の1つ以上のProperty要素に指定されます。

SNMP receiveletは、プラグイン開発者が一般的に使用する唯一のreceiveletです。SNMP receiveletの詳細は、第19章「Receiveletの使用」を参照してください。

SCOPEプロパティは、プロパティ値を取得する場所を定義します。次の有効範囲オプションを使用できます。

- SCOPE="GLOBAL"。現在のターゲット・タイプ・メタデータ・ファイル内に定義されている他の変数からプロパティ値を取得します。たとえば、Match*プロパティの有効範囲がGLOBALの場合、トラップがどのメトリックに関連付けられるかを決定します。

- SCOPE="INSTANCE"。インスタンス・プロパティからプロパティ値を取得します。たとえば、MatchAgentAddrプロパティの有効範囲がINSTANCEの場合、トラップがどのターゲット・インスタンスに属するかを決定します。
SCOPEプロパティ定義の例は、第19章「receiveletの使用」の例を参照してください。

ElementDescriptor

集計メトリックの計算に使用されます。メトリック評価の実行計画を指定します。管理エージェントは、定義された順序で計画の各文を実行し、メトリックの結果を作成します。実行計画の最後の文の評価結果として生成されたメトリックの結果が戻されます。

表3-4では、メトリックを定義する主な要素を説明します。メトリック定義の詳細は、3.6項「ターゲット・メタデータの作成のガイドライン」を参照してください。

3.4.8 メトリック定義のトラブルシューティング

この項では、メトリック定義で問題が発生した場合のトラブルシューティングのヒントについて説明します。

- 特定のターゲット・タイプのメトリックをSQL*Plusセッションから一覧表示するには、次のように入力します。

select * from mgmt_metrics where target_type=target_type and type_meta_ver=max_type_meta

- メトリック・ロードの問題があるかどうかをSQL*Plusセッションから確認するには、次のように入力します。

select * from sysman.mgmt_system_error_log where module_name='METRIC_LOAD'

- メタデータのロード中に収集の問題があるかどうかをSQL*Plusセッションから確認するには、次のように入力します。

select * from sysman.mgmt_system_error_log where module_name='MGMT_COLLECTION.Collection Subsystem'

- 特定のターゲットについて何を収集するかをSQL*Plusセッションから確認するには、次のように入力します。

select * from sysman.gc_metric_values where entity_type=target_type and entity_name=target_name

3.5 デフォルトの収集ファイルの作成

ターゲット・タイプのデフォルトの収集メタデータ・ファイルでは、次を定義します。

- ターゲットから収集され、管理リポジトリに書き込まれるメトリック・データ(構成収集メトリック・データを含む)

- このメトリック・データが収集される頻度

- 超過した場合に、メトリック・アラート・イベントが発生する原因となるしきい値

- しきい値を超過した場合に表示されるオプションのメッセージ

注意:
デフォルトの収集ファイルには任意の名前を使用できますが、対応するターゲット・タイプ・メタデータ・ファイル名と収集ファイルを簡単に関連付けることのできるネーミング規則を使用することをお薦めします。たとえば、ターゲット・タイプ・メタデータ・ファイルと同じファイル名を使用します。
ターゲット・タイプ・メタデータ・ファイルのネーミングの詳細は、3.3.2項「ターゲット・タイプ・メタデータ・ファイルのネーミング」を参照してください。

デフォルトの収集メタデータ・ファイルのTYPE属性およびMETA_VER属性の値は、これらの間に関連付けを作成するために、ターゲット・タイプ・メタデータ・ファイルに定義されているTYPEおよびMETA_VERの値と一致する必要があることに注意してください。

前述のとおり、各メトリックに、Enterprise Manager Cloud Control内でインシデントとして発生するメトリック・アラート・イベントの条件を指定することもできます。そのようなイベントは、このファイルに指定されたしきい値を超えた場合に生成されます。たとえば、CPU使用率が容量の90%に達した場合に、警告のアラートを生成できます。アラート・イベントがトリガーされた場合に、Enterprise Manager Cloud Controlに表示されるメッセージ・テキストを指定することも可能です。

EDKの次の場所には、デフォルトの収集ファイルのサンプルが含まれています。

/samples/plugins/HostSample/stage/oms/metadata/default_collection/demo_hostsample.xml

デフォルトの収集ファイルに要素を定義する方法の詳細は、3.5.5項「デフォルトの主な収集メタデータ要素の概要」および3.6項「ターゲット・メタデータの作成のガイドライン」を参照してください。

3.5.1 収集に向けた類似のメトリックのグループ化

効率を高めるため、メトリックは通常、収集用にグループ化されており、特定のメトリックを同時または同じ頻度で収集することが可能です。別のメトリックの結果に依存するメトリックがある場合は、メトリックの実行順序が重要になるため、それが保証されて便利です。

一緒に収集するメトリックの各グループは、デフォルトの収集ファイル内のCollectionItemに定義します。グループの収集スケジュールは、Schedule要素に定義します。CollectionItemは、メトリックを有効または無効にし、収集スケジュールを変更するための最大限の制御手段をエンド・ユーザーに提供します。

グループに含まれる各メトリックは、CollectionItem内のMetricColl要素に順番に定義します。(3.4.2項「基本のResponseメトリック・グループの定義」に示されているResponseメトリックの例のように、CollectionItemに含まれるメトリックが1つのみの場合は、MetricCollタグを指定する必要がないことに注意してください。)

CollectionItemのUPLOAD値が6に設定されており、収集が6回目になるたびにデータが管理リポジトリに書き込まれることを意味しています。IntervalScheduleでデータの収集が5分ごとに指定されているため、データは30分ごと(つまり、6回目のデータ収集ごと)に管理リポジトリに書き込まれます。

<TargetCollection>
...
<CollectionItem NAME="Perf" UPLOAD="6">
<Schedule>
<IntervalSchedule INTERVAL="5" TIME_UNIT="Min"/>
</Schedule>
<MetricColl NAME="CPUProcessesPerf">
...
</MetricColl>
<MetricColl Name="MemoryPerf">
...
</MetricColl>
</CollectionItem>
...
</TargetCollection>

次のいずれかが該当する場合は、メトリックをCollectionItemにグループ化することを検討してください。

- すべてのメトリックがパフォーマンスに関連しているなど、メトリックが論理的に関連している場合

- 5分ごとに収集するすべてのメトリックなど、メトリックを同じ頻度で収集する必要がある場合

- ピーク時以外に収集するメトリックなど、おおよそ同じ時間にメトリックを収集する必要がある場合

- 指定されているすべてのメトリックを同時に収集、または収集しない場合

オンデマンドで収集されるメトリックがある場合は、それらをグループ化すると、パフォーマンスが向上し、ターゲットからメトリック・データを収集して戻す際に行われる管理エージェントとOracle Management Service間の通信が低減されます。

様々な収集間隔を提供すると、各メトリックを個々にスケジュールするうえで最大の柔軟性が得られます。必要なメトリックを無効化しないでグループ内のごくわずかのメトリックの収集をオフにできないため、関連のないメトリックのグループ化はお薦めしません。

3.5.2 基本のメトリック収集の定義

次に、Statusメトリックを含む、基本のResponseメトリック・グループのCollectionItemエントリを示します。これは、このメトリックのデータを5分ごと(このタイプのメトリックの標準的な収集間隔)に収集する必要があることを指定しています。

条件は、Statusメトリックに設定されています。アラート条件の詳細は、第3.5項「デフォルトの収集ファイルの作成」および表3-5を参照してください。

CollectionItemに含まれるメトリックが1つのみ(Status)であるため、単一のメトリックにMetricCollタグを含める必要がないことに注意してください。

<TargetCollection META_VER="2.0" TYPE="test_demo_targetType">
...
<CollectionItem NAME="Response">
<Schedule>
<IntervalSchedule INTERVAL="5" TIME_UNIT="Min"/>
</Schedule>
<Condition COLUMN_NAME="Status" CRITICAL="0" OPERATOR="EQ" CLEAR_MESSAGE_NLSID="Response_Status_clearalertmessage"
MESSAGE="Failed to connect to database instance: %oraerr%."MESSAGE_NLSID="Response_Status_alertmessage"/>
</CollectionItem>
...
</TargetCollection>

3.5.3 拡張メトリック収集の定義

次の例では、指定されたWARNINGおよびCRITICALのしきい値を超えた場合にメトリック・アラートを生成する、より高度なメトリックの収集を説明しています。これらのしきい値、およびそれを超えた場合にCloud Controlに送信するメッセージは、Condition要素に定義します。

各メトリックのデータは、この例に示すように、CollectionItem内のMetricColl要素に指定します。この例の要素の説明は、表3-5を参照してください。

例: 拡張メトリック収集の定義

<TargetCollection>
...
<CollectionItem NAME="Perf" UPLOAD="6">
<Schedule>
<IntervalSchedule INTERVAL="5" TIME_UNIT="Min"/>
</Schedule>
<MetricColl NAME="CPUProcessesPerf">
<Condition COLUMN_NAME="ProcCPU" WARNING="75" CRITICAL="90" OPERATOR="GE"
OCCURRENCES="2"
MESSAGE="The value for %columnName% is %value%%%, which is above the
critical (%critical_threshold%%%) or warning (%warning_threshold%%%)
threshold."
CLEAR_MESSAGE="The value for %columnName% is %value%%%, which is
below the critical (%critical_threshold%%%) or warning (%warning_
threshold%%%) threshold." />
</MetricColl>
</CollectionItem>
...
</TargetCollection>

WARNINGまたはCRITICALのしきい値を超えた場合にEnterprise Managerに送信するメッセージに加え、CLEAR_MESSAGE属性には、アラート条件が存在しない場合に送信される「すべてクリア」のメッセージも定義されています。

3.5.4 ターゲット構成データ収集の定義

その他のあらゆるメトリックと同じように、構成メトリック・データが収集される頻度は、デフォルトの収集ファイルに定義します。ターゲット構成収集のサイズと変更率が低いことを考慮し、これらのメトリックは、ピーク以外の時間に、24時間ごとに収集するのが理想的です。

構成メタデータ・ファイルにあるルートのMETADATA SNAP_TYPE属性のTARGET_TYPE属性の値は、デフォルトの収集ファイルにあるTargetCollectionのTYPE属性と同じであることが必要です。

次の例では、HostConfigメトリックの収集頻度を定義しています。

<TargetCollection>
...
<CollectionItem NAME="HostSampleSnap" CONFIG="TRUE">
<Schedule OFFSET_TYPE="INCREMENTAL">
<IntervalSchedule INTERVAL="24" TIME_UNIT="Hr"/>
</Schedule>
<MetricColl NAME="HostConfig" />
</CollectionItem>
...
</TargetCollection>

3.5.5 デフォルトの主な収集メタデータ要素の概要

表3-5に、デフォルトの収集メタデータ・ファイルに含まれる主な要素を説明します。

表3-5 デフォルトの収集メタデータ・ファイル内の要素

要素

説明

TargetCollection

必須。ファイルのルート要素。ターゲット・タイプ・メタデータ・ファイルのTargetMetadata要素のTYPE属性およびMETA_VER属性に一致する必要があるTYPE属性およびMETA_VER属性が含まれます。

CollectionItem

一連のメトリックの収集頻度としきい値を定義します。含まれるSchedule要素に定義する頻度は、収集グループのすべてのメトリックに適用されます。要素には次の属性があります。

- NAME: グループとして収集される一連のメトリックを定義します。

- UPLOAD: n回目のデータ収集を管理リポジトリに書き込むことを指定します。デフォルトは1で、収集されるたびにパフォーマンス・データがアップロードされることを意味します。「レスポンス・メトリック」の例の場合は、データ収集が6回目になるたびに管理リポジトリにアップロードされます。

- UPLOAD_ON_FETCH: TRUEに設定すると、最初の構成収集は管理リポジトリにただちにアップロードされます。それ以降の収集はすべてまとめられます。
デフォルトでは、この値はFALSEに設定されており、UPLOAD_ON_FETCH属性は無視されます。

Schedule

CollectionItemの収集頻度を定義するIntervalSchedule要素が含まれます。次の属性があります。

- INTERVAL: 収集頻度。

- TIME_UNIT: INTERVALの値が対応する時間の単位(分の場合はMinなど)。

注意: レスポンス・メトリックは頻繁に収集する必要があります。1分から5分の間の値で収集間隔を定義します。他のメトリックの収集の頻度は下げる必要があります。通常は15分の間隔で十分です。ただし、大量のデータを収集するメトリックを定義する場合は、30分または1時間の間隔を検討してください。

MetricColl

ターゲット・タイプ・メタデータ・ファイルのMetric要素に定義されている単一のメトリック・グループに対応する、1つ以上のCondition要素が含まれます。各条件は、指定された単位と、しきい値を上げる値の%value%プレースホルダを備えたメトリック記述を含む、関連付けられたアラート・メッセージを持つ必要があります。

この要素のNAME属性は、対応するMetric要素のNAME属性と一致する必要があります。

Condition

メトリック・アラート条件を定義します。これには次に示す、オプションの属性が含まれます。

- COLUMN_NAME: ターゲット・タイプ・メタデータ・ファイルのColumnDescriptor要素に定義されているメトリック名。この属性の値は、ColumnDescriptor要素のNAME属性に一致する必要があります。

- WARNING: 警告の条件が成立するしきい値を定義します。この値を超えるとメトリック・アラートが生成され、これには、MESSAGE属性に指定されたテキストが含まれます。
ほとんどの場合、ユーザーがしきい値を設定できるようにするには、この属性をNotDefinedに設定します。

- CRITICAL: クリティカルの条件が成立するしきい値を定義します。この値を超えるとメトリック・アラートが生成され、これには、MESSAGE属性に指定されたテキストが含まれます。
ほとんどの場合、ユーザーがしきい値を設定できるようにするには、この属性をNotDefinedに設定します。

- OPERATOR: CRITICALおよびWARNING属性に指定されたしきい値を適用する方法を決定します。「拡張メトリック収集の定義」の例では、GEによって、ProcCPUが75以上の場合に警告のしきい値が発生し、ProcCPUが90以上の場合にクリティカルのしきい値が発生することが指定されています。その他の値は次のとおりです。
LE: 以下

EQ: 等しい

LT: より少ない

GT: より大きい

NE: 等しくない

CONTAINS: 2つ目の引数が最初の文字列の部分文字列である場合にTrueにします。

MATCH: 最初の引数(正規表現)が2つ目の引数に一致する場合にTrueにします。

- OCCURENCES: 警告またはクリティカルの条件がトリガーされるまでに、警告またはクリティカルのしきい値を超えた場合に連続して戻される必要のあるメトリック収集の回数を定義します。ほとんどの場合、スパイクに関するアラートを回避するために、この値を2に設定します。

- MESSAGE: WARNINGまたはCRITICAL属性に指定されたしきい値を超えた場合に表示されるメッセージが含まれます。
%columnName%や%critical_threshold%などの組込みのメッセージ属性が文字列に埋め込まれており、実行時にメッセージが生成される際に、適切な値に置き換えられます。例: %columnName%の値は%value%%%です。クリティカル(%critical_threshold%%%)または警告(%warning_threshold%%%)のしきい値を下回りました。

- CLEAR_MESSAGE: メトリックの値がアラート以外の値に戻った場合(つまり、WARNINGおよびCRITICALに示されているしきい値を下回った場合)に表示される、すべてクリアのメッセージが含まれます。

3.5.6 収集プロセスのトラブルシューティング

この項では、収集プロセスで問題が発生した場合のトラブルシューティングのヒントについて説明します。

指定されたターゲットに対して収集が無効であるかどうかをSQL*Plusセッションから確認するには、次のように入力します。

select * from sysman.mgmt_collections where object_type=2 and object_guid=target_guid and is_enabled=1

3.6 ターゲット・メタデータの作成のガイドライン

新しいプラグインのターゲット・タイプ定義ファイルを開発する際には、特定のターゲット・タイプを監視する方法を入念に検討する必要があります。ターゲット・タイプの監視方法は、Enterprise Managerのパフォーマンスに大きく影響します。システム・パフォーマンスを最適化するには、次に示す、ターゲット・メタデータおよび収集を定義するための一般ガイドラインに従ってください。

3.6.1 ターゲット・メタデータの定義

メタデータは、データに関するデータです。一般に、この用語はネットワーク・エンティティの識別、記述および特定を支援するために使用されるデータを表します。Enterprise Managerターゲットのターゲット・メタデータは、ユーザーが公開するメトリックと、これらのメトリックの計算に使用されるメソッドから構成されます。

注意:
表示可能なすべてのメトリックがカテゴライズされていることを確認します。最低でも、しきい値を持つメトリックはカテゴライズして、生成されるインシデントがカテゴライズされるようにする必要があります。カテゴライズの詳細は、第3.4.5項「メトリックのカテゴライズ」を参照してください。

- メタデータ・バージョン
ターゲット・メタデータが変更されるたびに、メタデータ・バージョン(META_VER)を増やします。詳細は、第3.3.3項「ターゲット・タイプ・メタデータの定義」を参照してください。

- リアルタイムのみのメトリック
パフォーマンス・メトリックは、パフォーマンス傾向を追跡するために計算する必要のあるメトリックと、特定の時点での詳細を取得するためのドリルダウンに役立つその他のメトリックに分類されます。リアルタイムのみのメトリックには、さらに診断を行うために、システムの特定のサブセットに関する詳細情報(特定のプロセスのリソース使用率など)を返すためにコンテキスト情報を必要とするメトリックが含まれます。

- キー列の選択
メトリックのキー列は、軸上のパフォーマンス・データの傾向(データベース表領域ごとの表領域使用率など)を調べるために管理リポジトリで使用されます。キーベースのメトリックは、ターゲットの監視目的にしろターゲットの診断目的にしろ、意味のあるメトリック・データを収集する必要のあるターゲットのサブコンポーネントをモデル化するために使用する必要があります。したがって、ターゲット・サブコンポーネントの論理識別子であるキー列のみはメトリックに含める必要があります。

多数のターゲットにわたって収集された明確な値の数に対してキー列を含めると、管理リポジトリに格納されるキー値の数が過剰になる可能性があることに注意してください。たとえば、タイムスタンプ(またはデータベースSCNまたはUNIX ctimeなどの同等物)をキー値として使用すると、各ターゲットの各収集は新しい値になるため、お薦めしません。

キー列の組合せを含めることも問題になる可能性があります。たとえば、メトリックに3つのキー列を含めると、各キーは、ターゲットの数をかけた10のターゲット固有の値(10 X 10 X 10)の1つをとることができ、1つのターゲット当たり1000のキーのデータを収集することになります。一握り以上のターゲットを管理する場合、これは過剰とみなされることがあります。

ターゲットと時間にわたって、共有不可能で永続性のあるキーを持つメトリックを定義しないでください。

キー列を使用する必要はありませんが、問合せ記述子は単一行を返す必要があります。

注意:
メトリックの作成後に、キー列、つまり順序、データ・タイプまたは数を変更しないでください。

- 一時列
場合によっては、メトリック列を使用して、より重要な他のメトリック列の値を計算できます。元の列が不要な場合は、これらの列を一時としてマークすれば管理リポジトリにアップロードされないので、領域を節約することができます。

持続時間に依存するメトリックはアップロードしないでください。これらのタイプのメトリックは一時としてマークしてください。これには、リクエスト・プロセス(最後の収集間隔)などのデルタ・メトリックが含まれます。

- 率メトリック
メトリックには、最近のアクティビティのデータ値を含める必要があります。多くの場合、これを行うには、既存のメトリックから率メトリックを作成する必要があります。COMPUTE_EXPR属性(表3-4で定義)には、列の値を計算するための式を指定します。次のリストは、計算式についてサポートされている文法を示しています。

expression := (cond_expr | (cond_expr ? cond_expr : cond_expr)
cond_expr := (string_expr |
(string_expr == string_expr) |
(string_expr < string_expr) |
(string_expr > string_expr) |
(string_expr <= string_expr) |
(string_expr >= string_expr) |
(string_expr __contains string_expr) |
(string_expr __beginswith string_expr) |
(string_expr __endswith string_expr) |
(string_expr __matches string_expr) |
(string_expr __delta string_expr))
string_expr := (simple_expr |
(simple_expr __leadingchars simple_expr) |
(simple_expr __trailingchars simple_expr) |
(simple_expr __substringpos simple_expr))
simple_expr := (term |
(simple_expr + term ) |
(simple_expr - term) )
term := (unary_expr |
(term * unary_expr ) |
(term / unary_expr ) )
unary_expr := (factor |
(__is_null factor) |
(__length factor) |
(__to_upper factor) |
(__to_lower factor) |
(__ceil factor) |
(__floor factor) |
(__round factor) )
factor := ( identifier |
string_literal |
number |
'(' expression ')' )
string_literal := '\'' (character | "\\'" )* '\''

既存のメトリックから率メトリックを作成するには、次のメトリックを定義します。

- デルタの計算

requests.completed.delta = (requests.completed > _requests.completed) ? (requests.completed - _requests.completed) : 0

requests.completedの現在の値が前の値より大きい場合、現在の値と最後の値の差を求めてデルタを得ます。それ以外の場合は0が戻されます。

- 率の計算

requests.completed (per minute) = (requests.completed > _requests.completed) ? (requests.completed - _requests.completed) *60 /__interval: 0

requests.completedの現在の値が前の値より大きい場合、現在の値と最後の値の差を求めて60を掛け、それを2つの収集間の間隔で割ってデルタを得ます。それ以外の場合は0が戻されます。

- メトリックおよびMicrosoft Windows
カスタム・ターゲットのメトリックを作成する際には、追加のオペレーティング・システム(OS)プロセスを作成するコスト(CPU使用率)を考慮することが重要です。このことは、LinuxやOracle SolarisなどのUNIXベース・システムに比べてプロセス作成にCPUを大量に使用するMicrosoft Windowsを実行しているシステムに当てはまります。CPU使用率は、子プロセスの作成に対して線形に増加します。プロセス作成を最小化するために、メトリック収集スクリプトからOSプログラムまたはコマンドを実行することは避けてください。たとえば、Perlスクリプトを作成する場合、システム関数またはバッククォート(``)を使用してOSコマンドを実行することは避けてください。

- ターゲットのプロパティ(静的および動的)
ターゲット・プロパティは、名前の付いた値であり、ターゲットのメトリックの計算、またはターゲットのホームページでの表示に使用できます。ターゲット・プロパティのリストをメタデータで指定して、データ駆動のユーザー・インタフェースがターゲットを登録できるようにすること、また管理エージェントがターゲット・インスタンスの完了を検証できるようにすることが可能です。

- 静的インスタンスのプロパティ: これらは、ターゲットのtargets.xmlエントリでターゲットに対して値を指定する必要のあるプロパティです。プロパティが指定されていなくてもターゲット宣言が完了したとみなされる場合は、インスタンス・プロパティをオプションとして指定できます。ターゲット・プロパティのメタデータ指定では、構成ユーザー・インタフェースで使用するデフォルト値も提供できます。

- 動的インスタンスのプロパティ: 管理エージェントでは、ターゲット・インスタンスのプロパティを計算することもできます。このようなプロパティは、メトリックで使用されるのと非常によく似たQueryDescriptorを使用して計算されます。
動的プロパティを使用すると、特定のプロパティの値を正しく指定するようユーザーに要求するかわりにそのプロパティを計算できるため、ターゲットの構成に関連する作業が削減されます(たとえば、データベースのVersionプロパティは特定のアドレッシング情報を確実に計算できます)。

管理エージェントは、ターゲット・バウンスが検出されるたび(ターゲット・ステータスが「稼働中」に変化するたび)にプロパティを再計算することで、これらの動的プロパティを正常に計算するにはターゲットが稼働している必要があるという事実に対応しています。

- メトリック
管理エージェントとの関連でのメトリックの概念は、構成およびパフォーマンス情報を示すために使用できます。

- 構成メトリック: 構成メトリックは、ターゲットの構成を示すターゲット・プロパティに似たデータを収集します。この情報は、定期的にリフレッシュされ、ターゲットの設定の変更を追跡するために使用できます。このようなメトリックの収集間隔は、通常は約24時間です。

- パフォーマンス・メトリック: パフォーマンス・メトリックを使用して、ターゲットの応答性を追跡します。これらのメトリックは、通常は構成メトリックよりも頻繁に収集されますが、一部のパフォーマンス・メトリックの間隔は他のパフォーマンス・メトリックと大きく異なる場合があります。また、パフォーマンス・メトリックには、通常、ターゲットのパフォーマンス・アラートの基礎であるしきい値が付属しています。
すべてのターゲットの必須メトリックは、条件が指定された「ステータス」列から構成されるレスポンス・メトリックです。このメトリックは、ターゲットの可用性の追跡に使用されます。

Enterprise Managerユーザー・インタフェースの多くの部分はデータ駆動であるため、メトリックのネーミングに使用される規則は非常に重要です。たとえば、実際のメトリック列ラベルとキー値は、ページ・タイトル、指示テキストまたは列見出しの一部になる場合があります。具体的には、これらの要素は、Enterprise Managerユーザー・インタフェース内の「すべてのメトリック」ページ、「メトリックと収集設定」ページ、「イベント・ルール」ページ、グループ・チャート・ページおよびその他のページに表示されます。このため、次のメトリック・ネーミング規則をお薦めします。

- メトリックの列名はできるだけ明確なものにしてください。列名にはcountを含めないでください。名前の長さが増え、エンド・ユーザーに値が提供されないためです。例:
エラー(/分)

注意: エラー件数(/分)は使用しないでください。

- すべてのメトリック名(ラベル)は、特定のターゲット・タイプおよびバージョン内で一意である必要があり、ユーザーが簡単に理解できる必要があります(必要に応じてメトリック単位が使用されます)。メトリックが測定単位を指す場合、カッコ内のメトリック・ラベルに単位を含めます。例:
ネットワーク・インタフェース合計I/Oレート(MB/秒)

処理済のリクエスト(/分)

コミット済のトランザクション(%)

- 起動時にリセットされる値を増やすメトリックはアップロードしないでください。これらのメトリックは一時的なものとしてマークし、起動時からカッコ内のメトリック・ラベルに含めます。例:
処理時間(起動時以降)

エラー(起動時以降)

リクエスト(起動時以降)

平均実行時間(ミリ秒 - 起動時以降)

- すべてのメトリック列名(ラベル)は、メトリック名に依存せずに自己説明的である必要があります。例:
表領域使用率(%)

- キー列名は自己説明的である必要があります。メトリックしきい値を指定する場合または通知を構成する場合に、Enterprise Managerではこれらの名前を使用します。読みやすくするために、キー列名の名前が「すべてのキー列名オブジェクト」という句で調和しやすくする必要があります。例:
すべての(表領域)オブジェクト

- ターゲット・バージョン間で、同じ列は同じラベルを使用する必要があります。これにより、メトリック列や短縮名などの列は、異なるターゲット・バージョンでも同じNLS IDを持ちます。

3.6.2 コレクションの定義

コレクションは、管理エージェントが定期的にターゲットのメトリックを計算し、管理リポジトリにデータをアップロードするメカニズムです。ターゲット・タイプのコレクションを作成する際に覚えておく必要のある最も重要なことは、余分なデータで管理リポジトリに過剰な負荷をかけないことです。何百もの管理エージェントと何千ものターゲットが存在する大規模なエンタープライズにおいて、スケーラビリティの鍵は、リポジトリにアップロードされたターゲットに関して収集されるデータの量を制限することです。RAWデータは24時間保持されるため、ロールアップの利点が生じるのはその時点を超えてからのみであることは特に重要です。

3.6.2.1 アラート・メッセージのガイドライン

アラート・メッセージは、何か問題がある場合にユーザーに通知します。これらのメッセージは、ユーザーによる問題の解決も支援します。アラート・メッセージを作成する際には、次のコンテンツ・ガイドラインに従うことをお薦めします。

- アラート・メッセージは意味のあるものにし、メトリック表示名、メトリック値、およびアラートを発生させるしきい値を含める必要があります。
メッセージの最も重要な部分は、メッセージ・テキストの最初の60文字以内でカバーする必要があります。その理由としては、メッセージの最初の部分は、電子メールによる通知、アラート・メッセージを含んだインシデント表などでは、ユーザーの目に最も見えるためです。

- アラート・メッセージには、警告しきい値および重大なしきい値を含めます。

- ターゲット停止メッセージでは、ターゲットが停止していることを示すのに加えて、ターゲットの停止について考えられる理由を示す情報を含める必要があります。

- 可能な場合は、エラー・コードおよびエラー・メッセージを含めます。

次はアラート・メッセージの良い例です。

CPU Load (Run Queue Length averaged over 15 minutes) is %value%, crossed warning (%warning_threshold%) or critical (%critical_threshold%) threshold.

問題の解決または診断の方法に関する情報は、アラート・メッセージに含める必要がないことに注意してください。かわりに、インシデント・マネージャの「ガイドされた解決」セクションに、この内容を指定する必要があります。詳細は、第10.5項「「ガイドされた解決」リージョン内のコンテンツの指定」を参照してください。

3.6.2.2 メトリック評価順序

メトリック収集の失敗を回避するために、メトリック評価順序に注意することが重要です。たとえば、ターゲットが停止している場合に収集の失敗を回避するためには、Responseメトリックを最初に評価する必要があります。また、メトリック収集エラーが一貫していることを確認します。たとえば、メトリックが収集されるたびに新しいメッセージが表示されるというようなことです。

収集の定義にCollectionItemタグが使用されている場合は、収集項目を含むすべてのメトリックが、管理エージェントにより順番に評価されます。ただし、収集項目はそれぞれ独立して実行されます。

注意:
管理エージェントのプログラム・ロジックは、メトリック評価を分散して、各評価が約10秒間隔になるようにします。

3.6.2.3 収集頻度

一般に、5分より短い間隔で情報を収集する適切な理由はほとんどありません。データ・バリエーションがより小さい粒度で発生し、管理者にできるだけ早く通知する必要があるというまれなケースでは、管理エージェントは、短い収集間隔を使用してメトリックおよびしきい値情報を計算する一方、データのアップロードをnn回の計算サイクルごとに1回のみ行う機能を用意しています。

3.6.2.4 行数の制御

一部のメトリックでは、管理リポジトリ表に多数の行が作成されることがあります。場合によっては、これらの行のサブセットのみリポジトリにアップロードする必要があります。管理エージェントでは、アップロードをスキップする行の検索に使用できるフィルタ条件を指定できます。また、最初のn行をリポジトリにアップロードするためにソートされたメトリック・データを返すlimit_to句をメトリックに対して使用できます。

3.7 ターゲット・メタデータのローカライズ

ターゲット・メタデータをローカライズするには、次の項を参照してください。

- ターゲット・メタデータのローカリゼーションについて

- リソース・バンドル・パッケージの定義

- メトリック・メッセージのローカライズ

- リソース・バンドルのパッケージ化

3.7.1 ターゲット・メタデータのローカリゼーションについて

ターゲット・メタデータはオプションでローカライズされた文字列(ターゲット・タイプの表示名、メトリックおよびメトリック列ラベル)をサポートし、各Enterprise Managerユーザーの言語とロケールでEnterprise Managerにラベルを表示できるようにします。この機能をサポートするには、ターゲット・メタデータ・ファイルがTargetMetadataタグにRESOURCE_BUNDLE_PACKAGEプロパティを含んでいる必要があります。RESOURCE_BUNDLE_PACKAGEプロパティは、ローカライズされたターゲット文字列を含むリソース・プロパティの場所を指定します。TargetMetadataタグの詳細は、第3.3項「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

3.7.2 リソース・バンドル・パッケージの定義

リソース・バンドル用に選択されたパッケージが後に続く3つの部分から構成されるプラグインIDを使用します。たとえば、プラグインIDがtest.group.domainの場合、リソース・バンドル・パッケージを次のように定義します。

RESOURCE_BUNDLE_PACKAGE=test.group.domain.rsc

前述の例では、rscがリソース・バンドル用に選択されたパッケージです。パッケージ名には、任意の英数字の文字列を使用できますが、特殊文字は使用できません。

リソース・プロパティ・ファイルに外部化できるターゲット・メタデータに含まれた文字列は、ターゲット・タイプ、メトリックおよび列項目に関連付けられたLabelタグです。

注意:
リソース・プロパティがロードできない場合、Labelタグは表示されるデフォルト値を持ち、NLSIDプロパティはユーザーのロケールにロードされる文字列リソースのロードに使用されるキーを指定します。

target_typeMsg.propertiesというリソース・プロパティ・ファイルにターゲット・メタデータに定義したすべての文字列を配置する必要があります。リソースのデプロイメント時に、対応するディレクトリにこのファイルを含めます。詳細は、第3.7.4項「リソース・バンドルのパッケージ化」を参照してください。

次の例では、プラグインIDはtest.group.domainで、ターゲット・タイプはdomain_widgetです。

例: ターゲット・メタデータ・ローカリゼーション用のリソース・バンドル・パッケージの定義

<TargetMetadata META_VER="1.0" TYPE="domain_widget" RESOURCE_BUNDLE_PACKGE="test.group.domain.rsc">
<Display>
<Label NLSID="dom_widget">Domain Widget</Label>
</Display>

このプラグイン・デプロイメントの場合、test.group.domain.rsc.domain_widgetMsg.propertiesというリソース・プロパティ・ファイルを持つ必要があります。このファイルはターゲット・メタデータのすべての文字列を含んでおり、次のようになります。

# Strings for the domain_widget target type within the test.group.domain plug-in
dom_widget = Domain Widget

3.7.3 メトリック・メッセージのローカライズ

デフォルトの収集メタデータ・ファイルでは、メトリック収集条件としてメッセージ・アラートとクリア・メッセージに次のプロパティを指定できます。

MESSAGE
条件が一致した場合の、デフォルト・メッセージ(英語)を指定します。

MESSAGE_NLS_ID
ターゲット・タイプ・メタデータに関連付けられたリソース・プロパティ・ファイル内の変換済バージョンのメッセージの検索に使用されるリソース識別子を指定します。

CLEAR_MESSAGE
アラート条件が存在しなくなった場合に送信されるクリア・メッセージを指定します。

CLEAR_MESSAGE_NLS_ID
ターゲット・タイプ・メタデータに関連付けられたリソース・プロパティ・ファイル内の変換済バージョンのクリア・メッセージの検索に使用されるリソース識別子を指定します。

次の例は、アラート・メッセージおよびクリア・メッセージのリソース識別子を含むメトリック定義の例を示しています。

例: ローカリゼーション・プロパティを含むメトリックの定義

<MetricColl NAME="CPUPerf">
<Condition COLUMN_NAME="non_nice" WARNING="NotDefined" CRITICAL="NotDefined"
OPERATOR="GE"
MESSAGE="The value for %columnName% is %value%%%.  It has risen above the critical (%critical_threshold%%%) or warning (%warning_threshold%%%) threshold."
MESSAGE_NLS_ID="dhs_non_nice_cond_msg"
CLEAR_MESSAGE="The value for %columnName% is %value%%%.  It has fallen below the critical (%critical_threshold%%%) or warning (%warning_threshold%%%) threshold."
CLEAR_MESSAGE_NLS_ID="dhs_non_nice_clear_msg" />

3.7.4 リソース・バンドルのパッケージ化

リソース・バンドルをパッケージ化する前に、第3.7.4.1項「リソース・プロパティ・バンドルのコンテンツについて」を確認し、パッケージのコンテンツが正しくフォーマットされていることを確認します。

3.7.4.1 リソース・プロパティ・バンドルのコンテンツについて

これらすべてのリソース・プロパティ・ファイルは、適切なJavaリソース・プロパティ・バンドルとしてフォーマットされる必要があります。ファイル名に次のJava仕様に応じて、適切な国およびロケールを含めます。

http://docs.oracle.com/javase/7/docs/api/java/util/PropertyResourceBundle.html

文字エンコーディングはターゲット・メタデータ、ジョブなどに使用されるリソース・プロパティ・バンドルのJava言語仕様に従って文字エンコーディングする必要があります。

http://docs.oracle.com/javase/specs/jls/se5.0/html/lexical.html#3.3

Flexリソース・プロパティ・ファイルのエンコーディングは、Java言語仕様とは異なります。このため、Flex UI (MPCUI)に表示されるすべての文字列リソースを個別のリソース・プロパティ・バンドルに分ける必要があります。詳細は、次の場所からFlexドキュメントを参照してください。

http://www.adobe.com/support/documentation/en/flex/1/internationalization_flex_short/internationalization_flex_short9.html

3.7.4.2 リソース・バンドルのパッケージ化

リソース・バンドルをパッケージ化するには、次の手順を実行します。

1. プラグインOPARが作成されたoms/archivesディレクトリの下にあるプラグイン・ステージング領域を含むJARファイルを使用してリソース・プロパティ・ファイルをプラグインに追加します。このJARファイルには、プロパティ・ファイルのみを含めることができ、Javaクラス・ファイル、イメージなどの他のファイルは含めることができません。

2. パスが選択したパッケージ名が後に続く3つの部分から構成されるプラグインIDのディレクトリにプロパティ・ファイルを含めます。たとえば、プラグインIDがtest.group.domainの場合、リソース・プロパティ・ファイルへのパスはtest.group.domain.rscである必要があります(rscは、第3.7.2項「リソース・バンドル・パッケージの定義」で説明されているリソース・バンドル用に選択されたサブパッケージです)。

3. 前述の例を使用して、プラグイン・ステージング領域のoms/archivesディレクトリに含めるJARファイルを作成するために、次のJARコマンドを入力します。

jar cvf test_group_resources.jar test/group/domain/rsc/*

4. JARファイルをoms/archivesディレクトリに配置すると、EDKツールを使用してプラグインを検証し、パッケージ化できます。詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

注意:
JARファイルにプロパティ・ファイル以外のファイルが含まれている場合、次の検証エラーが表示されます。

Plug-ins of type MP and MPP can only contain resource bundles in archives in java properties format. Found other files in artifact.

./stage/oms/archives/test_group_resources.jar

関連項目:
リソース・プロパティ・バンドルの例については、次のJavaチュートリアルのページを参照してください。

http://docs.oracle.com/javase/tutorial/i18n/resbundle/propfile.html

3.8 新規ターゲット・タイプのチェック

新しいターゲット・タイプを登録する前に、次のリストをチェックします。

- ターゲット・タイプ名
ターゲット・タイプ名が次のネーミング形式に従っていることを確認します。pluginはプラグイン名を表し、typeはターゲット・タイプ名を表します。

oracle_plugin_type

たとえば、oracle_vt_zoneやoracle_emas_forms_serverなどです。

- モデル

- ターゲットが管理可能なエンティティであること、または監視できることを確認します。また、ターゲット・タイプのモデル化はビジネス上の意味があることを確認します。

- ターゲット・タイプにはレスポンス・メトリックおよび他の数量化可能な数値メトリックを備えてください。

- ターゲット・タイプは必要なターゲットであり、Enterprise Managerがインストールされていなくても識別可能な存在であることを確認します。

- ターゲット・タイプが属する管理可能なエンティティ・クラスを特定し、プロパティを正しく設定します。

- Responseメトリックには、Statusと呼ばれる数値メトリック列が1つのみあることを確認します。

- バージョン

- メタデータ・バージョンは正しく定義してください。メタデータ・バージョン番号の詳細は、第3.3.3項「ターゲット・タイプ・メタデータの定義」を参照してください。

- アソシエーション

- 抽象的なアソシエーション・タイプは使用しないでください。例:

select assoc_type from mgmt_assoc_types where is_abstract=1

- コア・アソシエーション・タイプを使用してください。例:

select assoc_type from mgmt_assoc_types where category=1

- provided_by/relies_on_key_componentの許容ペアを定義しないでください。Serviceフレームワークはサービスを自動的に追加します(provided_by/relies_on_key_componentの許容ペア)。

- プロパティ

- ユーザー名やパスワードなどの資格証明をターゲット・プロパティに格納しないでください。

- ターゲットのみの監視に使用するプロパティをターゲット・プロパティに含めます。データが管理エージェントによって活発に使用されていない場合、このデータはターゲット・プロパティではありません。

- ターゲット・バージョン・プロパティを追加してターゲット・バージョンを取得します。デフォルトではEnterprise Managerは、TargetVersionプロパティを使用してターゲット・バージョンを表します。このプロパティの詳細は、表3-2を参照してください。

3.9 ターゲット・タイプ定義のテスト

メトリック・ブラウザを使用して、新しいターゲット・タイプ定義をテストします。メトリック・ブラウザは、管理エージェントの重要部分である開発ユーティリティです。管理エージェントのサブシステムとして、Enterprise Managerフレームワークの管理リポジトリまたはその他のコンポーネントのオーバーヘッドを発生させることなく、管理エージェントにより監視されるターゲットのメトリック値への迅速なアクセスを可能にします。

3.9.1 メトリック・ブラウザのアクティブ化

Enterprise Manager Cloud Controlコンソールを使用せずにメトリックをデバッグするように管理エージェントのメトリック・ブラウザを構成するには、次のようにします。

1. $AGENT_HOME/sysman/config/emd.propertiesファイルの_enableMetricBrowser行が有効化されていることを確認してください(ここで、AGENT_HOMEは管理エージェントのホーム・ディレクトリを表します)。

_enableMetricBrowser=True

2. 次のコマンドを入力して、emd.propertiesファイルに行った変更を適用します。

emctl reload agent

3. emd.propertiesファイルを開き、EMD_URL行をチェックします。この形式は次のとおりです。

EMD_URL=http://host:port/emd/browser/main

または、emctlコマンドを使用し、次のようにしてメトリック・ブラウザをアクティブ化することも可能です。

emctl setproperty agent -name _enableMetricBrowser -value true

3.9.2 メトリックの表示

ターゲット・インスタンスがtargets.xmlファイルに追加され、新しい情報がリロードされた後で、使用可能なターゲットおよびメトリックをメトリック・ブラウザで表示できます。任意のWebブラウザを使用して、次のURLにアクセスします。

http://host:port/emd/browser/main

ヒント:
管理エージェントで使用されるポート番号を調べるには、$AGENT_HOME/sysman/config/emd.propertiesファイルを開き、EMD_URL行を検索します。

注意:
メトリック・ブラウザにログインするには、管理エージェントのオペレーティング・システム資格証明を使用する必要があります。

3.10 メタデータXMLの検証

ターゲット・メタデータ・ファイルが正しく定義されていることを検証するには、EDKのbinディレクトリから次のコマンドを入力します。

empdk validate_plugin -stage_dir plugin_stage

前述のコマンドのplugin_stageは、プラグインのステージング・ディレクトリを示します。

EDKの詳細は、第1.2項「拡張開発キット(EDK)」を参照し、empdkコマンドおよびその使用方法の詳細は、第14.3項「プラグインの検証」を参照してください。

3.11 ターゲット作成プロセスのトラブルシューティング

この項では、ターゲットで問題が発生した場合のトラブルシューティングのヒントを説明します。

ターゲットがEnterprise Managerに追加されない

ターゲットが追加されていない場合は、次を実行します。

- Oracle Management Serviceのトレース・ファイル(emoms.trc)に例外があるかどうかを確認します。OMSのトレース・ファイルは、EM_INSTANCE_BASE/em/OMS_NAME/sysman/log/ディレクトリにあります。ここで、EM_INSTANCE_BASEは、OMSインスタンス・ベース・ディレクトリです(このディレクトリは、デフォルトで、Oracleミドルウェア・ホームの親ディレクトリの下位に存在します)。

grep –i EntityManager.createEntities *
grep –i EntityUtil *

- ターゲットが管理リポジトリには追加されているが、管理エージェントには追加されていない場合は、agentStateDir/sysman/logディレクトリに移動し、管理エージェントのログ・ファイル(gcagent_mdu.log)を確認してください。このログ・ファイルは、管理エージェントに対するメタデータの更新を追跡します。

ターゲットのステータスが保留中のままになる

ターゲットが管理エージェントの監視対象で、ステータスが保留中のままである場合は、次を実行します。

- 管理エージェントが現在もターゲットを監視しているかどうかを確認します。
管理エージェントで監視されている、各ターゲットの名前およびタイプをリストする手順は、次のとおりです。

1. ディレクトリを、AGENT_HOME/binディレクトリ(UNIX)またはAGENT_HOME\binディレクトリ(Windows)に変更します。

2. 次のコマンドを入力します。

emctl config agent listtargets

3. ターゲットの出力を確認します。

- 次のログ・ファイルを確認して、管理エージェントにプラグインがデプロイされていることをチェックします。

agent_inst/sysman/registry.xml

- 管理エージェントが、ターゲット追加のリクエストを受信したことを確認します。agentStateDir/sysman/logディレクトリに移動し、管理エージェントのログ・ファイル(gcagent_mdu.log)を確認してください。

- SQL*Plusセッションから、次のようなtgtinfo.sqlスクリプトを実行します。

@tgtinfo oracle_database orcl

tgtinfo.sqlスクリプトには、次が含まれます。

SELECT type_meta_ver, ':'||category_prop_1||':'||
category_prop_2||':'||
category_prop_3||':'||
category_prop_4||':'||
category_prop_5||':' category_prop,
target_guid,
TO_CHAR(load_timestamp,'DD_MON-YY HH24:MI:SS'),
timezone_region,owner,host_name,emd_url,broken_reason,broken_str,manage_status,
promote_status,
dynamic_property_status
FROM sysman.em_targets
WHERE target_type='&&1'
AND target_name='&&2'
/

注意:
スクリプトの実行に問題がある場合は、スクリプトを編集して&&1をターゲット・タイプで置換し、&&2をターゲット名で置換します。

スクリプトの出力には、次の情報が含まれます。

- TARGET_TYPE
oracle_databaseなど、ターゲットの名前です。

- TYPE_META_VER
メタデータのバージョン番号です。ターゲットに対するメタデータのバージョンが正しいことを確認してください。

- CATEGORY_PROP_1
カテゴリ・プロパティを使用することで、異なる構成に基づいて様々なメトリック定義を区別できます。ターゲットに対する値が正しいことを確認してください。

- BROKEN_REASON
この値が0より大きい場合はターゲットが破損(ターゲットを保存できない、または必須プロパティが不足しているなど)しています。BROKEN_STR値は、ターゲットが破損した理由を示します。

- MANAGE_STATUS
ターゲットの管理ステータスです。使用可能な値は次のとおりです。

- 0: 無視されます。

- 1: まだ管理されていません。

- 2: 管理対象です。

- 3: 管理対象のターゲット・コンポーネントです。

- PROMOTE_STATUS
ターゲットの昇格ステータスです。使用可能な値は次のとおりです。

- 0: (存在のみのエンティティは)昇格できません。

- 1: 昇格可能です。

- 2: 昇格が進行中です

- 3: 管理エージェントに昇格されました。

- 4: 昇格が進行中ですが、ターゲットは以前、管理エージェントに追加されています。

- DYNAMIC_PROPERTY_STATUS
動的プロパティのステータスです。使用可能な値は次のとおりです。

- 0: 動的プロパティが管理エージェントによってアップロードされていません。

- 1: 動的プロパティが管理エージェントによってアップロードされています。

4 プラグイン・ビルダー

この章の項目は次のとおりです。

- 概要

- プラグイン・ビルダーを使用するための前提条件

- プラグイン・ビルダーのインストール

- Enterprise Managerプラグイン・プロジェクトの作成

- サンプル・プラグインを使用したプラグイン・プロジェクトの作成

- ターゲットの検出

- Enterprise Managerへのプラグイン・アーカイブのデプロイ

- 新しいターゲット・タイプの追加

- ターゲット・タイプ情報の更新

- ターゲットの収集項目の追加

- 収集項目プロパティの挿入または更新

- プラグイン・ビルダーの削除

- 付録

4.1 概要

Enterprise Managerプラグイン・ビルダーは、統合者がJDeveloperエディタを使用してプラグインを作成できるようにするJDeveloper拡張機能です。プラグイン・ビルダー内にある直感的なGUIウィザードによって、Enterprise Managerにインポートおよびデプロイできるプラグインを簡単に開発できます。様々なXMLエディタを使用してメタデータ・プラグインを作成する従来の方法では、セマンティックおよび構文の面でエラーが発生しがちでした。したがって、拡張機能に組み込まれている様々な実行時検証インテリジェンスを活用するために、対話型開発環境を使用することをお薦めします。

プラグインを開発するには、拡張開発キット(EDK)に付属しているプラグイン・ビルダー・ツールをダウンロードする必要があります。EDKキットをダウンロードするには、Cloud Controlコンソールで、「設定」を選択し、「拡張性」を選択し、「開発キット」を選択します。メタデータ・プラグインの開発に必要な主要なコンポーネントは、次のとおりです。

- Plugin.xml: plugin.xmlファイルは、プラグインを記述するメタデータを提供し、プラグインのデプロイに使用されます。これには、名前やバージョンなどのプラグインを識別するプロパティが含まれます。また、Enterprise Manager Cloud Controlに追加されるターゲット・タイプのセットを宣言します。

- Plugin_registry.xml: plugin_registry.xmlファイルは、プラグインがデプロイされる管理エージェントで必要なメタデータを提供します。これはプラグイン・アーカイブ内の/agentディレクトリにパッケージ化され、ターゲットを監視する管理エージェントにデプロイされます。

- ターゲット・タイプ: ターゲット・タイプ・メタデータ・ファイルは、新しいターゲット・タイプを定義するうえで不可欠な部分です。ターゲット・タイプ・ファイルには、特定のタイプのターゲットについて収集できるメトリックのセットを記述します。基本的に、取得するデータ、およびこの特定のターゲット・タイプでそのデータを取得する方法を管理エージェントに指示します。新しいターゲット・タイプを追加するには、次の詳細を指定します。

- インスタンス・プロパティは、この特定のターゲット・タイプの新規ターゲット・インスタンスを追加する際に管理者がEnterprise Manager Cloud Controlコンソールで指定する必要のあるプロパティを定義します。

- 資格証明は、データを収集したり、ジョブを実行する各ターゲット・インスタンスとの認証を行うプラグインに必要です。認証を有効にするには、資格証明タイプおよび資格証明セットが必要です。

- メトリックは、Cloud Controlのターゲット・モニタリング機能の中核です。基本的に、様々なターゲットをモニターおよび管理するCloud Controlの機能です。これはターゲット・メトリックを収集、処理および表示する機能のことです。

- デフォルトの収集: デフォルトの収集ファイルは、ターゲットから収集され、収集頻度などの情報とともに管理リポジトリに書き込まれるメトリック・データを定義します。ターゲット・タイプのデフォルトの収集メタデータ・ファイルでは、次を定義します。

- このメトリック・データが収集される頻度。

- 超過した場合に、メトリック・アラート・イベントが発生する原因となるしきい値。

- しきい値を超過した場合に表示されるオプションのメッセージ。

4.2 プラグイン・ビルダーを使用するための前提条件

- システムに最新バージョンのJDK 6をダウンロードしてインストールしていることを確認してください。

- プラグイン・ビルダーを使用してプラグインを開発するには、Oracle JDeveloper 11.1.1.7 Studioバージョンを使用することをお薦めします。プラグインとともにこのJDeveloperバージョンをインストールするには、第4.3.1項に記載されている手順を実行してください。

注意:
「Oracle JDeveloper 11g 11.1.1.7.0」→「Java Edition」→「汎用」を選択した場合、既存のJDeveloperインスタンスを実行しておく必要があります。JDeveloperをインストールするには、http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.htmlを参照してください。次に、第4.3.2項に記載されている手順を使用して、プラグイン・ビルダーをインストールできます。

- ローカル・システムに最新のEDKキットをダウンロードしたことを確認してください。これを行うには、第1.3項に示されている手順に従います。

4.3 プラグイン・ビルダーのインストール

この項には次のトピックが含まれます:

- プラグイン・ビルダーのインストールおよび新しいJDeveloperインスタンス

- 既存のJDeveloperインスタンスへのプラグイン・ビルダーのインストール

注意:
プラグイン・ビルダーをインストールしたら、プラグイン・ビルダー拡張機能が適切にデプロイされているかどうかを検証するために、次の手順を実行します。

1. 「Oracle JDeveloper」ページで、「ヘルプ」メニューから「バージョン情報」を選択します。

2. 「Oracle JDeveloperのバージョン情報」ダイアログ・ボックスで、「拡張機能」を選択します。

3. 「拡張機能」タブで、次のものを探します。
名前: EM Plug-in Builder

識別子: oracle.em.edk.pluginbuilder

バージョン: 12.1.0.1.0

ステータス: Loaded

4.3.1 プラグイン・ビルダーのインストールおよび新しいJDeveloperインスタンス

JDeveloper Studioバージョンおよびプラグイン・ビルダー・コンポーネントをインストールするには、次の手順を実行します。

1. Oracle JDeveloper 11.1.1.7のGeneric Studio Edition (jdevstudio11117install.jar)をダウンロードします。

2. 次の環境変数を設定します。

On Unix:
export JAVA_HOME=/usr/jdk6
export EDK_HOME=/home/SCHARGE/12.1.0.4.0_edk_partner

On Windows:
set JAVA_HOME=C:\Program Files\Java\jdk6
set EDK_HOME=C:\Users\SCHARGE\12.1.0.4.0_edk_partner

3. 次のコマンドを実行してJDeveloper Studioバイナリをインストールします。

On Unix:
$EDK_HOME/bin/setup.sh

On Windows:
%EDK_HOME%\bin\setup.bat

4.3.2 既存のJDeveloperインスタンスへのプラグイン・ビルダーのインストール

既存のJDeveloperインスタンスがある場合、JDeveloper更新メカニズムを使用してプラグイン・ビルダー拡張機能をインストールする必要があります。次の手順を実行します。

1. 次の環境変数を設定します。

On Unix:
export JAVA_HOME=/usr/jdk6

On Windows:
set JAVA_HOME=C:\Program Files\Java\jdk6

2. コマンドを実行して既存のJDeveloperインスタンスを起動します。

3. 「Oracle JDeveloper」ページで、「ヘルプ」メニューから「更新の確認」を選択します。更新の確認ウィザードが表示されます。

4. 「ようこそ」ページで、「次へ」をクリックします。

5. 「ソース」ページで、「ローカル・ファイルからインストール」を選択します。「参照」をクリックするか、プラグイン・ビルダー・ファイルへのパスを入力します。
Linuxの場合

<EDK_INSTALL_DIR>/lib/empluginbuilder.zip

Windowsの場合

<EDK_INSTALL_DIR>\lib\empluginbuilder.zip

EDK_INSTALL_DIRは、EDKがインストールされているディレクトリです。

「次へ」をクリックします。

6. 「サマリー」ページには、アップグレードされた拡張機能および新しい拡張機能が表示されます。「終了」をクリックします。
JDeveloperウィザードを終了するように求められます。

7. JDeveloperのEDKへの参照を更新するには、次の手順を実行します。

1. JDeveloperインスタンスを起動します。

2. 「Oracle JDeveloper」ページで、「ツール」メニューから「設定」を選択します。

3. 「設定」ページで、「EMプラグイン・ビルダー」を選択し、EDKの場所を更新します。

注意:
EDKのホーム・ロケーションの更新を逃すと、EDKのロケーションの設定エラーとともにプラグイン・プロジェクトは失敗します。

4.4 Enterprise Managerプラグイン・プロジェクトの作成

Enterprise Managerプロジェクトを作成するには、次の手順を実行します。

1. コマンドを実行して既存のJDeveloperインスタンスを起動します。

2. 「Oracle JDeveloper」ページで、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログ・ボックスが表示されます。

3. 左側のペインの「カテゴリ」セクションで「Enterprise Managerプラグイン」を選択し、「OK」をクリックしてメタデータ・プラグイン・プロジェクトを作成します。

4. 「EMプラグインの作成」ダイアログ・ボックスで、次の詳細を入力します。

図4-1 EMプラグインの作成

表4-1 EMプラグインの作成

属性

説明

会社名

名前はアルファベットの値で始めます。長さは1文字から8文字にまでできます。例: Sam123

製品名

製品名はアルファベットの値で始めます。長さは1文字から8文字にまでできます。例: p123

製品タグ

製品タグはxで始めます。このフィールドの長さは2文字から4文字にまでできます。たとえば、xp1などになります。

表示名

プラグインのわかりやすい表示名です。例: Plugin1

バージョン

これは事前移入値です。プラグインのバージョンを記述します。例: 12.1.0.1.0

カテゴリ

メニューからカテゴリを選択します。デフォルトでは、その他です。

初期ターゲット・タイプ名

これは、初期ターゲット・タイプの接尾辞を含んでいる事前移入値です。例: Type 1

ターゲット・タイプ表示名

ターゲット・タイプのわかりやすい表示名です。例: Basic Target Data

プラグイン・ディレクトリ

これはプラグイン・プロジェクトが作成される場所です。ディレクトリの場所を変更するには、「参照」をクリックします。例: /home/nbhaktha/pluginbuilder

「OK」をクリックします。

5. 「アプリケーション・ナビゲータ」タブに新しいプロジェクトが表示されます。複数のプロジェクトを作成した場合、アプリケーション・ナビゲータのメニューから目的のプラグイン・プロジェクトを選択できます。プロジェクトを展開すると、3つのプライマリ・リソース(エージェント、検出およびoms)が表示されます。

6. プラグインの詳細を表示するには、plugin.xmlを右クリックします。現在のプラグインに追加されているすべてのターゲット・タイプを表示するには、「ターゲット・タイプ」タブをクリックします。「コレクション・アイテム」タブをクリックして、このターゲットに関連付けられた収集項目のリストを表示します。

7. 新しいターゲット・タイプをプラグインに追加するには、第4.8項を参照してください。

8. 収集項目をターゲットに追加するには、第4.10項を参照してください。

注意:
Enterprise Manager 12.1.0.4以上では、ターゲットの検出のためのサポートがすぐに利用できます。詳細は、4.6項を参照してください。

9. リフレッシュ・アイコンをクリックしてプラグイン・プロジェクトに追加されたすべてのターゲットおよび収集項目を表示します。これらのファイルはステージング・フェーズまで、物理的にエージェント・ディレクトリに追加されないことに注意してください。これらのファイルをプラグイン・プロジェクトにパッケージ化する方法の詳細は、第4.13項を参照してください。

10. プロジェクト名を右クリックし、コンテキスト・メニューから「プラグイン配布の検証」を選択します。

11. 「EMプラグインの検証」ダイアログ・ボックスでは、プラグイン・ステージング・ディレクトリ値および出力ディレクトリ値は事前移入されています。これらは必要に応じて変更できます。「OK」をクリックします。

12. プロジェクト名を右クリックし、コンテキスト・メニューから「プラグイン・アーカイブの作成」を選択します。

13. 「プラグイン・アーカイブの作成」ダイアログ・ボックスでは、プラグイン・ステージング・ディレクトリ値および出力ディレクトリ値が事前移入されています。これらは必要に応じて変更できます。「OK」をクリックして.Oparファイルを作成します。
.Oparファイルのインポートおよびデプロイの詳細は、第4.7項を参照してください。

4.5 サンプル・プラグインを使用したプラグイン・プロジェクトの作成

サンプル・プラグインを使用してEnterprise Managerプラグイン・プロジェクトを作成するには、次の手順を実行します。

1. コマンドを実行して既存のJDeveloperインスタンスを起動します。

2. 「Oracle JDeveloper」ページで、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログ・ボックスが表示されます。

3. 「カテゴリ」セクションで、「Enterprise Managerプラグイン」を選択し、「サンプル・プラグインからのEnterprise Managerプラグイン」を選択します。

4. 「OK」をクリックします。

5. 「EMプラグインの作成」ダイアログ・ボックスで、会社名、製品名、製品タグ、表示名など、該当するプラグインのすべての詳細を入力します。

リストの次のサンプルからいずれかを選択します。

- Basic - oracle.samples.xsh1: これは、ターゲット、メトリック定義、レポートなどの最低限のモニタリング機能を示す基本プラグインです。

- Intermediate - oracle.samples.xsh2: これは、基本機能に加えて構成収集、ジョブ・タイプおよびターゲット・アソシエーションのサンプルをカバーする中間プラグインです。

- Advanced - oracle.samples.xsh3: これは、中間機能とともに自動検出、BI Publisherレポート、導出された関連付けおよびコンプライアンス標準をカバーする高度なプラグインです。

新しいプラグイン・プロジェクトの場所を入力します。

「OK」をクリックします。

これは、サンプルを指定プロジェクト・ディレクトリにコピーします。次に、ターゲット・タイプおよび収集ファイルを変更して新しい標準(company_product_tag_type)を使用し、plugin、agent-registry、targettypeおよびdefault_collectionファイルのxmlコンテンツを修正して、ウィザードに入力されたデータを反映します。

6. プロジェクト名を右クリックし、コンテキスト・メニューから「プラグイン配布の検証」を選択します。

7. 「EMプラグインの検証」ダイアログ・ボックスでは、プラグイン・ステージング・ディレクトリ値および出力ディレクトリ値は事前移入されています。これらは必要に応じて変更できます。「OK」をクリックします。

8. プロジェクト名を右クリックし、コンテキスト・メニューから「プラグイン・アーカイブの作成」を選択します。

9. 「プラグイン・アーカイブの作成」ダイアログ・ボックスでは、プラグイン・ステージング・ディレクトリ値および出力ディレクトリ値が事前移入されています。これらは必要に応じて変更できます。「OK」をクリックして.Oparファイルを作成します。
.Oparファイルのインポートおよびデプロイの詳細は、第4.7項を参照してください。

4.6 ターゲットの検出

EDK 12.1.0.4.0以上では、プラグイン・ビルダーは検出メタデータおよびターゲット固有の検出コードの指定をサポートしています。これは、新しいターゲット・タイプが作成されるたびに、新しく追加されたターゲット・タイプを含めるために検出メタデータが自動的に更新されるということです。一部のターゲット・タイプを検出しない場合、その情報をdiscovery.xmlファイル(<project_name>/Resources/oms/metadata/discoveryで入手できます)から手動で削除できます。このxmlファイルの詳細にアクセスして表示するには、第4.6.2項を参照してください。ターゲット固有の検出コードは/Resources/discoveryフォルダの下にあるPerlスクリプトを使用してサポートされます。新しく追加されたすべてのターゲット・タイプに対して、対応する検出コードをPerlスクリプトに追加する必要があります。Perlスクリプトを更新してターゲットを検出する方法の例は、第12.8.1項を参照してください。

関連項目:
ターゲットの検出をEnterprise Managerで手動で実行できるようにする方法の詳細は、第12項を参照してください。

4.6.1 既存のプラグインの検出メタデータの更新

検出メタデータを使用せずに作成されたプラグインがある場合、プラグイン・ビルダーを使用して検出ファイルを適切なフォルダに手動で追加できます。既存のプラグインに検出サポートを有効にするには、次の手順に従ってください。

1. 「アプリケーション・ナビゲータ」メニューからプロジェクト名を選択します。

2. 次のディレクトリに進みます。

<Project_Name>/Resources/oms/metadata/discovery

discoveryフォルダが存在しない場合、手動で追加する必要があります。

3. discoveryフォルダにある<company_name>_<product_name>_<tag>_discovery.xmlファイルを編集して、ターゲット・タイプ情報をメタデータ・ファイルに追加します。メタデータ・ファイルが存在しない場合、手動で追加する必要があります。
検出メタデータ・ファイルに追加または編集する内容の詳細は、サンプル・ファイルを参照してください($EDK_HOME/samples/plugins/oracle.samples.xsh3/plugin_dist/oms/metadata/discovery/sample_host3_discovery.xmlから入手できます)。

4. ターゲット・タイプを検出するロジックが含まれるPerlスクリプトを追加するには、次の場所に移動します。

<Project_Name>/Resources/discovery

discoveryフォルダが存在しない場合、手動で追加する必要があります。

5. Perlスクリプト<company_name>_<product_name>_<tag>_discovery.plに、検出用のメタデータ・ファイルに含まれているすべてのターゲット・タイプの検出に関連するロジックを追加して編集します。Perlファイルが存在しない場合、手動で追加する必要があります。
Perlファイルに追加または編集する内容の詳細は、サンプルのPerlスクリプトを参照してください($EDK_HOME/samples/plugins/oracle.samples.xsh3/plugin_dist/discovery/sample_host3_discovery.plから入手できます)。

6. プロジェクト名を右クリックし、コンテキスト・メニューから「プラグイン配布の検証」を選択します。

7. 「EMプラグインの検証」ダイアログ・ボックスでは、プラグイン・ステージング・ディレクトリ値および出力ディレクトリ値は事前移入されています。これらは必要に応じて変更できます。「OK」をクリックします。

8. プロジェクト名を右クリックし、コンテキスト・メニューから「プラグイン・アーカイブの作成」を選択します。

9. 「プラグイン・アーカイブの作成」ダイアログ・ボックスでは、プラグイン・ステージング・ディレクトリ値および出力ディレクトリ値が事前移入されています。これらは必要に応じて変更できます。「OK」をクリックして.Oparファイルを作成します。
.Oparファイルのインポートおよびデプロイの詳細は、第4.7項を参照してください。

4.6.2 基本検出情報の表示

プラグインにバンドルされたすべてのターゲット・タイプの検出情報を表示するには、次の手順を実行します。

1. 「アプリケーション・ナビゲータ」メニューからプロジェクト名を選択します。

2. 次のディレクトリに進みます。

<Project_Name>/Resources/oms/metadata/discovery

3. このディレクトリ内にあるxmlファイルをダブルクリックして、詳細を表示します。基本的に、xmlは次のメタデータ情報を記録します。

- 「一般」タブには、Enterprise Managerのインストール後にOracle Management Agentが起動する際にターゲットを検出するために更新する必要のあるPerlスクリプトの詳細が含まれています。

- 「ターゲット・タイプを含める」タブには、検出の対象となるすべてのターゲット・タイプがリストされます。

4.7 Enterprise Managerへのプラグイン・アーカイブのデプロイ

プラグイン・アーカイブ・ファイルをEnterprise Managerにデプロイする前に、次の前提条件タスクを実行します。

1. プラグインをデプロイするEnterprise Managerインスタンスにソフトウェア・ライブラリが構成されており、プラグイン・アーカイブ・ファイルが含まれている必要があります。

2. プラグイン・ビルダーを使用してプラグインをデプロイする場合は、必要なプリファレンスが設定されていることを確認します。Enterprise Managerプラグイン・ビルダーのプリファレンスを設定するには、「ツール」メニューから、「プリファレンス」を選択します。「設定」ダイアログ・ボックスで、EMプラグイン・ビルダーを選択し、Enterprise Managerのテスト・インストールを指定しますを選択します。

プラグイン・アーカイブ・ファイル(.opar)の準備が完了したら、プラグイン・アーカイブ・ファイルをEnterprise Managerにデプロイするために、プロジェクト名を右クリックし、コンテキスト・メニューから「プラグインのデプロイ」を選択して「OK」をクリックします。

注意:
プラグイン・アーカイブ・ファイルを作成済でない場合、デプロイ・ステップは実行できません。

プラグインが正常にデプロイされたら、プラグインにアクセスするために、Cloud Controlにログインし、「設定」メニューから「拡張性」を選択して「プラグイン」をクリックします。「プラグイン」ページに、新たにデプロイされたプラグインが表示されます。

4.8 新しいターゲット・タイプの追加

新しいターゲット・タイプを追加するには、2つの方法があります。これらは次のとおりです。

表4-2 新しいターゲット・タイプの追加

方法1

方法2

「Oracle JDeveloper」ページで、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログ・ボックスが表示されます。

アプリケーションのメニューからプロジェクト名を選択します。

「カテゴリ」セクションで、「メタデータ」を選択し、「ターゲット・タイプ」を選択します。

プロジェクト・フォルダ内に存在するomsフォルダを展開し、targetTypeフォルダにドリルダウンします。

「OK」をクリックします。

targetTypeフォルダを右クリックし、「新規」を選択します。

「新規ギャラリ」ウィンドウで、「メタデータ」を選択し「ターゲット・タイプ」をクリックします。

「OK」をクリックします。

1. 「ターゲット・タイプの追加」ダイアログ・ボックスで、新しいターゲット・タイプの一意の名前と表示名を入力し、「OK」をクリックします。

2. 追加された新しいターゲット・タイプを表示するには、「プロジェクト」タブにある「リフレッシュ」アイコンをクリックします。
詳細を表示するか、詳細を更新するには、追加された新しいターゲット・タイプをダブルクリックします。詳細は、4.9項を参照してください。

注意:
新しく追加したターゲット・タイプは、検出用として自動的に使用できるようになります。ターゲットを検出するために、/Resources/discoveryディレクトリ内の使用可能なPerlスクリプトを、すべてのターゲット・タイプ情報を含めるために手動で更新する必要があります。詳細は、4.6項を参照してください。

4.9 ターゲット・タイプ情報の更新

新しいターゲット・タイプの場合、次の詳細を指定する必要があります。

- インスタンス・プロパティの追加

- 動的プロパティの追加

- 資格証明タイプの追加

- 資格証明セットの追加

- ターゲットのメトリック・プロパティの追加

注意:
メトリック参照は、収集メタデータと完全に同期しているため、ターゲット・タイプのメトリックを削除または名前変更すると、収集項目内の対応する参照もそれに従って更新されます。

4.9.1 インスタンス・プロパティの追加

この特定のターゲット・タイプの新しいターゲット・インスタンスを追加するときに、管理者がEnterprise Manager Cloud Controlコンソールに指定する必要のあるプロパティを定義するには、次の手順を実行します。

1. ターゲット・タイプ・ファイル(target_type.xml)をダブルクリックして概要エディタで開きます。

2. 「プロパティ」タブを選択し、「InstanceProperty」セクションにある「追加(+)」をクリックします。

3. 「InstancePropertyの挿入」ダイアログ・ボックスで、プロパティのName、NLSID、LABELを入力します。デフォルトではOPTIONALはFalseに設定されている(選択が解除されている)ため、プロパティを指定する必要があります。
たとえば、名前Passwordによるプロパティを追加したり、OPTIONALをfalseにすることができます(チェック・ボックスの選択を解除することによって)。つまり、この特定ターゲット・タイプの新しいターゲット・インスタンスを追加するときに管理者はパスワードを指定する必要があるという意味です。

4. 「OK」をクリックします。
「InstanceProperty」セクションにある各オプションを選択すると、プロパティを編集または削除できます。

4.9.2 動的プロパティの追加

動的なインスタンス・プロパティの値は、ターゲット・インスタンスからデータを収集している管理エージェントによって戻されます。通常、メトリック収集を実行するfetchletに渡すプロパティを定義するために、QueryDescriptor内で使用されます。動的インスタンス・プロパティを追加するには、次の手順を実行します。

1. ターゲット・タイプ・ファイル(target_type.xml)をダブルクリックして概要エディタで開きます。

2. 「プロパティ」タブを選択し、「DynamicProperties」セクションにある「追加(+)」アイコンをクリックします。

3. 「DynamicPropertyの挿入」ダイアログ・ボックスで、Name、PROP_LISTを入力し、メニューからFORMATおよびFetchLetオプションを選択します。

For example:
NAME: AruidInfo
PROP_LIST: ARUID
FORMAT: ROW
FetchLet: OSLineToken

4. 「問合せプロパティ」セクションの追加(+)アイコンをクリックします。「QueryDescriptorプロパティの追加」ダイアログ・ボックスで、新しいプロパティの名前を入力し、スコープを定義します。

NAME: scriptsDir
SCOPE: GLOBAL

5. 「OK」をクリックします。
「DynamicProperties」セクションにある各オプションを選択すると、プロパティを編集または削除できます。

4.9.3 資格証明タイプの追加

資格証明タイプは、ターゲット・タイプでサポートされる認証タイプです。資格証明タイプを追加するには、次の手順を実行します。

1. ターゲット・タイプ・ファイル(target_type.xml)をダブルクリックして概要エディタで開きます。

2. 「資格証明」タブを選択し、「CredentialType」セクションにある追加「追加(+)」をクリックします。

3. 「CredentialTypeの挿入」ダイアログ・ボックスで、追加する資格証明の名前、NLSIDおよびラベルを入力します。

4. 「CredentialType列」セクションにある「追加(+)」アイコンをクリックします。

5. 「Credentialtype列の追加」ダイアログ・ボックスで、各資格証明タイプの列値を入力し、「OK」をクリックします。

たとえば、UserNameとPasswordという2つの列を持つホスト資格証明を作成するには、次の詳細を指定する必要があります。

In the Insert CredentialType dialog box, enter the following details:
NAME: XP2HostCreds
NLSID: CREDS_HOST_HOSTCREDS
LABEL: XP2 Host Credentials

In the AddCredentialType Column, enter the following details:
NAME: XP2HostUserName
NLSID: CREDS_HOST_USERNAME
LABEL: XP2 Host UserName

NAME: XP2HostPassword
NLSID: CREDS_HOST_Password
LABEL: XP2 Password

「CredentialType」セクションにある各オプションを選択すると、資格証明を編集または削除できます。

4.9.4 資格証明セットの追加

CredentialTypeのインスタンスを作成するには、次の手順を実行します。

1. ターゲット・タイプ・ファイル(target_type.xml)をダブルクリックして概要エディタで開きます。

2. 「資格証明」タブを選択し、「CredentialSet」セクションにある追加(+)をクリックします。

3. 「CredentialSetの挿入」ダイアログ・ボックスで、一意な名前を入力し、メニューから資格証明タイプを選択し、使用する値を選択し、作成する資格証明タイプのインスタンスのNLSIDおよびラベルを入力します。

4. 「CredentialTypeColumns」セクションにある追加(+)アイコンをクリックします。

5. 「CredentialSet列の追加」ダイアログ・ボックスで、各資格証明セットの列値を入力し、「OK」をクリックします。

たとえば、Normal UsernameとNormal Passwordという2つの列を持つ、通常ホスト資格証明と呼ぶホスト資格証明タイプのインスタンスを作成するには、次の詳細を指定します。

In the Insert CredentialSet dialog box, enter the following details:
NAME: HostCredsNormal
CREDENTIALTYPE: XP2HostCreds
USAGE: PREFERRED_CRED
NLSID: CREDS_HOST_HOSTCREDS_NORMAL
LABEL: Normal Host Credentials

In the AddCredentialSet Column, enter the following details:
SET_COLUMN: username
TYPE_COLUMN: XP2HostUsername
NLSID: CREDS_HOST_HOSTCREDS_NORMAL
LABEL: Normal Username

SET_COLUMN: password
TYPE_COLUMN: XP2HostPassword
NLSID: CREDS_HOST_HOSTCREDS_NORMAL
LABEL: Normal Password

「CredentialType」セクションにある各オプションを選択すると、資格証明を編集または削除できます。

4.9.5 ターゲットのメトリック・プロパティの追加

メトリック・プロパティを追加するには、次の手順を実行します。

1. ターゲット・タイプ・ファイル(target_type.xml)をダブルクリックして概要エディタで開きます。

2. 「メトリック」タブを選択し、「メトリック」セクションにある追加(+)をクリックします。「メトリック・プロパティ」ダイアログ・ボックスが表示されます。

3. 「一般」タブで、メトリックの名前、NLSID、値およびタイプを入力します。

4. 「TableDescriptor」タブに表の名前を入力し、第4.9.5.1項に記載されている手順を実行してColumnDescriptorを追加します。

5. 問合せを実行する場合は、「QueryDescriptor」タブで「IncludeQueryDescriptor」を選択します。メニューからFETCHLET_IDを選択し、問合せプロパティを挿入します。問合せプロパティを追加するには、第4.9.5.2項を参照してください。

6. 「ExecutionDescriptor」タブで、該当する値を「GetTables」および「GetViews」セクションに入力します。これを実行するには、第4.9.5.3項および第4.9.5.4項を参照してください。

7. 「収集の構成」タブで、メトリックのデータ構成を設定して、「新規追加」をクリックします。詳細は、4.9.5.5項を参照してください。

8. 「終了」をクリックします。

たとえば、次の図は、CPUパフォーマンス・データを収集するメトリックを含むメトリック・グループを作成する方法について説明しています。

「メトリック」セクションにある各オプションを選択すると、メトリック・プロパティを編集または削除できます。

4.9.5.1 ColumnDescriptorの追加

ColumnDescriptorを追加するには、次の手順を実行します。

1. 「TableDescriptor」タブで、追加(+)アイコンをクリックします。「ColumnDescriptorの追加」ダイアログ・ボックスが表示されます。

2. 表に含める出力列の名前、タイプ、NLSIDおよびラベルを入力します。「IS_PRIMARY」チェック・ボックスを選択して、選択した列を管理リポジトリの主キー列にします。「OK」をクリックします。

4.9.5.2 QueryPropertiesの追加

QueryDescriptorを追加するには、次の手順を実行します。

1. 「QueryDescriptor」タブで、追加(+)アイコンをクリックします。「QueryDescriptorプロパティの追加」ダイアログ・ボックスが表示されます。

2. 問合せプロパティの名前およびスコープを入力します。「OK」をクリックします。

4.9.5.3 ExecutionDescriptor表の追加

ExecutionDescriptor表を追加するには、次の手順を実行します。

1. 「ExecutionDescriptor」タブで、「GetTables」セクションにある追加(+)アイコンをクリックします。「ExecutionDescriptor表の追加」ダイアログ・ボックスが表示されます。

2. 名前およびメトリック名を入力し、「OK」をクリックします。

4.9.5.4 ExecutionDescriptorビューの追加

ExecutionDescriptorビューを追加するには、次の手順を実行します。

1. 「ExecutionDescriptor」タブで、「GetViews」セクションにある追加(+)アイコンをクリックします。「ExecutionDescriptor表の追加」ダイアログ・ボックスが表示されます。

2. 名前およびメトリック名を入力します。「フィルタ」を選択した場合、1つの列名および対応する値を指定できます。「フィルタ」を選択しない場合、追加(+)アイコンをクリックして複数の列名および値を追加します。「OK」をクリックします。

4.9.5.5 ターゲットの収集項目の構成

「収集の構成」タブで、次のタスクを実行できます。

- スキップ: 「スキップ」を選択して、この手順を省略します。基本的に、このメトリックに関連付けられた収集項目はありません。

- 新規追加: 「新規追加」を選択して、このメトリックのデータを収集する新しい収集項目を構成します。収集項目のプロパティを追加または編集するには、第4.11項を参照してください。

- 既存のものを使用: 「既存のものを使用」を選択して、メニューから収集項目を選択し、データ収集のために既存の収集項目をこのメトリックに関連付けます。

4.10 ターゲットの収集項目の追加

ターゲットの新しい収集項目を追加するには2つの方法があります。

表4-3 収集項目の追加または更新

方法1

方法2

アプリケーションのメニューからプロジェクト名を選択します。

アプリケーションのメニューからプロジェクト名を選択します。

プロジェクトのomsフォルダを展開して、「ターゲット・タイプ」を選択します。

ターゲット・タイプのリストが表示されます。

概要エディタでplugin.xmlファイルを開きます。

収集項目に関連付けるターゲット・タイプを選択します。

「コレクション・アイテム」タブを選択します。

ターゲットに使用可能なすべての収集項目のリストが表示されます。

「メトリック」タブを選択して、「追加」アイコンをクリックします。メトリックの挿入ウィザードで、「収集の構成」を選択し、「新規追加」をクリックします。

注意: 収集項目のプロパティを追加または編集するには、第4.11項を参照してください。

リストから収集項目を1つ選択して、次の手順を実行します。

「一般」タブに、メタデータ・バージョンおよびターゲット・タイプの情報が表示されます。

「コレクション・アイテム」タブに、収集項目の名前が表示されます。

注意: 収集項目のプロパティを追加または編集するには、第4.11項を参照してください。

4.11 収集項目プロパティの挿入または更新

収集項目のプロパティを追加または編集するには、次の手順を実行します。

1. 「一般」タブで、収集アイテムの名前を入力します。アップロード値によって、リポジトリに書き込まれるデータの前の値が決まります。たとえば、6というUPLOAD値は、6つ目ごとにデータの収集が管理リポジトリに書き込まれることを意味します。間隔および時間単位の値を指定します。たとえば、5という間隔とMinという時間単位は、収集が5分間隔で実行されることを意味します。「次へ」をクリックします。

2. 「条件」タブで、メトリック・アラート条件を設定できます。そうするには、「条件」セクションにある追加(+)をクリックします。「条件の追加」ダイアログ・ボックスが表示されます。条件のすべての値をここで入力し、「OK」をクリックします。「次へ」をクリックします。

3. 「メトリック収集」タブで、必要な詳細を指定し、「終了」をクリックします。

次の例は、Statusメトリックを含む、基本Responseメトリック・グループのCollectionItemエントリを表しています。これは、このメトリックのデータを5分ごと(このタイプのメトリックの標準的な収集間隔)に収集する必要があることを指定しています。条件は、Statusメトリックに設定されています。

In the General tab, enter the following details:
META_VER: 1.0
TYPE: test_demo_targetType

In the CollectionItem tab, enter the following details:
NAME: Response
UPLOAD: 6
INTERVAL: 5
TIME_UNIT: Min

In the Add Condition Dialog box, enter the following details:
COLUMN_NAME: Status
CRITICAL: 0
OPERATOR: EQ
CLEAR_MESSAGE_NLSID: Response_Status_clearalertmessage
MESSAGE: Failed to connect to database instance: %oraerr%.

4.12 プラグイン・ビルダーの削除

プラグイン・ビルダーを削除するには、次の手順を実行します。

1. コマンドを実行して既存のJDeveloperインスタンスを停止します。

2. JDeveloperインスタンス・ホームに移動します。
Linuxの場合

<EDK_INSTALL_DIR>/jdevhome/

Windowsの場合

<EDK_INSTALL_DIR>\jdevhome\

EDK_INSTALL_DIRは、EDKがインストールされているディレクトリです。

3. コマンドを実行して次のファイルを手動で削除します。

- jdeveloper/jdev/extensions/oracle.em.edk.pluginbuilder.jar

- jdeveloper/jdev/extensions/oracle.em.edk.pluginbuilder.help.jar

4. コマンドを実行してJDeveloperインスタンスを再起動します。

4.13 付録

この項には次のトピックが含まれます:

- 構造ビューの使用

- プロパティ・インスペクタの使用

- プラグイン・プロジェクトのディレクトリ構造

4.13.1 構造ビューの使用

構造ビューは、XMLファイルの要素構造を示します。構造ビューを使用すると、「プロパティ・インスペクタ」セクションに属性が表示される特定の要素に移動できます。

4.13.2 プロパティ・インスペクタの使用

「概要」セクションを使用するかわりに、「プロパティ・インスペクタ」セクションにあるプラグイン・ビルダー固有のラベルおよび要素を使用すると、プラグインのソースXMLコードを変更できます。このセクションには、編集作業をユーザーフレンドリにするプラグイン固有のすべての属性が用意されています。

注意:
DTD要素とその使用方法の完全なリストは、第21章を参照してください。

4.13.3 プラグイン・プロジェクトのディレクトリ構造

次に典型的なプラグイン・プロジェクトの例を示します。この例では、4つのターゲットとそれらの対応する収集項目を説明しています。収集項目は、本質的に、これらのターゲット·タイプからデータを収集することを目的としています。各ターゲットに1つずつ、4つの収集項目があります。Perlスクリプトがdiscoveryフォルダにあります。このスクリプトの主要な機能は、プラグイン・アーカイブがEnterprise Managerにインポートおよびデプロイされる際に、このプロジェクトの一部として追加されたすべてのターゲットを自動的に検出することです。

5 Information Publisherレポートの追加

メタデータ・プラグインを介してEnterprise Managerに新しいターゲット・タイプを定義すると、新しいレポート定義の追加が可能になります。プラグインにより、Information PublisherのXMLファイル形式を使用して永続(SYSTEM)ターゲット・タイプ固有のレポート定義をEnterprise Managerに追加することもできます。

注意:
Information PublisherはEnterprise Manager 12cでは非推奨なため、新しく作成するレポートではBI Publisherの使用をお薦めします。

この章の内容は次のとおりです。

- Information Publisherレポート追加の概要

- SYSTEMレポートの概要

- レポート定義ファイルの理解

- レポート定義ファイルの作成

- XMLレポート定義インタフェースの理解

- ImportExport.xsdファイルの使用

- Enterprise Managerコマンド・ライン・インタフェース(EM CLI)の動詞について

- 開発のガイドラインについて

5.1 Information Publisherレポート追加の概要

プラグイン開発者として、情報パブリッシャ・レポートを追加するには、表示する情報に基づいてレポートをデザインし、次のようにレポート定義ファイルを作成します。

1. 情報を管理リポジトリから抽出するために使用するSQLおよびPL/SQL問合せを定義します。
詳細は、「SQLまたはPL/SQL問合せの定義」を参照してください。

2. Enterprise Managerコンソールからのテスト・レポートの対話的な作成
詳細は、「Enterprise Managerコンソールからのテスト・レポートの対話的作成」を参照してください。

3. EM CLIを使用して、レポート定義ファイルを生成します。
詳細は、「EM CLIを使用したレポート定義ファイルの生成」を参照してください。

5.1.1 前提条件

この章を読む前に、次の資料の内容を理解しておく必要があります。

- EMリポジトリ・ビュー。それに対して独自の問合せを作成できます。

- レポート定義を作成するために使用するXMLファイル形式。

5.2 SYSTEMレポートの概要

メタデータ・プラグインを介してレポート定義を追加すると、ターゲット・タイプに固有のSYSTEMレポートが作成されます。SYSTEMレポート定義は、Information Publisherユーザー・インタフェースを通じて作成される定義とは異なる方法で処理されます。SYSTEMレポートは永続的であり、Enterprise Manager管理者が削除または編集することはできません。メタデータ・プラグインには複数のレポート定義を追加できるため、複数のレポートを特定のターゲット・タイプに関連付けることができます。

メタデータ・プラグインおよびInformation Publisher XMLファイルを使用してSYSTEMレポート定義を追加すると、ユーザーはEnterprise Managerコンソールの「情報パブリッシャ・レポート定義」ページからレポートにアクセスできます。

5.2.1 「レポート定義」ページについて

メタデータ・プラグインを使用して追加されるすべてのレポート定義は、Information Publisherの「レポート定義」ページから利用できます。即時利用可能なSYSTEMレポート定義と同様に、メタデータ・プラグインを介して追加されたレポート定義は、レポート・カテゴリおよびサブカテゴリに従って整理されます。SYSTEMレポート定義は、Enterprise Managerコンソールから削除できません。

5.3 レポート定義ファイルの理解

レポート定義ファイルはXMLファイルで、その中には管理リポジトリからリポジトリ・ビューを使用して関連情報を抽出するコードおよびそのデータの書式設定と表示に使用されるレポート要素が含まれます。レポート定義を作成する際に、通常はEnterprise Managerコンソールから指定するレポート要素およびパラメータをInformation Publisher APIから指定できます。完全に形成されたレポート定義ファイルは、4つの基本的なXMLタグから構成されていて、階層タグ構造をとります。

- <ReportDefinition>
レポート識別パラメータを定義し、レポートを作成するために使用されるすべてのレポート要素をカプセル化します。

- <ReportElement>
グラフィック表示要素(たとえば表、グラフまたはテキスト)を定義します。

- <ReportElementParameters>
個々のレポート要素が必要とする固有のパラメータを定義します。

- <ReportWideParmeters>
レポート定義ファイル内のすべてのレポート要素で使用されるパラメータを定義します。

5.4 レポート定義ファイルの作成

前に示したように、レポート定義ファイルの内容は、レポートを構成するために使用されるXMLタグから構成されています。レポート定義ファイルの開発と生成には、Enterprise ManagerコンソールとEM CLIを使用します。

メタデータ・プラグインにより、特定のターゲット・タイプに必要なレポート定義ファイルをいくつでも定義できます。

5.4.1 レポート定義ファイルの開発プロセスについて

有効なレポート定義ファイルの開発プロセスには、次の3つの手順が含まれます。

1. SQLまたはPL/SQL問合せの定義

2. Enterprise Managerコンソールからのテスト・レポートの対話的な作成

3. EM CLIを使用したレポート定義ファイルの生成

5.4.1.1 SQLまたはPL/SQL問合せの定義

レポート定義の作成の最初の手順は、管理リポジトリから必要なレポート情報を抽出するために使用されるSQLまたはPL/SQL問合せの作成です。Enterprise Managerには、ベース表から読み取らずに管理リポジトリからデータを安全に抽出するために使用できる管理ビューが用意されています。リポジトリ・ビューを使用すると、将来のリリースで行われる可能性のあるリポジトリ・スキーマの変更から問合せが保護され、SYSTEMレポート定義が引き続き機能することが保証されます。

次の問合せを使用すると、ターゲットのブラックアウト履歴に関する情報が抽出されます。この問合せは、MGMT$BLACKOUT_HISTORY、MGMT$BLACKOUTS、MGMT$TARGETおよびMGMT$METRIC_CURRENTの各リポジトリ・ビューを使用しています。

SELECT 'senior mts', count(value) FROM mgmt$metric_current
WHERE metric_column = 'Title' and LOWER(value) LIKE '%senior member%' AND
target_guid = ??EMIP_BIND_TARGET_GUID??

SELECT bh.created_by "Created by", bh.start_time "Start", bh.end_time "End",
bo.reason "Reason", bo.description "Description"
FROM
MGMT$BLACKOUT_HISTORY bh, MGMT$TARGET tgt, MGMT$BLACKOUTS bo
WHERE tgt.target_name = bh.target_name AND tgt.target_type = bh.target_type
AND tgt.target_guid = ??EMIP_BIND_TARGET_GUID?? AND bo.blackout_guid =
bh.blackout_guid
ORDER BY end_time desc

UNION
SELECT 'consulting mts', count(value) FROM mgmt$metric_current
WHERE metric_column = 'Title' and LOWER(value) LIKE '%consulting%' AND
target_guid = ??EMIP_BIND_TARGET_GUID?? ;

管理者が、このSQL問合せ文字列を含むレポートをEnterprise Managerコンソールから表示すると、Information Publisherにより、選択したターゲットの一意識別子がSQL問合せ文字列の??EMIP_BIND_TARGET_GUID??プレースホルダに自動的にバインドされます。「SQLからのチャート」および「SQLからの表」の各パラメータのドキュメントには、このバインド変数プレースホルダや、SQL問合せ文字列に含めることができるその他のものに関する情報が記載されています。

5.4.1.2 Enterprise Managerコンソールからのテスト・レポートの対話的な作成

SQLまたはPL/SQL問合せを作成し、テストしたら、Enterprise Managerコンソールで、「SQLからのチャート」および「SQLからの表」レポート要素を使用して独自のバージョンのレポートを対話的に生成することができます。Information Publisherユーザー・インタフェースを使用することにより、定義ファイルやインポート・プラグイン・アーカイブ(OPAR)ファイルを作成する必要なく、簡単にレポートのプロトタイプを作ることができます。

この対話的プロトタイプ作成法を使用して問合せを調整し、管理リポジトリから抽出されたデータと、レポートでのその情報の利用方法が、レポート要件を確実に満たすようにすることもできます。

5.4.1.3 EM CLIを使用したレポート定義ファイルの生成

Information Publisherによって作成されたレポートに満足したら、レポート定義ファイルを作成できる状態です。そのためには、EM CLIを使用してXMLベースのレポート定義ファイルを生成します。Enterprise Managerコンソールを使用して開発したレポート定義(管理リポジトリに格納)をエクスポートして、XMLレポート定義ファイルを生成するには、EM CLIのexport_report動詞を使用します。例:

>emcli export_report      -title="resource report"      -owner="ADMINISTRATOR_JOE"      -output_file="$HOME/reports/resource_report.xml"

レポート定義ファイルが生成されたら、XMLファイルを編集して独自のプラグイン固有の情報(たとえばproduct_name、component_nameおよびoms_version)を挿入する必要があります。

次の例では、ホスト構成の詳細を記述するレポートのためのレポート定義ファイルの内容を示します。

例: ホスト構成レポート定義ファイル

<?xml version = '1.0' encoding = 'UTF-8'?>
<ReportDefinition title="Host Performance Overview"
description="Overview of host performance" system_report="0"
category="Sample Host Reports" sub_category=
"Performance Reports" show_navigation="1" generate_context="0"
add_toc="0" product_name="EM" component_name="oracle_hostsample" is_jit_multi_target="0" target_type="oracle_hostsample" is_jit_target="1" style="BLAF" oms_version="11.1.0.1.0" xmlns="http://www.example.com/DataCenter/ReportDefinition">

<ReportElement element_row="1" suppress_render="0"
element_name_nlsid="IPMSG_USER_CHART_FROM_SQL" header_nlsid="Average CPU
Utilization (%)" element_type_nlsid="IPMSG_ANY_TARGET_TYPE" element_order="0">
<ReportElementParameters
parameterName="oracle.sysman.eml.ip.render.elem.
ChartParamController.chartType" parameterValue="pieChart"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.
render.elem.sqlStatement" parameterValue="select column_label, value
&quot;CPU Utilization (%)&quot; &#xA;
from mgmt$metric_current where &#xA;
target_guid = ??EMIP_BIND_TARGET_GUID??&#xA;
and metric_name = 'CPUPerf'"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.
elem.ChartParamController.width" parameterValue="200"/>
</ReportElement>
<ReportElement element_row="3" suppress_render="0"
element_name_nlsid="IPMSG_USER_CHART_FROM_SQL" header_nlsid="Memory Utilization (KB)" element_type_nlsid="IPMSG_ANY_TARGET_TYPE" element_order="1">
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.
elem.ChartParamController.legendPosition" parameterValue="south"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.
render.elem.ChartParamController.chartType" parameterValue="barChart"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.
render.elem.sqlStatement" parameterValue="select column_label, value
&quot;Memory Utilization (KB)&quot;&#xA;
from mgmt$metric_current where &#xA;
target_guid = ??EMIP_BIND_TARGET_GUID??&#xA;
and metric_name = 'MemoryPerf'"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.
elem.ChartParamController.visualOrientation" parameterValue="horizontal"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.
render.elem.ChartParamController.width" parameterValue="600"/>
</ReportElement>
</ReportDefinition>

5.4.2 レポートのライフサイクルについて: レポート定義の更新

Enterprise Managerにレポート定義を追加できるということは、レポート定義を保守、更新する必要があるということです。Enterprise Managerによるレポート定義の処理に精通すると、システムの挙動を予測し、下位互換性を計画することができます。

レポート定義がメタデータ・プラグインを使用してデプロイされたら、Enterprise Managerでより新しいバージョンのレポート定義をインストールできます。Enterprise Managerのより新しいバージョンで有効でないレポート定義は、新しいバージョンのプラグインを使用して更新および再デプロイします。Enterprise Managerでは、以前のバージョンのレポート定義はインストールされません。

レポート定義および一般的なメタデータ・プラグインは、下位互換性を念頭に置いてデザインします。より後のバージョンのレポート定義では、ターゲット・タイプ・メタデータの以前のバージョンもサポートする必要があります。レポート定義とメタデータのバージョン非互換性が最も明白になるのは、次の状況です。

- メタデータ・プラグイン・バージョン1に含まれ、メタデータ・プラグイン・バージョン2に含まれないレポート定義が、バージョン2がデプロイされても消えません。

- メタデータ・プラグインのバージョン1とバージョン2の両方がシステムにデプロイされている場合、管理エージェントは、そのエージェントにインストールされているバージョンのメタデータに基づいてデータを収集します。あるものはバージョン1のメタデータを、あるものはバージョン2のメタデータを収集します。インストールされるのはバージョン2のレポート定義だけです(Enterprise Managerコンソールに表示されます)。このため、バージョン2のレポート定義は、両方のバージョンのメタデータをサポートする必要があります。

5.5 XMLレポート定義インタフェースの理解

Information Publisher XMLベースのレポート定義ファイルは、単純なXMLタグを使用して、Information Publisherレポートを簡単に編集して定義、カスタマイズできる手段を提供します。

5.5.1 レポート定義タグについて

レポート定義ファイルの作成時に、次のXMLタグを使用してレポート情報を定義、操作します。

- <ReportDefinition>

- <ReportElement>

- <ReportElementParamters>

5.5.1.1 <ReportDefinition>

<ReportDefinition>タグはレポート定義ファイルで最初に出現するXMLタグで、レポートに関する重要な情報(たとえばタイトル、説明、製品名またはOracle Management Serviceのバージョン)を指定します。次の例は、ホスト構成レポート用に定義された<ReportDefinition>タグを示しています。

例5-1 ホスト構成レポート用の<ReportDefinition>タグ

<ReportDefinition
title="Host Configuration Overview"
description="Overview of host configuration" system_report="0"
category="Sample Host Reports"
sub_category="Configuration Reports"
show_navigation="1"
generate_context="0"
add_toc="0"
product_name="EM"
component_name="oracle_hostsample"
is_jit_multi_target="0"
target_type="oracle_hostsample"
is_jit_target="1"
style="BLAF"
oms_version="11.1.0.1.0"
xmlns="http://www.example.com/DataCenter/ReportDefinition">

タグ属性

表5-1 ホスト構成レポート用のタグ属性

属性

説明

title

レポート・タイトル。

説明。

説明。

category

カテゴリ名。

sub_category

サブカテゴリ名。

target_type

遅延バインディングのターゲット・タイプ、または遅延バインディングを行わない場合はnull。

add_hoc

目次を表示します。1=表示、0=非表示。

show_navigation

レポート内のナビゲーション・ヘッダーを表示します(タブなど)。1=表示、0=非表示。

product_name

製品名、EM(デフォルト)。

component_type

製品名。メタデータ・プラグイン・ターゲット・タイプに設定する必要があります。

oms_version

バージョン、11.1(デフォルト)。

レポート全体のパラメータ

<ReportWideParameters          parameterName="oracle.sysman.eml.ip.render.elem.TimePeriodParam"          parameterValue="0:1"/>

5.5.1.2 <ReportElement>

<ReportElement>タグは、既存のレポート定義に新しいレポート要素を追加するために使用されます。

入力

表5-2 <ReportElement>タグ

タグ" width="100%">

パラメータ

説明

element_type_nlsid

要素タイプ名

header_nlsid

要素ヘッダーまたはnull

element_order

1を基準としたこの要素の順序

element_row

1を基準としたこの要素の行

5.5.1.3 <ReportElementParamters>

<ReportElementParamtersタグは、レポート要素のために使用されているパラメータを宣言するために使用されます。<ReportElement>タグの範囲内で宣言するレポート要素パラメータをすべて含めます。

表5-3 <ReportElementParameters>タグ

タグ" width="100%">

パラメータ

説明

parameterName

パラメータ名

parameterValue

パラメータ値

5.5.2 要素パラメータの使用

一部のレポート要素で使用されるパラメータは、それらの要素の操作上の挙動を指定します。<ReportElementParamters>タグは、<ReportElement>に関連付けられた要素パラメータを宣言するために使用します。この項では、パラメータ名と値について、要素タイプごとに説明します。

この項では、特定のレポート要素に関連付けられているパラメータをリストします。

5.5.2.1 表要素パラメータについて

問合せ結果を表で表示するために、表要素を使用します。問合せは、管理ビューに対して行う必要があります。

表要素を宣言するには、<ReportElement>タグで次のものを使用します。

<ReportElementParameters
element_name_nlsid=" IPMSG_USER_TABLE_FROM_SQL"
element_type_ nlsid="IPMSG_ANY_TARGET_TYPE">

- 要素名 nlsid: IPMSG_USER_TABLE_FROM_SQL

- 要素タイプ nlsid: IPMSG_ANY_TARGET_TYPE

時間間隔

表5-4 表要素パラメータ時間間隔

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TimePeriodParam"

必須

いいえ。

デフォルト値

Null

有効値

最後の24時間の場合は0:0

最後の7日間の場合は0:1

最後の31日間の場合は0:2

サマリー

エンコードされた時間間隔

ソート列

表5-5 表作成のソート列

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.initialSortColumn"

必須

いいえ。

デフォルト値

結果セット内の最初の列。

有効値

任意の有効な列名。

サマリー

このパラメータが設定されている場合、この列名を持つ列に対してソート列インジケータが表示されます。設定されていない場合、ソート列インジケータは最初の列に表示されます。SQL問合せには、この列を基準にしてソートするorder by句を含めます。

ソート順序

表5-6 表作成のソート順序

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.initialSortOrder"

必須

いいえ。

デフォルト値

ascending。

有効値

ascendingまたはdescending。

サマリー

このパラメータが設定されている場合、ソート列インジケータは値に応じて昇順または降順で表示されます。設定されていない場合、ソート列インジケータは昇順に表示されます。

名前/値ペアの表示

表5-7 名前/値ペアの表示

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.nameValueDisplay"

必須

いいえ。

デフォルト値

<none>。

有効値

正の整数。

サマリー

このパラメータが設定され、問合せで1つの行だけが戻される場合、結果は名前/値ペアの縦のリストで表示されます。この属性の値を表示される名前列/値列の数に設定します(通常は1)。

表示する行数

表5-8 行の数

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.numRowsToShow"

必須

いいえ。

デフォルト値

"10"。

有効値

正の整数。

サマリー

生成された表に、一度に表示する行の数UIコントロールを使用して追加の行をスクロールできます。

PL/SQL文

表5-9 PL/SQL文かどうか

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.sqlStatementIsPlSql"

必須

いいえ。

デフォルト値

false

有効値

trueまたはfalse。

サマリー

SQL文がPL/SQLかどうか

SQLまたはPL/SQL文

表5-10 SQLまたはPL/SQL文

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.sqlStatementIsPlSql"

必須

いいえ。

デフォルト値

<None>。

有効値

任意の有効なSQL SELECT文。

サマリー

SQL文によって、ターゲット、ロケール情報および開始/終了日付に、オプションで値をバインドできます。SQL文の書式には、バインドされるオプションのバインド変数プレースホルダを含める必要があります。

バインド・プレースホルダ:

- ??EMIP_BIND_RESULTS_CURSOR??
PL/SQL文とともに使用して、表示する結果を含む戻りカーソルをバインドする場合。

- ??EMIP_BIND_TARGET_GUID??
SQLまたはPL/SQLとともに使用してターゲットGUIDをバインドする場合。

- ??EMIP_BIND_START_DATE??
SQLまたはPL/SQLとともに使用して開始日をバインドする場合。

- ??EMIP_BIND_END_DATE??
SQLまたはPL/SQLとともに使用して終了日をバインドする場合。

- ??EMIP_BIND_TIMEZONE_REGION??
SQLまたはPL/SQLとともに使用してタイムゾーン・リージョンをバインドする場合。

- ??EMIP_BIND_LOCALE_COUNTRY??
SQLまたはPL/SQLとともに使用してロケールの国をバインドする場合。

- ??EMIP_BIND_LOCALE_LANGUAGE??
SQLまたはPL/SQLとともに使用してロケール言語をバインドする場合。

PL/SQL文でないかぎり、SQL文の最後にセミコロン(;)を追加しないでください。

例: 要素定義へのパラメータとしての匿名PL/SQLブロックの指定

書式設定の問題を避けるには、レポートを生成し、EM CLIを使用してXMLにエクスポートします。

<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.sqlStatement" parameterValue="BEGIN DECLARE&#xA;&#xA; BEGIN&#xA;&#xA;
open ??EMIP_BIND_RESULTS_CURSOR?? for select &#xA;
bh.created_by &quot;Created by&quot;, &#xA; bh.start_time &quot;Start&quot;,&#xA; bh.end_time &quot;End&quot;,&#xA; bo.reason &quot;Reason&quot;,&#xA; bo.description &quot;Description&quot;&#xA; from &#xA; MGMT$BLACKOUT_HISTORY bh, &#xA; MGMT$TARGET tgt,&#xA; MGMT$BLACKOUTS bo&#xA;
where tgt.target_name = bh.target_name&#xA; and tgt.target_type = bh.target_type&#xA; and tgt.target_guid = ??EMIP_BIND_TARGET_GUID??&#xA; and bo.blackout_guid = bh.blackout_guid&#xA;
order by end_time desc;&#xA;&#xA;&#xA; END;&#xA;END;"/>

名前付きSQL文

表5-11 名前付きSQL文

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.NamedSqlStatement"

必須

いいえ。

デフォルト値

<none>。

有効値

任意の有効な文の名前。

サマリー

"oracle.sysman.eml.ip.render.elem.sqlStatement"の代替名。

Enterprise Managerリポジトリに格納された実際のSQL文を参照する名前付きSQL文を使用できます。

プラグイン・メタデータの一部としてSQL文とSQL問合せの名前を含んでいるXMLファイルを指定することで、名前付きSQL文を登録できます。

名前付きSQL XMLファイルのXSD定義の詳細は、第5.6項「ImportExport.xsdファイルの使用」を参照してください。

行の最大数

表5-12 行の数

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.maxNumberOfRowsAllowed"

必須

いいえ。

デフォルト値

"2000"。

有効値

任意のスカラー数値。

サマリー

表に表示するために取得される行の最大数を設定します。たとえば、上位10のxyz要素を表示するには、値を10に設定します。

nullデータ文字列置換

表5-13 nullデータ文字列置換

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.nullDataStringSubstitue"

必須

いいえ。

デフォルト値

""

有効値

文字列

サマリー

返されたnull値を置換する文字列

列による表の複数の表への分割

表5-14 表の分割

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.nullDataStringSubstitue"

パラメータ文字列

"oracle.sysman.eml.ip.render.elem.TableRender.tableSplitColumn"

必須

いいえ。

デフォルト値

Null

有効値

任意の有効な列名。

サマリー

このパラメータが設定されている場合、この列の値が変更されると、表はサブヘッダーのある別の表に分割されます。この列でデータを並べ替えます。

列グループ・ヘッダー

表5-15 列グループ・ヘッダー

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnGroupHeader"n

必須

いいえ。

デフォルト値

Null

有効値

列グループに使用するヘッダー文字列。

サマリー

このパラメータは、列ヘッダー文字列を提供します。

この列グループ・ヘッダーは、"oracle.sysman.eml.ip.render.elem.TableRender.columnGroupStart Col"nとoracle.sysman.eml.ip.render.elem.TableRender.columnGroupEndCol"nで指定された列の間にある列を対象とします。n接尾辞は数値で、最初の列グループを示す1から開始し、後続の列グループについては昇順に設定します。

列グループ開始列

表5-16 列グループ開始列

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnGroupStartCol"n

必須

いいえ。

デフォルト値

Null

有効値

任意の有効な列名。

サマリー

指定の列グループの最初の列を指定します。n接尾辞は数値で、最初の列グループを示す1から開始し、後続の列グループについては昇順に設定します。

列グループ終了列

表5-17 列グループ終了列

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnGroupEndCol"n

必須

いいえ。

デフォルト値

Null

有効値

任意の有効な列名。

サマリー

指定の列グループの最初の列を指定します。n接尾辞は数値で、最初の列グループを示す1から開始し、後続の列グループについては昇順に設定します。

セル内の値に対する別の行の使用

表5-18 セル内の値に対する別の行の使用

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.useSeparateRowsColumns"

必須

いいえ。

デフォルト値

Null

有効値

有効な列名のカンマ区切りリスト。

サマリー

このパラメータが設定されている場合、指定の名前を持つ指定された列の区切られた値が、それを含む行セル内の別々の行に表示されます。カンマで区切られた列名を追加することによって、複数の列をこの処理に指定できます。

デリミタとしての別の行の使用

表5-19 デリミタとしての別の行の使用

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.useSeparateRowsDelimiter"

必須

いいえ。

デフォルト値

,(カンマ)

有効値

任意の文字列

サマリー

文字列内のトークンを区切るために使用される文字

列内の重大度アイコン

表5-20 列内の重大度アイコン

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.severityColumn"

必須

いいえ。

デフォルト値

Null

有効値

任意の有効な列名。

サマリー

重大度アイコンは、有効な重大度戻り値のかわりに使用されます。アイコンを省略するために、結果セットのこの列にNull値が含まれることがあります。

列内の可用性ステータス・アイコン

表5-21 列内の可用性ステータス・アイコン

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.availabilityStatusColumn"

必須

いいえ。

デフォルト値

Null

有効値

任意の有効な列名。

サマリー

可用性ステータス・アイコンは、有効な戻り値のかわりに使用されます。アイコンを省略するために、結果セットのこの列にNull値が含まれることがあります。

列でのイメージのレンダリング

表5-22 列でのイメージのレンダリング

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.imageFilenameColumns"

必須

いいえ。

デフォルト値

Null

有効値

列名のカンマ区切りリスト。

サマリー

指定の画像ファイル名を示された列に表示するためのオプションのパラメータ。指定の画像をどの列に対してレンダリングするかを示します。列名のカンマ区切りリストを指定します。返されたイメージ・ファイル名は、「/images」から始まる相対パス(「/images/xyz.gif」など)を含んでいる必要があります。通常、数の値を適切なイメージ・ファイル名に変換するためには、SQLデコード関数が使用されます。

ターゲット・タイプ列

表5-23 ターゲット・タイプ列

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.targetTypeColumns"

必須

いいえ。

デフォルト値

Null

有効値

列名のカンマ区切りリスト。

サマリー

返される値が、同じタイプの表示文字列に変換される内部ターゲット・タイプとして使用される列を示すオプションのパラメータ。列名のカンマ区切りリストを指定します。

5.5.2.1.1 フィルタ要素について

次の表要素は、ユーザーが複数の表列の行でフィルタできるようになる検索フィルタを作成するために使用されます。次の3つの異なるフィルタ・タイプが許可されます。

- テキスト-値

- SQL問合せから取得された値リスト

- 要素定義内のカンマ区切りリストから取得された値リスト

フィルタ名の定義

表5-24 フィルタ名の定義

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterNames"

必須

はい。

デフォルト値

Null

有効値

フィルタ名のカンマ区切りリスト。

サマリー

カンマ区切りリストのフィルタ名を定義します。このパラメータは、フィルタ要素の順序も定義します。

フィルタ・プロンプトの定義

表5-25 フィルタ・プロンプトの定義

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterPrompt<name>Filter"

必須

はい。

デフォルト値

Null

有効値

CF。

サマリー

レポート・ページでフィルタ名に対して使用されるプロンプトを定義します。フィルタ値は、レポート要素のSQL文から??EMIP_BIND_PARAM<name>??を介してアクセスされます。これは、ユーザーがテキスト入力フィールドを介して値を入力することを可能にするフィルタを、他のフィルタ関連パラメータなしに定義します。

SQLフィルタ

表5-26 SQLフィルタ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterSql<name>"

必須

いいえ。

デフォルト値

Null

有効値

任意の有効なSQL SELECT文。

サマリー

テキスト入力フィールドでなく、UIにドリルダウン・メニューとして表示されるフィルタ名の値リストを移入するために使用されるSQL問合せを定義します。

フィルタ名のリスト

表5-27 フィルタ名のリスト

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterList<name>"

必須

いいえ。

デフォルト値

Null

有効値

値のカンマ区切りリスト。

サマリー

UIにドリルダウン・メニューとして表示されるフィルタ名の値リストを定義します。

フィルタ名リストの変換

表5-28 フィルタ名リストの変換

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterTranslateValues<name>"

必須

いいえ。

デフォルト値

いいえ。

有効値

yesまたはno

サマリー

filterSqlまたはfilterListによって提供された値をクライアント・ロケールに変換するかどうかを定義します。

ヒント・テキストのフィルタ

表5-29 ヒント・テキストのフィルタ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterTip<name>Filter"

必須

いいえ。

デフォルト値

Null

有効値

英数字のテキスト。

サマリー

ユーザーがフィルタUI要素にマウスを重ねたときに表示されるツール・チップのテキストを定義します。

デフォルトのフィルタ名

表5-30 デフォルトのフィルタ名

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterDefault<name>"

必須

いいえ。

デフォルト値

%。

有効値

英数字のテキスト文字列。

サマリー

フィルタ名のデフォルト値を定義します。デフォルト値がない場合は、かわりに「%」が使用されます。

デフォルトのフィルタ名Null

表5-31 デフォルトのフィルタ名Null

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterDefaultsToNull<name>"

必須

いいえ。

デフォルト値

Null

有効値

yesまたはno

サマリー

定義した場合、デフォルト値は%ではなくNULLに設定されます。

グローバル・フィルタ要素

次のパラメータは、フィルタ・システム上でグローバルに振る舞います。

空の表を表示

表5-32 空の表を表示

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterStartEmpty"

必須

いいえ。

有効値

yesまたはno

サマリー

このパラメータの値が「yes」の場合、レポートは最初、空の表を表示します。ユーザーがUIのフィルタ・ボタンをクリックすると、表にデータが移入されます。

空の表ヘッダー

表5-33 空の表ヘッダー

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterEmptyTableHeaders"

必須

いいえ。

デフォルト値

Null

有効値

表ヘッダーのカンマ区切りリスト。

サマリー

空の表から開始する場合に使用される表ヘッダーを定義します。

表ヘッダーのタイプ

表5-34 表ヘッダーのタイプ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterEmptyTableHeaderTypes"

必須

いいえ。

デフォルト値

VARCHAR。

有効値

表ヘッダーのカンマ区切りリスト。

サマリー

空の表から開始する場合に使用される表ヘッダーのタイプ(列タイプ)を定義します。これは、カンマ区切りリストです。ヘッダー・タイプが指定されない場合、デフォルトで、表ヘッダーのタイプはVARCHARになります。

表ヘッダー・テキストの上書き

表5-35 表ヘッダー・テキストの上書き

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterHeaderText"

必須

いいえ。

デフォルト値

検索フィルタ

有効値

列名のカンマ区切りリスト。

サマリー

デフォルト・フィルタ・セクションのヘッダー・テキストを上書きします。

デフォルト・フィルタ説明の上書き

表5-36 デフォルト・フィルタ説明の上書き

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterDescriptionText"

必須

いいえ。

デフォルト値

表の表示内容をフィルタする値を入力します。

有効値

英数字のテキスト文字列。

サマリー

デフォルト・フィルタ・セクションのヘッダー・テキストを上書きします。

デフォルト・フィルタのヒント・テキストの上書き

表5-37 デフォルト・フィルタのヒント・テキストの上書き

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterTipText"

必須

いいえ。

デフォルト値

検索フィルタでは、大文字と小文字が区別されます。ワイルドカードとして「%」を使用します。

有効値

英数字のテキスト文字列。

サマリー

デフォルト・フィルタ・セクションのヒント・テキストを上書きします。

デフォルト・ボタン・テキストの上書き

表5-38 デフォルト・ボタン・テキストの上書き

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterButtonText"

必須

いいえ。

デフォルト値

OK

有効値

英数字のテキスト文字列。

サマリー

デフォルト・フィルタ・ボタン・テキストを上書きします。

空の表テキスト

5-39 空の表テキスト

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.filterEmptyTableText"

必須

いいえ。

デフォルト値

(戻される行はありません)。

有効値

英数字のテキスト文字列。

サマリー

フィルタが実行される前に空の表に表示されるテキストを指定します。

5.5.2.1.2 表内でのハイパーリンクの使用

次のパラメータは、表内でハイパーリンクを実装して、マスター・ビューと詳細ビューの間に向上したリンク・ナビゲーションを組み込むために使用されます。これは、先にターゲット・セレクタ・ページに移動するoracle.sysman.eml.ip.render.elem.TableRender.columnDestReportTitle<num>の使用に代わる方法です。

レポートへのリンク

表5-40 レポートへのリンク

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnDestHomepageReportTitle<num>"

必須

いいえ。

デフォルト値

Null

有効値

レポート定義リンク。

サマリー

ターゲット・ホームページ上のレポート定義へのリンクが作成される以外は、oracle.sysman.eml.ip.render.elem.TableRender.columnDestReportTitle<num>と同じです。

表示する列数

表5-41 表示する列数

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.numberOfColumnsShowed"

必須

いいえ。

デフォルト値

SQL内の列の数。

有効値

数値

サマリー

UIに表示される要素SQLの列の数を定義します。SQL問合せにあるその他の列は非表示ですが、ハイパーリンクを作成してデータを詳細レポートに出力するために使用できます。

ターゲット名の表示

表5-42 ターゲット名の表示

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnDestTargetIndex<num>"

必須

いいえ。

デフォルト値

Null

サマリー

ターゲット名を含む列(非表示の場合もあります)を指定します。ターゲット名は、遅延バインディング・レポート上でターゲット選択にデータを移入するためにリンクで使用されます。

ターゲット・タイプの表示

表5-43 ターゲット・タイプの表示

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnDestTypeIndex<num>"

必須

いいえ。

デフォルト値

Null

サマリー

ターゲット・タイプを含む列(非表示の場合もあります)を指定します。ターゲット・タイプは、遅延バインディング・レポート上でターゲット選択にデータを移入するためにリンクで使用されます。

URLの表示

表5-44 URLの表示

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TableRender.columnDestURLIndex<num>"

必須

いいえ。

デフォルト値

Null

サマリー

指定の表要素に対応する任意のURLを含む列(非表示の場合もあります)を指定します。

例: 詳細レポートへのリンクを使用してドリルダウンを可能にするマスター・レポートのレポート定義

<?xml version = '1.0' encoding = 'UTF-8'?>
<ReportDefinition title="My Master Report" description=
"A master report to show master/detail" system_report="0"
category="Test Reports" sub_category="Master and Detail"
show_navigation="1" generate_context="0" add_toc="1"
product_name="EM" component_name="SAMPLE" is_jit_multi_target="0" is_jit_target="0" style="BLAF" oms_version="11.2.0.1.0" xmlns="http://www.example.com/DataCenter/ReportDefinition">

<ReportElement element_row="1" suppress_render="0"
element_name_nlsid="IPMSG_USER_ TABLE_FROM_SQL" header_nlsid="My Master Report
Table" element_type_nlsid="IPMSG_ANY_TARGET_TYPE" element_order="0">
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.
elem.TableRender.filterEmptyTableHeaders" parameterValue=
"Target Name, Target Type"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.columnDestParamColumnIndexes1" parameterValue="0,1"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterHeaderText" parameterValue="My Filter Header"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterDescriptionText" parameterValue="My Filter description"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.
render.elem.sqlStatement" parameterValue="SELECT TARGET_NAME &quot;Target
Name&quot;, TARGET_TYPE &quot;Target Type&quot;
FROM MGMT$TARGET WHERE TARGET_NAME LIKE
??EMIP_BIND_PARAMNAME?? AND TARGET_TYPE LIKE
??EMIP_BIND_PARAMTYPE??"/>
<ReportElementParameters  parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterPromptNAME" parameterValue="Name"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.
elem.TableRender.filterSqlTYPE" parameterValue=
"select distinct target_type from mgmt$target"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterStartEmpty" parameterValue="yes"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterTipTYPE" parameterValue="Filter on the target types"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterPromptTYPE" parameterValue="Target Type"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterTipText" parameterValue="My Tip Text"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterNames" parameterValue="NAME,TYPE"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.numberOfColumnsShowed" parameterValue="2"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.columnDestReportTitle1" parameterValue="My Detail Report"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterTipNAME" parameterValue="Filter on the target names"/>
<ReportElementParameters parameterName="oracle.sysman.eml.ip.render.elem.
TableRender.filterButtonText" parameterValue="My button text"/>
</ReportElement>
</ReportDefinition>

<?xml version = '1.0' encoding = 'UTF-8'?>
<ReportDefinition title="My Detail Report" system_report="0"
category="Test Reports" sub_category="Master and Detail" show_navigation="1"
generate_context="0" add_toc="0" product_name="EM"
is_jit_multi_target="0" is_jit_target="0" style="BLAF"
oms_version="11.2.0.1.0"
xmlns="http://www.example.com/DataCenter/ReportDefinition">
<ReportElement element_row="1" suppress_render="0"
element_name_nlsid="IPMSG_USER_TABLE_FROM_SQL" element_type_nlsid="IPMSG_ANY_
TARGET_TYPE" element_order="0">
<ReportElementParameters
parameterName="oracle.sysman.eml.ip.render.elem.headerParam"
parameterValue="Target Detail"/>
<ReportElementParameters
parameterName="oracle.sysman.eml.ip.render.elem.sqlStatement"
parameterValue="SELECT TARGET_NAME &quot;Target Name&quot;,
TYPE_VERSION &quot;Version&quot;
FROM MGMT$TARGET
WHERE TARGET_TYPE LIKE ??EMIP_BIND_PARAM2??
AND TARGET_NAME LIKE ??EMIP_BIND_PARAM1??"/>
</ReportElement>
</ReportDefinition>

5.5.2.2 グラフ要素について

グラフ要素は、問合せ結果のグラフィカル・ビューを表示するために使用されます。問合せは、管理リポジトリ・ビューに対して行う必要があります。

- 要素名: IPMSG_USER_CHART_FROM_SQL

- 要素タイプ: IPMSG_ANY_TARGET_TYPE

グラフ・タイプ

表5-45 グラフ・タイプ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.chartType"

必須

いいえ。

デフォルト値

pie chart

有効値

barChart"、"lineChart"、"pieChart"、"timeSeriesChart"、timeSeriesBarChart

サマリー

表示するグラフ・タイプ

時間間隔

表5-46 時間間隔

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TimePeriodParam"

必須

いいえ。

デフォルト値

Null

有効値

最後の24時間の場合は0:0。最後の7日間の場合は0:1。最後の31日間の場合は0:2。

サマリー

エンコードされた時間間隔

塗りつぶし

表5-47 塗りつぶし

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.fill"

必須

いいえ。

デフォルト値

none

有効値

none、absoluteまたはcumulative。

サマリー

折れ線グラフが折れ線の下の領域を塗りつぶすかどうかを示します。none: 折れ線の下を塗りつぶしません。absolute: 折れ線はnone設定と同じですが、折れ線の下の領域を塗りつぶします。cumulative: 折れ線の値を加算または累積し、折れ線の下の領域を塗りつぶします。塗りつぶし属性を使用する場合、グラフのデータがcumulativeなのかabsoluteなのかをレポート・ユーザーが混同しないように注意してください。

高さ

表5-48 高さ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.height"

必須

いいえ。

デフォルト値

"200"。

有効値

n。nは正の整数に正しく解析される任意の文字列です。

サマリー

グラフの表示高さをピクセル単位で設定します。

横または縦

表5-49 横または縦

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.visualOrientation"

必須

いいえ。

デフォルト値

horizontal。

有効値

horizontalまたはvertical。

サマリー

グラフの表示方向。この属性は、chartType属性がbarChartまたはtimeSeriesChartに設定されている場合のみ有効です。この属性は、pieChartの場合、影響がありません。

凡例の位置

表5-50 凡例の位置

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.legendPosition"

必須

いいえ。

デフォルト値

east。

有効値

default、east、south。

サマリー

凡例を配置する場所をグラフへの相対で指定します。

PL/SQL文

表5-51 PL/SQL文かどうか

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.sqlStatementIsPlSql"

必須

いいえ。

デフォルト値

false

有効値

trueまたはfalse。

サマリー

SQL文がPL/SQL文であることを示すにはtrueに設定します。

SQLまたはPL/SQL文

表5-52 SQLまたはPL/SQL文

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.sqlStatement"

必須

いいえ。

デフォルト値

<none>。

有効値

任意の有効なSQL SELECT文またはPL/SQLブロック。

サマリー

SQLまたはPL/SQL文は、ターゲット、ロケール情報および開始/終了日付に、オプションで値をバインドできます。文の書式には、バインドされるオプションのバインド変数プレースホルダを含める必要があります。

バインド・プレースホルダ:

- ??EMIP_BIND_RESULTS_CURSOR??
PL/SQL文とともに使用して、表示する結果を含む戻りカーソルをバインドする場合。

- ??EMIP_BIND_TARGET_GUID??
SQLまたはPL/SQLとともに使用してターゲットGUIDをバインドする場合。

- ??EMIP_BIND_START_DATE??
SQLまたはPL/SQLとともに使用して開始日をバインドする場合。

- ??EMIP_BIND_END_DATE??
SQLまたはPL/SQLとともに使用して終了日をバインドする場合。

- ??EMIP_BIND_LOCALE_COUNTRY??
SQLまたはPL/SQLとともに使用してロケールの国をバインドする場合。

- ??EMIP_BIND_LOCALE_LANGUAGE??
SQLまたはPL/SQLとともに使用してロケール言語をバインドする場合。

PL/SQL文でないかぎり、SQL文の最後にセミコロン(;)を追加しないでください。

積重ね棒グラフ

表5-53 積重ね棒グラフ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.stacked"

必須

いいえ。

デフォルト値

false

有効値

trueまたはfalse。

サマリー

棒グラフが積上げかどうかを示します。

グラフ・タイトル

表5-54 グラフ・タイトル

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.title"

必須

いいえ。

デフォルト値

<none>。

サマリー

全米障害者法(Americans with Disabilities Act)に準拠するためにグラフを識別するグラフ・タイトル

幅

表 5-55 幅

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.width"

必須

いいえ。

デフォルト値

"400"。

有効値

n。nは正の整数に正しく解析される任意の文字列です。

サマリー

要素の表示幅をピクセル単位で設定します。

Y軸ラベル

表5-56 Y軸ラベル

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.yAxisLabel"

必須

いいえ。

デフォルト値

<none>。

有効値

文字列。

サマリー

このパラメータが指定されている場合は、Y軸を持つグラフのY軸ラベルとして使用されます。

スライスの割合

表5-57 スライスの割合

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.pieShowSlicePercentLab els"

必須

いいえ。

デフォルト値

<none>。

有効値

trueまたはfalse。

サマリー

このパラメータが入力された場合、各スライスにパーセンテージ値をラベリングするかどうかを制御します。この属性は、chartType属性がpieChart以外の場合、無視されます。

凡例に値を表示

表5-58 凡例に値を表示

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.ChartParamController.pieValuesInLegend"

必須

いいえ。

デフォルト値

value

有効値

percent、valueまたはnone。

サマリー

円グラフの場合、このパラメータは、円グラフのスライスの値を円グラフのスライスのラベルとともに凡例に含めるかどうかを指定します。この属性のデフォルト値はvalueです。「percent」または「value」を指定した場合、数値と円グラフのスライス・ラベルが、「円グラフのスライスのラベル(数値)」という形式で表示されます「percent」を指定した場合、すべてのスライス値の合計に対するパーセンテージが計算、表示されます。そうでない場合はスライスのRAW値が表示されます。凡例で値を省略するには、このパラメータの値としてnoneを指定します。この属性は、chartType属性がpieChart以外の場合、無視されます。

5.5.3 メトリック詳細要素の理解

メトリック詳細要素を宣言するには、ReportElementタグで次のものを使用します。

<ReportElementParameters
element_name_nlsid=" IPMSG_METRIC_DETAILS"
element_type_ nlsid="IPMSG_ANY_TARGET_TYPE" ………>

ターゲット・タイプ

表5-59 ターゲット・タイプ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.MetDetInternalTargetType"

必須

いいえ。

デフォルト値

oracle_database

有効値

任意の有効な内部ターゲット・タイプ名

サマリー

グラフに表示するターゲットのタイプ

メトリック名

表5-60 メトリック名

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.MetDetSelectedMetric"

必須

はい。

有効値

選択したターゲット・タイプに応じた有効なメトリック名

サマリー

グラフ化するメトリック

メトリック列名

表5-61 メトリック列名

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.MetDetSelectedMetricColumn"

必須

はい。

有効値

選択したメトリックおよびターゲット・タイプに応じた有効な列名

サマリー

グラフ化するメトリックの列

時間間隔

表5-62 時間間隔

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TimePeriodParam"

必須

いいえ。

デフォルト値

Null

有効値

最後の24時間の場合は0:0。最後の7日間の場合は0:1。最後の31日間の場合は0:2。

サマリー

エンコードされた時間間隔

幅

表5-63 幅

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.MetDetWidth"

必須

いいえ。

デフォルト値

300。

有効値

n。nは正の整数に正しく解析される任意の文字列です。

サマリー

ピクセル単位でのイメージの幅。

高さ

表5-64 高さ

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.MetDetHeight"

必須

いいえ。

デフォルト値

300。

有効値

n。nは正の整数に正しく解析される任意の文字列です。

サマリー

ピクセル単位でのイメージの高さ。

凡例の位置

表5-65 凡例の位置

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.MetDetLegendPosition"

必須

いいえ。

有効値

south(デフォルト)、east

サマリー

グラフとの相対での凡例の位置

5.5.4 テキスト要素パラメータの使用

テキスト要素は、レポートに対して提供するメッセージ・テキストを表示するために使用します。テキスト要素を宣言するには、ReportElementタグに次のものを含めます。

<ReportElementParameters
element_name_nlsid="IPMSG_STYLED_TEXT"
element_type_ nlsid="IPMSG_ANY_TARGET_TYPE" ………>

メッセージ・テキスト

表5-66 メッセージ・テキスト

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TextParamBean.textMessage"

必須

いいえ。

デフォルト値

""(空の文字列)。

有効値

任意のテキスト。

サマリー

レポートに表示するメッセージを設定します。

メッセージ・スタイル

表5-67 メッセージ・スタイル

属性

説明

パラメータ名

"oracle.sysman.eml.ip.render.elem.TextParamBean.textStyleClass"

必須

いいえ。

デフォルト値

"OraInstructionText"

有効値

"OraInstructionText"、"OraTipText"。

サマリー

表示時に採用するメッセージ・テキストのスタイル・クラスを指定します。

リンク先

表5-68 リンク先

属性

説明

パラメータ名

"ooracle.sysmn.eml.ip.render.elem.TextParamBean.textDestination"

必須

いいえ。

デフォルト値

なし。

有効値

任意のURI。

サマリー

このテキスト要素のオプションのリンク先を指定します。

5.5.5 レポート全体のパラメータについて

次のパラメータは、レポート定義内のすべてのレポート要素に適用されます。

動的時間セレクタ

動的な時間間隔セレクタを指定することで、レポート・ユーザーがレポートを表示する特定の時間間隔を選択できるようになるレポート定義が行えます。

「SQLからの表」または「SQLからのチャート」レポート要素を使用している場合、開始と終了の日付がInformation Publisherによって自動的にバインドされるように、SQL文を構築できます。これは、次の例に示すように開始日値および終了日値のプレースホルダ(??EMIP_BIND_START_DATE??など)を挿入することによって行います。

例: 開始日および終了日の自動バインディング

'SELECT COLUMN_LABEL, ROLLUP_TIMESTAMP, AVERAGE
FROM MGMT$METRIC_HOURLY
WHERE TARGET_GUID = ??EMIP_BIND_TARGET_GUID??
AND METRIC_LABEL = ''Load''
AND KEY_VALUE = '' ''
AND ROLLUP_TIMESTAMP > ??EMIP_BIND_START_DATE??
AND ROLLUP_TIMESTAMP < ??EMIP_BIND_END_DATE??
ORDER BY ROLLUP_TIMESTAMP'

詳細は、「SQLからの表」または「SQLからのチャート」のオンライン・ヘルプ・ドキュメントを参照してください。

5.6 ImportExport.xsdファイルの使用

Information Publisher ImportExport.xsdファイルには、レポート定義XMLファイルの書式が記載されています。次の例は、NamedSql.xsdファイルのサンプルを示しています。

例: Information Publisher ImportExport.xsd

<xsd:schema targetNamespace="http://www.example.com/DataCenter/ReportDefinition"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ms="http://www.example.com/DataCenter/ReportDefinition"
elementFormDefault="qualified" attributeFormDefault="unqualified">

<xsd:annotation>
<xsd:documentation>
<strong>This is the schema definition, used by metadata services and the report import cli. It is used to fully specify a report definiton</strong>
</xsd:documentation>
</xsd:annotation>

<!-- ****************************** -->
<!-- Main Element: ReportDefinition -->
<!-- ****************************** -->
<xsd:element name="ReportDefinition" type="ms:ReportDefinitionT"/>
<!-- Defining Common Types used in a Report Definition -->
<!-- ***************** -->
<!-- ReportDefinitionT -->
<!-- ***************** -->
<!--  Documentation:
ReportDefinitionT is type for main root element. All the Report Definitions should validate to this type.
-->  <xsd:complexType name="ReportDefinitionT">
<xsd:sequence>
<xsd:element name="ReportWideParameters" type="ms:ReportWideParametersT" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="ReportElement" type="ms:ReportElementT" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="title" type="ms:String100Def" use="required"/>
<xsd:attribute name="description" type="ms:String500Def"/>
<xsd:attribute name="system_report" type="ms:BooleanDef" default="0"/>
<xsd:attribute name="category" type="ms:String100Def" use="required"/>
<xsd:attribute name="sub_category" type="ms:String100Def" use="required"/>
<xsd:attribute name="target_type"  type="ms:String64Def"/>
<xsd:attribute name="is_jit_target" type="ms:BooleanDef" default="1"/>
<xsd:attribute name="is_jit_multi_target" type="ms:BooleanDef" default="0"/>
<xsd:attribute name="add_toc" type="ms:BooleanDef" default="0"/>
<xsd:attribute name="pack_name" type="ms:String64Def"/>
<xsd:attribute name="style" type="ms:String64Def" default="BLAF"/>
<xsd:attribute name="show_navigation" type="ms:BooleanDef" default="1"/>
<xsd:attribute name="product_name" type="ms:String100Def" default="EM"/>
<xsd:attribute name="component_name" type="ms:String100Def"/>
<xsd:attribute name="generate_context" type="ms:BooleanDef" default="0"/>
<xsd:attribute name="oms_version" type="ms:NameDef" use="required"/>
</xsd:complexType>

<xsd:complexType name="ReportElementT">
<xsd:sequence>
<xsd:element name="ReportElementParameters"
type="ms:ReportElementParametersT" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="element_name_nlsid" type="ms:String256Def"
use="required"/>
<xsd:attribute name="element_type_nlsid" type="ms:String100Def"
use="required"/>
<xsd:attribute name="header_nlsid" type="ms:String100Def"/>
<xsd:attribute name="element_order" type="xsd:integer"/>
<xsd:attribute name="element_row" type="xsd:integer"/>
<xsd:attribute name="suppress_render" type="ms:BooleanDef"/>
</xsd:complexType>

<xsd:complexType name="ReportElementParametersT">
<xsd:attribute name="parameterName" type="ms:String100Def" use="required"/>
<!-- parameterValue is in CDATA, but schema definition makes no
distinction between this and string attribute. Therefore,
don't specify any contstraints on the attribute, thereby allowing
it to be unbouned in length.
-->
<xsd:attribute name="parameterValue" type="xsd:string" use="required"/>
</xsd:complexType>

<xsd:complexType name="ReportWideParametersT">
<xsd:attribute name="parameterName" type="ms:String100Def" use="required"/>
<!-- parameterValue is in CDATA, but schema definition makes no
distinction between this and string attribute. Therefore,
don't specify any contstraints on the attribute, thereby allowing
it to be unbouned in length.
-->
<xsd:attribute name="parameterValue" type="xsd:string" use="required"/>
</xsd:complexType>

<xsd:simpleType name="String64Def">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="64"/>
<xsd:whiteSpace value="preserve"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="String100Def">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="100"/>
<xsd:whiteSpace value="preserve"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="String500Def">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="500"/>
<xsd:whiteSpace value="preserve"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="String256Def">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="256"/>
<xsd:whiteSpace value="preserve"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="BooleanDef">
<xsd:restriction base="xsd:integer">
<xsd:enumeration value="0"/>
<xsd:enumeration value="1"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="NameDef">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="64"/>
</xsd:restriction>
</xsd:simpleType>

</xsd:schema>

例: NamedSQL.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ms="http://www.example.com/DataCenter/NamedSQL"
targetNamespace="http://www.example.com/DataCenter/NamedSQL"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:annotation>
<xsd:documentation>
<strong>This is the schema definition, used by metadata services. It is used to fully specify a list of named sql that can be used in report definitions</strong>
</xsd:documentation>
</xsd:annotation>

<xsd:element name="NamedSQLStatements">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NamedSQL" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="sqlName" type="xsd:string"/>
<xsd:attribute name="sqlValue" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

5.7 Enterprise Managerコマンド・ライン・インターフェース(EM CLI)の動詞について

次のEM CLIの動詞は、レポート定義の作成と管理のためにのみ使用されます。

例: EM CLIの動詞

emcli get_reports
[-owner="<report-owner>"]
Description:
This verb returns a list of reports owned by or viewable
by the user logged into the cli.
Options:
-owner       The optional argument allows listing of viewable
reports owned by a specific EM user.
Output:
The output of this report will be space separated quoted
strings for the report title and owner with each report on it
own line.

emcli export_report
-title="<report-title>"
-owner="<report-owner>"
-output_file="<file>"
Description:
This verb exports a report definition and all its element
definitions given its title and owner.
Options:
-title
The title of the report to export.
-owner
The owner of the report to export. The logged-in emcli user
must have view privliege for the report. Target names
will not be exported. The report is uniquely defined using
title/owner so both must be supplied.
-output_file
The name of the exported file.
Examples:
emcli export_report \
-title="maintenance report" \
-owner="SHIFT1_OPERATOR" \
-output_file="$HOME/reports/maint_report.xml"

emcli import_report
[-force]
-files="file1;file2;..."
Description:
This verb imports a report definition from a XML file using
the title in the xml file and the currently logged-in cli user
as the owner of the report. If the report/owner already exists,
the operation fails for that report with an appropriate error
message. The report will be changed to a just-in-time report with
the target type from the exported report. In addition, schedules
and access privileges will need to be edited using the UI. The
system enforces title/owner uniqueness, so an error will be thrown
if there is already a report with the same title and owner.
Options:
-force
If report with same title/owner exists, first delete it
(and all jobs and saved copies)
-files
List of Path/file name(s) of XML file(s), which contains
valid Report definition(s).
Examples:
emcli import_report \
-files="$HOME/reports/maint_report1.xml;$HOME/reports/file2.xml"

5.8 開発ガイドラインについて

レポート定義ファイルを定義する場合は、この項のガイドラインに従うことをお薦めします。

コンポーネント名はターゲット・タイプに設定する必要があります。

Enterprise Managerが特定のレポート定義を特定のメタデータ・プラグインと関連付けるためには、コンポーネント名をターゲット・タイプに設定する必要があります。例:

<ReportDefinition component_name="oracle_orgchart"  … …

「SQLからのチャート」要素と「SQLからの表」要素を使用する場合

- 要素が単一の非集約ターゲット(のみ)を受け入れる場合(大部分のメタデータ・プラグイン・ターゲット・タイプに該当)、要素上のoracle.sysman.eml.ip.render.elem.adjustTimesパラメータをtrueに設定することで、「SQLからのチャート」要素および「SQLからの表」要素に組み込まれている便利な自動タイム・ゾーン日付調整を利用できます。このパラメータが設定されると、SQL問合せにバインドされる開始と終了の日付は、レポートのタイム・ゾーンからターゲットのタイム・ゾーンに調整されます。反対に、問合せから戻される日付は、ターゲットのタイム・ゾーンからレポートのタイム・ゾーンに調整されます。

- 要素が複数のターゲットまたは集約ターゲットを受け入れる場合、日付値のタイム・ゾーン調整を処理する必要があります。レポートのタイム・ゾーンは、??EMIP_BIND_TIMEZONE_REGION??バインド変数から取得できます。レポート・ビューアが表示される日付を理解できるように、レポートで表示される日付がレポートのタイム・ゾーンに準拠しているか、各日付に関連付けられているタイム・ゾーンが明示的に表示されている必要があります。次の例は、一般的なユースケースを示しています。
例: 特定のターゲットのタイム・ゾーンからレポート・タイム・ゾーンへの、SELECT文で返される日付の調整

SELECT mgmt_view_util.adjust_tz(tbl.date, tgt.timezone_region,              ??EMIP_BIND_TIMEZONE_REGION??)
FROM mgmt$target tgt, sometable tbl
WHERE <your where clause here>

例: レポート・タイム・ゾーンからターゲット・タイム・ゾーンへの、SELECT文のWHERE句で使用されるレポート時間間隔の開始日と終了日の調整

SELECT <your selected columns here>
FROM mgmt$target tgt, sometable tbl
WHERE
tgt.target_guid = ??EMIP_BIND_TARGET_GUID?? and
tbl.Mydate > MGMT_VIEW_UTIL.ADJUST_TZ(
??EMIP_BIND_START_DATE??,
??EMIP_BIND_TIMEZONE_REGION??,
tgt.TIMEZONE_REGION)
AND
tbl.Mydate < MGMT_VIEW_UTIL.ADJUST_TZ(
??EMIP_BIND_END_DATE??,
??EMIP_BIND_TIMEZONE_REGION??,
tgt.TIMEZONE_REGION)

6 BI Publisherレポートの開発

Oracle Business Intelligence Publisher (BI Publisher)は、戦略的なエンタープライズ・レポート製品で、広範囲なデータソースから高度にフォーマットされたレポートを作成し管理する機能を提供します。Microsoft WordまたはAdobe Acrobatを使用してBI Publisherレポートのレイアウトをデザインし、様々なタイプのデータソースからレポートを作成することができます。

Oracle Enterprise Manager Cloud Controlは、BI Publisherと統合されています。BI Publisherを使用して、Enterprise Manager Cloud Control 12c以降用のレポートを作成することをお薦めします。BI Publisherには、データ・モデル・エディタ(BI Publisherインタフェース内でデータ・モデルを作成するためのグラフィカル・ユーザー・インタフェース)とレイアウト・エディタ(BI Publisherインタフェース内でレポート・レイアウトの作成を可能にするデザイン・ツール)が含まれています。

この章の内容は次のとおりです。

- Oracle BI Publisherの概要

- トレーニングとリソース

- レポートのデータ・ソースについて

- レポートの開発

- Enterprise Manager EDKを使用したステージングとBI Publisherレポートのデプロイ

6.1 Oracle BI Publisherの概要

プラグイン開発者は次のことを実行できます。

1. データ・モデルおよびレポート・テンプレートを使用したレポートの開発。
レポート開発の詳細は、「レポートの開発」を参照してください。

2. レポートのステージングとデプロイ。
レポートのステージングとデプロイの詳細は、「Enterprise Manager EDKを使用したステージングとBI Publisherレポートのデプロイ」を参照してください。

6.1.1 前提条件

この章では、次の内容を十分に理解していると想定します。

- 管理リポジトリ・ビュー。それに対して独自の問合せを作成できます。

- BI Publisherについての十分な知識。

6.2 トレーニングとリソース

BI Publisherレポートの開発を始める前に、Oracleで用意しているトレーニングと参照リソースを活用することをお薦めします。

- Oracle BI Publisher 11g入門

https://apex.oracle.com/pls/apex/f?p=44785:24:0::NO:24:P24_CONTENT_ID,P24_PREV_PAGE:5081,29">>https://apex.oracle.com/pls/apex/f?p=44785:24:0::NO:24:P24_CONTENT_ID,P24_PREV_PAGE:5081,29

- Oracle Technology Network (OTN) のOracle BI Publisher

http://www.oracle.com/technetwork/middleware/bi-publisher/overview/index.html">>http://www.oracle.com/technetwork/middleware/bi-publisher/overview/index.html

- Oracle BI Publisherブログ

http://blogs.oracle.com/xmlpublisher/">>http://blogs.oracle.com/xmlpublisher/

- Oracle BI Publishing Consultingブログ

http://bipconsulting.blogspot.com/">>http://bipconsulting.blogspot.com/

6.3 レポートのデータソースについて

Enterprise Managerレポート用に構成されたBI PublisherサーバーのEMREPOSデータソースを利用できます。EMREPOSデータ・ソースは管理リポジトリのMGMT_VIEWアカウントに接続し、BI PublisherにログオンしているEnterprise Managerユーザーに適切なセキュリティ・コンテキスト(VPD)を確立します。

セキュリティ対策として、EMREPOSデータソースを使用するBI Publisherレポートは、公開のMGMT$VIEWビューとGC$ビューへの読取り専用アクセス権しかなく、また基礎となるEnterprise Manager表にはアクセス権はありません。このモデルでは、Enterprise Managerが提供するレポートを自分のレポートのベースとして使用する可能性のあるEnterprise Managerユーザーとの間でのレポート問合せの共有もサポートされます。

6.4 レポートの開発

デフォルトでは、Enterprise Manager Cloud Controlフォルダのレポートとデータ・モデルは読取り専用です。自分のレポートはローカル・フォルダで開発し、その後で、BI Publisherのシステム管理者に、完成したレポートをEnterprise Manager Cloud Controlフォルダの外部にある共有フォルダに入れてもらってください。

BI Publisherレポートを開発するには、次の手順を実行します。

1. 管理リポジトリに対するSQL問合せに基づいてデータ・モデルを開発します。
BI Publisherレポートを開発するには、次のコンポーネントが必要です。

- データ・モデル

- レポート・テンプレート

- サブ・テンプレート

最初に、管理リポジトリに対するSQL問合せに基づいてデータ・モデルを開発してから、WindowsでMicrosoft Wordを使用してレポート(テンプレート)のレイアウトをデザインします。テンプレートは、2つの一般的なOracleサブテンプレート(縦または横)のいずれかを参照します。

この例では次のレポートを確認します。

Enterprise Manager Cloud Control -> EM Sample Reports -> Targets of Specified Type

Enterprise Manager Cloud Control -> EM Datamodels -> Targets of Specified Type

2. レポート・データと入力パラメータを要求するSQL問合せを開発、テストします。

3. BI Publisherでデータ問合せに使用するデータ・モデルを作成します。

4. BI Publisherで、レポートのパラメータとして使用するパラメータを作成します。

5. レポートで使用するレポート・レイアウトを作成します。
拡張開発キット(EDK)で提供されているサンプルの縦または横レイアウトのRTFファイルから開始します。

6. レポートを作成して、テストします。
BI Publisherを使用してレポートとデータ・モデルをダウンロードします。ダウンロード・オプションは、各レポートまたはデータ・モデルの名前の下の「詳細...」リンクにあります。

7. レポート・ファイル(.xdoz)とデータ・モデル(.xdmz)をBI Publisherからローカル・ファイルにエクスポートします。

6.5 Enterprise Manager EDKを使用したステージングとBI Publisherレポートのデプロイ

プラグインからBI Publisher WebアプリケーションにBI Publisherレポートをデプロイするには、次の手順を実行します。

1. 次のスキーマに完全に従っているメタデータ・ファイルを作成します。

emcore/source/oracle/sysman/emSDK/ip/bipublisherreport/BIPublisherReport.xsd

レポート・メタデータ・ファイルの例を次に示します。

<?xml version = '1.0' encoding = 'UTF-8' ?>
<BIPublisherReports
xmlns="http://www.example.com/DataCenter/BIPublisherReport">
<ReportFile relativePath="emreports" fileName="tvmlrb104a.jar"/>
<ReportFile relativePath="emreports" fileName="tvmlrb104b.jar"/>
</BIPublisherReports>

2. BI Publisherレポート(レポート定義の場合は.xdoz、レポート・データ・モデル、つまりSQLの場合は.xdmzという拡張子を持つZIPファイル)を1つまたは複数のJARファイルにステージングします。これらのファイルが、先ほどのメタデータ・ファイルで参照されます。

その例が、$ORACLE_HOME/sysman/jlib/emreports.jarファイルです。

$ unzip -l emreports.jar
Archive:  emreports.jar
Label: EMGC_MAIN_LINUX_110220
Length      Date    Time    Name
---------  ---------- -----   ----
0  02-20-2011 23:08   META-INF/
71  02-20-2011 23:08   META-INF/MANIFEST.MF
0  02-20-2011 23:08   bipublisherreports/
0  02-20-2011 23:08   bipublisherreports/EM Datamodels/
4776  02-20-2011 23:08   bipublisherreports/EM Datamodels/Usage Trend Report.xdmz
4854  02-20-2011 23:08   bipublisherreports/EM Datamodels/Usage Summary Report.xdmz
5008  02-20-2011 23:08   bipublisherreports/EM Datamodels/Charge Trend Report.xdmz
7344  02-20-2011 23:08   bipublisherreports/EM Datamodels/Consolidation Reports.xdmz
5043  02-20-2011 23:08   bipublisherreports/EM Datamodels/Charge Summary Report.xdmz
0  02-20-2011 23:08   bipublisherreports/Chargeback/
52291  02-20-2011 23:08   bipublisherreports/Chargeback/Charge Trend Report.xdoz
66994  02-20-2011 23:08   bipublisherreports/Chargeback/Charge Summary Report.xdoz
26505  02-20-2011 23:08   bipublisherreports/Chargeback/Usage Trend Report.xdoz
112150  02-20-2011 23:08   bipublisherreports/Chargeback/Usage Summary Report.xdoz
0  02-20-2011 23:08   bipublisherreports/Consolidation Planner/
50114  02-20-2011 23:08   bipublisherreports/Consolidation Planner/Consolidation Reports.xdoz
---------                     -------
335150                     16 files

3. プラグインJARファイルを作成します。
各JARファイルの最初のディレクトリは、bipublisherreportsである必要があります。レポートのすべてのデータ・モデルは、bipublisherreportsディレクトリ直下の、同一のサブディレクトリEM_Datamodelsにある必要があります。例:

1. プラグイン(すべてのメタデータ・ファイルとBI PublisherレポートJARファイルが含まれる)は、プラグイン環境を使用して動的にインストールされます(メタデータ・プラグインの場合)。

2. BI PublisherレポートのJARファイルは、metadata/bipublisherreportディレクトリのサブディレクトリに置かれ、メタデータ・ファイル(emreports)内で参照されます。

3. BI Publisherレポートは、プラットフォーム用もプラグイン用も、BI Publisher Webアプリケーション(プラグインのインストール時、またはしばらく後のBI Publisherのインストール時)にデプロイされます。
プラグイン・レポートは、BI PublisherがEnterprise Managerに統合されるときにconfigureBIPスクリプトを使用してデプロイされるか、しばらく後に次のEMCLI動詞のいずれかを使用してデプロイされます。

- * emcli setup_bipublisher (使用法の詳細はヘルプを参照)

- * emcli deploy_bipublisher_reports[-force]
この最後の動詞は、先ほどsetup_bipublisherを使用してセットアップしたEMからBI Publisherへのリレーションシップに、EMシステム・レポート(および、オプションで、拡張開発キット・プラグインが読み込んだレポート)をデプロイします。それを使用して、レポートJARファイル(Oracle Management Server (OMS)ファイルシステム上にある)をアップロードすることもできます。コマンドで-forceが使用されないかぎり、この操作によってEMレポート・フォルダ内の既存のBI Publisherレポートが上書きされることはありません。

次のオプションが使用可能です。

オプション

説明

[-pluginid]

このオプションを使用して、Enterprise Managerシステム・レポートの他に、その後ロードされたいかなるプラグイン・ベースのBI Publisherレポートもデプロイできます。

[-pluginversion]

このオプションは、特定のバージョンのプラグインに限定されます。

[-reportsjarfile]

このオプションを使用して、1つ以上のBI Publisherレポートが含まれる、単一のEnterprise ManagerレポートのJARファイルをデプロイします。このJARファイルの場所は、OMSの$ORACLE_HOMEディレクトリからの相対パスで指定されます。

たとえば、emctプラグインのための構文は、次のとおりです。

emcli deploy_bipublisher_reports -pluginid=oracle.sysman.emct -pluginversion=12.1.0.0.0

注意:
異なるJARファイルおよびPLATFORM JARファイルで重複したフォルダを使用しないでください。重複フォルダを使用すると、異なるJARファイルのレポートが、同じBI Publisherフォルダに置かれる原因になります。複数のJARファイルで同じレポート名が参照される場合、どちらが最後にデプロイされたのかを確認する方法はありません。

7 ターゲット構成データの収集

この章では、構成収集表の定義と、そのエンタープライズ構成管理フレームワークへの統合に関する情報を提供します。

この章の内容は次のとおりです。

- ターゲット構成データ収集の概要

- 構成定義ファイルについて

- エンタープライズ構成管理表のモデル化

- UIの「インベントリおよび使用状況」リージョンのカスタマイズ

7.1 ターゲット構成データ収集の概要

プラグイン開発者は、スナップショット・タイプごとに構成関連機能をエンタープライズ構成管理に統合する作業において、次の手順に従う必要があります。

1. 収集される構成データは、ある収集から次の収集までの間に、あらゆる点で変更されることのないようにしてください(ただし、管理者が明示的な操作を行った場合を除きます)。管理者の明示的な操作によって変更される可能性はあるが、そのような操作がなければ変更されないデータのみを構成データとして収集する必要があります。

2. ターゲット型定義の一部として確立された構成収集メトリックと一致するように、収集表を定義するエンタープライズ構成管理に固有のメタデータ・ファイルを定義します。
詳細は、項7.3.1「構成収集表の定義」を参照してください。

3. 指定のターゲット型に対するスナップショット・タイプに名前を付けます(名前は管理エージェント側で指定されるCollectionItem名と一致する必要があります)。
詳細は、項7.3.2「構成管理スナップショット・メタデータ要素の概要」を参照してください。

4. プラグインのデプロイ時に、エンタープライズ構成管理を使用してメタデータを登録します。これにより、エンタープライズ構成管理フレームワークに基づくあらゆる制約に従うスナップショット・データの表が作成されます。また、データ表をエンタープライズ構成管理メタデータ表に登録します。
詳細は、項7.3.4「構成管理フレームワークへのメタデータの登録」を参照してください。

5. 標準管理エージェントの収集メカニズムと統合します。CollectionItemおよび対応するメトリックは、どちらも管理エージェントで定義される必要があります。
詳細は、項7.3.7「標準収集メトリックおよびRAWメトリックへの変更」を参照してください。

6. 定義済みの構成収集データが管理エージェントによって管理リポジトリに戻されていることを検証します。
詳細は、項7.3.8「構成収集データのテスト」および項7.3.9「トラブルシューティング」を参照してください。

7.1.1 前提条件

この章では、次の内容を十分に理解していると想定します。

- 管理エージェント、メトリックおよび収集項目などのEnterprise Manager概念

- プラグインやそのXMLファイルのパッケージ化方法などのプラグイン開発の概要

7.2 構成定義ファイルについて

構成収集のメタデータは、プラグインにパッケージ化されている次の3つのメタデータ・ファイルで定義されます。

- 構成メタデータ・ファイル
このファイルは、収集した構成データを格納する管理リポジトリ内の表を定義します。また、EDKには構成メタデータ・ファイルの例が含まれます。

\samples\plugins\HostSample\stage\oms\metadata\snapshotlive\demo_hostsample_ecmdef.xml

詳細は、項7.3.1「構成収集表の定義」を参照してください。

- ターゲット・タイプ・メタデータ・ファイル
各構成データ項目は、ターゲット・タイプ・メタデータ・ファイル内の他のメトリックとともに定義されるメトリックとして収集されます。また、EDKにはターゲット・タイプ・メタデータ・ファイルの例が含まれます。

\samples\plugins\HostSample\stage\oms\metadata\targetType\demo_hostsample.xml

詳細は、項3.3「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

- デフォルトの収集メタデータ・ファイル
各メトリックに対して構成データが収集される頻度は、デフォルト収集メタデータ・ファイルで定義されます。各メトリックのメトリック・アラート・イベント条件とそのようなアラートの表示メッセージも、このファイルで定義されます。また、EDKにはデフォルト収集メタデータ・ファイルの例が含まれます。

\samples\plugins\HostSample\stage\oms\metadata\default_collection\demo_hostsample.xml

詳細は、項3.5「デフォルトの収集ファイルの作成」を参照してください。

7.3 エンタープライズ構成管理表のモデル化

この項では、構成スナップショット表の作成方法について説明します。Oracleホームのターゲット・タイプ定義がEnterprise Managerフレームワークに追加されていると仮定します。

構成データを格納するメタデータおよび表を定義し、管理エージェントでデータを収集するメトリックを定義することができます。

ターゲット・タイプ・メタデータ・ファイルで定義される各エンタープライズ構成管理メトリックは、構成メタデータXMLファイルによって定義される表に対応しています。ターゲット・タイプ・メタデータ・ファイルの詳細は、第3章「ターゲット・メタデータ・ファイルの作成」を参照してください。

表には、データベース内の外部キー制約に類似した親子関係があることがあります。すべての親表の行に対して子表の行にn数があり、すべての子表の行には正確に1つの親表の行があります。実際にエンタープライズ構成管理では表をツリーにできます。そこでは各表に最大1つの親表があります。1つの構成はこれら一連のツリーから構成されており、その場合、繰り返される表はありません。

データベースからすると、表には、祖先表のすべてのキー列が含まれる必要があります。(内部的には、各エンタープライズ構成管理表にはRAW(16)型のECM_SNAPSHOT_ID列が含まれ、、指定の行が属するスナップショットを識別します。)

収集表のメタデータは、最低限、次を指定する必要があります。

- 表名、列名、列タイプ、および表の間の階層関係(存在する場合)。

- キー列(表の中で行を一意に識別する列)。キーを正確に指定する必要があります。Enterprise Manager UI、比較および履歴は、キー列を広範囲に使用します。

- Enterprise Managerの一般UIに表示されるUI表示名。

図7-1に、構成表のOracleホーム・エンティティ関連図(ERD)を示します。

図7-1 フレームワークへの関連を持つOracleホームERD

7.3.1 構成収集表の定義

構成メタデータXMLファイルは、METADATAタグで始まります。METADATAタグは、ターゲット・タイプとスナップショット・タイプの関係を確立し、UI表示名を定義します。

<METADATAS>
<METADATA SNAP_TYPE="oracle_home_config" TARGET_TYPE="oracle_home" VER="1">

<METADATA_UI_NAME>Oracle Home Configuration</METADATA_UI_NAME>

CONFIGURATION COLLECTION TABLE DEFINITIONS
</METADATA>
<METADATAS>

構成収集表の定義は、METADATAタグ内でカプセル化されます。

構成メタデータXMLの要素の詳細は、項7.3.2「構成管理スナップショット・メタデータ要素の概要」を参照してください。構成XMLファイルを制御するXMLスキーマ定義(XSD)の詳細は、拡張開発キット(EDK)の仕様を参照してください。

7.3.1.1 EM_ECM_OH_HOME_INFO表

EM_ECM_OH_HOME_INFO表には、Oracleソフトウェアのインストールに関連したプロパティが格納されます。この表のメタデータは、次のとおりです。

<TABLE NAME="EM_ECM_OH_HOME_INFO" SINGLE_ROW="Y">
<UI_NAME>Home Info</UI_NAME>
<COLUMN NAME="HOME_LOCATION"  TYPE="STRING" TYPE_FORMAT="1024">Install Location</COLUMN>
<COLUMN NAME="OUI_HOME_NAME"  TYPE="STRING" TYPE_FORMAT="256" >OUI Home Name</COLUMN>
<COLUMN NAME="OUI_HOME_GUID"  TYPE="STRING" TYPE_FORMAT="32"  >OUI Home GUID</COLUMN>
<COLUMN NAME="HOME_TYPE"      TYPE="STRING" TYPE_FORMAT="1"   >Home Type</COLUMN>
<COLUMN NAME="HOME_POINTER"   TYPE="STRING" TYPE_FORMAT="1024">Home Pointer</COLUMN>
<COLUMN NAME="IS_CLONABLE"    TYPE="NUMBER" TYPE_FORMAT="1"   >Is Clonable</COLUMN>
<COLUMN NAME="IS_CRS"         TYPE="NUMBER" TYPE_FORMAT="1"   >Is CRS</COLUMN>
<COLUMN NAME="ARU_ID"         TYPE="NUMBER" TYPE_FORMAT="10"  >ARU ID of the Oracle Home</COLUMN>
<COLUMN NAME="HOME_SIZE"      TYPE="NUMBER" TYPE_FORMAT="10"  >Size of Oracle Home (KB)</COLUMN>
</TABLE>

対応するデータベース表は次のとおりです。

COLUMN_NAME

DATA_TYPE

COLUMN_WIDTH

KEY

ECM_SNAPSHOT_ID

RAW

16

PK

HOME_LOCATION

VARCHAR2

1024

OUI_HOME_NAME

VARCHAR2

256

OUI_HOME_GUID

VARCHAR2

32

HOME_TYPE

VARCHAR2

1

HOME_POINTER

VARCHAR2

1024

IS_CLONABLE

NUMBER

1

IS_CRS

NUMBER

1

ARU_ID

NUMBER

10

HOME_SIZE (単位: KB)

NUMBER

10

この表の場合、主キーはECM_SNAPSHOT_IDから構成されています。メタデータの例のSINGLE_ROW="Y"属性は、各スナップショットが、この表では多くとも1つの行しか持たず、したがって、この表の他のいかなる列もキーとしてマークする必要がないことを示します。つまり、スナップショットを識別するECM_SNAPSHOT_ID列は表の唯一のキー列になります。

7.3.1.2 EM_ECM_OH_DEP_HOMES表

EM_ECM_OH_DEP_HOMES表には、指定のOracleホームが依存するOracleホーム・ディレクトリの場所が格納されます。このデータは、Oracleホーム間の依存のアソシエーションを形成するために使用されます。この表のメタデータは、次のとおりです。

<TABLE NAME="EM_ECM_OH_DEP_HOMES">
<UI_NAME>Dependee Oracle Homes</UI_NAME>
<COLUMN NAME="DEP_HOME_LOCATION"  TYPE="STRING" TYPE_FORMAT="1024" IS_KEY="Y">Dependee Home Location</COLUMN>
</TABLE>

対応するデータベース表は次のとおりです。

COLUMN_NAME

DATA_TYPE

COLUMN_WIDTH

KEY

ECM_SNAPSHOT_ID

RAW

16

PK

DEP_HOME_LOCATION

VARCHAR2

1024

PK

この表の主キーは、ECM_SNAPSHOT_IDとDEP_HOME_LOCATIONから構成されています。

注意:
メタデータ・ファイルでは、キー列(および常にキーの一部となるECM_SNAPSHOT_ID)はIS_KEY="Y"でマークされます。

7.3.1.3 EM_ECM_OH_COMPONENT表

EM_ECM_OH_COMPONENT表には、Oracleホーム・ディレクトリにあるOracleソフトウェア・コンポーネントの情報が格納されます。この表のメタデータは、次のとおりです。

<TABLE NAME="EM_ECM_OH_COMPONENT">
<UI_NAME>Components installed in Oracle Home</UI_NAME>
<COLUMN NAME="COMPONENT_NAME"           TYPE="STRING" TYPE_FORMAT="128" IS_KEY="Y">Component Name</COLUMN>
<COLUMN NAME="COMPONENT_VERSION"        TYPE="STRING" TYPE_FORMAT="64"  IS_KEY="Y">Base Version of Component</COLUMN>
<COLUMN NAME="CURRENT_VERSION"          TYPE="STRING" TYPE_FORMAT="64"            >Current Version of the Component</COLUMN>
<COLUMN NAME="INSTALL_TIME"             TYPE="TIMESTAMP"                          >Install Time</COLUMN>
<COLUMN NAME="IS_TOP_LEVEL"             TYPE="NUMBER" TYPE_FORMAT="1"             >Is it a top level Component</COLUMN>
<COLUMN NAME="EXTERNAL_NAME"            TYPE="STRING" TYPE_FORMAT="128"           >External name</COLUMN>
<COLUMN NAME="DESCRIPTION"              TYPE="STRING" TYPE_FORMAT="1024"          >Description</COLUMN>
<COLUMN NAME="LANGUAGES"                TYPE="STRING" TYPE_FORMAT="1024"          >Languages</COLUMN>
<COLUMN NAME="INSTALLED_LOCATION"       TYPE="STRING" TYPE_FORMAT="1024"          >Installed Location</COLUMN>
<COLUMN NAME="INSTALLER_VERSION"        TYPE="STRING" TYPE_FORMAT="64"            >Installer Version</COLUMN>
<COLUMN NAME="MIN_DEINSTALLER_VERSION"  TYPE="STRING" TYPE_FORMAT="64"            >Minimum Deinstaller Version</COLUMN>

注意:
このメタデータは、このTABLEタグの一部として含まれる次の表(EM_ECM_OH_COMP_INST_TYPE表)の親表であるため、TABLE閉じタグが(まだ)ありません。

対応するデータベース表は次のとおりです。

COLUMN_NAME

DATA_TYPE

COLUMN_WIDTH

KEY

ECM_SNAPSHOT_ID

RAW

16

PK

COMPONENT_NAME

VARCHAR2

128

PK

COMPONENT_VERSION

VARCHAR2

64

PK

CURRENT_VERSION

VARCHAR2

64

INSTALL_TIME

DATE

[-]

IS_TOP_LEVEL

NUMBER

1

EXTERNAL_NAME

VARCHAR2

128

DESCRIPTION

VARCHAR2

1024

LANGUAGES

VARCHAR2

1024

INSTALLED_LOCATION

VARCHAR2

1024

INSTALLER_VERSION

VARCHAR2

64

MIN_DEINSTALLER_VERSION

VARCHAR2

64

この表の主キーは、ECM_SNAPSHOT_ID、COMPONENT_NAMEおよびCOMPONENT_VERSIONから構成されています。

7.3.1.4 EM_ECM_OH_COMP_INST_TYPE表

EM_ECM_OH_COMP_INST_TYPE表には、Oracleソフトウェア・コンポーネントのインストールのタイプが格納されます(Oracle Universal Installer (OUI)のみ)。これは、EM_ECM_OH_COMPONENT表の子表です。この表のメタデータは、次のとおりです。

<TABLE NAME="EM_ECM_OH_COMP_INST_TYPE">
<UI_NAME>Install Types of Components</UI_NAME>
<COLUMN NAME="NAME_ID"                  TYPE="STRING" TYPE_FORMAT="128" IS_KEY="Y">Install Type Name ID</COLUMN>
<COLUMN NAME="INSTALL_TYPE_NAME"        TYPE="STRING" TYPE_FORMAT="128"           >Install Type Name</COLUMN>
<COLUMN NAME="DESC_ID"                  TYPE="STRING" TYPE_FORMAT="128"           >Install Type Description ID</COLUMN>
</TABLE>
</TABLE>

注意:
余分な</TABLE>閉じタグは、EM_ECM_OH_COMPONENT親表のためのものです。

対応するデータベース表は次のとおりです。

COLUMN_NAME

DATA_TYPE

COLUMN_WIDTH

KEY

ECM_SNAPSHOT_ID

RAW

16

PK

COMPONENT_NAME

VARCHAR2

128

PK

COMPONENT_VERSION

VARCHAR2

64

PK

NAME_ID

VARCHAR2

128

PK

INSTALL_TYPE_NAME

VARCHAR2

128

DESC_ID

VARCHAR2

128

この表の場合、主キーはECM_SNAPSHOT_ID、COMPONENT_NAME、COMPONENT_VERSIONおよびNAME_IDから構成されています。

注意:
COMPONENT_NAMEおよびCOMPONENT_VERSIONはここにリストされていませんが、親表のキー列から継承されます。これらの列の値は、ECM_SNAPSHOT_ID、COMPONENT_NAMEおよびCOMPONENT_VERSIONの値が同一であるEM_ECM_OH_COMPONENTの行に一致している必要があります。

7.3.1.5 構成メタデータについての追加情報

構成メタデータXMLファイルを作成する場合、次のことに注意してください。

- それぞれの表定義では、その名前と、少なくとも1つの列仕様を指定する必要があります。
例: 表定義

<TABLE NAME="..." ...>
Optional UI name
Column definitions
Optional Indexes definitions: starting 12c PS1 platform release
Optional Child Table definitions
</TABLE>

表7-1 に、TABLE要素の属性を示します。

- 表名は指定のスナップショット・タイプに固有である必要があります。複数のスナップショット・タイプで共有することはできません。Enterprise Managerの内部名はEM_で始めることができますが、プラグインおよびアドオンの場合、表名を大文字のプラグイン・タグ(プラグインIDの3番目の部分)で始め、後にアンダースコアを続けることをお薦めします。たとえば、プラグインoracle.sysman.xyzは、XYZ_CONFIGのように、XYZ_で始まる表名を定義する必要があります。

- それぞれの列定義では、少なくともその名前とタイプを指定する必要があります。

<COLUMN NAME="..." TYPE="..." ...>...</COLUMN>

表7-1 に、COLUMN要素の属性を示します。

- 列のタイプは、STRING、NUMBER、TIMESTAMP、RAWのいずれかです。TYPE_FORMATはオプションです。その意味はタイプの値から導出されます。STRINGの場合、それは最大の文字列長です。NUMBERの場合、Oracleデータベースに関する精度とスケールです (たとえば、TYPE_FORMAT=”4, 9”)。

- TABLEタグをネスティングすることによって、表の間の親子関係を指定します。

- 表とビューの名前は25文字までです。

- 表と列の順序は重要です。UI表示には、その順序が反映されます。インポートとエクスポートの操作では、順序は変わりません。削除操作(表データに対する)は、逆の順序で行われます。子行は、親行の前に削除されます。

- COLUMNタグには、列のUI表示名が含まれます。

- 表には、表の中で行を一意に識別するキー列が必要です。キー列の合計サイズが大きくなりすぎないようにしてください(4,000が最大ですが、それよりずっと小さいサイズでも構いません)。
すべての祖先表のキー列は子表によって継承されると自動的に仮定され、子表の仕様では繰り返されません。

ただし、表は、1つの親行当たりの行が1だけであるか、表が最上表で、1つのスナップショット当たりの行が1つだけの場合、キーを必要としません。キーのない表では、SINGLE_ROW="Y"属性を指定する必要があります。これは、デフォルトでは"N"に設定されています。

構成メタデータの主要な要素に関する情報は、項7.3.2「構成管理スナップショット・メタデータ要素の概要」を参照してください。

7.3.2 構成管理スナップショット・メタデータ要素の概要

表7-1 には、構成管理を定義する主要な要素を記述しています。

表7-1 構成メタデータXMLファイルの主要な要素

要素

説明

METADATAS

構成メタデータXMLファイルは、METADATASタグで始まります。

<METADATAS>
One or more snapshot specifications
</METADATAS>

スナップショットの指定はMETADATAタグに対応しています。

METADATA

スナップショットの指定はMETADATAタグに対応し、1つ以上の表の指定を含んでいます。スナップショットUI表示名も定義します。次の属性があります。

- VER: プラグイン開発者が定義したメタデータのバージョンを指定します。1以上の整数である必要があります。通常、リリースごとにバージョンが増加します(変更がある場合)。リリースの範囲内で最新のECMメタデータ・バージョンだけを登録する必要があります(管理エージェントは以前の互換バージョンもアップロード可能)。

- SNAP_TYPE: スナップショットのタイプに名前を付けます。スナップショット・タイプは、ターゲット・タイプのコンテキストで定義されます。名前は、会社名にアンダースコアを続けたものである必要があります。たとえば、oracle_とします。

- TARGET_TYPE: スナップショット・タイプのメタデータが定義されるターゲット・タイプ。

- UI_IGNORE: オプション。データが構成ブラウザの一部として表示されるかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、UI機能が使用され、Yの場合、UI機能は無視されます。

- COMPARE_IGNORE: オプション。データ上で比較を実行するべきかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、Compare機能が使用され、Yの場合、Compare機能は無視されます。

- COMPARE_UI_IGNORE: オプション。比較UIにデータを表示するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、Compare UI機能が使用され、Yの場合、Compare UI機能は無視されます。

- HISTORY_IGNORE: オプション。データ上で履歴を追跡するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、History機能が使用され、Yの場合、History機能は無視されます。

- HISTORY_UI_IGNORE: オプション。履歴UIにデータを表示するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、History UI機能が使用され、Yの場合、History UI機能は無視されます。
注意: name_IGNORE 属性に値を指定する場合、より下位の(TABLEまたはCOLUMN)レベルでオーバーライドされない限り、すべての表に対して指定されます。継承は、メタデータから表へ、親表から子表へ、すべての表からその列へと受け継がれます。

TABLE

表名と少なくとも1つの列を指定します。次の属性があります。

- NAME: 必須。表を一意に識別します。

- SINGLE_ROW: 値はN(デフォルト)またはYで、親行あたり多くとも1つの行しか持たないか、最上表の場合にはスナップショットあたり多くとも1つの行しか持たない表を示します。この後者の場合、キーは不要です。キー列は(ある場合)すべて、親表から継承されます。

- UI_IGNORE: オプション。データが構成ブラウザの一部として表示されるかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、UI機能が使用され、Yの場合、UI機能は無視されます。

- COMPARE_IGNORE: オプション。データ上で比較を実行するべきかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、Compare機能が使用され、Yの場合、Compare機能は無視されます。

- COMPARE_UI_IGNORE: オプション。比較UIにデータを表示するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、Compare UI機能が使用され、Yの場合、Compare UI機能は無視されます。

- HISTORY_IGNORE: オプション。データ上で履歴を追跡するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、History機能が使用され、Yの場合、History機能は無視されます。

- HISTORY_UI_IGNORE: オプション。履歴UIにデータを表示するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、History UI機能が使用され、Yの場合、History UI機能は無視されます。
注意: name_IGNORE 属性に値を指定する場合、より下位の(TABLEまたはCOLUMN)レベルでオーバーライドされない限り、すべての列と子表に対して指定されます。

COLUMN

それぞれの列定義は、NAMEとTYPE属性を持つ必要があります。次の属性があります。

- NAME: 必須。表列を一意に識別します。

- TYPE: 必須。値は、STRING、NUMBER、TIMESTAMP、CLOB、またはRAWです。

- TYPE_FORMAT: オプション。値は、TYPE属性内の値に依存します。

- IS_KEY: 必須。表内で行を一意に識別するキーの一部であるかどうかを指定します。すべての祖先表のキー列は子表によって継承されると自動的に仮定されます。
注意: 表は、1つの親行あたり行が1つしかないか、表が最上表で、1つのスナップショットあたり行が1つしかない場合、キーを必要としません(祖先表キーがある場合を除く)。キーのない表では、SINGLE_ROW=”Y”属性を指定する必要があります。これは、デフォルトでは”N”に設定されています。

- UI_IGNORE: オプション。データが構成ブラウザの一部として表示されるかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、UI機能が使用され、Yの場合、UI機能は無視されます。

- COMPARE_IGNORE: オプション。データ上で比較を実行するべきかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、Compare機能が使用され、Yの場合、Compare機能は無視されます。

- COMPARE_UI_IGNORE: オプション。比較UIにデータを表示するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、Compare UI機能が使用され、Yの場合、Compare UI機能は無視されます。

- HISTORY_IGNORE: オプション。データ上で履歴を追跡するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、History機能が使用され、Yの場合、History機能は無視されます。

- HISTORY_UI_IGNORE: オプション。履歴UIにデータを表示するかどうかを決定します。値はN (デフォルト)またはYで、Nの場合、History UI機能が使用され、Yの場合、History UI機能は無視されます。

INDEXES

導出された関連付け、コンプライアンス・ルール、レポート、またはその他の、ECM_SNAPSHOT_ID以外の列に基づく表行へのアクセスにおけるパフォーマンスが重要な問合せで表が使用されている場合、オプションの索引が便利です。

オプションの索引定義要素<INDEXES>では、1つ以上の<INDEX>要素を指定し、各<INDEX>要素には名前と列を指定する必要があります。

<INDEXES>
<INDEX NAME="..." COLUMNS="..." />
<INDEX NAME="..." COLUMNS="..." />
…
</INDEXES>

- NAME: 必須。表の列を一意に識別し、すべての索引名の中で一意にする必要があります。名前は表の名前と同じにして、後に_IDX1、_IDX2などを続けることをお薦めします。

- COLUMN: 必須。値は、列名のカンマ区切りリストである必要があります。

注意:
事前定義されたECM_METADATA_ID列は、常に各索引の最後の列として追加されます。

次の例は、oracle_home_configスナップショットの構成メタデータXMLファイルを示しています。すべての*_IGNORE属性は、ファイル内で指定されていないため、デフォルト値(N)を保持します。

例: 構成メタデータXMLファイル

<METADATAS>
<METADATA SNAP_TYPE="oracle_home_config" TARGET_TYPE="oracle_home" VER="1"

<METADATA_UI_NAME>Oracle Home Configuration</METADATA_UI_NAME>

<TABLE NAME="EM_ECM_OH_HOME_INFO" SINGLE_ROW="Y">
<UI_NAME>Home Info</UI_NAME>
<COLUMN NAME="HOME_LOCATION" TYPE="STRING" TYPE_FORMAT="1024">Install Location</COLUMN>
<COLUMN NAME="OUI_HOME_NAME" TYPE="STRING" TYPE_FORMAT="256">OUI Home Name</COLUMN>
<COLUMN NAME="OUI_HOME_GUID" TYPE="STRING" TYPE_FORMAT="32">OUI Home GUID</COLUMN>
<COLUMN NAME="HOME_TYPE" TYPE="STRING" TYPE_FORMAT="1">Home Type</COLUMN>
<COLUMN NAME="HOME_POINTER" TYPE="STRING" TYPE_FORMAT="1024">Home Pointer</COLUMN>
<COLUMN NAME="IS_CLONABLE" TYPE="NUMBER" TYPE_FORMAT="1">Is Clonable</COLUMN>
<COLUMN NAME="IS_CRS" TYPE="NUMBER" TYPE_FORMAT="1">Is CRS</COLUMN>
<COLUMN NAME="ARU_ID" TYPE="NUMBER" TYPE_FORMAT="10">ARU ID of the Oracle Home</COLUMN>
<COLUMN NAME="HOME_SIZE" TYPE="NUMBER" TYPE_FORMAT="10">Size of Oracle Home (KB)</COLUMN>
</TABLE>

<TABLE NAME="EM_ECM_OH_DEP_HOMES">
<UI_NAME>Dependee Oracle Homes</UI_NAME>
<COLUMN NAME="DEP_HOME_LOCATION" TYPE="STRING" TYPE_FORMAT="1024" IS_KEY="Y">Dependee Home Location</COLUMN>
</TABLE>

<TABLE NAME="EM_ECM_OH_COMPONENT">
<UI_NAME>Components installed in Oracle Home</UI_NAME>
<COLUMN NAME="COMPONENT_NAME" TYPE="STRING" TYPE_FORMAT="128" IS_KEY="Y">Component Name</COLUMN>
<COLUMN NAME="COMPONENT_VERSION" TYPE="STRING" TYPE_FORMAT="64" IS_KEY="Y">Base Version of Component</COLUMN>
<COLUMN NAME="CURRENT_VERSION" TYPE="STRING" TYPE_FORMAT="64">Current Version of the Component</COLUMN>
<COLUMN NAME="INSTALL_TIME" TYPE="TIMESTAMP" >Install Time</COLUMN>
<COLUMN NAME="IS_TOP_LEVEL" TYPE="NUMBER" TYPE_FORMAT="1">Is a top level Component</COLUMN>
<COLUMN NAME="EXTERNAL_NAME" TYPE="STRING" TYPE_FORMAT="128">External name</COLUMN>
<COLUMN NAME="DESCRIPTION" TYPE="STRING" TYPE_FORMAT="1024">Description</COLUMN>
<COLUMN NAME="LANGUAGES" TYPE="STRING" TYPE_FORMAT="1024" >Languages</COLUMN>
<COLUMN NAME="INSTALLED_LOCATION" TYPE="STRING" TYPE_FORMAT="1024">Installed Location</COLUMN>
<COLUMN NAME="INSTALLER_VERSION" TYPE="STRING" TYPE_FORMAT="64">Installer Version</COLUMN>
<COLUMN NAME="MIN_DEINSTALLER_VERSION" TYPE="STRING" TYPE_FORMAT="64">Minimum Deinstaller Version</COLUMN>

<TABLE NAME="EM_ECM_OH_COMP_INST_TYPE">
<UI_NAME>Install Types of Components</UI_NAME>
<COLUMN NAME="NAME_ID" TYPE="STRING" TYPE_FORMAT="128" IS_KEY="Y">Install Type Name ID</COLUMN>
<COLUMN NAME="INSTALL_TYPE_NAME" TYPE="STRING" TYPE_FORMAT="128" >Install Type Name</COLUMN>
<COLUMN NAME="DESC_ID" TYPE="STRING" TYPE_FORMAT="128">Install Type Description</COLUMN>
</TABLE>

</TABLE>

</METADATA>
</METADATAS>

注意:
このファイルの情報を使用して、ターゲット・タイプのメタデータ・ファイルにメトリックを定義します。詳細は、項7.3.7「標準収集メトリックおよびRAWメトリックへの変更」を参照してください。

7.3.3 構成メタデータのパッケージ化

構成メタデータXMLファイルを完成させたら、プラグイン・ステージング・ディレクトリ内の次のディレクトリにファイルを保存します。

oms/metadata/snapshotlive

プラグイン・ステージング・ディレクトリに保存した構成メタデータ・ファイルは、プラグイン・デプロイメント時に自動登録できます。

プラグイン・ステージング・ディレクトリまたはプラグイン・デプロイメントの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

7.3.4 構成管理フレームワークへのメタデータの登録

構成メタデータXMLファイルが完了したら、構成管理フレームワークに登録する必要があります。構成メタデータXMLファイルは、プラグイン・ステージ・ディレクトリのoms/metadata/snapshotliveディレクトリに配置する必要があります。プラグインのインストールまたはアップグレード時に登録は自動的に実行され、必要なスキーマ・オブジェクトが作成されて構成メタデータが構成管理フレームワークに登録されます。プラグイン・ステージング・ディレクトリおよび登録の詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

XML専用プラグインの開発時に登録サービスを手動で実行するには、次のコマンドを入力します。

emctl register oms metadata
-sysman_pwd sysman password
-pluginId plugin ID
-service LiveSnapshotRegistration
-file snapshot metadata XML file

注意: このコマンドを実行する前に、管理リポジトリにプラグインをインポートする必要があります。

plugin IDは、スナップショット・メタデータ・ターゲット・タイプが属しているプラグインのIDです。LiveSnapshotRegistrationは、構成管理スキーマ・オブジェクトを作成および更新し、構成メタデータを登録するメタデータ・サービスです。

このコマンドは、開発環境内のSYSMAN資格証明を使用して、スナップショット構成ファイル(snapshot metadata XML file)を登録します。

構成管理は、追加ファイルを生成するためにオプションで実行できる次のユーティリティを提供します。

EDK_DIR/bin/empdk generate_metadata_resource -stage_dirplugin_stage
-service LiveSnapshotRegistration
-input_dir input directory
[-out_dir output directory]
[-file_extension list of file extensions/suffixes]
[-debug debug file name]

詳細は次のとおりです。

- EDK_DIR: EDKパッケージが解凍されるディレクトリ(詳細は、第1.3項「拡張開発キット(EDK)のインストール」を参照してください)。

- plugin_stage: プラグインのステージング・ディレクトリ(詳細は、第14.2項「プラグインのステージング」を参照してください)。

- input directory: 構成メタデータXMLファイルを含むディレクトリ。

- output directory: 生成されたリソース・ファイルを含むディレクトリ。指定されていない場合、リソース・ファイルは現在のディレクトリに生成されます。

- list of file extensions/suffixes: リソース・ファイルのファイル拡張子または接尾辞のカンマ区切りリスト。指定されていない場合、サポートされるすべてのリソース・ファイルは出力ディレクトリに生成されます。

- debug file name: デバッグ情報を含んだファイル。指定されていない場合、デバッグ・ログ・ファイル(createplugin.logtime)が出力ディレクトリに作成され、警告およびエラー・メッセージのみを格納します。

入力ディレクトリ内の各構成メタデータXMLファイルの場合、指定したリソース・ファイルは、ファイル名ecm_metadata_xml_file_nameを接頭辞に持ち、対応する次のサポートされる接尾辞を持つ出力ディレクトリに生成されます。

- .dlf
file_name.dlfは、スナップショット・タイプ名、表名および列名の変換用ファイルです。生成されたDLFファイルとその変換済バージョンは、プラグインのplugin_stage/oms/rsc/ecmディレクトリに配置されます。

- _metrix.xml、_collection.xml
file_name_metric.xmlおよびfile_name_collection.xmlは管理エージェント側統合の開始テンプレートとして使用できます。詳細は、項7.3.7「標準収集メトリックおよびRAWメトリックへの変更」を参照してください。

7.3.5 翻訳のサポート

データ・ロード形式(DLF)翻訳ファイルは、プラグイン・メタデータ・ファイル内の表示文字列がUIにエンド・ユーザーの言語で表示されるよう、その国際化をサポートするために使用されます。通常は、元の(英語などの) DLFファイルを翻訳者に提供し、翻訳者が他のロケール用に同様のファイルを作成します。このようなファイルはすべて、プラグインのインストール時に管理リポジトリにロードされます。

注意:
DLFファイルの生成はオプションであり、必要になるのは翻訳が必要な場合のみです。

スナップショット・タイプ名、表および列名の翻訳用にDLFファイルを生成するには、次のコマンドを実行します。

$ORACLE_HOME/emcore/pdk/partner/bin/empdk generate_metadata_resource
-stage_dir staging directory
-service LiveSnapshotRegistration
-input_dir input directory containing snapshot metadata XML file
-file_extension extension to use for generated DLF files
-out_dir output directory to which to generate the DLF files
[-debug debug output file]

生成されたDLFファイルと対応する翻訳版は、プラグインの次のディレクトリに配置する必要があります。

plugin_stage/oms/rsc/ecm

各DLFファイルに次の内容を手動で追加する必要があります。

<table xml:lang="en" name="MGMT_MESSAGES">
<lookup-key>
<column name="MESSAGE_ID"/>
<column name="SUBSYSTEM"/>
<column name="LANGUAGE_CODE"/>
<column name="COUNTRY_CODE"/>
</lookup-key>
<columns>
<column name="MESSAGE_ID" type="string" maxsize="256"/>
<column name="SUBSYSTEM" type="string" maxsize="64"/>
<column name="LANGUAGE_CODE" type="string" language="%l"/>
<column name="COUNTRY_CODE" type="string" language="%Cs"/>
<column name="MESSAGE" type="string" maxsize="1000" translate="yes"/>
</columns>
<dataset>
GENERATED FILE CONTENT
</dataset>
</table>

7.3.6 構成データのアップグレード

注意:
顧客にメタデータの新しいバージョンをリリースするたびに、整数のメタデータ・バージョン(VER属性)を増分する必要があります。バージョンは、ECM XMLメタデータ・ファイル(METADATA要素内のVER属性)および対応するエージェント収集ファイル内で増分する必要があります。
VER属性の詳細は、表7-1「構成メタデータXMLファイルの主要な要素」を参照してください。

既存のスナップショット・メタデータをアップグレードする場合、次の変更がサポートされます。

- 新規表

- 新しい非キー列(これらは以前の既存の列の後に表示される必要があります)

- 新しい索引リスト(以前のあらゆる索引を上書きします)

- STRING型列の長さの増加

- UI_IGNORE、COMPARE_IGNORE、COMPARE_UI_IGNORE、HISTORY_IGNORE、HISTORY_UI_IGNOREおよびUI_NAMEの各属性の値

注意:

- キー列は追加、削除不可

- STRING以外の列書式は変更不可

- STRING列の長さは増加のみ可能

- 新規表は、既存の表の親として追加不可

- 表または列は既存のスナップショット・メタデータから削除不可

次のメタデータを例にとります。

例: オリジナルのメタデータ定義

<METADATAS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<METADATA VER=”1”
SNAP_TYPE="sn_dbconfig"
TARGET_TYPE="sn_oracle_database"
UI_IGNORE="Y"
HISTORY_IGNORE="N"
COMPARE_IGNORE="Y"
COLLECTION_GROUP="COL_GRP_0">
<METADATA_UI_NAME>Database Configuration</METADATA_UI_NAME>
<TABLE NAME="TABLESPACES" DATA_SOURCE="R">
<UI_NAME>Tablespaces</UI_NAME>
<COLUMN NAME="TABLESPACE_NAME" TYPE="STRING" TYPE_FORMAT="30"
IS_KEY="Y">Tablespace Name</COLUMN>
<COLUMN NAME="SIZE" TYPE="NUMBER">Size</COLUMN>
<COLUMN NAME="STATUS" TYPE="STRING" TYPE_FORMAT="10">Status</COLUMN>
<TABLE NAME="DATAFILES">
<UI_NAME>Datafiles</UI_NAME>
<COLUMN NAME="FILE_NAME" TYPE="STRING" TYPE_FORMAT="1024"
IS_KEY="Y">File Name</COLUMN>
<COLUMN NAME="FILE_SIZE" TYPE="NUMBER" HISTORY_IGNORE="Y">Size</COLUMN>
<COLUMN NAME="STATUS" TYPE="STRING" TYPE_FORMAT="9">Status</COLUMN>
</TABLE>
</TABLE>
</METADATA>
</METADATAS>

次の例は、前述の例で説明したメタデータ定義に対するアップグレードを示しています。変更箇所は太字で強調表示されています。

例: アップグレードされたメタデータ定義

<METADATAS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<METADATA VER=”2”
SNAP_TYPE="sn_dbconfig"
TARGET_TYPE="sn_oracle_database"
UI_IGNORE="Y"
HISTORY_IGNORE="N"
COMPARE_IGNORE="Y"
COLLECTION_GROUP="COL_GRP_0">
<METADATA_UI_NAME>Database Configuration</METADATA_UI_NAME>
<TABLE NAME="TABLESPACES"  DATA_SOURCE="R">
<UI_NAME>Tablespaces</UI_NAME>
<COLUMN NAME="TABLESPACE_NAME" TYPE="STRING" TYPE_FORMAT="30"
IS_KEY="Y">Tablespace Name</COLUMN>
<COLUMN NAME="SIZE" TYPE="NUMBER">Size</COLUMN>
<COLUMN NAME="STATUS" TYPE="STRING" TYPE_FORMAT="10">Status</COLUMN>
<TABLE NAME="DATAFILES">
<UI_NAME>Datafiles</UI_NAME>
<COLUMN NAME="FILE_NAME" TYPE="STRING" TYPE_FORMAT="1024"
IS_KEY="Y">File Name</COLUMN>
<COLUMN NAME="FILE_SIZE" TYPE="NUMBER" HISTORY_IGNORE="Y">Size</COLUMN>
<COLUMN NAME="STATUS" TYPE="STRING" TYPE_FORMAT="10">Status</COLUMN>
<COLUMN NAME="DESC" TYPE="STRING" TYPE_FORMAT="128">Status</COLUMN>
</TABLE>
</TABLE>
<TABLE NAME="TABLESPACES_1"  DATA_SOURCE="R" >
<UI_NAME>Tablespaces_1</UI_NAME>
<COLUMN NAME="TABLESPACE_NAME" TYPE="STRING" TYPE_FORMAT="30"
IS_KEY="Y">Tablespace Name</COLUMN>
<COLUMN NAME="SIZE" TYPE="NUMBER">Size</COLUMN>
<COLUMN NAME="STATUS" TYPE="STRING" TYPE_FORMAT="10">Status</COLUMN>
<COLUMN NAME="NOTES" TYPE="STRING" TYPE_FORMAT="128">Status</COLUMN>
<TABLE NAME="DATAFILES_1">
<UI_NAME>Datafiles_1</UI_NAME>
<COLUMN NAME="FILE_NAME" TYPE="STRING" TYPE_FORMAT="1024"
IS_KEY="Y">File Name</COLUMN>
<COLUMN NAME="FILE_SIZE" TYPE="NUMBER" HISTORY_IGNORE="Y">Size</COLUMN>
<COLUMN NAME="STATUS" TYPE="STRING" TYPE_FORMAT="10">Status</COLUMN>
</TABLE>
</TABLE>
</METADATA>
</METADATAS>

古いリリースのEnterprise Managerでは、METADATA要素でDROP_EXISTING_DATA属性を使用できましたが、もうサポートされていないため削除する必要があります。

ECMメタデータに非下位互換性の変更を持たせる必要がある場合は、新しいスナップショット・タイプを作成する必要があります(これは古いスナップショット・タイプとは互換性がありません)。ECMは下位互換性のある変更のみをサポートしています。

7.3.7 標準収集メトリックとRAWメトリックの変更

エンタープライズ構成管理データは、通常のメトリック、収集、および管理エージェントのメカニズムで収集されます。このデータは、次の変更とともに通常のRAWメトリックを介して収集されます。

- 構成スナップショット情報を収集するすべてのMetricおよびCollectionItemタグにCONFIG=”TRUE”属性を追加します。

- CollectionItem NAME属性がスナップショット・タイプ名(たとえば、oracle_home_config)と同じであることを確認します。

- データ収集のスケジュールには、1日当たり1回を超える頻度の間隔を指定しないでください。

注意:
いかなるRAWメトリック表記述子にも、ECM_SNAPSHOT_IDを列として含めないようにします。

子表に祖先キー列が含まれる場合、階層的な一連の表を一度に1つずつ移入することができます。収集時に階層関係を表現する必要はありません。収集項目では、親表を、対応する子表の前にリストする必要があります。

次の例は、第7.3.2項「構成管理スナップショット・メタデータ要素の概要」の構成メタデータXMLファイルの例で定義したEM_ECM_OH_HOME_INFO表の、ターゲット・タイプ・メタデータXMLファイルにおけるメトリック定義を示しています。太字フォントで強調表示した情報は、構成メタデータXMLファイルによって提供されます。

注意:
これは単なる例であり、状況によっては構成固有でない追加の管理エージェント属性が必要になる場合もあります。

ターゲット・タイプ・メタデータXMLファイルの詳細は、項3.3「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

例: メトリックの定義

<Metric NAME="EM_ECM_OH_HOME_INFO" TYPE="RAW" CONFIG="TRUE">
<Display>
<Label NLSID="…">Home Info</Label>
</Display>
<TableDescriptor TABLE_NAME="EM_ECM_OH_HOME_INFO">
<ColumnDescriptor NAME="HomeLocation" COLUMN_NAME="HOME_LOCATION" TYPE="S">
<Display>
<Label NLSID="…">Install Location</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="OuiHomeName" COLUMN_NAME="OUI_HOME_NAME" TYPE="S">
<Display>
<Label NLSID="…">OUI Home Name</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="OuiHomeGuid" COLUMN_NAME="OUI_HOME_GUID" TYPE="S">
<Display>
<Label NLSID="…">OUI Home GUID</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="HomeType" COLUMN_NAME="HOME_TYPE" TYPE="S">
<Display>
<Label NLSID="…">Home Type</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="HomePointer" COLUMN_NAME="HOME_POINTER" TYPE="S">
<Display>
<Label NLSID="…">Home Pointer</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="IsClonable" COLUMN_NAME="IS_CLONABLE" TYPE="N">
<Display>
<Label NLSID="…">Is Clonable</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="IsCrs" COLUMN_NAME="IS_CRS" TYPE="N">
<Display>
<Label NLSID="…">Is CRS</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="AruId" COLUMN_NAME="ARU_ID" TYPE="N">
<Display>
<Label NLSID="…">ARU ID of the Oracle Home</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="HomeSize" COLUMN_NAME="HOME_SIZE" TYPE="N">
<Display>
<Label NLSID="…">Size of Oracle Home (KB)</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<!-- TODO : EDIT: Edit the QueryDescriptor Element Template as required -->
<QueryDescriptor FETCHLET_ID="" AGENT_MODE="">
<Property NAME="" SCOPE=""></Property>
</QueryDescriptor>
</Metric>

次の例は、前述の例で定義したメトリックのデフォルトの収集メタデータ・ファイルにおけるメトリック収集の定義を示しています。太字フォントで強調表示した情報は、第7.3.2項「構成管理スナップショット・メタデータ要素の概要」の構成メタデータXMLファイルの例で提供されています。

デフォルトの収集メタデータ・ファイルの詳細は、項3.5「デフォルトの収集ファイルの作成」を参照してください。

例: メトリック収集の定義

<CollectionItem NAME="oracle_home_config_test" CONFIG="TRUE">
<Schedule OFFSET_TYPE="INCREMENTAL">
<!-- Configuration Collection is done at most once every 24 Hours -->
<IntervalSchedule INTERVAL="24" TIME_UNIT="Hr" />
</Schedule>
<MetricColl NAME="EM_ECM_OH_HOME_INFO" />
<MetricColl NAME="EM_ECM_OH_DEP_HOMES" />
<MetricColl NAME="EM_ECM_OH_CRS_NODES" />
<MetricColl NAME="EM_ECM_OH_CLONE_PROPS" />
<MetricColl NAME="EM_ECM_OH_COMPONENT" />
<MetricColl NAME="EM_ECM_OH_COMP_INST_TYPE" />
<MetricColl NAME="EM_ECM_OH_COMP_DEP_RULE" />
</CollectionItem>

プラグインの場合、oparファイル内のomsディレクトリとagentディレクトリの両方で、メタデータ・ファイルとdefault_collection XMLファイルを忘れずに含めてください。

7.3.8 構成収集データのテスト

構成管理フレームワークに構成収集表を統合したら、次の手順を実行することによって構成収集をテストできます。

1. 管理エージェントを再起動します。

AGENT_HOME/agent/bin/emctl stop agent
AGENT_HOME/agent/bin/emctl start agent

前のコマンドで、AGENT_HOME は管理エージェントのホーム・ディレクトリを表します。

2. Enterprise Manager Cloud Controlから「ターゲット」を選択し、必要なターゲットを選択します。

3. ターゲットを右クリックして「構成」、「最新収集」の順に選択して、最新のデータ収集を表示します。

4. 必要な収集データが表示されていることを確認します。

7.3.9 トラブルシューティング

構成収集に関する問題がある場合、次の操作を行います。

1. スナップショット・タイプがMGMT_ECM_SNAPSHOT_METADATA表に登録されていることを確認します。

select * from mgmt_ecm_snapshot_metadata
where target_type   = your_target_type
and snapshot_type = your_snapshot_type;

2つの行が表示されるはずです。そうでない場合、次のディレクトリにあるMRSの通常のログ・ファイルで、登録時にエラーがなかったか確認します。

$ORACLE_HOME/cfgtoollogs/pluginca

2. 対応するメトリックを定義して、収集が開始され、データが蓄積していることを検証します。UIで最新の収集を見ている場合、まずメタデータのUI_IGNOREフラグが、チェックしているデータのYでないことを確認してください。収集が発生していない場合、次の事項を確認します。

- 収集項目名がスナップショット・タイプと同じで、収集項目とそのすべてのメトリックの両方に対してCONFIG="TRUE"が指定されていることを確認します。
詳細は、項7.3.7「標準収集メトリックおよびRAWメトリックへの変更」を参照してください。

- メトリックがRAWメトリックとして定義されており、表記述子がECM表に対応していることを確認します。

- 収集が管理リポジトリに到着しているが、最新のものとしては未更新かどうかを確認します。
MGMT_ECM_GEN_SNAPSHOT表で、ターゲットとスナップショット・タイプのis_currentステータスを確認します。行がない場合、収集は実行されていません。IS_CURRENTフラグはYに設定され、データの最新のスナップショットであることを示しているはずです。内部の目的のために行のIS_CURRENT値が他の値に設定されている可能性もあります。たとえば、値がYの行がなく、IS_CURRENT値がTとDになっている場合、スナップショットの読込みが開始されているが完了していないことを示します。

- エージェント・ターゲット・タイプ・メタデータ・ファイルとdefault_collection XMLファイルでMETA_VERの値を確認します。
開発中に新しいメトリックまたは収集項目を追加した場合、これらの新しいエントリの登録を成功させるために、これらのファイルでMETA_VERの増加が必要になることがあります。META_VER値に関して、Enterprise Management開発用の最新の指示を確認します。

たとえば、開発時に変更を登録するために、バージョンを増やす必要があることがあります。1リリース当たりバージョンを1つのみ増やす必要があります。したがって、コードをマージする場合、現在のリリースについてすでに増分したときは、META_VERを以前と同じにする必要が生じることがあります。

収集から見た場合、新しいターゲット・タイプ・メタデータ・ファイルとdefault_collection XMLファイルの両方を正常に登録し、最新のファイルを使用してエージェントを再起動してください。次のコマンドを使用すると、ターゲット・タイプ・メタデータ・ファイルおよびdefault_collection XMLファイルを登録できます。

emctl register oms metadata -service targetType -file target type XML filename [-core | -pluginId Plugin Id] [ sysman_pwd "sysman password"]

emctl register oms metadata -service default_collection -file default collection XML filename [-core | -pluginId Plugin Id] [ sysman_pwd "sysman password"]

テストしている特定のターゲット・インスタンスの場合、最新のMETA_VERに基づいている最新の収集済データを確認するために、META_VERが、ロード済スナップショット・タイプのMETA_VERと一致することを確認してください。

- ターゲット・インスタンスのカテゴリ・プロパティがValid-Ifと一致するかどうかを確認するために、ターゲット・タイプ、スナップショット・タイプおよびメトリックに対して定義されているValid-Ifを確認します。一致しない場合、構成はこのようなターゲットに適用されないため、ターゲットは対応するデータを示しません。

- OMSリポジトリで、スナップショット・タイプのmgmt_system_error_log表およびemoms_pbs.trc/logを確認します。
次のコマンドを使用して、mgmt_metric_errors表を調べることもできます。

select * from mgmt_metric_errors
where target_guid = '<your target guid>'
and coll_name = '<your snapshot type>'

エージェントで、エージェント・ログ・ディレクトリにあるgcagent.logファイルや他のファイルに同じ文字列がないか確認します。

- これで役に立たない場合は、エージェント・バックアップ・ファイル機能を有効にします(backupUploadedFiles=trueをemd.propertiesに追加してエージェントを再起動します)。
次の場所でスナップショット・タイプを検索し、エージェントがデータをOMSに送信していることを確認し、送信しているものを確かめます。

agentStateDir/sysman/emd/upload/upload/succbkup/

- 遭遇する可能性のある1つの問題は、構成の差分取得機能に関連しています。
なんらかの理由で構成がロードされていないのにエージェントが自らロードしたと考えている場合、かつ、この時点から構成が変更されていない場合、エージェントは短いnothing-changedファイル・タイプを送信し続け、ローダーはこのファイル・タイプを無視し続けます。この問題を解決する(デバッグ時にあり得る問題として除去する)には、次のコマンドを実行して(カンマの前後はスペースなし)、エージェント・ログから構成を取り除きます。

emctl clearstate agent -incrementalconfig targetName,targetType

その次に、収集を開始して、次のコマンドを実行します。

emctl control agent runCollection targetName:targetType snapshot type

例:

emctl clearstate agent -incrementalconfig myOracleHomeTargetName,oracle_home
emctl control agent runCollection myOracleHomeTargetName:oracle_home oracle_home_config

3. Oracle Management Serviceおよび管理リポジトリで、スナップショット・タイプに対応するMGMT_SYSTEM_ERROR_LOG表とemoms_pbs.trcファイルを確認します。次のように、MGMT_METRIC_ERRORS表も確認します。

管理エージェントで、エージェント・ログ・ディレクトリにあるgcagent.logファイルや他のファイルに同じ文字列がないか確認します。

4. まだ問題が残る場合、管理エージェントのバックアップ・ファイル機能をオンにします。

1. emd.propertiesファイルを開きます。

2. 次の行をファイルに追加します。

backupUploadedFiles=true

3. 管理エージェントを再起動します。

AGENT_HOME/agent/bin/emctl stop agent
AGENT_HOME/agent/bin/emctl start agent

前のコマンドで、AGENT_HOME は管理エージェントのホーム・ディレクトリを表します。

4. 次のディレクトリでスナップショット・タイプを検索し、管理エージェントがデータをOMSに送信していることを確認します。

agentStateDir/sysman/emd/upload/upload/succbkup/

5. 構成差分機能に関連する問題が発生する可能性があります。構成が読み込まれず、管理エージェントが構成のロードを中断した場合(構成が変更されていない場合)、管理エージェントは、何も変更されておらず、ローダーがファイルを引き続き無視することを示す短いファイルを送信します。
この可能な問題を消去または除去するには、次のようにして管理エージェント・ログを消去します。

emctl clearstate agent -incrementalconfig targetName,targetType

例:

emctl clearstate agent -incrementalconfig myOracleHomeTargetName,oracle_home

その次に、収集を開始して、次のコマンドを実行します。

emctl control agent runCollection targetName:targetType snapshot_type

例:

emctl control agent runCollection myOracleHomeTargetName:oracle_home oracle_home_config

6. Cloud Controlコンソールから履歴機能と比較機能をテストし、結果がどのように表示されるか、またはフラグが変更されていないか確認します。

1. Enterprise Manager Cloud Controlから「ターゲット」を選択し、必要なターゲットを選択します。

2. ターゲットを右クリックして「構成」を選択し、「履歴」を選択して構成履歴を表示するか、「比較」を選択して比較機能をテストします。

注意:
これらのページの詳細は、Cloud Controlのオンライン・ヘルプを参照してください。

7.4 UIの「インベントリおよび使用状況」リージョンのカスタマイズ

構成データが収集されると、Enterprise Managerによって、エンドユーザーが構成インベントリ・サマリーを確認するのに使用できる汎用的なUIアプリケーションが提供されます。この汎用アプリケーションに加えて、Oracleでは、独自の表示方法選択肢を一般的な「インベントリおよび使用状況」リージョンに追加できるXMLインタフェースをプラグイン開発者に提供しています。

表示方法選択肢を追加するには、次の手順を実行します。

1. InvSummary.xsdファイルを使用してインベントリ選択肢メタデータXMLを定義し、ファイルをplugin_stage/oms/metadata/invSummaryに保存します(plugin_stageはプラグインのステージング・ディレクトリです)。ステージング・ディレクトリの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。インベントリ選択肢メタデータXMLファイルの例は、第7.4.2項「インベントリ選択肢XMLメタデータ・ファイルのサンプル」を参照してください。

注意:
InvSummary.xsdファイルを表示するには、ダウンロードしたEDK ZIPアーカイブでlibディレクトリに移動し、emCoreSDK.jarを見つけます。emCoreSDK.jar内で、oracle/sysman/emSDK/core/config/ecm/inv/InvSummary.xsdを探してください。
ダウンロードしたEDK ZIPアーカイブの詳細は、第1.3項「拡張開発キット(EDK)のインストール」を参照してください。

2. インベントリ選択肢メタデータXMLをUIフレームワークに登録します。登録はプラグインのインストールまたはアップグレード時に自動的に行われますが、プラグインの開発中にプラグインをデプロイせずにXMLを更新する場合もあります。
たとえば、XML専用プラグインの開発時に登録サービスを手動で実行するには、次のように入力します。

emctl register oms metadata -[pluginID pluginid]-service invSummary -file filename

前述の例で、pluginidはプラグインに割り当てられている一意識別子を表し、filenameはインベントリ選択肢メタデータXMLのフルパスとファイル名(/plugin_stage/oms/metadata/invSummary/HostsInvSummary_metadata.xmlなど)を表します。

MRSの詳細は、14.7項「メタデータ登録サービス(MRS)を使用してデプロイされたメタデータ・ファイルの更新」を参照してください

7.4.1 インベントリ選択肢XMLについて

第7.4.2項「インベントリ選択肢XMLメタデータ・ファイルのサンプル」では、インベントリ選択肢XMLの例を示します。

次の各項では、XMLファイルの一部のセクションについて説明します。

7.4.1.1 InventoryChoice要素について

インベントリ選択肢XMLを作成する場合は、次のようにルート要素を含めます。

<InventoryChoice iname="HOSTS" display_name="Hosts">

表7-2 InventoryChoice要素

要素

説明

InventoryChoice

これは、XMLのルート要素です。カスタマイズを定義します。次の属性があります。

- iname: 内部名(翻訳済文字列を含むDLFファイルのNLSId)

- display_name: inameのDLFファイルに翻訳済文字列がない場合、この表示名が表示されます。

7.4.1.2 サポートされるパラメータ・タイプについて

このセクションでは次のパラメータがサポートされています(サポートされるパラメータ・タイプの完全なリストは、XSDのドキュメントを参照してください)。

- Query id: バインドIDとしてShowByChoiceセクションで使用。

- SHOW_BY: ロールアップ・タイプ

- TARGET_NAME: ターゲット・コンテキストのターゲット名

- TARGET_TYPE: ターゲット・コンテキストのターゲット・タイプ

- MEMBER_TARGET_TYPE: グループ・ホームページのメンバー・ターゲット・タイプ・フィルタ
パラメータ・タイプは、XSDに記述されている事前定義済パラメータのタイプを表します。

7.4.1.3 適用可能なターゲット・タイプ(必須)

このセクションでは、インベントリ選択肢を適用できるターゲット・タイプのリストを指定します。

<Applicable_Targettypes>
<!--Internal target type names -->
<!--If it has to be shown for enterprise context, give it as "enterprise"-->
<TargetType>enterprise</TargetType>
<TargetType>composite</TargetType>
<TargetType>generic_system</TargetType>
<TargetType>all</TargetType>

</Applicable_Targettypes>

この表現は、リージョンがコンソール・ホームページ、グループ・ホームページまたはシステム・ホームページに統合されている場合にインベントリ選択肢を表示することを示しています。TargetTypeがallに設定されている場合は、デフォルトですべてのページのすべてのインベントリ・リージョンに表示されます。

7.4.1.4 MasterData (必須)

このセクションでは、リージョンおよび詳細ページのマスター表にデータを移入するためのデータソースを指定します。

インベントリ選択肢ごとに、多数のロールアップSHOWBY選択肢を指定できます。通常、group by句のみが変わるため、同じデータソースを複数のShowBy選択肢に使用できます。ShowBy選択肢セクションの外側でSQL問合せを保持し、バインドIDを使用してShowBy選択肢セクション内で再利用することをお薦めします。これは、すべてのShowBy選択肢セクションでSQL問合せを繰り返さないようにするために役立ちます。

SQL問合せをデータソースとして使用できます。Master Dataセクションの一部として、With句を使用してエンタープライズ・コンテキストおよびターゲット・コンテキストに対する問合せを指定します。SQLによってShowBy選択肢に必要な列が返されます。

<Query id="HOSTS_INV_MASTER_QUERY">
<Enterprise_Ctx>

<Sql>

With InvQuery AS (SELECT name , base_version , vendor_name ,
count(*) as num_hosts,…..
With InvQuery AS (SELECT name , base_version , vendor_name ,
count(*) as num_hosts,…..
%GROUP_BY_SQL%
</Sql>
</Enterprise_Ctx>
<!-- target context query -->
<Target_Ctx>
<Sql>
……
</Sql>
<In_Parameters>
<Param position="1" type="TARGET_NAME"/>
…
</In_Parameters>
</Target_Ctx>
</Query>

%GROUP_BY_SQL%は、ShowByChoiceセクションで指定したSQLで置き換えられます。

7.4.1.5 詳細データ(必須)

このセクションでは、選択したマスター表の行のデータを表示する、詳細表の詳細ページのデータソースを指定します。このセクションでSQLリストを指定し、これをShowBy選択肢セクションで再利用できます。

詳細表のデータソースは、管理リポジトリ・ビューを使用したSQL問合せになります。データベース表は使用できません。管理リポジトリ・ビューの詳細は、『Enterprise Manager Cloud Control管理リポジトリ・ビュー・リファレンス』を参照してください。

書式はマスター表セクションと同じです。

詳細問合せでは、置換可能文字列%FILTER_FOR_MASTER_ROWS%を使用します。これは、フレームワーク別に、選択したマスター・キーの行と列で置換できます。

例:

<Query id="HOSTS_DETAILS">
<Enterprise_Ctx>
……
%FILTER_SELECT_FOR_MASTERROWS%
</Enterprise_Ctx>
</Query>

7.4.1.6 ロールアップ・タイプ/ShowBy選択肢のリスト(オプション)

このセクションでは、ロールアップ・タイプのリストを示します。

ホストでは、プラットフォーム、バージョン、ベンダーなど様々なタイプ別にロールアップします。

たとえば、プラットフォームをロールアップする表現は次のとおりです。

<ShowByList>
<ShowBy iname="Platform" display_name="Platform" default_selection="true">

この例の説明は、次のとおりです。

- inameは、DLFファイルに定義されているNLSIDへのShowBy Nameマッピングを表します。

- display_nameは、DLFファイルにinameのデータが見つからなかった場合のUI表示名を表します。

- default_selection。このオプションをtrueに設定した場合、これは、「表示の分類」ドロップダウン・リストのデフォルトの選択値であることを示します。

<MasterTableData>
<SqlQuery bindid="HOSTS_INV_MASTER_QUERY">
<!-- Group by sql will replace %GROUP_BY_SQL% given in the main query -->
<Group_By_Sql>
select name , patched, sum(num_hosts) as num_hosts from InvQuery %FILTERDRILLDOWNVALUES% group by name,patched order by name
</Group_By_Sql>
</SqlQuery>
</MasterTableData>

この例で、%FILTERDRILLDOWNVALUES%は、詳細ページのカウント・バーをクリックして多数のレベルにドリルダウンするときにブレッドクラムとして表示される様々な表示の分類の選択肢のスライスおよびダイス・ディメンションを、動的に追加するプレースホルダです。

たとえば、定義されている表示の分類の選択肢がプラットフォームとバージョンである場合、ユーザーはドリルダウンしてWindowsなどのプラットフォーム別にホストのバージョンを表示します。%FILTERDRILLDOWNVALUES%は、group by SQLのプレースホルダでplatform = 'Windows'に動的に置き換えられます。

7.4.1.7 ターゲット・コンテキスト問合せ

Target_Ctx問合せは、ターゲット・コンテキスト内のデータをフィルタします。たとえば、インベントリ選択肢がグループ・ホームページに適用可能な場合、実行時のグループ・ターゲット・ホームページに表示されるときに、TARGET_NAMEにはグループ・ターゲット名が入力され、TARGET_TYPEにはグループ・ターゲットタイプが入力されます。target_ctx SQL問合せ内の適切な箇所でこれらの<In_Parameters>を使用して、グループ・コンテキスト・ページ内のフィルタ処理を行います。

7.4.1.8 UIColumnMappingタグ

UiColumnMappingタグは、UI列名をバックエンドSQL列名とマップします。また、列を表示するかどうかも指定します。

<UiColumnMapping id="name" backend_column="name" isKey="true" visible="true" uiColumn_nls_id="Platform"/>
.....

NLS日付書式:

タイプ・オプションが日付として指定されている場合、次の例を参照してください。

<UiColumnMapping id="collection_time" backend_column="collection_time" isKey="false" visible="true" type="date" uiColumn_nls_id="hosts_collection_time"/>

UIフレームワークは、各国語サポート(NLS)ロケールに従ってフォーマットされます。

7.4.1.9 DLFファイル

DLFファイルによって列名のNLSソースが提供されます

例:

<row>
<col name="MESSAGE_ID">HOSTS</col>
<col name="SUBSYSTEM">ECM_INV_METADATA</col>
<col name="MESSAGE">Hosts</col>
</row>

サブシステムはECM_INV_METADATAであることに注意してください。

7.4.2 インベントリ選択肢XMLメタデータ・ファイルのサンプル

次の例は、インベントリ選択肢XMLメタデータ・ファイルのサンプルを示しています。

例: インベントリ選択肢XML

<?xml version="1.0" encoding="UTF-8" ?>
<InventoryChoice iname="SampleHostsInv" display_name="SampleHostsInv">

<Applicable_Targettypes>
<TargetType>all</TargetType>
<TargetType>enterprise</TargetType>
</Applicable_Targettypes>
<MasterData>
<Query id="HOSTS_INV_MASTER_QUERY">

<Enterprise_Ctx>

<Sql>
With InvQuery AS (
select
name,
base_version,
vendor_name,
count(*) as num_hosts ,
decode(sum(num_patches) , 0 , ''No'',''Yes'') as patched
from
(
select os.name, os.name||'' ''||os.base_version as base_version, os.vendor_name,host,
( select
count(*)
from
MGMT$OS_PATCH_SUMMARY patch
where
patch.host =os.host and
patch.target_guid = os.target_guid
) as num_patches
from
MGMT$OS_SUMMARY os
)m

group by name,base_version,vendor_name
)

%GROUP_BY_SQL%
</Sql>
</Enterprise_Ctx>
<!-- target context query -->
<Target_Ctx>
<Sql>
With InvQuery AS (
select
name,
base_version,
vendor_name,
count(*) as num_hosts ,
decode(sum(num_patches) , 0 , ''No'',''Yes'') as patched
from
(
select os.name, os.name||'' ''||os.base_version as base_version, os.vendor_name,host,
( select
count(*)
from
MGMT$OS_PATCH_SUMMARY patch
where
patch.host =os.host and
patch.target_guid = os.target_guid
) as num_patches
from
MGMT$OS_SUMMARY os
where os.snapshot_guid in
(

SELECT /*+ ORDERED */ ps.snapshot_guid
FROM
(
select
unique t.host_name as hname
FROM
mgmt$targets t,
(
SELECT m.assoc_target_guid as mguid
FROM
mgmt$target_flat_members  m,
.........
WHERE

mem.AGGREGATE_TARGET_NAME = ? and
mem.aggregate_target_type= ? and
mem.member_target_type like ? and
............................
) lt1
WHERE
lt1.mguid = t.target_guid
)lt,
.................
)
)
group by name, base_version, vendor_name
)
%GROUP_BY_SQL%

</Sql>
<In_Parameters>
<!--Aggregate target name in which the inv choice data to be shown -->
<Param position="1" type="TARGET_NAME"/>
<!-- Aggregate target type -->
<Param position="2" type="TARGET_TYPE"/>
<Param position="3" type="MEMBER_TARGET_TYPE"/>
........

</In_Parameters>
</Target_Ctx>
</Query>

</MasterData>

<DetailsData>
<Query id="HOSTS_DETAILS">

<Enterprise_Ctx>

<Sql>
SELECT
hostname,
hwname,
name,
base_version,
update_level,
address_length_in_bits,
vendor_name,
freq,
mem,
disk,
cpu_count,
distributor_version,
physical_cpu_count,
logical_cpu_count,
last_collection_timestamp
FROM
(

SELECT
hostname,
hwname,
name,
base_version,
update_level,
address_length_in_bits,
vendor_name,
freq,
mem,
disk,
cpu_count,
distributor_version,
physical_cpu_count,
logical_cpu_count,
last_collection_timestamp
FROM
(
SELECT
o.target_name as hostname,
system_config  || '' '' || MA as hwname,
o.name as name,
o.name||'' ''||o.base_version as base_version,
o.update_level,
o.address_length_in_bits,
o.vendor_name,
hw.FREQ as freq,
hw.MEM as mem,
hw.DISK as disk,
hw.CPU_COUNT ,
o.DISTRIBUTOR_VERSION ,
hw.physical_cpu_count,
hw.logical_cpu_count,
o.LAST_COLLECTION_TIMESTAMP
FROM
MGMT$OS_HW_SUMMARY  hw  ,  MGMT$OS_SUMMARY o
WHERE
hw.host_name = o.host and
hw.target_guid = o.target_guid and
hw.SNAPSHOT_GUID = o.SNAPSHOT_GUID
)
%FILTER_SELECT_FOR_MASTERROWS% )
%FILTERDRILLDOWNVALUES%
</Sql>
</Enterprise_Ctx>
<!-- target context query -->
<Target_Ctx>
<Sql>
SELECT
hostname,
hwname,
name,
base_version,
update_level,
address_length_in_bits,
vendor_name,
freq,
mem,
disk,
cpu_count,
distributor_version,
physical_cpu_count,
logical_cpu_count,
last_collection_timestamp
FROM
(
SELECT UNIQUE
hostname,
hwname,
name,
base_version,
update_level,
address_length_in_bits,
vendor_name,
freq,
mem,
disk,
cpu_count,
distributor_version,
physical_cpu_count,
logical_cpu_count,
last_collection_timestamp
FROM
(
.....--provide the target context query here for filtering in composite target..
...

) hw_list  %FILTER_SELECT_FOR_MASTERROWS% order by hostname)
%FILTERDRILLDOWNVALUES%

</Sql>
<In_Parameters>
<Param position="1" type="TARGET_NAME"/>
<Param position="2" type="TARGET_TYPE"/>
<Param position="3" type="MEMBER_TARGET_TYPE"/>
.....................
</In_Parameters>
</Target_Ctx>
</Query>

</DetailsData>

<ShowByList>
<ShowBy iname="Platform" display_name="PLATFORM" default_selection="true">
<MasterTableData>
<SqlQuery bindid="HOSTS_INV_MASTER_QUERY">

<!-- Group by sql will replace %GROUP_BY_SQL% given in the main query -->
<Group_By_Sql>
select name , patched, sum(num_hosts) as num_hosts from InvQuery %FILTERDRILLDOWNVALUES% group by name,patched order by name
</Group_By_Sql>

</SqlQuery>
<UiColumnMapping id="Platform" backend_column="name" isKey="true" visible="true" uiColumn_nls_id="Platform"/>

<UiColumnMapping id="num_hosts" backend_column="num_hosts" isKey="false" uiColumn_nls_id="Hosts" countColumn="true"/>
<UiColumnMapping id="patched" backend_column="patched" isKey="false" uiColumn_nls_id="Patched"/>

</MasterTableData>
<DetailsTableData>
<SqlQuery bindid="HOSTS_DETAILS"/>
<UiColumnMapping id="Host Name" backend_column="hostname" isKey="true" visible="true" uiColumn_nls_id="Host Name"/>
<UiColumnMapping id="Platform" backend_column="name" isKey="true" visible="true" uiColumn_nls_id="Platform"/>
<UiColumnMapping id="Version" backend_column="base_version" isKey="true" visible="true" uiColumn_nls_id="Version"/>
<UiColumnMapping id="Vendor" backend_column="vendor_name" isKey="true" visible="true" uiColumn_nls_id="Vendor"/>
<UiColumnMapping id="Hardware" backend_column="hwname" isKey="true" visible="true" uiColumn_nls_id="Hardware"/>
<UiColumnMapping id="Update Level" backend_column="update_level" isKey="true" visible="true" uiColumn_nls_id="Update Level"/>

</DetailsTableData>

</ShowBy>
<ShowBy iname="Version" display_name="VERSION" default_selection="false">
<MasterTableData>
<SqlQuery bindid="HOSTS_INV_MASTER_QUERY">

<!-- Group by sql will replace %GROUP_BY_SQL% given in the main query -->
<Group_By_Sql>
select base_version , patched, sum(num_hosts) as num_hosts from InvQuery  %FILTERDRILLDOWNVALUES% group by base_version,patched order by base_version
</Group_By_Sql>

</SqlQuery>

<UiColumnMapping id="Version" backend_column="base_version" isKey="true" visible="true" uiColumn_nls_id="Version"/>
<UiColumnMapping id="num_hosts" backend_column="num_hosts" isKey="false" uiColumn_nls_id="Hosts" countColumn="true"/>
<UiColumnMapping id="patched" backend_column="patched" isKey="false" uiColumn_nls_id="Patched"/>
</MasterTableData>
<DetailsTableData>
<SqlQuery bindid="HOSTS_DETAILS"/>
<UiColumnMapping id="Host Name" backend_column="hostname" isKey="true" visible="true" uiColumn_nls_id="Host Name"/>
<UiColumnMapping id="Platform" backend_column="name" isKey="true" visible="true" uiColumn_nls_id="Platform"/>
<UiColumnMapping id="Version" backend_column="base_version" isKey="true" visible="true" uiColumn_nls_id="Version"/>
<UiColumnMapping id="Vendor" backend_column="vendor_name" isKey="true" visible="true" uiColumn_nls_id="Vendor"/>
<UiColumnMapping id="Hardware" backend_column="hwname" isKey="true" visible="true" uiColumn_nls_id="Hardware"/>
<UiColumnMapping id="Update Level" backend_column="update_level" isKey="true" visible="true" uiColumn_nls_id="Update Level"/>

</DetailsTableData>

</ShowBy>

<ShowBy iname="Vendor" display_name="VENDOR" default_selection="false">
<MasterTableData>
<SqlQuery bindid="HOSTS_INV_MASTER_QUERY">

<!-- Group by sql will replace %GROUP_BY_SQL% given in the main query -->
<Group_By_Sql>
select vendor_name, patched, sum(num_hosts) as num_hosts from InvQuery %FILTERDRILLDOWNVALUES%  group by vendor_name,patched order by vendor_name
</Group_By_Sql>

</SqlQuery>
<UiColumnMapping id="Vendor" backend_column="vendor_name" isKey="true" visible="true" uiColumn_nls_id="Vendor"/>

<UiColumnMapping id="num_hosts" backend_column="num_hosts" isKey="false" uiColumn_nls_id="Hosts" countColumn="true"/>
<UiColumnMapping id="patched" backend_column="patched" isKey="false" uiColumn_nls_id="Patched"/>

</MasterTableData>
<DetailsTableData>
<SqlQuery bindid="HOSTS_DETAILS"/>
<UiColumnMapping id="Host Name" backend_column="hostname" isKey="true" visible="true" uiColumn_nls_id="Host Name"/>
<UiColumnMapping id="Platform" backend_column="name" isKey="true" visible="true" uiColumn_nls_id="Platform"/>
<UiColumnMapping id="Version" backend_column="base_version" isKey="true" visible="true" uiColumn_nls_id="Version"/>
<UiColumnMapping id="Vendor" backend_column="vendor_name" isKey="true" visible="true" uiColumn_nls_id="Vendor"/>
<UiColumnMapping id="Hardware" backend_column="hwname" isKey="true" visible="true" uiColumn_nls_id="Hardware"/>
<UiColumnMapping id="Update Level" backend_column="update_level" isKey="true" visible="true" uiColumn_nls_id="Update Level"/>

</DetailsTableData>

</ShowBy>
</ShowByList>
</InventoryChoice>

8 ジョブ・タイプの追加

管理者は、Enterprise Managerジョブ・システムの実用性と柔軟性を拡張するために、新しいジョブ・タイプを定義することができます。また、問題修正処理を強化するための新しいジョブ・タイプを追加することもできます。この章では、すでにEnterprise Managerのジョブ・システムに関する知識があることを前提として、ジョブ・タイプについて説明します。

Enterprise Managerジョブ・システムの詳細は、Oracle Enterprise Manager管理者ガイド参照してください。

この章の内容は次のとおりです。

- ジョブ・タイプについて

- 新しいジョブ・タイプの導入

- XMLでの新しいジョブ・タイプの指定

- コマンドの使用

- コマンドのエラー・コードについて

- Oracle Management Serviceでの長時間のコマンドの実行

- パラメータ・ソースの指定

- 資格証明情報の指定

- セキュリティ情報の指定

- ロック情報の指定

- ジョブまたはステップの一時停止

- ジョブの再起動

- 「ジョブ・アクティビティ」および「ジョブ・ライブラリ」の各ページへのジョブ・タイプの追加

- 例: XMLでのジョブ・タイプの指定

- パフォーマンスの問題について

- Enterprise Managerへのジョブ・タイプの追加

8.1 ジョブ・タイプの追加の概要

プラグイン開発者は、ジョブ・タイプの追加において、次の手順に従う必要があります。

1. ジョブ・タイプの定義
ジョブのステップ、各ステップが実行する作業(コマンド)およびステップの関係を定義するXML仕様を使用して、ジョブ・タイプを定義します。

詳細は、「ジョブ・タイプについて」を参照してください。

2. 長時間のコマンドの実行
ジョブ・システムでは、プラグイン開発者が、管理サービス・レベルで作業を実行するコマンドを作成できます。

詳細は、「Oracle Management Serviceでの長時間のコマンドの実行」を参照してください。

3. パラメータ・ソースの指定
ジョブ・システムのデフォルト設定では、ジョブの発行時または実行時に(パラメータを動的に追加または更新して)すべてのジョブ・パラメータの値をプラグイン開発者が指定する必要があります。

詳細は「パラメータ・ソースの指定」を参照してください。

4. 資格証明情報の指定
詳細は、「資格証明情報の指定」を参照してください。

5. セキュリティ情報の指定
詳細は、「セキュリティ情報の指定」を参照してください。

6. ロック情報の指定
詳細は、「ロック情報の指定」を参照してください。

7. ジョブまたはステップの一時停止
詳細は、「ジョブまたはステップの一時停止」を参照してください。

8. ジョブの再起動
詳細は、「ジョブの再起動」を参照してください。

8.2 ジョブ・タイプについて

Enterprise Managerでは、様々なタイプのジョブを定義して、それらをEnterprise Managerジョブ・システムで実行できるため、より多くの、より複雑なタスクを自動化することが可能になっています。

定義上、ジョブ・タイプは、明確に定義された作業単位を実行する、ジョブの特定のカテゴリです。ジョブ・タイプは、文字列によって一意に識別されます。たとえば、OSCommandは、リモート・コマンドを実行するジョブ・タイプである可能性があります。ジョブのステップ、各ステップが実行する作業(コマンド)およびステップの関係を定義するXML仕様を使用して、ジョブ・タイプを定義します。

表8-1に、Enterprise Managerジョブ・タイプの一部とその機能を示します。

表8-1 ジョブ・タイプの例

ジョブ・タイプ

用途

バックアップ

データベースをバックアップする。

バックアップ管理

選択したバックアップ・コピー、バックアップ・セット、またはファイルに対して、クロスチェックや削除などの管理機能を実行する。

クローン・ホーム

Oracleホーム・ディレクトリをクローニングする。

DBClone

Oracleデータベース・インスタンスをクローニングする。

DB構成

リリース10gより前のリリースのデータベースの監視方法を構成する。

エクスポート

特定のEnterprise Managerユーザーのスキーマや表に含まれる、データベースの内容やデータベース・オブジェクトをエクスポートする。

統計収集

オプティマイザ統計を生成および変更する。

OSコマンド

オペレーティング・システムのコマンドまたはスクリプトを実行する。

ホスト比較

複数のホストの構成を比較する。

インポート

オブジェクトや表の内容をインポートする。

ロード

Oracle以外のデータベースからOracle Databaseにデータをロードする。

占有データの移動

SYSAUX表領域の占有データを別の表領域に移動する。

パッチ

Oracle製品にパッチを適用する。

リカバリ

データベース、表領域、データファイルまたはアーカイブ・ログをリストアまたはリカバリする。

RefreshFromMetalink

Enterprise ManagerがMy Oracle Support (https://support.oracle.com)からパッチおよびクリティカル・パッチ・アドバイザ情報をダウンロードできるようにする。

再編成

断片化したデータベースの索引や表を再構築したり、異なる表領域にオブジェクトを移動したり、指定したオブジェクトの記憶域属性を最適化する。

マルチタスク

複数のタスクで構成される複合ジョブを実行する。

SQLスクリプト

SQL*Plusを使用してSQLまたはPL/SQLスクリプトを実行します。

8.3 新しいジョブ・タイプの導入

1つのEnterprise Managerジョブは一連のステップから構成され、各ステップは1つのコマンドまたはスクリプトを実行します。ジョブ・タイプは、それらのステップの組立て方法を定義します。たとえば、ステップをシリアルに(逐次的に)実行するかパラレルに(並行して)実行するかを指定したり、ステップの実行順序やステップ間の依存関係を定義したりします。ジョブ・タイプ、ステップ、コマンドはXMLで表現できます(詳細は、「新しいジョブ・タイプのXMLでの指定」を参照してください)。ジョブ・システムはXML仕様から実行計画を構成し、それにより、指定された順序でのステップの実行が可能になります。

8.4 新しいジョブ・タイプのXMLでの指定

新しいジョブ・タイプの仕様はXMLで定義します。ジョブ・タイプ指定によってジョブ・システムに次の情報が提供されます。

- ジョブに含まれる各ステップ。

- 各ステップで実行されるコマンドまたはスクリプト。

- ステップ間の関係。たとえば、複数のステップをパラレルに(並行して)実行するかシリアルに(逐次的に)実行するかの指定や、あるステップが別のステップに依存するかどうかの指定など。

- ジョブを認証するためのユーザー資格証明(通常は、ジョブの所有者が提供する必要があります)。ジョブ・タイプ作成者は、ジョブ・タイプXMLでこれらの資格証明を宣言する必要もあります。

- 特定のジョブ・パラメータの計算方法(オプション)。

- ジョブの実行中に取得する必要があるロックと、そのロックが使用できない場合の動作。

- ジョブを発行するためにユーザーに必要な権限。

作成されたジョブ・タイプ仕様(XML形式)は、メタデータ・プラグイン・アーカイブに追加されます。Enterprise Managerにメタデータ・プラグインが追加されると、ジョブ・システムは、ジョブにどのステップを含めるかや、各ステップ内で何を実行するかをスケジュールするために必要な情報へアクセスできるようになります。

8.4.1 ジョブ・タイプ・カテゴリの理解

ジョブ・タイプは、適用先ターゲット上でどのようにタスクを実行するかに応じて、次のカテゴリのいずれかに分類できます。

- 単一ノード
単一ノード・ジョブ・タイプは、ジョブが実行されるすべてのターゲット上で、同じステップのセットを並列に実行するジョブ・タイプです。通常、これらのジョブ・タイプのターゲット・リストは固定されていません。多くのターゲットをとることがあります。単一ノード・ジョブ・タイプの例を以下に示します。

- OSコマンド
すべてのターゲット上で、OSコマンドまたはスクリプトを実行します。

- SQL
すべてのターゲット上で、指定されたSQLスクリプトを実行します。

- 複数ノードまたは組合せ
複数ノード・ジョブ・タイプは、複数のターゲットに対し、複数のタスク(場合によっては相互に関係を持つ複数タスク)を実行するジョブ・タイプです。通常、このジョブ・タイプは固定されたターゲット・セットを対象とします。たとえば、アプリケーション・スキーマをクローニングするクローン・ジョブは、ソース・データベースとターゲット・データベースの2つのターゲットを必要とすることがあります。

注意:
複数のターゲットに対して同じアクティビティを繰り返すために、複数ノードおよび組合せのジョブ・タイプに反復ステップセットを使用できます。

8.4.2 エージェントにバインドされたジョブ・タイプの使用

エージェントにバインドされているジョブ・タイプは、ターゲット・リストにある1つ以上のターゲットの管理エージェントが稼働していて応答しないかぎり、ジョブを実行できないものです。このカテゴリに適合するジョブ・タイプは、jobType XMLタグのagentBound属性をtrueに設定することによって、エージェントにバインドされていると宣言する必要があります。

ジョブ・タイプがエージェントにバインドされているとき、ジョブ実行のターゲット・リストにあるターゲットに対応する管理エージェントの1つ以上が応答しない場合、ジョブ・システムはいかなる実行もスケジュールしません。ジョブ(およびすべてのそのスケジュールのステップ)は、一時停止/エージェント停止と呼ばれる特別な状態に設定されます。Enterprise Managerリポジトリ層が管理エージェントの再起動を検知するまで、ジョブはこの状態で保持されます。

この時点でジョブおよびそのステップはスケジュール済のステータスに再設定され、ジョブを実行できる状態になります。ジョブ・タイプがエージェントにバインドされていると宣言することで、ジョブ・タイプ作成者は、管理エージェントの停止が検出された場合、ジョブ・システムがジョブをスケジュールしないようにできます。

注意:
単一ノード・ジョブ・タイプはデフォルトでエージェントにバインドされていますが、複数ノード・ジョブ・タイプはバインドされていません。

エージェントにバインドされているジョブのターゲット・リストに複数のターゲットがある場合は、管理エージェントの1つが停止するとジョブは一時停止としてマークされます。

エージェントにバインドされているジョブ・タイプの例はOSCommandジョブ・タイプで、指定されたターゲットの管理エージェントを使用してOSCommandを実行します。ただし、すべてのジョブ・タイプが、エージェントにバインドされているわけではありません。たとえば、管理リポジトリでSQLを実行するジョブ・タイプは、エージェントにバインドされません。

Enterprise Managerではハートビート・メカニズムが採用されているため、リモート管理エージェントが停止した時をすばやく検知することができます。管理エージェントが停止中としてマークされると、この管理エージェントがターゲット・リストに含まれる、エージェントにバインドされているすべてのジョブの実行が、一時停止/エージェント停止とマークされます。ただし、管理エージェントが停止してから管理リポジトリによってその事実が検出されるまでの間に、ジョブ・システムによってリモート操作のディスパッチが試行される可能性は残されています。この場合、ステップの実行時に管理エージェントに接続できないと、ステップは再びスケジュール済の状態に設定され、ジョブ・システムによって再試行されます。ハートビート・メカニズムによってノードが停止中としてマークされ、その時点でジョブが一時停止するまで、一連の再試行が続行されます。

ジョブが一時停止/エージェント停止とマークされている場合、ジョブ・システムは、管理エージェントが再起動するまでデフォルトでジョブをその状態に保持します。ただし、猶予期間と呼ばれるパラメータが定義されている場合、この動作をオーバーライドできます。猶予期間とは、ジョブ実行がその時間内に実行開始できる時間の最大値です(単位は分)。この猶予期間内にジョブが開始できない場合、そのスケジュールではそのジョブ実行がスキップされます。

一時停止/エージェント停止の状態にあるジョブ実行を再開する唯一の方法は、管理エージェントを再び起動させることです。resume_execution() APIを使用してジョブを再起動することはできません。

8.4.3 ジョブ・ステップについて

ジョブにおける実行の単位は、ステップと呼ばれます。ステップは、ステップがする作業を決定するコマンドを持ちます。各コマンドにはコマンドを実装するJavaクラスがあり、コマンド実行者と呼ばれます。また、コマンドには一連のパラメータが含まれています。これらは、コマンド・エグゼキュータによって解釈されます。

ジョブ・システムは、次のようなあらかじめ作成されたコマンドの固定セットを提供します。

- コマンドをリモートで実行するリモート操作コマンド。詳細は、第8.5.1項「remoteOp Commandコマンドの使用」を参照してください。

- 2つの管理エージェント間でファイルを転送するファイル転送コマンド。詳細は、第8.5.2項「fileTransferコマンドの使用」を参照してください。

- 管理エージェント層で生成されたログ・ファイルを管理リポジトリにストリーミングするファイル取得コマンド。詳細は、第8.5.4項「getFileコマンドの使用」を参照してください。

ステップは、ステップセットと呼ばれるセットにグループ化されます。ステップセットには、ステップだけでなく、自身以外のステップセットを含めることもできます。ステップセットは次のタイプに分類されます。

- シリアル・ステップセット
シリアル・ステップセットは、ステップがシリアルに実行されるステップセットです。シリアル・ステップセットのステップは、ステップの実行に依存していることがあります。たとえば、あるジョブで、ステップS1が正常に完了した場合のみステップS2が実行されるように指定されたり、S1が失敗した場合のみステップS3が実行されるように指定されたりすることが考えられます。

シリアル・ステップセットのステップは、同じステップセット内の、他のステップまたはステップセットに対してのみ依存関係を持つことができます。デフォルトでは、シリアル・ステップセットが正常に完了したとみなされるのは、最後のステップが正常に完了した場合です。ステップセット内の最後のステップが失敗した場合、ステップセットが失敗したとみなされます。この動作は、stepsetStatus属性を使用してオーバーライドできますが、オーバーライドは、そのステップが別の(successOf/failureOf/abortOf属性でない)ステップに依存していない場合のみ可能です。

- パラレル・ステップセット
パラレル・ステップセットは、ステップが並列に(同時に)実行されるステップセットです。パラレル・ステップセットのステップは、依存関係を持てません。パラレル・ステップセットが成功したと見なされるのは、すべてのパラレル・ステップが正常に完了した場合です。その中にあるステップのいずれかが失敗した場合、失敗したとみなされます。デフォルトでは、それを構成するステップの1つ以上が失敗し、中断されたステップがない場合、パラレル・ステップセットは失敗したとみなされます。stepsetStatus属性を使用して、この動作をオーバーライドできます。

- 反復ステップセット
反復ステップセットは、ベクトル・パラメータを反復する特別なステップセットです。ジョブのターゲット・リストは、job_target_namesとjob_target_typesという名前の特別な暗黙パラメータを使用して取得できます。反復ステップセットは、ターゲット・リストまたはベクトル・パラメータに基づいて反復し、基本的にステップセットをN回(ターゲット・リストまたはベクトル・パラメータのそれぞれの値に対して1回ずつ)実行します。

反復ステップセットは、パラレルにも(N 個のステップセット・インスタンスを同時実行)、シリアルにも(N 個のステップセット・インスタンスをシリアルに、順次スケジュール)実行できます。反復ステップセットが成功したと言われるのは、そのN個のインスタンスがすべて成功した場合です。そうでない場合、N個のステップセットのうち1つでも中断されたときは、失敗したと言われます。N個のステップセットの1つ以上が失敗し、中断されたものがないときは、失敗したと言われます。中断された場合、反復ステップセットのそれ以降の処理は常に停止されます。

各反復ステップセット・インスタンス内のステップはシリアルに実行され、シリアル・ステップセット内の場合に類似したシリアルな依存関係を持てます。反復シリアル・ステップセットは、iterateHaltOnFailureと呼ばれる属性を持っています(iterativeParallelステップセットには適用されません)。これがtrueに設定されている場合、ステップセットは、最初に失敗したか中断された子反復で停止します。デフォルトでは、一部の反復が失敗した場合でも(iterateHaltOnFailure=false)、反復シリアル・ステップセットのすべての反復が実行されます。

- スイッチ・ステップセット
スイッチ・ステップセットは、指定されたジョブ・パラメータの値に基づいて、ステップセット内のステップの1つのみが実行されるステップセットです。スイッチ・ステップセットにはジョブ(スカラー)パラメータであるswitchVarName属性があり、ジョブ・システムは、ステップセット内で実行しなければならないステップを決定するためにその値を確認します。スイッチ・ステップセットの各ステップにはswitchCaseVal属性があり、それは、switchVarNameで指定されたパラメータがとり得る値の1つです。

スイッチ・ステップセットで実行されるステップは、switchCaseValパラメータの値がスイッチ・ステップセットのswitchVarNameパラメータの値と一致するものです。スイッチ・ステップセット内の選択されたステップだけが実行されます。スイッチ・ステップセットのステップは、同じステップセット内またはそれ以外の、他のステップまたはステップセットに対する依存関係を持つことができません。

デフォルトでは、スイッチ・ステップセットが正常に完了したとみなされるのは、選択されたステップが正常に完了した場合です。ステップセット内の選択されたステップが失敗した場合、ステップセットが失敗したとみなされます。また、ステップセット内のステップが選択されなかった場合、スイッチ・ステップセットは成功します。

たとえば、S1とS2の2つのステップがあるスイッチ・ステップセットで次のように指定します。

- switchVarNameをsendEmailと指定

- S1のswitchCaseValをtrueに設定

- S2のswitchCaseValをfalseに設定

ジョブ・パラメータsendEmailがtrueに設定されたジョブが発行された場合、S1が実行されます。ジョブ・パラメータsendEmailがfalseに設定されたジョブが発行された場合、S2が実行されます。sendEmailの値がそれ以外である場合、その場合もステップセットは成功しますが、何も実行されません。

- ネストされたジョブ
ステップセットでは、セット内のステップが別のジョブ・タイプへの参照となっている場合があります。ジョブ・タイプは、その中に他のジョブ・タイプを含むことができます。ただし、ジョブ・タイプからそのジョブ・タイプ自身を参照することはできません。

ジョブのネスト化は、機能ブロックを再利用するのに便利な方法です。たとえば、データベース・バックアップの実行は、複雑なステップの順序を持つジョブです。しかし、他のジョブ・タイプ(たとえばパッチとクローン)が、バックアップ・ファシリティを、ネストされたジョブとして使用する可能性があります。ネストされたジョブには、ジョブ・タイプに含まれるジョブのすべてのターゲットを渡すことも、ターゲットのサブセットのみを渡すこともできます。また、ジョブ・タイプに含まれるジョブから、ネストされたジョブにすべてのパラメータを渡すかどうかや、ネストされたジョブで(親ジョブのパラメータから導出された)独自のパラメータ・セットを使用するかどうかを指定することもできます。

ネストされたジョブ内の個々のステップおよびステップセット(また、場合によってはその他のネストされたジョブ)のステータスによって、ネストされたジョブのステータスは決まります。

注意:
ネストされたジョブが、singleTargetセットをtrueに設定したジョブ・タイプを参照している場合、ネストされたジョブのtargetType属性を使用してネストされたジョブに適用可能なターゲット・タイプを明示的に指定する必要があります。指定しない場合、ネストされたジョブはそのジョブ・タイプのデフォルトのターゲット・タイプのみに対応するターゲットを選択します。

8.4.3.1 ステップセットのステータスへの影響

ステップのステータスからそのステップセットのステータスを計算するデフォルト・アルゴリズムは、ジョブ・タイプから、ステップセットのstepsetStatus属性を使用して変更できます。stepsetStatusを、ステップセットに含まれるステップ、ステップセットまたはジョブの名前(ID)に設定することで、ステップセットのステータスが、stepStatus属性で名前を指定された特定のステップ、ステップセットまたはジョブのステータスに依存することを示すことができます。この機能は、ジョブ・タイプの作成者が、ステップセット内の一部のステップが失敗してもステップセットが成功したとみなすことを意図する場合に便利です。

例は、ジョブ内のステップセットの最後に実行されるステップで、そのジョブでは管理者のリストにジョブのステータスに関する電子メールを送信します。ジョブのステータスは、作業を実行するステップのステータスに設定する必要があります(電子メールを送信したステップのステータスではありません)。stepsetStatus属性で名前を指定できるのは、無条件で実行されるステップだけです。successOfまたはfailureOfの依存関係として実行されるステップ、ステップセットまたはジョブの名前は、stepsetStatus属性で指定できません。

8.4.3.2 ジョブ・パラメータの渡し方

ジョブのパラメータをステップに渡すには、パラメータ名を2つの%記号で囲まれたプレースホルダに入れます。たとえば、%patchNo%は、patchNoという名前のパラメータの値を表します。それがステップのコマンド実行者に渡されると、ジョブ・システムがこのパラメータの値を置換します。

[]記法を使用することにより、ベクトル・パラメータに対応するプレースホルダを定義することもできます。たとえば、patchListと呼ばれるベクトル・パラメータの1つ目の値は%patchList%[1]として参照され、2つ目は%patchList%[2]となります。

ジョブ・システムには、使用可能な一連の定義済プレースホルダが用意されています。これらのプレースホルダはすべて、job_という接頭辞で始まります。次に示すプレースホルダが提供されています。

- job_iterate_index
反復ステップセットでベクトル・パラメータを反復処理しているときの、現在のパラメータ値の索引。索引は、最も近い囲みステップセットのみを参照します。ネストされた反復ステップセットの場合、外側の反復索引にはアクセスできません。

- job_iterate_param
反復ステップセットの、反復の対象となるパラメータの名前。

- job_target_names[n]
位置nでのジョブ・ターゲット名。単一ノード・ジョブについては、ジョブが複数ノードに対して発行された場合でも、配列は常にサイズ1のみであり、ジョブが実行される現在のノードのみを参照します。

- job_target_types[n]
位置nでのジョブ・ターゲットのタイプ。単一ノード・ジョブについては、ジョブが複数ノードに対して発行された場合でも、配列は常にサイズ1のみであり、ジョブが実行される現在のノードのみを参照します。

- job_name
ジョブの名前。

- job_type
ジョブのタイプ。

- job_owner
ジョブを発行したEnterprise Managerユーザー。

- job_id
ジョブID。これは、Globally Unique IDentifier (GUID)を表す文字列です。

- job_execution_id
実行ID。これはGUIDを表す文字列です。

- job_step_id
ステップID。整数を指定します。

これらのプレースホルダ以外に、次のターゲット関連のプレースホルダもサポートされます。

- emd_root: 管理エージェント・インストールの場所

- perlbin: (Enterprise Manager)Perlインストールの場所

- scriptsdir: 管理エージェント固有スクリプトの場所

上の各プレースホルダは、ジョブ・システムによってではなく、管理エージェントによって解釈されます。たとえば、%emd_root%がremoteOpコマンドのremoteCommandまたはargsパラメータで使用されるか、putFile、getFileおよびtransferFileコマンドにおけるいずれかのファイル名で使用される場合、管理エージェントが、管理エージェント・ルート位置の実際の値をこのプレースホルダに置換します。

8.4.3.3 ジョブ・ステップの出力とエラーについて

1つのステップは、ステータス(それが成功したか、失敗したか、終了したかを示す)、何らかの出力(そのステップのログ)およびエラー・メッセージから構成されます。ステップが失敗すると、そのステップから実行されたコマンドによって、エラー・メッセージ列にエラーが示されることがあります。デフォルトでは、非同期のリモート操作の標準出力と標準エラーは、リモート操作を要求したステップの出力と同一になるように設定されます。

次のいずれかを使用して、ステップにエラー・メッセージを挿入するよう選択できます。

- CommandManager (同期)のgetErrorWriter()メソッド

- mgmt_jobsパッケージのinsert_step_error_ message API (通常、リモートで実行中のスクリプトによってコマンド・チャネル内でコールされる)

8.5 コマンドの使用

この項では、利用できるコマンドと関連パラメータについて説明します。次の項で説明するターゲット名とターゲット・タイプ・パラメータには、任意のタイプのターゲットを指定できます。ジョブ・システムは、指定されたターゲットをモニターする管理エージェントを自動的に識別し、接続します。

8.5.1 remoteOpコマンドの使用

リモート操作コマンドには、remoteOpという識別子が付けられます。コマンドは、ターゲットのホスト上で操作を実行するために必要な、defaultHostCredという名前を持つ資格証明使用を受け入れます。バインディングは、次のように表すことができます。

<step ID="Step_2" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="osCreds"/>
</credList>
<paramList>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="remoteCommand">%remoteCommand%</param>
<param name="args">%args%</param>
<param name="executeSynchronous">false</param>
</paramList>
</step>

defaultHostCredは、コマンドが認識する資格証明使用です。たとえば、コマンド内のJavaコードはこの文字列を持つ資格証明をコールしますが、ここでosCredsは最上位レベルのジョブ・タイプで宣言された資格証明使用です。

リモート操作コマンドは次のパラメータを取ります。

- remoteCommand: 実行可能ファイルまたはスクリプトのパス名(たとえば/usr/local/bin/perl)。

- args: remoteCommandの引数のカンマ区切りリスト。

- targetName: コマンドの実行対象となるターゲットの名前。プレースホルダを使用してターゲットを表すことができます。

- targetType: コマンドの実行対象となるターゲットのターゲット・タイプ。

- executeSynchronous: このオプションのデフォルトはfalseで、その場合リモート・コマンドは管理エージェント上で常に非同期で実行され、ステップのステータスはコマンドの実行後に更新されます。
このオプションをtrueに設定すると、コマンドは管理エージェントが処理を完了するまで待機し、同期して実行されます。通常、このパラメータがtrueに設定されるのは、瞬時に起動し、持続時間の短いリモート操作の場合です(リスナーの起動など)。実行に長い時間がかかるリモート操作の場合、このパラメータは、falseに設定する必要があります。

注意:
このパラメータはfalseに設定されており、この設定をオーバーライドすることはできません。

- successStatus: ステップの成功を示す値として定義する整数値のリスト(カンマ区切り)。リモート・コマンドが終了ステータスとして返した値がこれらの数値のいずれかであった場合、ステップは成功しています。デフォルトはゼロです。これらの値が適用されるのは、executeSynchronousがtrueに設定されている場合のみです。

- failureStatus: ステップの失敗を示す値として定義する整数値のリスト(カンマ区切り)。リモート・コマンドが終了ステータスとして戻した値がこれらの数値のいずれかであった場合、ステップは失敗しています。デフォルト値は、ゼロ以外のすべての値です。これらの値が適用されるのは、executeSynchronousがtrueに設定されている場合のみです。

- input: これを指定した場合、その値は標準入力としてリモート・プログラムに渡されます。

- outputType: リモート・コマンドが生成する出力のタイプを指定します。このオプションには次の2つの値があります。

- 通常(デフォルト)
normalの出力は、このステップに対応するログに格納され、いかなる方法でも解釈されない出力です。

- コマンド
commandの出力は、1つ以上のコマンド・ブロックを含むことができる出力で、あらかじめ登録されたSQLプロシージャ・コールにマップされるXML順序です。このオプションを使用すると、リモート・コマンドは、管理リポジトリでスキーマに直接ロードできるコマンド・ブロックを生成できます。

実行されたコマンドによって生成された標準出力は、ジョブ・システムによって、そのステップに対応する出力として格納されます。

8.5.1.1 補助資格証明の使用

場合によっては、リモート操作のために追加の資格証明を渡すことが必要になります。これらの資格証明は、リモート操作を作成する管理エージェントに接続するために必要なホスト資格証明に加えて使用されるため、補助資格証明と呼ばれます。

補助資格証明の処理は、管理エージェントで作成される処理に依存します。ジョブ・システムにより、資格証明の列値を変数に抽出するメカニズムが提供され、この変数をリモート操作コマンド(remoteOp)の入力パラメータ内の置換に使用できます。

このオプションを使用するには、補助資格証明の適切な設定が必要なジョブ・タイプおよび資格証明タイプで、補助資格証明使用を定義する必要があります。

リモート操作内で資格証明を使用するには、次を使用します。

<step ID="Command" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="defaultHostCred"/>
<cred usage="defaultDBCred" reference="defaultDBCred">
<map toParam="db_username" credColumn="DBUserName"/>
<map toParam="db_password" credColumn="DBPassword"/>
<map toParam="db_role" credColumn="DBRole"/>
</cred>
</credList>
<paramList>
<param name="remoteCommand">%perlbin%/perl</param>
<param name="args">-I,%emd_root%/sysman/admin/scripts/jobutil,mylocation/runSQL.pl,%OracleHome%, %SID%, %sqlplus_args%</param>
<param name="input"><![CDATA[
__EM_JOB_SQL_USER__=%db_username%
__EM_JOB_SQL_PASSWORD__=%db_password%
__EM_JOB_SQL_DBROLE__=%db_role%
__EM_JOB_INPUT_STREAM_END__
]]>
</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
</paramList>
</step>

8.5.2 fileTransferコマンドの使用

fileTransferコマンドは、ある管理エージェントから別の管理エージェントにファイルを転送します。ソース管理エージェント上でコマンドを実行してその標準出力をファイルとしてターゲット管理エージェントに転送したり、ターゲット管理エージェント上のコマンドへの標準入力として転送したりすることもできます。fileTransferコマンドは常に非同期で、次のパラメータを取ります。

<step ID="S1" command="fileTransfer">
<credList>
<cred usage=”srcReadCreds” reference=”mySourceReadCreds”/>
<cred usage=”dstWriteCreds” reference=”myDestWriteCreds”/>
</credList>
<paramList>
<param name="sourceTargetName">%job_target_names%[1]</param>
<param name="sourceTargetType">%job_target_types%[1]</param>
<param name="destTargetName">%job_target_names%[2]</param>
<param name="destTargetType">%job_target_types%[2]</param>
<param name="sourceFile">%sourceFile%</param>
<param name="sourceCommand">%sourceCommand%</param>
<param name="sourceArgs">%sourceArgs%</param>
<param name="sourceInput">%sourceInput%</param>
<param name="destFile">%destFile%</param>
<param name="destCommand">%destCommand%</param>
<param name="destArgs">%destArgs%</param>
</paramList>
</step>

次のコマンドは、2つの資格証明を使用します。srcReadCreds資格証明はソースからファイルを読み取るために使用され、dstWriteCreds資格証明はファイルをターゲットに書き込むために使用されます。バインディングは、次のように表すことができます。

<step ID="S1" command="fileTransfer">
<credList>
<cred usage=”srcReadCreds” reference=”mySourceReadCreds”/>
<cred usage=”dstWriteCreds” reference=”myDestWriteCreds”/>
</credList>
<paramList>
<param name="sourceTargetName">%job_target_names%[1]</param>
<param name="sourceTargetType">%job_target_types%[1]</param>
<param name="destTargetName">%job_target_names%[2]</param>
<param name="destTargetType">%job_target_types%[2]</param>
<param name="sourceFile">%sourceFile%</param>
<param name="sourceCommand">%sourceCommand%</param>
<param name="sourceArgs">%sourceArgs%</param>
<param name="sourceInput">%sourceInput%</param>
<param name="destFile">%destFile%</param>
<param name="destCommand">%destCommand%</param>
<param name="destArgs">%destArgs%</param>
</paramList>
</step>

- sourceTargetName: ソース管理エージェントに対応するターゲットの名前。

- destTargetName: ターゲット管理エージェントに対応するターゲットの名前。

- destTargetType: ターゲット管理エージェントに対応するターゲット・タイプ。

- sourceFile: ソース管理エージェントから転送されるファイル。

- sourceCommand: ソース管理エージェントで実行されるコマンド。これが指定されると、このコマンドの標準出力がターゲット管理エージェントにストリーミングされます。sourceFileとsourceCommandパラメータを両方とも指定することはできません。

- sourceArgs: sourceCommandに対する一連のコマンドライン・パラメータ(カンマ区切り)。

- destFile: ファイルがターゲット管理エージェント上で格納される場所またはファイル名。

- destCommand: ターゲット管理エージェント上で実行されるコマンド。これを指定すると、ソース管理エージェントから(ファイルからであってもコマンドからであっても)生成されたストリームは、このコマンドの標準入力に送信されます。destFileパラメータとdestCommandパラメータの両方を指定することはできません。

- destArgs: destCommandに対する一連のコマンドライン・パラメータ(カンマ区切り)。

管理エージェント間でファイルが正常に転送されると、fileTransferコマンドは成功します(ステータス・コード0を戻します)。エラーが発生した場合、障害の理由として適切なエラー・コードを戻します。

8.5.3 putFileコマンドについて

putFileコマンドを使用すると、大量のデータを管理リポジトリから管理エージェント上のファイルに転送できます。転送されるデータは、管理リポジトリのバイナリ・ラージ・オブジェクト(BLOB: ファイル・システムにあるファイル)に由来することも、仕様に埋め込まれている(inline)こともあります。

ファイルを転送する場合は、そのファイルの場所が管理リポジトリ・インストールからアクセス可能である必要があります。管理リポジトリ内のBLOBを転送する場合は、そのBLOBが、管理リポジトリ・スキーマ・ユーザー(通常mgmt_rep)からアクセスできる管理リポジトリ内の表に含まれている必要があります。

コマンドは、defaultHostCredという名前を持つ資格証明使用を受け入れます。ターゲットのホストでファイルを書き込むには、これらの資格証明が必要です。バインディングは、次のように表すことができます。

<step ID="S1" command="putFile">
<credList>
<cred usage="defaultHostCred" reference="osCreds"/>
</credList>
<paramList>
<param name="sourceType">file</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="sourceFile">%oms_root%/myfile</param>
<param name="destFile">%emd_root%/yourfle</param>
</paramList>
</step>

putFileコマンドに必要なパラメータは次のとおりです。

- sourceType: ソース・データのタイプ。sql、fileまたはinlineを指定できます。

- targetName: ファイルの転送先となるターゲットの名前(ターゲット管理エージェント)。

- targetType: 転送先ターゲットのタイプ。

- sourceFile: 管理リポジトリから転送されるファイル(sourceTypeがfileSystemに設定されている場合)。管理リポジトリ・インストールからアクセス可能なファイルである必要があります。

- sqlType: SQLデータのタイプ(sourceTypeがsqlに設定されている場合)。有効な値は、CLOBとBLOBです。

- accessSql: BLOBデータの取得に使用するSQL文(sourceTypeがsqlに設定されている場合)。例: select output from my_output_table where blob_id=%blobid%

- destFile: ファイルがターゲット管理エージェント上で格納される場所またはファイル名。

- contents: sourceTypeをinlineに設定した場合は、このパラメータにファイルの内容を含めます。テキストには、%param%という形式でパラメータのプレースホルダを含めることができます。

ファイルが正常に転送され、ステータス・コードが0に設定されると、putFileコマンドが成功します。失敗した場合、ステータス・コードは失敗の理由を示す整数に設定されます。

8.5.4 getFileコマンドの使用

getFileコマンドは、管理エージェントから管理リポジトリにファイルを転送します。ファイルは、このコマンドを実行したステップの出力として格納されます。

コマンドは、ターゲットのホスト上でファイルを読み込むために必要な、defaultHostCredという名前を持つ資格証明使用を受け入れます。バインディングは、次のように表すことができます。

<step ID="S1" command="getFile">
<credList>
<cred usage="defaultHostCred" reference="osCreds"/>
</credList>
<paramList>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="sourceFile">%sourceFile%</param>
<param name="destType">%destType%</param>
<param name="destFile">%destFile%</param>
<param name="destParam">%destParam%</param>
</paramList>
</step>

getFileコマンドのパラメータは次のとおりです。

- sourceFile: 管理エージェントに転送されるファイルの場所。

- targetName: 管理エージェントがファイルを取得するために接続するターゲットの名前。

- targetType: ターゲットのタイプ。

ファイルが正常に転送され、ステータス・コードが0に設定されると、getFileコマンドが成功します。失敗した場合、ステータス・コードは失敗の理由を示す整数に設定されます。

8.5.5 execAndSuspendコマンドの使用

execAndSuspendコマンドは、remoteOpコマンドに似ていますが、管理エージェントを再起動するホスト・プロセスを実行するために使用されます。通常、管理エージェントのバイナリや構成を更新し、管理エージェントの再起動が必要なシナリオでこのコマンドを使用します。コマンドは管理エージェントに対するエージェント・ベースの操作を「ポスト」し、その操作ステータスをすぐに「成功」に切り替える一方、以降のステップは管理エージェントからの「再起動」通知を待機する一時停止ステータスに移行します。

次の制限とガイドラインに従うことが重要です。

- 管理エージェントで実行されるコマンドいかなる標準出力またはエラーも生成する必要はありません。このような出力がある場合、発行された操作の一部としてファイルまたはnullにリダイレクトする必要があります。リダイレクトできない場合、コマンドが失敗することがあります。

- ジョブ・タイプにはexecAndSuspendコマンドを実行するステップの直後にステップが含まれている必要があります。この後続のステップがexecAndSuspendステップの一部として発行された操作が成功したかどうかを確認します。エージェントベースの操作が失敗している場合があるため、後続のステップではremoteOpの使用を避け、直接のエージェントベースJavaコールを使用して操作のステータスを確認する必要があります。

このコマンドのほとんどの引数は、remoteOpコマンドと同様です。このコマンドは、ターゲットのホスト上で操作を実行するために必要な、defaultHostCredという名前を持つ資格証明使用を受け入れます。バインディングは、次のように表すことができます。

<step ID="Ta_S1_suspend" command="execAndSuspend">
<credList>
<cred usage="defaultHostCred" reference="osCreds"/>
</credList>
<paramList>
<param name="remoteCommand">%command%</param>
<param name="args">%args%</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="suspendTimeout">2</param>
</paramList>
</step>

execAndSuspendコマンドのパラメータは次のとおりです。

- remoteCommand: 実行可能ファイルまたはスクリプトのパス名(例: /usr/local/bin/perl)。

- args: remoteCommandに対する引数のリスト(カンマ区切り)。

- targetName: コマンドの実行対象となるターゲットの名前。プレースホルダを使用してターゲットを表すことができます。

- targetType: コマンドの実行対象となるターゲットのターゲット・タイプ。

- input: これを指定した場合、その値は標準入力としてリモート・プログラムに渡されます。

- suspendTimeout: 管理エージェントの起動通知を待機する期間(分)この時間内に通知を受信しない場合、実行が再開され後続のステップが実行されます(管理エージェントの起動通知を受信した場合も後続のステップが実行されるため、後続のステップがタイムアウトしたのか正常に実行されたのかを判断する必要があります)。

ここでdefaultHostCredは、コマンドが認識する資格証明使用です。たとえば、コマンド内のJavaコードはこの文字列を持つ資格証明をコールしますが、ここでosCredsは最上位レベルのジョブ・タイプで宣言された資格証明使用です。

8.6 コマンドのエラー・コードについて

remoteOp、putFile、fileTransferおよびgetFileコマンドは、表8-2「コマンド・エラー・コード」にリストされているエラー・コードを戻します。次のメッセージで、「コマンド・プロセス」は、指定されたリモート・コマンドを実際に実行して、実行されたコマンドの標準出力と標準エラーを取得する管理エージェントが実行するプロセスを指します。

UNIXインストールでは、このプロセスはnmoと呼ばれ、$EMD_ROOT/binに所在します。そのSetUIDがrootでないと、正常に使用できません。nmoは、有効なユーザー名とパスワードを持たないかぎり、いかなるコマンドも実行しないため、これはセキュリティ・リスクにつながりません。

表8-2 コマンド・エラー・コード

エラー・コード

説明

0

エラーなし。

1

コア・モジュールを初期化できませんでした。エージェントのインストールまたは環境に問題がある可能性があります。

2

エージェントがメモリー不足です。

3

エージェントが入力ストリームから情報を読み取れません。

4

入力パラメータのサイズが大きいため、エージェントが処理できません。

5

コマンド・プロセスのsetuidがrootに設定されていません。UNIX Agent にはnmoという実行可能ファイルが用意されています。このファイルにはsetuid rootを設定する必要があります。

6

指定したユーザーはこのシステムに存在しません。

7

パスワードが正しくありません。

8

指定されたユーザーでは実行できません。

9

コマンド・プロセス(nmo)の分岐化に失敗しました。

10

指定されたプロセスが実行できません。

11

起動したプロセスのイグジット・ステータスが取得できません。

12

コマンド・プロセスの終了前に割込みがありました。

13

標準エラー・ストリームを標準出力にリダイレクトできませんでした。

8.7 Oracle Management Serviceでの長時間のコマンドの実行

ジョブ・システムでは、プラグイン開発者が、管理サービス・レベルで作業を実行するコマンドを作成できます。たとえば、データベースから2つのラージ・オブジェクト(LOB)を読み取って、各種の変換を実行し、書き戻すコマンドです。ジョブ・システムは、そのようなコマンドがLongRunningCommandと呼ばれる(空の)インタフェースを実装することを想定しています。これはコマンドが中間層の上で同期実行され、長時間実行されることがありうることを示しています。これにより、ディスパッチャと呼ばれるジョブ・システムのコンポーネントが、システムのスループットを低下させない方法で、可能なかぎり効率的に長時間のコマンドをスケジュールすることができます。

8.7.1 長時間のコマンドを処理するためのジョブ・ディスパッチャの構成

ディスパッチャはジョブ・システムのコンポーネントで、ジョブの、実行可能な状態にある様々なステップを実行します。各ステップで関連付けられるコマンド・クラスがコールされ、それが要求するすべての非同期操作がディスパッチされます。ステップのディスパッチと呼ばれる処理です。ディスパッチャは、スレッド・プールを使用してステップを実行します。スレッド・プールは指定された数のワーカー・スレッドのコレクションで、そのどれでもステップをディスパッチすることができます。

ジョブ・システム・ディスパッチャは、次の2つのスレッド・プールを使用します。

- 非同期のステップと短い同期のステップをディスパッチするための短いコマンド・プール

- 長時間のコマンドを持つステップをディスパッチするための長いコマンド・プール

通常、短いコマンド・プールには、長時間のプールのスレッド数(たとえば、10)と比較して、より多数のスレッド(たとえば、25)があります。

通常、より多数の短時間のコマンドと比較して、長時間の中間層ステップはあまりありません。ただし、2つのプールのサイズは、特定のサイトにおけるジョブの割合に適合するように、ディスパッチャで完全に構成可能です。複数のディスパッチャを異なるノードで実行できるため、サイト管理者は、あるディスパッチャを長時間のステップまたは短時間のステップの専用にすることもできます。

8.8 パラメータ・ソースの指定

ジョブ・システムのデフォルト設定では、ジョブの発行時または実行時に(パラメータを動的に追加または更新して)すべてのジョブ・パラメータの値をプラグイン開発者が指定する必要があります。通常、アプリケーションは次のいずれかの方法でこれらのパラメータを指定します。

- ジョブの発行時にアプリケーションのユーザーに指定させる。

- アプリケーション固有のデータ(表など)からパラメータの値をフェッチし、ジョブ・パラメータ・リストに挿入する。

- リモート・コマンドの出力のコマンド・ブロックを介して動的に新しいパラメータを生成する。これらのパラメータは後続のステップで使用できます。

ジョブ・システムにはパラメータ・ソースの概念があるため、プラグイン開発者は、ジョブまたはステップのパラメータをフェッチして移入するために書かなければならないアプリケーション固有のコード(たとえば上の2番目のカテゴリ)の量を簡素化できます。パラメータ・ソースは、ジョブが発行されるか、実行を開始しようとしているときに、ジョブ・システムがパラメータのセットをフェッチするために使用するメカニズムです。

ジョブ・システムは、SQL(パラメータのセットをフェッチするPL/SQLプロシージャ)、資格証明(Enterprise Manager資格証明表からのユーザー名とパスワード情報の取得)およびユーザー・ソースをサポートします。プラグイン開発者は、これらのあらかじめ作成されたソースを使用して、多種多様なパラメータをフェッチできます。ジョブ・システムが、パラメータ・ソースを使用して1つ以上のパラメータをフェッチするように構成されている場合、ジョブ発行時にジョブに対してパラメータ・リストでパラメータを指定する必要はありません。ジョブ・システムが自動的にパラメータをフェッチして、ジョブのパラメータ・リストに追加します。

ジョブ・タイプは、オプションのparamInfoセクションを使用して、フェッチする必要があるパラメータの情報をXML仕様に埋め込むことができます。次の例に示すのは、a、bおよびcの3つのパラメータをフェッチするためにアプリケーション固有の表でSQL問合せを実行するジョブ・タイプの一部です。

<jobType version="1.0" name="OSCommand" >
<paramInfo>
<!-- Set of scalar params -->
<paramSource paramNames="a,b,c" sourceType="sql" overrideUser="true">
select name, value from name_value_pair_table where
name in ('a', 'b', 'c');
</paramSource>
</paramInfo>
.... description of job type follows ....
</jobType>

前述の例では、paramInfoセクションに次の要素が含まれます。

- paramSource: 各paramSourceタグは、1つ以上のパラメータをフェッチするために使用できるパラメータ・ソースを参照しています。

- paramNames: paramNames属性は、パラメータ・ソースがフェッチすると予期されるパラメータ名の、カンマ区切りの集合です。

- sourceType: sourceType属性は、パラメータをフェッチするために使用されるソースを示します(SQL、資格証明またはユーザーのいずれか)。

- overrideUser: overrideUser属性は、trueに設定されている場合、たとえジョブ発行時にユーザー(またはアプリケーション)がパラメータを指定した場合でも、パラメータの値が、常にこのパラメータ・フェッチ・メカニズムを使用してフェッチされることを示します。overrideUser属性のデフォルトはfalseで、パラメータがジョブ発行時にすでに指定されている場合、パラメータ・ソース・メカニズムが無効になることを示します。
フェッチ・メカニズムをより詳細に記述するパラメータ・ソースに追加のソース固有プロパティを追加できます。第8.8.1項「SQLParameterソースの理解」に、詳細が記載されています。

- evaluateOnRetry: evaluateOnRetry属性はオプションの属性で、すべてに適用できます。デフォルト設定は、資格証明を除くすべてに対してfalseです。資格証明では、設定された値は無視され、強制的にtrueとなります。これは、このジョブ・タイプの実行が失敗して再試行されるときに、パラメータ・ソースを再実行する必要があるかどうかを示します。

8.8.1 SQLParameterソースの理解

SQLパラメータ・ソースを使用することで、プラグイン開発者は、パラメータのセットをフェッチするSQL問合せまたはPL/SQLプロシージャを指定できます。

8.8.1.1 PL/SQLプロシージャを使用したスカラーおよびベクトル・パラメータのフェッチ

ジョブ・タイプのXML構文は、次のとおりです。

<paramSource sourceType="sql" paramNames="param1, param2, ...">
<sourceParam name="procName"   value="MyPackage.MyPLSQLProc"/>
<sourceParam name="procParams" value="%a%, %b%[1], ..."/>
</paramSource>

paramNamesで指定される値は、procNameで指定されているPL/SQLプロシージャによって戻されると予期されるパラメータの名前です。procParamsの値は、PL/SQLプロシージャに渡される値のリストを指定します。

PL/SQLプロシージャの定義

PL/SQLプロシージャの定義は、次のガイドラインを厳守する必要があります。

- PL/SQLプロシージャは、SYSMANスキーマからアクセスできる必要があります。

- PL/SQLプロシージャには次のシグネチャが必要です。

PROCEDURE MySQLProc(p_param_names     MGMT_JOB_VECTOR_PARAMS,
p_proc_params     MGMT_JOB_VECTOR_PARAMS,
p_param_list  OUT MGMT_JOB_PARAM_LIST)

paramNamesで指定されるパラメータのリストは、p_param_namesとしてプロシージャに渡されます。

procParamsで指定された値のカンマ区切りリストを使用することで、スカラー(文字列/VARCHAR2)値のリストをパラメータとしてプロシージャに渡すことができます。これらの値は、ジョブ・パラメータ参照が使用される場合にはそれを使用して値が置換され、XMLで指定された順序で配列にまとめられ、第2のパラメータ(p_proc_params)としてPL/SQLプロシージャに渡されます

第3のパラメータはOUTパラメータで、プロシージャがフェッチするパラメータのリストを含む必要があります。このOUTパラメータによって返されるパラメータの名前は、p_param_namesで指定されている名前と一致する必要があります。

注意:
このチェックは現在強制ではありませんが、p_param_listによって返されるパラメータの名前が、p_param_namesで渡されるパラメータ名のリストと一致しているか、そのサブセットであることを確認するよう強くお薦めします。

例

次のSQLパラメータ・ソースは、db_roleという名前の既存のパラメータに基づいて、db_role_suffixという名前のパラメータを作成します。元のパラメータのタイプ(スカラー/ベクトル)も維持するため、値を渡されるのでなく、内部の表のパラメータを参照します(db_roleは置換値としてでなくリテラルとして渡されます)。job_idとjob_execution_idの値は、置換されて渡されます。

<paramSource sourceType="sql" paramNames="db_role_suffix">
<sourceParam name="procName"   value="MGMT_JOB_FUNCTIONS.get_dbrole_
prefix"/>
<sourceParam name="procParams" value="%job_id%, %job_execution_id%, db_
role"/>
</paramSource>

PL/SQLプロシージャMGMT_JOB_FUNCTIONS.get_dbrole_prefix内で、p_proc_paramsリストには、索引1におけるjob_idと索引2におけるexecution_idに対応する値が含まれます。索引3の要素はリテラル・テキストdb_roleに対応します。

利用できるSQL Paramsourceプロシージャ

Enterprise Manager全域のジョブ・タイプで使用するために、次のPL/SQLプロシージャがジョブ・システム・チームによって用意されています。

- is_null
渡されたジョブ変数がnullであるかどうか確認します。存在しない変数も、nullとみなされます。渡された各変数について、渡された変数が存在しないかnullの場合、プロシージャは、スカラー値trueを持つ対応する変数を作成します。それ以外のすべての場合、スカラー値falseが設定されます。要素が0個のベクトルはnullでないと見なされます。

次に例を示します。

<paramSource sourceType="sql" paramNames="a_is_null, b_is_null, c_is_null">
<sourceParam name="procName"   value="MGMT_JOB_FUNCTIONS.is_null"/>
<sourceParam name="procParams" value="%job_id%, %job_execution_id%, a, b,
c"/>
</paramSource>

この例の場合、ジョブ変数a、bおよびcがnull値でないかチェックされ、それぞれ変数a_is_null、b_is_nullおよびc_is_nullに、trueかfalseの値が割り当てられます。

- add_dbrole_prefix
渡されるすべての変数について、値がnullまたはNormal(大文字と小文字は区別されません)でない場合、プロシージャにより文字列に接頭辞ASが付けられ、それ以外の場合はnullが戻されます。このため、変数の値がSYSDBAの場合、値はAS SYSDBAになりますが、値がNormalの場合、nullが返されます。渡された変数がベクトルに対応している場合、ベクトルの個々の要素に同じロジックが適用されます。これは、DB資格証明を使用してSQL*Plusセッションに接続する際に便利です。

例:

<paramSource sourceType="sql" paramNames="db_role_suffix1, db_role_
suffix2">
<sourceParam name="procName"   value="MGMT_JOB_FUNCTIONS.get_dbrole_
prefix"/>
<sourceParam name="procParams" value="%job_id%, %job_execution_id%, db_
role1, db_role2"/>
</paramSource>

ここで、変数db_role1およびdb_role2の値には必要に応じて接頭辞ASが付けられ、それぞれ変数db_role_suffix1とdb_role_suffix2に保存されます。

8.8.2 ユーザー・パラメータ・ソースについて

ジョブ・システムには、userという特別なパラメータ・ソースが用意されており、そのタイプのジョブが発行された場合にパラメータのセットを入力する必要があることを示します。パラメータのソースがuserと宣言され、required属性がtrueに設定されている場合、ジョブ・システムは、ソース内で指定されているすべてのパラメータが、ジョブ発行時に提供されたと評価します。

ユーザー・ソースはジョブの発行時またはジョブの実行時に評価できます。発行時に評価すると、必要なパラメータが含まれていない場合に例外がスローされます。実行時に評価すると、必要なパラメータが含まれていない場合に実行が失敗または停止します。

<paramInfo>
<!-- Indicate that parameters a, b and c are required params -->
<paramSource paramNames="a, b, c" required="true" sourceType="user" />
</paramInfo>

また、ユーザー・ソースを使用して、パラメータのペアがターゲット・パラメータであることを示すこともできます。例:

<paramInfo>
<!-- Indicate that parameters a, b, c, d, e, f are target params -->
<paramSource paramNames="a, b, c, d, e, f" sourceType="user" >
<sourceParam name="targetNameParams" value="a, b, c" />
<sourceParam name="targetTypeParams" value="d, e, f" />
</paramSource>
</paramInfo>

この例では、パラメータ(a、d)、(b、e)、(c、f)がターゲット情報を保持するパラメータであることを示しています。パラメータaはターゲット名、dは対応するターゲット・タイプをそれぞれ保持しています。パラメータbとe、cとfも同様です。ターゲット名を保持する各パラメータには、ターゲット・タイプを保持する対応するパラメータが必要です。これらのパラメータはスカラーまたはベクトルのいずれかです。

8.8.3 インライン・パラメータ・ソースについて

inlineパラメータ・ソースを使用すると、ジョブ・タイプは、他のパラメータに関するパラメータを定義できます。ジョブ・タイプの他の部分で再利用できるパラメータを構成するための便利なメカニズムです。次の例では、ジョブ実行IDに基づいてfilenameというパラメータが、ジョブ・タイプの他の部分で使用するために作成されています。

<jobType>
<paramInfo>
<!-- Indicate that value for parameter filename is provided inline -->
<paramSource paramNames="fileName" sourceType="inline" >
<sourceParam name="paramValues" value="%job_execution_id%.log" />
</paramSource>
</paramInfo>
.....
<stepset ID="main" type="serial">
<step command="putFile" ID="S1">
...
<param name="destFile">%fileName%</param>
...
</step>
</stepset>
</jobType>

次の例では、vparamというベクトル・パラメータが値v1、v2、v3およびv4のベクトルに設定されます。インライン・ソースを使用して一度に設定できるベクトル・パラメータは1つのみです。

<jobType>
<paramInfo>
<!-- Indicate that value for parameter vparam is provided inline -->
<paramSource paramNames="vparam" sourceType="inline" >
<sourceParam name="paramValues" value="v1,v2,v3,v4" />
<sourceParam name="vectorParams" value="vparam" />
</paramSource>
</paramInfo>
....

8.8.4 checkValueパラメータ・ソースの使用

checkValueパラメータ・ソースを使用すると、ジョブ・システムは、指定された一連のパラメータに一連の値が指定されているかチェックできます。パラメータに指定された値が含まれていない場合、ジョブ・システムによってジョブが終了または一時停止されます。

<paramInfo>
<!-- Check that the parameter halt has the value true. If not, suspend the job
-->
<paramSource paramNames="halt" sourceType="checkValue" >
sourceParam name="paramValues" value="true" />
<sourceParam name="action" value="suspend" />
</paramSource>
</paramInfo>

次の例では、ベクトル・パラメータvに値v1、v2、v3およびv4が含まれているかどうかがチェックされます。checkValueパラメータ・ソースで一度に指定できるベクトル・パラメータは1つのみです。ベクトル・パラメータにこれらの値が指定の順序で含まれていない場合、ジョブは終了します。

<paramInfo>
<!-- Check that the parameter halt has the value true. If not, suspend the job -->
<paramSource paramNames="v"  sourceType="checkValue" >
<sourceParam name="paramValues" value="v1,v2,v3,v4" />
<sourceParam name="action" value="abort" />
<sourceParam name="vectorParams" value="v" />
</paramSource>
</paramInfo>

8.8.5 プロパティ・パラメータ・ソースについて

propertiesパラメータ・ソースは、指定された一連のターゲットの個々のターゲットについて、名前の付いた一連のターゲット・プロパティをフェッチし、それぞれのプロパティ値セットをベクトル・パラメータに格納します。

次の例では、指定された一連のターゲット(dlsun966およびap952sun)に対するプロパティOracleHomeおよびOracleSIDを、ベクトル・パラメータohomesおよびosidsにそれぞれフェッチします。ohomesパラメータの最初のベクトル値には、dlsun966に対するOracleHomeプロパティが含まれ、2番目のベクトル値にはap952sunに対するOracleHomeプロパティが含まれることになります。OracleSIDプロパティについても同様です。

<paramInfo>
<!-- Fetch the OracleHome and OracleSID property into the vector params ohmes, osids -->
<paramSource paramNames="ohomes,osids" overrideUser="true" sourceType="properties">
<sourceParams>
<sourceParam name="propertyNames" value="OracleHome,OracleSID" />
<sourceParam name="targetNames" value="dlsun966,ap952sun" />
<sourceParam name="targetTypes" value="host,host" />
</sourceParams>
</paramSource>
</paramInfo>

資格証明ソースの場合と同様に、ターゲットの名前およびタイプのベクトル・パラメータ名を指定できます。

<paramInfo>
<!-- Fetch the OracleHome and OracleSID property into the vector params ohmes, osids -->
<paramSource paramNames="ohomes,osids" overrideUser="true" sourceType="properties">
<sourceParams>
<sourceParam name="propertyNames" value="OracleHome,OracleSID" />
<sourceParam name="targetNamesParam" value="job_target_names" />
<sourceParam name="targetTypes" value="job_target_types" />
</sourceParams>
</paramSource>
</paramInfo>

8.8.6 パラメータ・ソースとパラメータ置換の理解

パラメータ・ソースは指定された順序で適用されます。パラメータ置換(%param%形式)は、sourceParamタグの内部で使用できますが、パラメータ・ソースが評価される際に置換対象のパラメータが存在する必要があります。存在しない場合、ジョブ・システムによってパラメータの位置に空の文字列が代用されます。

8.8.7 パラメータ暗号化について

ジョブ・システムには、指定されたパラメータを暗号化された形式で格納する機能があります。パスワードなどの機密情報を含むパラメータは、暗号化された形式で格納する必要があります。パラメータ・ソースでencrypted属性をtrueに設定すると、パラメータ・ソースを介してフェッチされたパラメータが暗号化されることをジョブ・タイプで示すことができます。

例:

<paramInfo>
<!-- Fetch params from the credentials table into vector parameters; store them encrypted -->
<paramSource paramNames="vec_usernames,vec_passwords" overrideUser="true"
sourceType="credentials" encrypted="true">
<sourceParams>
<sourceParam name="credentialType" value="patch" />
<sourceParam name="credentialColumns" value="node_username,node_password" />
<sourceParam name="targetNames" value="dlsun966,ap952sun" />
<sourceParam name="targetTypes" value="host,host" />
<sourceParam name="credentialScope" value="system" />
</sourceParams>
</paramSource>
</paramInfo>

また、ユーザーが提供したパラメータが暗号化された形式で格納されるようにジョブ・タイプで指定することもできます。

<paramInfo>
<!-- Indicate that parameters a, b and c are required params -->
<paramSource paramNames="a, b, c" required="true" sourceType="user" encrypted="true" />
</paramInfo>

8.9 資格証明情報の指定

Oracle Enterprise 11gリリース1までは、資格証明は、2つのパラメータ(ユーザー名とパスワード)で表されていました。ジョブ・タイプ所有者は、資格証明パラメータ・ソースによりこれらのパラメータを抽出するか、それらをユーザー・パラメータとして定義して、パラメータを必要とする様々なステップに渡すことができます。

資格証明セット、資格証明タイプ、およびそれらの列についてのこの必要な知識と、様々な認証メカニズムについての知識は、Enterprise Managerがサポートしている可能性のある認証スキームのプールに関わらず、ジョブ・タイプによってサポートされている必要があります。これにより、ジョブ・タイプ所有者は、ジョブ・タイプだけをモデル化して、操作の実行に必要な認証を無視する自由を制限されました。これらの問題を克服し、ジョブ・タイプの統合メカニズムを進化させて資格証明を指定するために、資格証明の使用と呼ばれる新しい概念が導入されました。

8.9.1 資格証明使用について

資格証明使用とは、操作を実行するために資格証明が必要になるポイントです。資格証明の送信は、これらの使用に対してのみ行ってください。

8.9.2 資格証明バインディングの概要

資格証明バインディングとは、ステップによる資格証明の参照です。各ステップは、実行する必要がある資格証明使用をメタデータで公開しています。このため、各資格証明バインディングは、メタデータの資格証明使用セクションで定義されている参照資格証明使用を参照します。ステップが独自の資格証明使用を要求する場合、バインディングは、特定の自動化エンティティ(ジョブまたはDPインスタンス)においてどの資格証明送信をそのステップに渡すべきかの解決に役立ちます。

以前のリリースでは、ジョブ・タイプは、資格証明パラメータ・ソースを使用してジョブに渡すユーザー名とパスワードを資格証明(JobCredRecord)から抽出しており、それらはジョブ・タイプ全体からパラメータとして利用できました。この動作はサポート対象外で非推奨となり、新しい資格証明使用のしくみが導入されました。

次のジョブ・タイプ例は、ジョブ・タイプにおける資格証明宣言の使用を示しています。

<jobType version="1.0" name="OSCommandNG"
singleTarget="true" targetTypes="all"
defaultTargetType="host" editable="true"
restartable="true" suspendable="true" >
<credentials>
<credential usage=”hostCreds” authTargetType=”host”
defaultCredentialSet=”HostCredsNormal”/>
</credentials>
<paramInfo>
<paramSource sourceType="user" paramNames="command"
required="true" evaluateAtSubmission="true" />
<paramSource sourceType="inline"
paramNames="TargetName,TargetType"
overrideUser="true"
evaluateAtSubmission="true">
<sourceParam name="paramValues"
value="%job_target_names%[1],
%job_target_types%[1]" />
</paramSource>
<paramSource sourceType="properties"
overrideUser="true"
evaluateAtSubmission="false" >
<sourceParam name="targetNamesParam"
value="job_target_names" />
<sourceParam name="targetTypesParam"
value="job_target_types" />
</paramSource>
<paramSource sourceType="substValues"
paramNames="host_command,host_args,os_script"
overrideUser="true" evaluateAtSubmission="false">
<sourceParam name="sourceParams"
value="command,args,os_script" />
</paramSource>
</paramInfo>
<stepset ID="main" type="serial" >
<step ID="Command" command="sampleRemoteOp">
<credList>
<cred usage=”OS_CRED” reference=”hostCreds”/>
</credList>
<paramList>
<param name="remoteCommand">%host_command%</param>
<param name="args">%host_args%</param>
<param name="input"><![CDATA[%os_script%]]></param>
<param name="largeInputParam">large_os_script</param>
<param name="substituteLargeParam">true</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="executeSynchronous">false</param>
</paramList>
</step>
</stepset>
</jobType>

最初の3行の部分は、ジョブ・タイプにおける資格証明使用を宣言しています。次の数行の部分は、資格証明使用をそのステップのものにバインドしています。ジョブ・システムがユーザー名とパスワードを抽出できないため、それらがパラメータとして公開されることはありません。

8.9.3 XSD要素 - 資格証明使用と資格証明バインディング

XSD要素の資格証明使用と資格証明バインディングについて、表8-3と表8-4で説明します。

表8-3 資格証明使用(credential)

属性

必須(Y/N)

説明

usage

Y

資格証明がジョブ・タイプで参照されるときの名前。すべての資格証明送信は、この名前で行われます。

authTargetType

Y

あらゆる操作で、認証の実行対象となるターゲット・タイプ。たとえば、あらゆるターゲットを対象とする「ls」の実行は、ホストに対する認証を意味します。

defaultCredentialSet

Y

資格証明使用が必須なのに送信が検出されない場合に、資格証明として取得される資格証明セットの名前。

credentialTypes

N

資格証明の指定にのみ使用できる資格証明タイプの名前。これは、資格証明セレクタUIコンポーネントでの資格証明のフィルタリングを容易にするためのものです。

displayName

N

資格証明セレクタUIで表示するための名前。

description

N

資格証明セレクタUIで表示するための説明。

表8-4 資格証明バインディング(cred)

属性/サブ要素

必須(Y/N)

説明

usage

Y

ステップによって認識される資格証明使用。

reference

Y

ジョブ・タイプまたはDPメタデータの宣言に存在し、参照される資格証明使用。

注意:
資格証明バインディング要素は、ジョブ・タイプXMLのステップまたはジョブ要素内部でのみ使用できます。

8.10 セキュリティ情報の指定

通常、ジョブ・タイプは、privilegedとみなされるアクションを実行する傾向があります。たとえば、本番データベースに対するパッチ適用や、Oracleホーム・ディレクトリまたはAPPL_TOPディレクトリにインストールされているソフトウェアの変更です。そのようなジョブ・タイプは、それらのアクションを実行する適切なレベルの権限を持っているEnterprise Managerユーザーによって、発行される必要があります。

ジョブ・システムにはsecurityInfoというセクションが用意されており、ジョブ・タイプの作成者はそれを使用して、このタイプのジョブの発行者が持つ必要のある最小限のレベルの権限(systemおよびtarget)を指定することができます。

securityInfoセクションにより、ジョブ・タイプの作成者は、ジョブ・タイプ自身においてジョブ発行に関連付けられているセキュリティ要件をカプセル化することができます。セキュリティを強制的に適用するために追加のコードを記述する必要はありません。また、ジョブ・タイプ作成者によって定義された権限セットがない限り、Enterprise Managerユーザーが特定のタイプのジョブを直接発行する(ジョブ・システムAPIを使用して、アプリケーションを回避する)ことができないようにすることができます。

例1

次の例は、典型的なsecurityInfoセクションを示しています。データベースをクローニングするジョブ・タイプを作成していると想定します。このジョブ・タイプは、2つのターゲット(ソース・データベースと、宛先データベースが作成される宛先ノード)を必要とします。このジョブ・タイプでは、クローン・ジョブを発行するユーザーは、ソース(データベース)上にCLONE FROM権限を、宛先(ノード)上にMAINTAIN権限を持っている必要があります。

さらに、システムに新しいターゲットを導入するCREATE TARGETシステム権限を持つ必要があります。ジョブ・タイプが、ターゲット・リストの第1ターゲットがソース、ターゲット・リストの第2ターゲットが宛先であるように作成されていると想定すると、そのようなジョブ・タイプのセキュリティ要件は、次のように処理できます。

<jobType>
<securityInfo>
<privilege name="CREATE TARGET" type="system" />
<privilege name="CLONE FROM" type="target" evaluateAtSubmission="false" >
<target name="%job_target_names%[1]" type="%job_target_types%[1]" />
</privilege>
<privilege name="MAINTAIN" type="target" evaluateAtSubmission="false">
<target name="%job_target_names%[2]" type="%job_target_types%[2]" />
</privilege>
</securityInfo>
<!-- An optional <paramInfo> section will follow here, followed by the stepset
definition of the job
-->
<paramInfo>
....
</paramInfo>
<stepset ...>
</stepset>
</jobType>

securityInfoセクションは一連の<privilege>タグで構成されます。それぞれの権限はsystem権限またはtarget権限で、タグのタイプ属性によって示されます。権限がtarget権限の場合、権限がアタッチされるターゲットを明示的に列挙するか、target_names_paramとtarget_types_param属性を次の例で示すように使用する必要があります。通常の%param%表記を使用して、ジョブ・パラメータおよびターゲットのプレースホルダを示すことができます。

デフォルトでは、すべてのsubmit-timeパラメータ・ソースが評価された後、securityInfoセクションのすべての<privilege>ディレクティブがジョブ発行時に評価されます。ユーザーがsecurityInfoセクションで指定された権限のいずれも持っていない場合、ジョブ・システムは例外を送出します。

Execution-timeパラメータ・ソースはジョブ送信時に評価されないため、未評価の可能性があるジョブ・パラメータを使用しないように注意する必要があります。evaluateAtSubmissionパラメータをfalseに設定することによって、権限ディレクティブをジョブ実行時に評価するように、ジョブ・システムに指示することもできます。

そのようにする唯一のケースは、ジョブが動作するターゲットのセットが、ジョブ実行時まで正確にわからない場合です(たとえば、execution-timeパラメータ・ソースを使用して計算される場合)。execution-time権限ディレクティブは、すべてのexecution-timeパラメータ・ソースが評価された後で評価されます。

例2

各ターゲット上でMODIFY権限を必要とするジョブ・タイプを作成しているが、ターゲットの正確な数が作成時点で不明だとします。target_names_param属性とtarget_types_param属性を、この目的のために使用できます。これらは、ターゲット名とそれに対応するターゲット・タイプをジョブ・システムが取得する際の取得先となるベクトル・パラメータを指定します。これらは任意のベクトル・パラメータです。この例は、ジョブ・ターゲット・リスト(job_target_namesとjob_target_types)を使用しています。

<securityInfo>
<privilege name="MODIFY" type="target" target_names_param="job_target_names"
target_types_param="job_target_types" />
</securityInfo>

8.11 ロック情報の指定

多くの場合、ジョブの実行では、リソースを取得する必要があります。たとえば、パッチをデータベースに適用するジョブは、パッチが適用される間、データベース上で他のジョブ(システム上で他のユーザーが発行したジョブ)が実行されるのを確実に防止するメカニズムを必要とする場合があります。言い換えると、データベース・ターゲットのロックを取得して、同じロックを取得しようとする他のジョブがブロックされる(または終了する)ようにする必要があります。これにより、いったん開始されたパッチ・ジョブは、中断されずにその作業を実行できます。

場合により、複数のレベルにロックが存在することがあります。たとえば、データベースのホット・バックアップでは、他のホット・バックアップの進行は許容されますが(それによりデータベースが停止しないため)、コールド・バックアップやデータベース停止ジョブの進行は許容されません(それによりデータベースが停止し、バックアップが失敗するため)。

ジョブの実行は、ターゲット上のリソースを確保するためにターゲットのロックを取得することを意味する場合があります。ロックとは、ターゲットの一部分の機能を確保するためのプロキシです。ある実行がロックを取得すると、ターゲット上で同じロックを取得しようとする他の実行はブロックされます。ロックは名前とタイプで識別され、次のタイプのいずれかです。

- グローバル:ターゲットに関連付けられていないロックです。グローバル・ロックを保持する実行は、同じグローバル・ロック(同じ名前を持つロックなど)を取得しようとする他の実行をブロックします。

- 排他ターゲット:ターゲットに関連付けられているロックです。ターゲットの排他ロックを保持する実行は、ターゲットの名前付きロックを取得しようとする実行およびターゲットの排他ロックを取得しようとする実行をブロックします。ターゲット排他ロックには名前はなく、排他ロックはターゲットごとに1つしかありません。

- 名前付きターゲット:ターゲットの名前付きロックは、ターゲットの特定の機能のみのロックを取得するのに似ています。名前付きロックにはユーザー指定の名前が付きます。名前付きロックを保持する実行は、同じ名前付きロックを取得しようとする他の実行、およびターゲットの排他ロックを取得しようとする実行をブロックします。

例

ジョブ・タイプが取得する必要があるロックは、ジョブ・タイプのlockInfoセクションを指定して取得できます。この例は、ジョブが取得するロック、ロックのタイプ、ロックの取得対象となるターゲットを示しています。

<lockInfo action="suspend">
<lock type="targetExclusive">
<targetList>
<target name="%backup_db%" type="oracle_database" />
</targetList>
</lock>
<lock type="targetNamed" name="LOCK1" >
<targetList>
<target name="%backup_db%" type="oracle_database" />
<target name="%job_target_names%[1]" type="%job_target_types%[1]" />
<target name="%job_target_names%[2]" type="%job_target_types%[2]" />
</targetList>
</lock>
<lock type="global" name="GLOBALLOCK1" />
</lockInfo>

この例は、データベース・ターゲット上でターゲット独占ロックを取得し、名前はジョブ・パラメータbackup_dbによって指定されるジョブ・タイプを示しています。また、3つのターゲット(ジョブ・パラメータbackup_dbに名前が格納されているデータベース、およびジョブのターゲット・リストの最初の2つのターゲット)上で、LOCK1という名前の名前付きターゲット・ロックも取得します。最後に、GLOBALLOCK1という名前のグローバル・ロックを取得します。action属性は、そのセクション内でいかなるロックも取得できない場合に(なんらかの他の実行がロックを持っているため)、実行に対してジョブ・システムが行う必要のある処置を指定します。可能な値はsuspend(すべてのロックが解放され、実行の状態がSuspended:Lockに変更されます)とabort(実行は終了します)です。実行とロックについては、次の点を指摘できます。

- 実行によってロックの取得が試行されるのは、実行の開始時のみです(ただし、この設定はネストされたジョブを使用して上書きできます)。

- 1つの実行が複数のロックを取得できます。ロックは常に、指定された順序で取得されます。そのため、間違った順序でロックを取得しようとすると、複数の実行の間でデッドロックが発生する可能性があります。

- ターゲット・ロックは常に、<targetList>タグに指定された順序で、ターゲット上で取得されます。

- ターゲット・リスト内のターゲットがnullまたは存在しない場合、実行は終了します。

- すでに保持しているロックを取得しようとした場合、実行は成功します。

- ロックを取得できない場合(通常、他の実行によってそのロックが保持されているため)、その実行は一時停止するか終了するかを選択できます。一時停止を選択した場合、すでに取得したすべてのロックが解放され、実行が一時停止中/ロックの状態になります。

- 実行が終わると(完了、失敗、または停止)、実行が保持していたすべてのロックが解放されます。解放されたロックそれぞれについて、待機中の実行が複数ある場合がありますが、それらは時刻でソートされ、最も古いリクエストがロックを取得します。

lockInfoセクションを持つ複数のジョブが相互にネストされている場合、ネストされたジョブのロックは、実行の開始時ではなく、ネストされたジョブが最初に実行されたときに取得されます。ロックを使用できない場合、親実行のいくつかのステップがすでに実行されている可能性はありますが、その後で親実行は一時停止または終了します。

lockInfo例1

この例では、HOTBACKUPおよびCOLDBACKUPと呼ばれる2つのジョブ・タイプが、それぞれホット・バックアップとコールド・バックアップをデータベース上で実行します。相違点は、コールド・バックアップはデータベースを停止させるが、ホット・バックアップは稼働中のままにするという点です。ホット・バックアップだけは一度に1つしか実行できないため、他のホット・バックアップやコールド・バックアップを排除する必要があります。

コールド・バックアップが実行されている場合、他のジョブ・タイプは実行できません(実行の一部としてデータベースが停止されるため)。SQLANALYZEと呼ばれる第3のジョブ・タイプはスケジュール済メンテナンス・アクティビティを実行し、その結果としてデータベース・チューニング・パラメータが変更されます(2つのSQLANALYZEジョブを同時に実行することはできません)。

表8-5 に、ジョブ・タイプ間の非互換性を示します。「X」は、ジョブ・タイプに互換性がないことを示します。「OK」は、ジョブ・タイプに互換性があることを示します。

表8-5 ジョブ・タイプの非互換性

ジョブ・タイプ

HOTBACKUP

COLDBACKUP

SQLANALYZE

HOTBACKUP

X

X

OK

COLDBACKUP

X

X

X

SQLANALYZE

OK

X

X

次のコードの例に、3つのジョブ・タイプのlockInfoセクションを示します。コールド・バックアップでは、データベースの排他ターゲット・ロックが取得されます。ホット・バックアップ・ジョブでは、排他ロックは取得されず、名前付きロックBACKUP_LOCKのみが取得されます。同様に、SQLANALYZEジョブでは、SQLANALYZE_LOCKという名前付きターゲット・ロックが取得されます。

ジョブの対象となるデータベースが、ジョブのターゲット・リストの最初のターゲットであると仮定すると、2つのジョブのlockセクションは、次のようになります。

<jobType name="SQLANALYZE">
<lockInfo action="abort">
<lock type="targetNamed" name="SQLANALYZE_LOCK" >
<targetList>
<target name="%job_target_names%[1]" type="%job_target_names%[1]" />
</targetList>
</lock>
</lockInfo>
........ Rest of the job type follows
</jobType>

名前付きターゲット・ロックはすべての排他ターゲット・ロックをブロックするため、ホット・バックアップを実行するとコールド・バックアップが一時停止しますが、(異なる名前付きロックを取得しようとするため)分析ジョブは一時停止しません。SQL分析ジョブを実行すると、他のSQL分析ジョブが終了し、コールド・バックアップが一時停止しますが、ホット・バックアップは一時停止しません。コールド・バックアップを実行すると、ホット・バックアップが一時停止し、SQL分析ジョブが終了します。

lockInfo例2

PATCHCHECKと呼ばれるジョブ・タイプは、パッチ・ステージング領域を定期的にチェックし、新しくステージングされたパッチに関する情報を管理リポジトリにダウンロードします。そのようなジョブは2つ同時に実行できませんが、ジョブはいかなるターゲットにも関連付けられていません。解決策は、ジョブ・タイプがグローバル・ロックを取得することです。

<jobType name="PATCHCHECK">
<lockInfo>
<lock type="global" name="PATCHCHECK_LOCK" />
</lockInfo>
........ Rest of the job type follows
</jobType>

lockInfo例3

内部にSQLANALYZEタイプをネストするジョブ・タイプを次の例に示します。ネストされたジョブは、最初のステップ(S1)の実行後に実行されます。

<jobType name="COMPOSITEJOB">
<stepset ID="main" type="serial">
<step ID="S1" ...>
....
</step>
<job name="nestedsql" type="SQLANALYZE">
....
</job>
</stepset>
</jobType>

この例の場合、ネストされたジョブは(SQLANALYZEにlockInfoセクションが含まれるため)実行時にロックを取得しようとします。その時点で他の実行がロックを保持している場合、ネストされたジョブは終了し(lockInfoの指定どおり)、親ジョブも終了します。

8.12 ジョブまたはステップの一時停止

一時停止は、ジョブのステップがスケジュールおよび実行の対象として考慮されないことを示す特別な状態です。suspend_job PL/SQL APIを介して、実行中のジョブのステップによってジョブが一時停止することもあります。この場合は現在実行中のステップおよびジョブ自体がともに一時停止します。

ジョブの一時停止とは、その時点でスケジュール済の状態にあるジョブのすべてのステップが一時停止とマークされ、その後スケジュールまたは実行されないことを意味します。その時点で実行中のステップ(たとえばパラレル・ステップセット)はすべて実行し続けます。ただし、現在実行中のすべてのステップが完了しても、ジョブの次のステップはスケジュールされません。かわりに、一時停止の状態にされます。ジョブが送信時に一時停止された場合、このことはスケジュールされていたジョブの最初のステップにも当てはまります。

一時停止されたジョブは、restart_job() PL/SQL APIをコールすることによって、いつでも再起動できます。ただし、シリアライズ(ロッキング)ルールのために一時停止されているジョブは、手動では再起動できません。そのようなジョブは、そのジョブ・タイプのその時点で実行中のジョブが完了すると、ジョブ・システムにより自動的に再起動されます。ジョブを再起動すると、一時停止されていたすべてのステップの状態が、スケジュール済に実際に変更され、ジョブ実行は通常どおり進行します。

8.13 ジョブの再起動

ジョブが一時停止、失敗、または終了した場合、任意のステップ(通常は、失敗または終了したステップを含むステップセット)から、再起動することができます。失敗または終了したジョブについて、再スケジュールされるステップは、ジョブの再起動が開始されたステップによって異なります。

8.13.1 再起動および再発行

ジョブのステップを再発行するとは、ステップの元の実行が完了したか失敗したかに関係なく実行することを意味します。ステップセットが再発行された場合は、ステップセットの最初のステップ、ステップセットまたはジョブが再帰的に再発行されます。したがって、ジョブが再発行された場合は、初期ステップセットが再帰的に再発行されてジョブ全体が再実行されます。使用されるパラメータおよびターゲットは、ジョブが最初に発行されたときと同じものです。ジョブは、指定された一連のパラメータおよびターゲットを使用して、初回の発行時のように実行されます。また、mgmt_jobsパッケージのresubmit_job APIを使用してジョブを再発行できます。ジョブの再発行は、前回までの実行が正常に行われた場合でも可能です。

通常、ジョブの再起動は、最後に失敗したステップからジョブの実行を再開することを意味します(ただし、ジョブ・タイプはステップ、ステップセットまたはジョブのrestartMode属性を使用してこの動作を制御できます)。通常、失敗したジョブの実行の中で成功したステップは、再実行されません。

失敗または終了したジョブを再起動するには、mgmt_jobsパッケージのrestart_job APIをコールします。正常に完了したジョブは再起動できません。

8.13.2 デフォルトの再起動動作

ジョブを再起動すると、再起動実行と呼ばれる新しい実行が作成されます。元の、失敗したジョブ実行は、ソース実行と呼ばれます。すべてのパラメータおよびターゲットがソース実行から再起動実行へコピーされます。元のジョブがパラメータ・ソースの失敗によって終了したのではないかぎり、パラメータ・ソースは再評価されません。

シリアルまたは反復ステップセットを再起動するために、ジョブ・システムは、まずシリアル・ステップセットのステータスを調べます。シリアル・ステップセットのステータスが「完了」の場合、その構成ステップのすべての入力内容が、ソース実行から再起動実行にコピーし直されます。ステップセットのステータスが「失敗」か「中断」の場合、ジョブ・システムは、ステップセットの最初のステップから包括的に開始されます。

以前にソース実行で正常に完了したステップは、再起動実行にコピーされます。以前に失敗または中断したステップは、再起動実行で、実行を再スケジュールされます。このステップの実行が終了すると、ジョブ・システムは実行する次のステップを決定します。これらは、successOf依存関係またはfailureOf依存関係の場合も、単に現在のステップの後に実行されるステップ/ステップセット/ジョブの場合もあります。

ソース実行でその後のステップが正常に完了した場合、実行が再スケジュールされることはなく、ジョブ・システムはそのステップのソース実行ステータスを再起動実行にコピーします。ステップセットの最後に達するまで、そのように進行します。続いて、新しい実行に基づいてステップセットのステータスが再計算されます。

パラレル・ステップセットを再起動するために、ジョブ・システムは、まずパラレル・ステップセットのステータスを調べます。ステップセットのステータスが「完了」の場合、その構成ステップのすべての入力内容が、ソース実行から再起動実行にコピーし直されます。ステップセットのステータスが「失敗」か「中断」の場合、ジョブ・システムは、ソースからの再起動実行に、ステップのうちすべての成功したステップをコピーし直します。並行して、ソース実行で失敗または終了したすべてのステップが再スケジュールされます。これらのステップの実行が終わると、ステップセットのステータスが再計算されます。

ネストされたジョブを再起動する場合は、ネストされたジョブの最初(外側)のステップセットに、再起動アルゴリズムが再帰的に適用されます。

前の段落の内容で、エンティティの1つがステップセットまたはネストされたジョブの場合は、再起動のメカニズムがステップセットまたはジョブに再帰的に適用されます。ステップのエントリが再起動実行にコピーされる際、子実行エントリは親実行と同じ出力キャラクタ・ラージ・オブジェクト(CLOB)エントリを指定します。

8.13.3 restartModeディレクティブの使用

ジョブ・タイプは、restartMode属性を使用することで、その中の各ステップ、ステップセットまたはジョブの再起動動作に影響を与える場合があります。この属性は、failure(デフォルト)またはalwaysに設定できます。

- failureに設定した場合、前項で説明した包括的なコピー処理が発生すると、ソース実行で成功したステップ、ステップセットまたはジョブは、再実行されずにコピーされます。ソース実行で失敗または終了した場合は、最後の障害の場所で再帰的に再起動されます。

- あるステップでrestartMode属性がalwaysに設定されている場合、ソース実行でそれが成功したか失敗したかに関係なく、そのステップは再起動時に常に再実行されます。この属性は、再起動の際にジョブの特定のステップを常に再実行する必要がある場合(たとえば、データベースをバックアップする前にデータベースを停止させるステップ)に使用すると便利です。

ステップセットまたはネストされたジョブで、restartMode属性がalwaysに設定されている場合、ステップセットまたはネストされたジョブの中のステップはすべて、ソース実行で正常に完了した場合でも、再起動されます。それがfailureに設定されている場合、ソース実行でのステップセットまたはネストされたジョブのステータスが「失敗」か「中断」のときのみ、再起動が試みられます。

ステップセットまたはネストされたジョブに含まれる個々のステップのrestartModeはalwaysに設定されている場合があり、そのようなステップは常に再実行されます。

再起動の例

次の項では、ステップセットの再起動に関連する一連のシナリオを扱います。

例1

次のような一連のステップを伴うシリアル・ステップセットがあるとします。

<jobtype ...>
<stepset ID="main" type="serial" >
<step ID="S1" ...>
...
</step>
<step ID="S2" ...>
...
</step>
<step ID="S3" failureOf="S2"...>
...
</step>
<step ID="S4" successOf="S2"...>
...
</step>
</stepset>
</jobtype>

このステップセットについて、ソース実行でステップS1が正常に実行され、ステップS2およびS3(S2の失敗依存)が失敗したと仮定します。

ジョブが再起動されると、ステップS1は(ソース実行で正常に実行されたため)再実行されずにソース実行から再起動実行へコピーされます。ソース実行で失敗したステップS2は、再スケジュールされて実行されます。

S2が正常に実行された場合は、その成功依存であり、ソース実行で実行されていないS4がスケジュールされて実行されます。このステップセット(およびジョブ)のステータスはS4のステータスになります。

S2が失敗した場合は、その失敗依存であるS3が(ソース実行で失敗したため)再スケジュールされて実行され、ステップセット(およびジョブ)のステータスはS3のステータスになります。

ソース実行においてステップS1が成功し、S2が失敗し、S3(S2の失敗依存)が成功したと仮定します。また、結果としてステップセット(したがってジョブ実行)は成功したとします。この場合、ステップの1つが失敗しても実行は正常に完了したため、この実行を再起動することはできません。

最後に、ステップS1およびS2が成功し、S4(S2の成功依存)が失敗したと仮定します。この場合、S3はスケジュールされません。実行が再起動されると、ジョブ・システムによってソース実行から再起動実行へS1およびS2の実行がコピーされ、S4は再スケジュールされて実行されます。S4が成功するとジョブは成功します。

例2

次の例について考えます。

<jobtype ...>
<stepset ID="main" type="serial" stepsetStatus="S2" >
<step ID="S1" restartMode="always" ...>
...
</step>
<step ID="S2" ...>
...
</step>
<step ID="S3" ...>
...
</step>
</stepset>
</jobtype>

前の例で、ステップS1が完了し、S2が失敗したとします。S3は実行され(S2への依存関係がないため)、成功します。ただしステップセットmainのstepsetStatusがS2に設定されているため、ジョブは失敗します。

ジョブが再起動されると、S1のrestartModeがalwaysに設定されているため、S1は、最初のときも完了しましたが、再実行されます。

ステップS2は、ソース実行で失敗したため、再スケジュールされて実行されます。S2が実行された後、ステップS3の再実行はソース実行で正常に実行されたため、再スケジュールされません。再起動実行でS3の実行が必要であると考えている場合、そのrestartModeはalwaysに設定される必要があります。

前の例でS1およびS2が成功し、S3が失敗しても、ステップセットmainは成功します(S2によってステップセットのステータスが決まるため)。この場合、ジョブは成功するためジョブを再起動できません。

例3

次の例について考えます。

<jobtype ...>
<stepset ID="main" type="serial"  >
<stepset type="serial" ID="SS1" stepsetStatus="S1">
<step ID="S1" ...>
...
</step>
<stepset ID="S2" ...>
...
</step>
</stepset>
<stepset type="parallel" ID="PS1" successOf="S1" >
<step ID="P1" ...>
...
</step>
<step ID="P2" ...>
...
</step>
<step ID="P3" ...>
...
</step>
</stepset>
</stepset>
</jobtype>

この例では、ステップS1とS2が成功した(したがって、ステップセットSS1が正常に完了した)とします。その後、パラレル・ステップセットPS1がスケジュールされ、P1が完了したが、P2とP3が失敗したとします。その結果、ステップセットmain(およびジョブ)は失敗しました。

実行が再起動されると、ステップS1とS2(したがって、ステップセットSS1)は実行されず、コピーし直されます。パラレル・ステップセットPS1では、失敗した両方のステップ(P2とP3)が再スケジュールされ、実行されます。

ソース実行でS1が完了し、S2が失敗したとします。ステップセットSS1は、そのステップセットのステータスがS2ではなくS1によって決まる(stepsetStatusディレクティブによる)ため、やはり正常に完了しています。PS1がスケジュールされ、P1が失敗し、P2とP3が正常に実行されたとします。このジョブが再スケジュールされると、ステップS2は再実行されません(ステップセットSS1が正常に完了したため)。ステップP1は再スケジュールされず、実行もされません。

例4

例3のXMLを若干変更した場合について考えます。

<jobtype ...>
<stepset ID="main" type="serial"  >
<stepset type="serial" ID="SS1" stepsetStatus="S1" restartMode="always" >
<step ID="S1" ...>
...
</step>
<stepset ID="S2" ...>
...
</step>
</stepset>
<stepset type="parallel" ID="PS1" successOf="S1" >
<step ID="P1" ...>
...
</step>
<step ID="P2" ...>
...
</step>
<step ID="P3" ...>
...
</step>
</stepset>
</stepset>
</jobtype>

前の例で、S1とS2が成功した(したがって、ステップセットSS1が正常に完了した)とします。その後、パラレル・ステップセットPS1がスケジュールされ、P1が完了したが、P2とP3が失敗したとします。ジョブが再起動されると、ステップセットSS1全体が再起動されます(restartModeがalwaysに設定されているため)。これは、ステップS1とS2が連続してスケジュールされていて、実行されることを意味します。これでステップセットPS1が再起動され、restartModeが指定されていない(デフォルトで常にfailure)ため、失敗した箇所から再起動されます(この場合、失敗したステップP2とP3は再実行されますが、P1は再実行されません)。

8.14 「ジョブ・アクティビティ」および「ジョブ・ライブラリ」ページへのジョブ・タイプの追加

Enterprise Manager Cloud Consoleの「ジョブ・アクティビティ」または「ジョブ・ライブラリ」のいずれかのページから新規のジョブ・タイプにアクセスできるようにするには、次の特定のXMLタグ属性を変更する必要があります。

- 「ジョブ・アクティビティ」ページにジョブ・タイプを表示するには、以下の例に示すように、useDefaultCreateUIをtrueに設定します。

<displayInfo useDefaultCreateUI="true"/>

- 「ジョブ・ライブラリ」ページにジョブ・タイプを表示するには、useDefaultCreateUI属性を設定するだけでなく、編集可能属性jobtypeをtrueに設定する必要もあります。

<jobtype name="jobType1" editable="true">

useDefaultCreateUIがtrueで、editableがfalseの場合、ジョブ・タイプは「ジョブ・アクティビティ」ページにのみ表示され、「ジョブ・ライブラリ」ページには表示されません。つまり、ジョブ定義は編集できないということです。

8.14.1 「ジョブ・アクティビティ」ページへのジョブ・タイプの追加

図8-1に、useDefaultCreateUI属性をtrueに設定すると、ジョブを作成するユーザーは、「ジョブの作成」メニューから新しく追加されたジョブ・タイプを選択できることを示します。

図8-1 「ジョブ・アクティビティ」ページで使用できるジョブ・タイプ

ジョブ・タイプを「ジョブ・アクティビティ」ページから使用できるようにすると、ユーザーは新規に追加されたジョブ・タイプを使用してジョブを作成する際に、デフォルトの「ジョブの作成」ユーザー・インタフェースにもアクセスできます。

8.14.1.1 displayInfoタグの追加

次の例に示すように、displayInfoタグは、</stepset>タグの後、ジョブ定義ファイル末尾の</jobtype>タグの前にある、ジョブ定義ファイルの任意の箇所に追加できます。

<jobtype ...>
<stepset ID="main" type="serial"  >
<stepset type="serial" ID="SS1" stepsetStatus="S1">
<step ID="S1" ...>
...
</step>
<stepset ID="S2" ...>
...
</step>
</stepset>
<stepset type="parallel" ID="PS1" successOf="S1" >
<step ID="P1" ...>
...
</step>
<step ID="P2" ...>
...
</step>
<step ID="P3" ...>
...
</step>
</stepset>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobtype>

8.14.2 「ジョブ・ライブラリ」ページへのジョブ・タイプの追加

ジョブ・タイプを「ジョブ・ライブラリ」ページから利用できるようにするには、displayInfoタグを追加するだけでなく、jobTypeタグのeditable属性をtrueに設定する必要もあります。これにより、新しく追加されたジョブ・タイプが、「ライブラリ・ジョブの作成」メニューから選択できるオプションになります。

8.14.2.1 ジョブ・タイプを編集可能にする設定

次の例に示すように、jobtypeタグのeditable属性は、ジョブ定義ファイルの先頭に設定されます。

<jobtype name="jobType1" editable="true">
<stepset ID="main" type="serial"  >
<stepset type="serial" ID="SS1" stepsetStatus="S1">
<step ID="S1" ...>
...
</step>
<stepset ID="S2" ...>
...
</step>
</stepset>
<stepset type="parallel" ID="PS1" successOf="S1" >
<step ID="P1" ...>
...
</step>
<step ID="P2" ...>
...
</step>
<step ID="P3" ...>
...
</step>
</stepset>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobtype>

8.15 例: XMLでのジョブ・タイプの指定

次からの項では、XMLでジョブ・タイプを指定する例を提供します。

例1

この例では、4つのステップ、S1、S2、S3およびS4を定義するjobType1と呼ばれるジョブ・タイプを記述しています。それは、S1とS2を順次シリアルに実行します。ステップS2が成功した場合のみステップS3を実行し、S2が失敗した場合のみ、ステップS4を実行します。すべてのステップが反復サブセットの範囲内で実行され、そのためこれらのアクションが、タイプ・データベースのジョブ・ターゲット・リストにあるすべてのターゲット上で並列に実行されます。

注意:
これらの例では、パラメータ、%patchno%、%username%、%password%および%job_target_name%を示すためのパーセンテージ(%)記号を使用しています。
ジョブ・システムは、%patchno%ではなくpatchnoという名のジョブ・パラメータの値を置換します。同様に、%username%および%password%に対して、対応するパラメータの値を置換します。%job_target_name%および%job_target_type%は、ステップの現在の実行対象であるターゲットの名前を置換する、あらかじめ作成されたプレースホルダです。

ステップS2、S3およびS4は、remoteOpコマンドを使用してSQL*Plusスクリプトを管理エージェントで実行する方法を示しています。

次のいずれかが発生した場合、ジョブのステータスは失敗になります。

- S2が失敗しS4が失敗した

- S2が成功しS3が失敗した

S2は(S1が成功したか失敗したかに関係なく)S1の後に実行されるため、S1のステータスがジョブのステータスに影響することはありません。

例: 4つのステップを定義するジョブ・タイプ

<jobtype name="jobType1" editable="true" version="1.0">
<credentials>
<credential usage="defaultHostCred" authTargetType="host"
defaultCredentialSet="DBHostCreds"/>
<credential usage="defaultDBCred" authTargetType="oracle_database"
credentialTypes=”DBCreds”
defaultCredentialSet="DBCredsNormal"/>
</credentials>
<stepset ID="main" type="iterativeParallel" iterate_param="job_target_types" iterate_param_filter="oracle_database" >
<step ID="s1" command="remoteOp"">
<credList>
<cred usage="defaultHostCred" reference="defaultHostCred"/>
</credList>
<paramList>
<param name="remoteCommand">myprog</param>
<param name="targetName">%job_target_names%[%job_iterate_
index%]
</param>
<param name="targetType">%job_target_types%[%job_iterate_
index%]
</param>
<param name="args">-id=%patchno%</param>
<param name="successStatus">3</param>
<param name="failureStatus">73</param>
</paramList>
</step>
<step ID="s2" command="remoteOp"">
<credList>
<cred usage="defaultHostCred" reference="defaultHostCred"/>
</credList>
<paramList>
<param name="remoteCommand">myprog2</param>
<param name="targetName">%job_target_names%[%job_iterate_
index%]</param>
<param name="targetType">%job_target_types%[%job_iterate_
index%]</param>
<param name="args">-id=%patchno%</param>
<param name="successStatus">3</param>
<param name="failureStatus">73</param>
</paramList>
</step>
<step ID="s3" successOf="s2" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="defaultHostCred"/>
<cred usage="defaultDBCred" reference="defaultDBCred">
<map toParam="db_username" credColumn="DBUserName"/>
<map toParam="db_passwd" credColumn="DBPassword"/>
<map toParam="db_alias" credColumn="DBRole"/>
</cred>
</credList>
<paramList>
<param name="command">prog1</command>
<param name="script">
<![CDATA[
select * from MGMT_METRICS where target_name=%job_target_type%[%job_
iterate_param_index%]
]]>
</param>
<param name="args">%db_username%/%db_passwd%@%db_alias%</param>
<param name="targetName">%job_target_names%[%job_iterate_
index%]</param>
<param name="targetType">%job_target_types%[%job_iterate_
index%]</param>
<param name="successStatus">0</param>
<param name="failureStatus">1</param>
</paramList>
</step>
<step ID="s4" failureOf="s2" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="defaultHostCred"/>
</credList>
<paramList>
<param name="input">
<![CDATA[
This is standard input to the executed progeam. You can use placeholders
for parameters, such as
%job_target_name%[%job_iterate_param_index%]
]]>
</param>
<param name="remoteCommand">prog2</param>
<param name="targetName">%job_target_names%[%job_iterate_
index%]</param>
<param name="targetType">%job_target_types%[%job_iterate_

index%]</param>
<param name="args"></param>
<param name="successStatus">0</param>
<param name="failureStatus">1</param>
</paramList>
</step>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobtype>

例2

この例では、(パラレル・ステップセットss1内で)並列的に実行されるS1とS2の2つのステップ、およびS1とS2の両方が正常に実行された場合のみ実行される3つ目のステップS3を持つジョブ・タイプを記述しています。これを実現するために、同じくパラレル・ステップセットss1を含むシリアル・ステップセット(main)の中に、ステップS3が配置されています。このジョブ・タイプは複数ノード・ジョブです。この例では、コマンドへのパラメータ内で%job_target_name%[1]、%job_target_name%[2]が使用されています。反復ステップセット以外のステップセットでジョブ・ターゲットを参照できる唯一の方法は、(順序付けされた)ターゲット配列内でのそのジョブ・ターゲットの位置を使用することです。

%job_target_name%[1]は第1ターゲット、%job_target_name%[2]は第2ターゲット、以下同様になります。ほとんどの複数ノード・ジョブは、ターゲットの順序が同じであることを前提としています。たとえば、クローン・ジョブでは、ソース・データベースを最初のターゲット、およびターゲット・データベースを2番目のターゲットにすることが前提になる場合があります。このジョブは、次のいずれかが発生した場合に失敗します。

- パラレル・ステップセットSS1が失敗した(S1またはS2のどちらか、もしくは両方が失敗した)

- S1とS2の両方が成功したがS3が失敗した

ジョブ・タイプ自体がエージェントにバインドされていることを宣言しています。これは、(第1ターゲットまたは第2ターゲットに対応する)どちらかの管理エージェントが停止した場合に、ジョブが一時停止/エージェント停止の状態に設定されることを意味します。

例: 3番目のステップに続く2つのステップを定義するジョブ・タイプ

<jobtype name="jobType2" version="1.0" agentBound="true" >
<stepset ID="main" type="serial" editable="true">
<!-- All steps in this stepset ss1 execute in parallel -->
<credentials>
<credential usage=”hostCreds” authTargetType=”host”
defaultCredentialSet=”HostCredsNormal”/>
</credentials>
<stepset ID="ss1" type="parallel" >
<step ID="s1" command="remoteOp" >
<credList>
<cred usage="defaultHostCred" reference="defaultHostCred"/>
</credList>
<paramList>
<param name="remoteCommand">myprog</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="args">-id=%patchno%</param>
<param name="successStatus">3</param>
<param name="failureStatus">73</param>
</paramList>
</step>
<step ID="s2" command="remoteOp" >
<credList>
<cred usage=”defaultHostCred” reference=”hostCreds”/>
</credList>
<paramList>
<param name="remoteCommand">myprog</param>
<param name="targetName">%job_target_names%[2]</param>
<param name="targetType">%job_target_types%[2]</param>
<param name="args">-id=%patchno%</param>
<param name="successStatus">3</param>
<param name="failureStatus">73</param>
</paramList>
</step>
</stepset>
<!-- This step executes after stepset ss1 has executed, since it is inside the serial subset "main"
-->
<step ID="s3" successOf="ss1" command="remoteOp" >
...
</step>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobtype>

例3

この例では、タイプjobType1およびjobType2のジョブを順次実行する、jobType3と呼ばれる新しいジョブ・タイプを定義します。タイプjobType2のjob2ジョブは、第1のジョブが失敗する場合のみ実行されます。もう1つのジョブを実行するには、ターゲット・リストとparamリストを渡す必要があります。targetListタグにはallTargetsというパラメータがあり、trueに設定されると、ターゲット・リスト全体をこのジョブに渡します。allTargetsをfalseに設定すると、ジョブ・タイプは、そのターゲットのサブセットを他のジョブ・タイプに渡すかどうかを選択できます。

この例で、jobType3は、タイプjobType1のジョブのインスタンスにはそのターゲットすべてを渡しますが、タイプjobType2のジョブ・インスタンスには、そのターゲット・リストの最初の2つのターゲットのみを(その順序で)渡します。パラメータに関して似た機能を実行する、allParamsと呼ばれるもう1つの属性(paramListに関連付けられています)があります。allParamsがtrueに設定されている場合、親ジョブのすべてのパラメータが、ネストされたジョブに渡されます。通常、ネストされたジョブには、異なるパラメータのセット(異なる名前を持つ)があります。

allParamsがfalseに設定されている場合(デフォルト)、ジョブ・タイプはネストされたジョブ・パラメータを明示的に指名でき、それらは親ジョブの場合と同じ名前である必要はありません。この例で示すように、パラメータ置換を使用すると、親ジョブのパラメータを利用してネストされたジョブ・パラメータを表すことができます。

ステップやステップセットの場合と同様の方法で、ネストされたジョブ間の依存状態を表すことができます。タイプjobType3のジョブは、次のいずれかの場合に成功となります。

- ネストされたジョブjob1が成功する

- job1が失敗してjob2が成功する

例: 他のジョブ・タイプのジョブを実行するジョブ・タイプの定義

<jobType name="jobType3" editable="true" version="1.0">
<stepset ID="main" type="serial">
<job type="jobType1" ID="job1" >
<target_list allTargets="true" />
<paramList>
<param name="patchno">%patchno%</param>
</paramList>
</job>
<job type="jobType2" ID="job2" failureOf="job1" >
<targetList>
<target name="%job_target_names%[1]" type="%job_target_types%[1]" />
<target name="%job_target_names%[2]" type="%job_target_types%[2]" />
</targetList>
<paramList>
<param name="patchno">%patchno%</param>
</paramList>
</job>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobType>

例4

「ファイルに変数を生成するジョブ・タイプの定義」の例は、generateFileコマンドの使用方法を示しています。一連のスクリプトを実行しようとしていて、そのすべてで、実行時にのみわかるなんらかの環境変数を設定する共有ファイルをソースとする必要があるとします。これを実現する1つの方法は、一意の名前を持つファイル内で変数を生成することです。それ以降のすべてのスクリプトは、コマンド・ライン引数の1つとしてこのファイル名を渡され、それを読み取って、必要な環境変数またはシェル変数を設定します。

このジョブの最初のステップS1は、generateFileコマンドを使用して、app-home/execution-id.envというファイルを生成します。ジョブの実行IDは常に一意であるため、ファイル名も確実に一意になります。3つの環境変数、ENVVAR1、ENVVAR2およびENVVAR3が生成され、それぞれ、ジョブ・パラメータparam1、param2およびparam3の値に設定されます。これらのパラメータは、ジョブ発行時に、正しい値に設定される必要があります。

%job_execution_id%はジョブ・システムによって提供されるプレースホルダですが、%app-home%はジョブ発行時に明示的に指定する必要があるジョブ・パラメータです。

2番目のステップS2は、myscriptというスクリプトを実行します。このスクリプトの最初のコマンドライン引数は、生成されたファイル名です。このスクリプトは、必要な環境変数を設定する生成されたファイルをソースとする必要があり、その後、次のコードに示すようにその他のタスクを実行します。

#!/bin/ksh
ENVFILE=$1
# Execute the generated file, sets the required environment vars
. $ENVFILE
# I can now reference the variables set in the file doSomething $ENVVAR1 $ENVVAR2 $ENVVAR3...

次の例は、完全なジョブ・タイプ指定を示しています。ステップS3が、最初のステップS1によって作成されたファイルを削除します。putFileコマンドとgenerateFileコマンドを使用して管理エージェント上に一時ファイルを書き込む場合、処理の後でクリーンアップすることが重要です。この例では、クリーンアップは明示的に別のステップとして行われていますが、リモート・ホスト上で実行するスクリプトのいずれかによって実行することもできます。

また、securityInfoセクションでは、このジョブ・タイプのジョブを発行するユーザーが、ジョブの対象となる両方のターゲットのMAINTAIN権限を持つ必要があることが指定されています。

例: ファイルに変数を生成するジョブ・タイプの定義

<jobtype name="jobType4" editable="true" version="1.0">
<securityInfo>
<privilege name="MAINTAIN" type="target" evaluateAtSubmission="false">
<target name="%job_target_names%[1]" type="%job_target_types%[1]" />
<target name="%job_target_names%[2]" type="%job_target_types%[2]" />
</privilege>
</securityInfo>
<credentials>
<credential usage=”hostCreds” authTargetType=”host”
defaultCredentialSet=”HostCredsNormal”/>
</credentials>
<stepset ID="main" type="serial">
<step ID="s1" command="putFile" >
<paramList>
<param name=sourceType>inline</param>
<param name="destFile">%app-home%/%job_execution_id%.env</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name=contents">
<![CDATA[#!/bin/ksh
export ENVVAR1=%param1% export ENVVAR2=%param2% export ENVVAR3=%param3%
]]>
</param>
</paramList>
</step>
<step ID="s2" command="remoteOp" >
<credList>
<cred usage=”defaultHostCred” reference=”hostCreds”/>
</credList>
<paramList>
<param name="remoteCommand">myscript</param>
<param name="targetName">%job_target_names%[2]</param>
<param name="targetType">%job_target_types%[2]</param>
<param name="args">%app-home%/%job_execution_id%.env</param>
<param name="successStatus">3</param>
<param name="failureStatus">73</param>
</paramList>
</step>
<step ID="s3" command="remoteOp" >
<credList>
<cred usage=”defaultHostCred” reference=”hostCreds”/>
</credList>

<paramList>
<param name="remoteCommand">rm</param>
<param name="targetName">%job_target_names%[2]</param>
<param name="targetType">%job_target_types%[2]</param>
<param name="args">-f, %app-home%/%job_execution_id%.env</param>
<param name="successStatus">0</param>
</paramList>
</step>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobtype>

例5

次の例は、repSQLコマンドを使用して、管理リポジトリに対してSQL文および匿名PL/SQLブロックを実行する方法を示しています。このジョブ・タイプ指定は、最初のステップS1でSQL文をコールし、2番目のステップでPL/SQLプロシージャをコールします。特別なジョブ・システムのプレースホルダである変数%job_id%および%job_name%が使用されています。他のジョブ・パラメータも同様に回避できます。SQL問合せにバインド・パラメータが使用されていることにも注意してください。パラメータsqlinparam[n]を使用するとバインド・パラメータを指定できます。バインド・パラメータごとに、sqlinparam[n]形式の1つのパラメータが必要です。データベース・リソースを最大限に活用するために、できるかぎりバインド・パラメータを使用する必要があります。

例: SQL文およびPL/SQLプロシージャを実行するジョブ・タイプの定義

<jobtype name="repSQLJob" editable="true" version="1.0">
<stepset ID="main" type="serial">
<step ID="s1" command="repSQL" >
<paramList>
<param name="sql">update mytable set status='executed' where
name=?</param>
<param name="sqlinparam1">%job_name%</param>
</paramList>
</step>
<step ID="s2" command="repSQL" >
<paramList>
<param name="sql">begin mypackage.job_done(?,?,?); end;</param>
<param name="sqlinparam1">%job_id%</param>
<param name="sqlinparam2">3</param><param name="sqlinparam3">mgmt_rep</param>
</paramList>
</step>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</stepset>
</jobtype>

例6

この例は、スイッチ・ステップセットの使用例です。このジョブの主要なステップセットは、switchVarNameがstepTypeという名前のジョブ・パラメータである、スイッチ・ステップセットです。このパラメータが持つことができる値(switchCaseVal)はsimpleStep、parallel、およびOSJobで、最終的にそれぞれ、ステップSWITCHSIMPLESTEP、パラレル・ステップセットSWITCHPARALLELSTEP、またはネストされたジョブJ1を選択することになります。

<jobType version="1.0" name="SwitchSetJob" editable="true">
<stepset ID="main" type="switch" switchVarName="stepType" >
<credentials>
<credential usage=”hostCreds” authTargetType=”host”
defaultCredentialSet=”HostCredsNormal”/>
</credentials>

<step ID="SWITCHSIMPLESTEP" switchCaseVal="simpleStep" command="remoteOp">

<credList>
<cred usage=”defaultHostCred” reference=”hostCreds”/>
</credList><paramList>
<param name="remoteCommand">%command%</param>
<param name="args">%args%</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
</paramList>
</step>
<stepset ID="SWITCHPARALLELSTEP" type="parallel" switchCaseVal="parallelStep">
<step ID="P11" command="remoteOp" >
<credList>
<cred usage=”defaultHostCred” reference=”hostCreds”/>
</credList>
<paramList>
<param name="remoteCommand">%command%</param>
<param name="args">%args%</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
</paramList>
</step>
<step ID="P12" command="remoteOp" >
<credList>
<cred usage=”defaultHostCred” reference=”hostCreds”/>
</credList>
<paramList>
<param name="remoteCommand">%command%</param>
<param name="args">%args%</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
</paramList>
</step>
</stepset>
<job ID="J1" type="OSCommandSerial" switchCaseVal="OSJob" >
<paramList>
<param name="command">%command%</param>
<param name="args">%args%</param>
</paramList>
<targetList>
<target name="%job_target_names%[1]" type="%job_target_types%[1]" />
</targetList>
</job>
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobType>

例7

この例は、次のジョブ・タイプについて、第1ターゲットに対するCLONE FROM権限と第2ターゲットに対するMAINTAIN権限を持つユーザーのみがジョブを発行できるようにするための、<securityInfo>タグの使用方法を示したものです。

<jobType name="Clone" editable="true" version="1.0" >
<securityInfo>
<privilege name="CREATE TARGET" type="system" />
<privilege name="CLONE FROM" type="target" evaluateAtSubmission="false" >
<target name="%job_target_names%[1]" type="%job_target_types%[1]" />
</privilege>
<privilege name="MAINTAIN" type="target" evaluateAtSubmission="false">
<target name="%job_target_names%[2]" type="%job_target_types%[2]" />
</privilege>
</securityInfo>
<!-- An optional <paramInfo> section will follow here, followed by the stepset definition of the job
-->
<paramInfo>
....
</paramInfo>
<stepset ...>
.......
</stepset>
<displayInfo useDefaultCreateUI="true"/>
</jobType>

例8

次に、ジョブ・タイプ指定内のネストされたジョブに資格証明が渡されるシナリオの例を示します。

<jobType version="1.0" name="SampleJobType001" singleTarget="true" editable="true"
defaultTargetType="host" targetTypes="all">
<credentials>
<credential usage="osCreds" authTargetType="host"
defaultCredentialSet="HostCredsNormal" credentialTypes="HostCreds">
<displayName nlsid="LABEL_NAME">OS Credentials</displayName>
<description nlsid="LABEL_DESC">Please enter credentials.</description>
</credential>
</credentials>
<stepset ID="main" type="serial">
<step ID="Step" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="osCreds" />
</credList>
<paramList>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
<param name="remoteCommand">/bin/sleep</param>
<param name="args">1</param>
</paramList>
</step>
<job ID="Nested_Job" type="OSCommand">
<credList>
<cred usage="defaultHostCred" reference="osCreds" />
</credList>
<targetList allTargets="true" />
<paramList>
<param name="command">/bin/sleep</param>
<param name="args">1</param>
</paramList>
</job>
</stepset>
</jobType>

8.16 パフォーマンスの問題について

この項では、ジョブ・タイプを設計する場合に検討すべき問題を簡単に説明します。これらの問題は、ジョブ・タイプおよび全体的なジョブ・システムのパフォーマンスに影響を与える場合があります。

8.16.1 パラメータ・ソースの使用

パラメータ・ソースの使用については、次の問題が重要です。

- パラメータ・ソースは、管理リポジトリや資格証明表など、既知のソースから必要なパラメータを取得する場合に便利です。パラメータ・ソースは、どこかに格納されている情報をフェッチする、クイック問合せのみに使用する必要があります。

- 一般的に、ジョブの実行時に評価されるパラメータ・ソースは、ジョブ・ディスパッチャのスループットに影響するため、慎重に使用する必要があります。実行時のパラメータのフェッチを避けられない場合もありますが、実行時または発行時のどちらにパラメータがフェッチされても構わない場合は、evaluateAtSubmissionをfalseに設定してください。

- SQL問合せを実行してパラメータを取得する場合(SQLパラメータ・ソースを使用)は、通常のパフォーマンス向上ガイドラインが適用されます。これには、必要に応じて索引のみを使用し、大きな表の結合を避けることが含まれます。

8.17 Enterprise Managerへのジョブ・タイプの追加

新しいジョブ・タイプをメタデータ・プラグインとともにパッケージ化するには、次の実装ガイドラインを厳守する必要があります。

メタデータ・プラグインでパッケージ化される新規ジョブ・タイプには2つの新規ファイルがあります。

- ジョブ・タイプ定義XMLファイル: プラグイン・デプロイメント時に、新規ジョブ・タイプを定義するためにジョブ・システムで使用されます。各ジョブ・タイプにつき、1つのXMLファイルがあります。

- ジョブ・タイプ・スクリプト・ファイル: プラグイン・デプロイメント時に、選択された管理エージェントにインストールされます。単一のスクリプトが異なるジョブの間で共有される場合があります。

次の2つのプロパティを、ジョブ・タイプ定義XMLファイルの先頭行でtrueに設定する必要があります。

- agentBound

- singleTarget

次に例を示します。

<jobType version="1.0" name="PotatoUpDown" singleTarget="true" agentBound="true" targetTypes="potatoserver_os">

プラグインを使用してパッケージ化されるジョブ・タイプでは、新しいジョブ・タイプに対するJavaの使用がサポートされないため、新しいジョブ・タイプはagentBoundとなり、管理エージェント(ジョブ・タイプ・スクリプト・ファイル)に渡されるスクリプトを介して作業を実行します。ジョブ・タイプ定義XMLファイルにはジョブ・タイプ・スクリプト・ファイルへの参照が含まれ、ジョブがEnterprise Managerコンソールから実行される際は常に、管理エージェントでそのファイルを実行します。

8.17.1 Oracleプラグイン・アーカイブ(OPAR)へのジョブ・タイプの追加

ジョブ・タイプ定義XMLファイルを作成し、ターゲット・タイプ定義ファイルの変更が終了したら、その他のターゲット・タイプと同様にそのファイルをOracleプラグイン・アーカイブ(OPAR)に追加します。詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

9 管理ユーザー・インタフェースの定義

検出、監視および自動化の導入を介して、新規ドメインの管理サポートするように、Enterprise Managerを拡張できます。Enterprise Managerフレームワークがこれらの管理機能に関連する一連の強力な機能を提供する際には、ほとんどのプラグイン開発者は、ドメインに適した方法で、管理機能を公開する必要があります。Enterprise Managerのメタデータ・プラグイン・カスタム・ユーザー・インタフェース(MPCUI)機能によって、この機能が提供されます。

この章の内容は次のとおりです。

- 管理ユーザー・インタフェースの定義の概要

- MPCUIの概念

- プラグイン用のUIオプション

- MPCUIメタデータ・ファイルの作成

- メタデータの定義

- MPCUIアプリケーションの定義

- プラグインとのMPCUI実装のパッケージ化

- FlexベースUIへのメタデータベースUIの変換

- システムのホームページの定義

- ナビゲーションの定義

- Enterprise Managerデータへのアクセス

- タスク自動化の実行

- ページ・レイアウト・コンポーネントの定義

- パッケージ化されたリージョンの包含

- グラフの定義

- 表の定義

- ダイアログの定義

- トレインの定義

- 情報アイテムと情報表示(ラベルと値のペア)の定義

- リンクの定義

- 処理カーソルの表示

- 処理ウィンドウの定義

- ターゲット・タイプ用のアイコンの定義

- ターゲット・ナビゲータの表示

- ガイドされた検出用のUIの定義

- ロギングについて

- 開発環境オプション

- ホームページのカスタマイズの移行

- アクセシビリティ・ガイドライン

- ローカライゼーション・サポート

- オンライン・ヘルプの表示

9.1 管理ユーザー・インタフェースの定義の概要

プラグイン開発者は、ターゲット・タイプを管理するカスタム・ユーザー・インタフェースの定義について、次の手順に従う必要があります。

注意:
このドキュメントに加えて、拡張開発キット(EDK)には、このプロセス中に参考にする完全なサンプル実装が含まれています。

1. 次のようなターゲットのモデルを決定します。

- 他のターゲットとのアソシエーション

- パフォーマンス・メトリックおよび構成データ

- ターゲットのサブコンポーネント

- 管理タスクおよび管理操作

2. 次のような、MPCUIライブラリによって提供される機能を把握しておきます。

- 使用可能なUIコンポーネント(ページ、グラフなど)

- 使用可能なサービス(メトリック・データ、SQL問合せ、アソシエーション、タスク実行など)

- メタデータのみの実装とFlex実装との機能の相違点

- サンプル実装およびその構築方法

3. 次に基づいたUIを設計します。

1. 重要なデータおよびタスク

2. MPCUIによって提供される機能

これには、ページの作成とそのコンテンツの説明、および、適切な管理機能を公開していることを確認するためのドメイン・エキスパートによるページのレビューが含まれます。

4. メタデータのみまたはFlexの実装オプションを選択します。
詳細は、9.3項「プラグイン用のUIオプション」を参照してください。

注意:
後で必要な場合、メタデータのみのアプローチをFlex実装に容易に移行できます。詳細は、9.8項「FlexベースUIへのメタデータベースUIの変換」を参照してください。

5. 設計でのアイテム用のターゲット・メタデータを作成します(手順1を参照)。このメタデータは、後でUIを実装するために必要です。ターゲット・メタデータの詳細は、このガイドの関連する章を参照してください。

6. UIで表示される構成データを取得するために必要なSQL問合せを開発します。通常、これらの問合せは、構成CM$ビューを参照します。
構成データの詳細は、第7章を参照してください。

7. ページ、ウィザードおよびダイアログなどのUIを構成するアクティビティを特定および定義します。統合メタデータは、これらのアクティビティを定義します。
詳細は、9.5.2項「統合メタデータの定義」を参照してください。

8. Flex実装オプションを選択した場合、9.1.1項「Flex実装」での手順を続行します。それ以外の場合、9.1.2項「メタデータのみの実装」での手順を続行します。

9.1.1 Flex実装

Flex実装オプションを使用している場合、次の手順を実行します。

1. Adobe Flash Builderのコピーを取得するか、Adobe Flexのソフトウェア開発キット(SDK)をダウンロードします。
詳細は、9.30項「開発環境オプション」を参照してください。

注意:
Adobe Flex SDKは無料ですが、グラフィカル編集機能やデバッグ機能は提供されません。

2. カスタムUIのソース・コードを保持するためのプロジェクト(Adobe Flash Builderを使用している場合)を作成します。テンプレートとしてEDKに含まれているサンプル・プロジェクトを使用できます。プロジェクトの設定が正しいことを確認します。
詳細は、9.30.2項「Adobe FlashまたはFlex BuilderでのMPCUIの開発」を参照してください。

3. MpApplicationクラスを拡張するMXMLクラスを実装します。これはFlexアプリケーションのクラスです。
詳細は、9.6項「MPCUIアプリケーションの定義」を参照してください。

4. Integrationクラスを拡張するMXMLクラスを実装します。これは、カスタムUIに含まれる一連のアクティビティを定義します。
詳細は、9.6.1項「アプリケーション・アクティビティ(統合クラス)の定義」を参照してください。

5. 各アクティビティ(ページやダイアログなど)を開発します。通常、各ページには、ページ・クラス(MXMLで記述され、Pageクラスを拡張する)およびコントローラ・クラス(ActionScriptで記述され、ActivityControllerクラスを拡張する)が含まれています。
詳細は、9.6.2項「ページの定義」、9.6.3項「ダイアログの定義」および9.6.4項「トレインおよびトレイン・ページの定義」を参照してください。

6. Adobe Flash Builderから、カスタムUIをビルドおよびテストします。

注意:
ビルドおよびテストの前に、少なくとも1つのプラグインのバージョンをデプロイする必要があります。デプロイされたプラグインには、ターゲット・メタデータ(メトリックおよび構成データなど)が含まれている必要があります。ただし、プラグインには、テスト用にMPCUIメタデータを含める必要はありません。

7. MPCUIメタデータ・ファイルを作成します。
このファイルには、次のものが含まれます。

- カスタムUIによって使用されたSQL文

- UIで定義された別のページへのナビゲーションをサポートするために含めるメニュー項目

- ビルドするFlex UIへの参照

詳細は、9.4項「MPCUIメタデータ・ファイルの作成」を参照してください。

8. Adobe Flash BuilderでビルドされたMPCUIメタデータ・ファイルおよびSWFファイルを含めるよう、プラグインを変更します。
プラグイン・ステージング領域のoms/metadata/mpcuiディレクトリに、これらのファイルを置きます。

詳細は、9.7項「プラグインとのMPCUI実装のパッケージ化」を参照してください。

9. Enterprise Managerコンソールからターゲットのホームページにアクセスすることによって、カスタムUIをテストします。
これにより、Enterprise ManagerアプリケーションのコンテキストにカスタムUIがロードされ、Enterprise Managerアプリケーションおよびターゲット・メニューが表示されます。

このドキュメント以外に、Flexコンポーネントで開発を行うための追加のリソースが用意されています。

- APIリファレンス: これはパートナEDKディレクトリのdoc/sdk_api_ref.htmlの下にあります。

- HostSampleのプラグイン例: Oracleが提供するサンプル・プラグインが数多くのMPCUI機能の例を提供しています。これはEDKのsamples/plugins/HostSampleの下にあります

ベースFlexコンポーネント(ボタンやラベルなど)も含む可能性があります。EDKの一部としてFlexコンポーネントのドキュメントを提供しませんが、次のリンクからオンラインでドキュメントを確認できます:

http://helpx.adobe.com/flex.html

9.1.2 メタデータのみの実装

メタデータのみの実装オプションを使用している場合、次の手順を実行します。

1. MPCUIメタデータ・ファイルを作成します。
このファイルには、次のものが含まれます。

- カスタムUIによって使用されたSQL文

- UIで定義された別のページへのナビゲーションをサポートするために含めるメニュー項目

- 次の各手順で説明するすべてのメタデータ定義

詳細は、9.4項「MPCUIメタデータ・ファイルの作成」を参照してください。

2. 統合メタデータをMPCUIメタデータ・ファイルに追加します。
統合メタデータは、カスタムUIに含まれる一連のアクティビティを定義します。

詳細は、9.5.2項「統合メタデータの定義」を参照してください。

3. ページ定義(ActivityDefinitions)をMPCUIメタデータ・ファイルに追加します。
詳細は、9.5.3項「ナビゲーションの定義」を参照してください。

4. MPCUIメタデータ・ファイルを含めるよう、プラグインを変更します。
プラグイン・ステージング領域のoms/metadata/mpcuiディレクトリに、これらのファイルを置きます。

詳細は、9.7項「プラグインとのMPCUI実装のパッケージ化」を参照してください。

5. Enterprise Managerコンソールからターゲットのホームページにアクセスすることによって、カスタムUIをテストします。
これにより、Enterprise ManagerアプリケーションのコンテキストにカスタムUIがロードされ、Enterprise Managerアプリケーションおよびターゲット・メニューが表示されます。

9.1.3 前提条件

この章では、次の内容を十分に理解していると想定します。

- プラグインとそのXMLファイルのパッケージ化の方法を含む、プラグイン開発の概要。

- MXMLと呼ばれるXMLベースのユーザー・インタフェース・マークアップ言語

9.2 MPCUIの概念

MPCUIフレームワークを使用する際に、理解しておく必要がある重要な概念がいくつかあります。これらの概念は、この項で簡単に定義し、以降の項で詳しく説明します。

9.2.1 統合クラス

統合クラスはアプリケーションのブートストラップで、アプリケーションに含める一連のページ、ダイアログおよびトレインを定義するために使用されます。MPCUIフレームワークは、統合クラスに含まれる情報を使用して、UI要素間のナビゲーションの管理など、アプリケーションを駆動します。

9.2.2 アクティビティ

MPCUIで最上位のUI要素は、通常、アクティビティと呼ばれます。アクティビティには、ページ、ダイアログ、トレインとトレイン・ページ、URL、およびジョブがあります。

9.2.3 ページ

ページは、UIの構成を単純化し、より大規模なEnterprise Managerコンソールに必然的に適合するようにするためにMPCUIフレームワークによって提供される構造ですが、Flexにはページの概念がありません。

MPCUIフレームワークは、ページ間の単純なナビゲーションを提供し、ページをブラウザ履歴およびEnterprise Managerメニュー・システムに統合して、アプリケーション内でページを管理します。

9.2.4 サービス

MPCUIフレームワークは、Management Serverからデータを取得したり、アクション(ジョブまたはリモート操作)を処理するために使用できる一連のサービスを提供します。

9.2.4.1 データ・サービス

MPCUIによって提供されるデータ・サービスには、メトリック・データ、アソシエーション、ターゲット・プロパティなどを取得するためのデータ・サービスが含まれます。これには、プラグイン内の名前付きSQL文を実行するために使用できるSQLDataServiceが含まれています。

9.2.4.2 操作サービス

MPCUIには、プラグイン・コードによって管理されたターゲットに対する管理アクションを実行するために使用できるジョブ・サービスおよびRemoteOpサービスが含まれています。

- ジョブ・サービスは、プラグインにジョブ・タイプ定義を含める必要があります。

- RemoteOpサービスは、プラグイン・フレームワークにスクリプトを登録する必要があります。

9.2.4.3 非同期サービスのリクエスト処理

Adobe FlexおよびAdobe Flashフレームワーク(したがってMPCUIフレームワーク)は、ネットワーク・リクエストを非同期に処理します。これは、リクエストがサーバーに作成される結果ハンドラ・パターン使用する必要があり、リクエストの一部として、ハンドラ(またはコールバック)がリクエストに登録されます。リクエストの完了時(またはフォルトが発生した場合)に、ハンドラが呼び出され、結果を渡します。

9.2.5 URL

MPCUIでは、URLの生成に関連する多くの異なる機能、および次へのリンクを埋め込む機能が提供されます。

- Enterprise Managerの他のページ

- MPCUIアプリケーション内の他のページ

- 外部のページ

MPCUIはFlexアプリケーションであるため、これは、URLへのリンクの埋込みほど容易ではありません。URLの詳細は、9.10.2項「URLおよびリンク」を参照してください。

9.3 プラグイン用のUIオプション

メタデータ・プラグイン用のUIオプションは、次のとおりです。

1. 制限された情報を含み、カスタマイズを行わない、デフォルトのホームーページを使用します。

2. ホームページのカスタマイズを含むメタデータ・プラグイン(リリース10.2または11.1)を変換します。リリース11.1と同じ情報を含むが、カスタマイズを行わないホームーページを提供します。詳細は、9.31項「ホームページのカスタマイズの移行」を参照してください。

3. MPCUIを使用したメタデータのみの実装。カスタマイズされているが制限のあるUIを提供します。詳細は、9.3.1項「メタデータのみの実装」を参照してください。

注意:
メタデータのみを使用してUIを実装できます。その後、Flex実装でのみ使用可能な機能を追加する場合、Flex実装を作成するように、メタデータのみの実装を展開します。詳細は、9.8項「FlexベースUIへのメタデータベースUIの変換」を参照してください。

4. MPCUIを使用したFlex実装。より複雑な実装ですが、最も柔軟性があり多くの機能が提供されます。詳細は、9.3.2項「Flex実装」を参照してください。

9.3.1 メタデータのみの実装

MPCUIメタデータは、UIのレイアウトおよびEnterprise Managerサービスへのバインディングを記述するXMLです。MPCUIメタデータの詳細は、9.4項「MPCUIメタデータ・ファイルの作成」を参照してください。

デモ・ホスト・サンプル(demo_hostsample)を開始点として使用するか、または新しいUIを開発できます。UIは、少なくとも1つのページ(ホームページ)を含める必要があり、オプションで他のページを含めることもできます。各ページ定義は、MPCUIメタデータ・ファイルに含まれます。

各ページのメタデータの説明に加えて、メタデータは、統合定義も含める必要があります。統合の定義の詳細は、9.5.2項「統合メタデータの定義」を参照してください。

9.3.2 Flex実装

Flex実装オプションは、ジョブまたはエージェント・スクリプトとしてプラグインに含まれる管理機能の上にカスタマイズされたUIを提供するための、追加の機能を提供します。

MPCUIフレームワークの目標の1つが、実装されるFlexフレームワークの上に単純化された抽象のレイヤーを提供することであるとき、Flexフレームワークと、Flexフレームワークを使用した開発方法を熟知している必要があります。

- MXML

- ActionScript

- SWFバイナリ・ファイル

9.3.2.1 MXML

Flexには、ユーザー・インタフェースを配置し、データ要素にUIコンポーネントをバインドするために使用できるタグ言語(MXML)が含まれます。MPCUIを使用して行うことの多くは、MXMLで実行できます。

注意:
MXMLは、メタデータのみの実装およびFlexベースの実装に使用されます。

- メタデータのみの実装の場合、MXMLを使用して、MPCUIメタデータ・ファイル内のすべてのページを定義します。詳細は、9.5.2.1項「ページの定義」を参照してください。

- Flexベースの実装の場合、SWFファイルにコンパイルするための別のMXMLファイルに、各ページのメタデータを保存します。詳細は、9.6.2項「ページの定義」を参照してください。

9.3.2.2 ActionScript

データまたはイベントのより複雑な処理を必要とする場合、ActionScript (ECMAスクリプト準拠のプログラミング言語)を使用してUIの一部を開発する必要があります。Javaを熟知している開発者は、ActionScriptをすぐに使いこなせるようになります。

9.3.2.3 SWFバイナリ・ファイル

Flexアプリケーションをビルドする際に、MXMLおよびActionScriptは、バイナリ・ファイルを形成するようコンパイルされます。このバイナリ形式(*.swf)はプラグインに含まれ、実行時にAdobe Flash Playerによって解釈されます。Enterprise Managerの拡張フレームワークおよびMPCUIフレームワークは、特に、Enterprise Managerの必要なラッパー・ページとのSWFの統合を処理し、実行時にそのページのレンダリングを処理します。カスタムUIの表示を有効化するために、追加のApplication Development Framework (ADF)、HTMLまたはJavaScriptを構築する必要はありません。

9.3.2.4 ホームページの定義

MPCUIコンポーネントおよびサービスを使用してページおよびカスタムUIを定義し、プラグインの一部として出荷されるAdobe Flexアプリケーションをビルドすることによって、UIをビルドします。このオプションによって、柔軟性およびUIの制御が提供されますが、MPCUIフレームワークによって提供されるコンポーネントおよびサービスを理解するためにさらに努力する必要もあります。

ホームページのテンプレートへの変更が単純な場合、ページを説明するメタデータを送信するMPCUIフレームワーク機能を利用するため、Flexアプリケーション(MPCUI SWF)をビルドおよびパッケージ化するための要件を回避します。

9.4 MPCUIメタデータ・ファイルの作成

MPCUIが含まれる各プラグインは、MPCUIメタデータ・ファイルを含める必要があります。

メタデータ・ファイルは、次を行います。

- MPCUIで必要なSQL問合せを定義します。

- MPCUIで必要なメニュー項目を定義します。

- UIメタデータ(カスタムUIのレイアウト)を含めます(メタデータベースのオプションのみ)。

- SWF (MPCUIを含むファイル名)を指定します(Flexベースのオプションのみ)。

- ターゲット・アイコン、ターゲット・ナビゲータ、およびシステムのホームページのオプションを指定します。

- 検出SWF (ガイドされた検出UIを含むファイル名)を指定します(Flexベースのオプションのみ)。

このファイルの構文の詳細は、拡張開発キット(EDK)仕様にあるXSDファイルを参照してください。

次の例に、メタデータベースのUIのMPCUIメタデータ・ファイルの概要およびFlex UIメタデータ・ファイルの概要を示します

例: メタデータベースUIのMPCUIメタデータ・ファイル

<CustomUI target_type="demo_hostsample"
xmlns="http://www.oracle.com/EnterpriseGridControl/MpCui">

<!-- SqlStatements defines the individual SQL statements that are used by
the MPCUI code.  Each statement is identified by a unique name and
can only be referenced by that name from the MPCUI code itself -->
<SqlStatements>
<Sql name="INSTANCE_INFO">
select * from...
</Sql>
</SqlStatements>

<UIMetadata>
<Integration>
.....
</Integration>

<ActivityDefinition
.....
</ActivityDefinition

</UIMetadata>

<!-- MenuMetadata defines the set of menu items that should appear in the
target menu on the homepage and specifies which of the MPCUI pages
should be accessed from that menu item -->
<MenuMetadata>
<menu label=”Host Sample”>
<menuItem>
<command .. />
</menuItem>
</menu>
</MenuMetadata>

<EmuiConfig>
<context-pane-visible>true</context-pane-visible>
<large-icon>dhs_large.png</large-icon>
<small-icon>dhs_small.png</small-icon>
<use-framework-homepage>true</use-framework-homepage>
</EmuiConfig>

</CustomUI>

例: FlexベースUIのMPCUIメタデータ・ファイル

<CustomUI target_type="demo_hostsample"
xmlns="http://www.oracle.com/EnterpriseGridControl/MpCui">

<!--
SQL Statements to be used by the custom UI code.  All bind variables should be
identified using "?VAR?" type notation, and can then be referenced using
either the SQLDataService MXML tag or using the SQL or BatchSQL services.
-->
<SqlStatements>
<Sql name="INSTANCE_INFO">
select * from...
</Sql>
</SqlStatements>

<!--
SwfFiles tag is used to register the Flex application (must extend
MpApplication) that includes the custom UI for the plug-in.
The SWF file registered must be included in the plug-in along with this
meta-data in the oms/metadata/mpcui directory.
-->
<SwfFiles>
<Swf is_homepage="true">HostSample.swf</Swf>
<Swf discovery_module="DemoHostSample">HostSampleDiscovery.swf</Swf>
</SwfFiles>

<!-- MenuMetadata defines the set of menu items that should appear in the
target menu on the homepage and specifies which of the MPCUI pages
should be accessed from that menu item -->
<MenuMetadata>
<menu label=”Host Sample”>
<menuItem>
<command .. />
</menuItem>
</menu>
</MenuMetadata>

<EmuiConfig>
<large-icon>dhs_large.png</large-icon>
<small-icon>dhs_small.png</small-icon>
</EmuiConfig>

</CustomUI>

9.4.1 MPCUIメタデータ要素の概要

表9-1では、検出メタデータを定義する重要な要素について説明します。

表9-1 検出メタデータを定義するために使用する重要な要素

要素

説明

SqlStatements

SqlStatements要素には、管理リポジトリに格納された情報にアクセスできるSQL文が含まれます。これらのSQL文の詳細は、9.11.4項「パッケージ化されたSQLおよび問合せサービス」を参照してください。

UIMetadata (メタデータベースUIのみ)

UIMetadata要素は、メタデータで説明された統合およびページ(アクティビティ)の定義の最上位のコンテナです。

<UIMetadata>

<!-- The meta-data only definition must include an Integration element
which defines the set of activities (pages, dialogs, etc.) that make up
the application -->
<Integration>
<intg:Integration targetType='demo_hostsample' xmlns:intg="oracle.sysman.emx.intg" >
..
</intg:Integration>
</Integration>

<!-- The meta-data only definition must include 1 or more ActivityDefinition
elements each of which defines an activity (e.g. page, dialog, etc.) -->
<ActivityDefintion>
<intg:Page id=”homePg” label=”Home Page” ...>
</intg:Page>
</ActivityDefintion>

</UIMetadata>

Integration (メタデータベースUIのみ)

Integration要素は、一連のページを指定し、そのページ間のタスク・フロー(必要な場合)を定義するために使用される統合メタデータを定義します。統合メタデータの定義の詳細は、9.5.2項「統合メタデータの定義」を参照してください。

ActivityDefinition (メタデータベースUIのみ)

ActivityDefinition要素は、UIにページ間のナビゲーションを定義します。ナビゲーションの定義の詳細は、9.5.3項「ナビゲーションの定義」を参照してください。

SwfFiles (Flex UIのみ)

SWFfiles要素は、SWFファイルの名前を指定します。

MenuMetadata

MenuMetadata要素には、MPCUIメタデータで定義されたアクティビティへのナビゲーションを定義するmenuItem要素が含まれます。MenuMetadata要素の詳細は、9.5.3項「ナビゲーションの定義」を参照してください。

EmuiConfig

EmuiConfig要素には、次を定義するための要素が含まれます。

- ターゲット・ナビゲータ(context-pane-visible)
詳細は、9.27項「ターゲット・ナビゲータの表示」を参照してください。

- Cloud Controlコンソールでターゲット・タイプを表すアイコン(large-icon、small-icon)
詳細は、9.26項「ターゲット・タイプ用のアイコンの定義」を参照してください。

- システムのホームページ(use-framework-homepage)
詳細は、9.9項「システムのホームページの定義」を参照してください。

9.5 メタデータの定義

MPCUIメタデータ実装の完全な例は、拡張開発キット(EDK)で提供されるデモ・サンプル実装(demo_hostsample_uimd_fullmd.xml)を参照してください。

9.5.1 メタデータ実装の制限事項

この実装ではページの定義のみがサポートされ、ダイアログやトレインの定義はサポートされません。カスタムUIがダイアログまたはトレインを必要とする場合、ホームページをビルドするには、Flexベースのオプションを使用する必要があります。詳細は、9.3.2項「Flex実装」を参照してください。

表示するデータの操作を実行する機能、または、UIイベントに応答し、ジョブやリモート操作を起動する機能は、この実装では使用できません。

9.5.2 統合メタデータの定義

統合メタデータを使用して、一連のページを指定し、そのページ間のタスク・フロー(必要な場合)を定義します。

例: 統合メタデータ

<Integration>
<mp:Integration targetType="demo_hostsample" xmlns:mp="http://www.oracle.com/mpcui">
<mp:PageActivityDef id="homePg" label="Home" isDefaultPage="true" />
<mp:PageActivityDef id="perfPg" label="Performance" />
<mp:PageActivityDef id="processesPg" label="Processes" />
<mp:PageActivityDef id="adminPg" label="Configuration" />
<mp:DialogActivityDef id="detailsDialog" label="Metrics Detail" />
<mp:DialogActivityDef id="metricHistory" label="Metric History">
<mp:inputParams>
<mp:InputParam name="targetName" />
<mp:InputParam name="targetType" />
<mp:InputParam name="metric" />
<mp:InputParam name="columns" />
<mp:InputParam name="period" />
<mp:InputParam name="title" />
</mp:inputParams>
</mp:DialogActivityDef>
<mp:DialogActivityDef id="metricDetails" label="Metric Details">
<mp:inputParams>
<mp:InputParam name="targetName" />
<mp:InputParam name="targetType" />
<mp:InputParam name="metric" />
<mp:InputParam name="columns" />
<mp:InputParam name="period" />
<mp:InputParam name="title" />
</mp:inputParams>
</mp:DialogActivityDef>
</mp:Integration>
/<Integration>

9.5.2.1 ページの定義

ページ・メタデータは、ページを構成するコンポーネントやページ上に表示されるデータなど、ページのレイアウトを定義します。各ページは、独自のXMLに含まれ、統合メタデータ内でページに指定された同じアクティビティ識別子を使用して、ホームページのメタデータ登録サービス(MRS)に登録する必要があります。統合メタデータの詳細は、9.5.2項「統合メタデータの定義」を参照してください。

注意:
ページを定義するために使用されるタグ言語は、Flexベースの実装でサポートされているタグ言語のサブセットです。次を行うことによって、メタデータ・ファイルで定義されたページを取得し、それをMPCUIアプリケーション(SWFファイル)の一部であるページにすることができます。

- XMLからMXMLへのファイル拡張子の変更

- ファイルの上部での適切なMXMLネームスペースの追加

詳細は、9.8項「FlexベースUIへのメタデータベースUIの変換」を参照してください。

次の例は、メタデータ・ページ定義のサンプルの一部です。

例: メタデータ・ページ定義

<ActivityDefinition>
<!--
Each page included in the plugin UI should extend the Page class and be
coded in MXML.
The page file specifies the layout of the page, declares some of the data
binding (see below) and specifies handlers for events that are initiated in
the page, when a user clicks a button or link for example.  The page also
has a controller class (that extends PageController)that is associated with
the page.  The controller loads data shown in the page and includes
functions that are called as event handlers.
-->
<mp:Page id="homePg" label="Home Page"
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mp="http://www.oracle.com/mpcui" >

<!--
Data Services - these are sources of data that will be shown in the
page. Data can either be bound from a data service declared here, or it
may be loaded within the controller.
-->
<mp:services>
<!--
SQLDataService - this service allows you to execute a SQL query packaged
with your plugin and then refer to the result set from the query
execution. Properties passed to the query are declared as name-value
pairs.  If the properties are runtime/dynamic properties then
you will have to use the SQL service within the controller, load the
data there and then map the result set to the page model.
-->
<mp:SQLDataService id="ids" queryID="INSTANCE_INFO" properties="{props('TARGET_GUID',appModel.target.guid)}" />

<mp:SQLDataService id="cht1" queryID="CHTSQL1" properties="{props('HC_TARGET_GUID',appModel.target.guid)}" />

<!--
MetricValuesDataService - this service allows you to obtain data for a
metric, for some period of time.  This time period may be a historical
time period, or it may be REALTIME which creates a data service that
will poll for the current value of the metric through the Agent.
-->
<mp:MetricValuesDataService id="mv1"
flattenData="true"
targetName="{appModel.target.name}" targetType="{appModel.target.type}"
metricName="CPUProcessorPerf"
columns="{['CPUUser','CPUIdle']}"
timePeriod="LAST_DAY" />

<!--
AvailDataService - this service obtains target availability, that
includes current status, availability for the last 24 hours, and up
since time.
-->
<mp:AvailDataService id="ads" targetName="{appModel.target.name}" targetType="{appModel.target.type}" />

<!--
AssociationService - this service obtains associated targets
-->
<mp:AssociationDataService id="asc" targetName="{appModel.target.name}" targetType="{appModel.target.type}" assocTypes="{['hosted_by']}" />
</mp:services>

<!--
Page Content - the page should be laid out in a grid pattern using a
combination or columns (VBox)and rows (HBox).  Also to ensure property
sizing/resizing behavior relative height/width should be used in
percentages.
-->
<mx:VBox width="100%" height="100%">
<!--
1st Row - will occupy 30% of the height of the page and includes a
Summary region, Availability region and Job Summary region. The
Availability and Job Summary region require no parameters.  The
Summary region uses the InfoDisplay component to show a series of
name-value pairs.  Each item may also specify an optional
destination and image.

The example below also demonstrates the ways data may be bound to a
UI component included in the page:

1. Data Service Reference
2. Global/Application Model Reference
3. Page Model Reference
4. Set Directly from Controller
-->
<mx:HBox width="100%" height="30%">
<mp:Region title="Summary" width="25%" height="100%"  >
<mp:InfoDisplay id="summaryInfo">
<mp:InfoItem label="CPU Model" value="{ids.result.getString(0,'CPU Model')}" />   <!-- ref to SQLDataService -->
<mp:InfoItem label="Target Name" value="{appModel.target.name}" />   <!-- ref to global/application model -->
<mp:InfoItem label="Current Status" value="{ads.currentStatus}"  image="{ads.currentStatusIcon}" />   <!-- ref to AvailDataService -->
<mp:InfoItem source="{ads.statusSinceItem}" />   <!-- ref to AvailDataService -->
<!--    <mp:InfoItem label="{model.osVersLabel}" value="{model.osVersion}" /> -->   <!-- ref to page model; model set in controller in SQL svc handler -->
<!--    <mp:InfoItem id="infoItem" label="Controller Set" />   -->   <!-- value property set directly in controller -->
<mp:InfoItem label="Hosted By" value="{asc.assocs.getAssoc('hosted_by').name}" />   <!-- ref to AssociationService -->
</mp:InfoDisplay>
</mp:Region>

<!--
<mp:AvailabilityRegion width="33%" height="100%" daySpan="1" />
-->

<mp:Region title="Memory Usage (Last 24 Hrs)" width="45%" height="100%">
<mp:AreaChart id="memHist" width="100%" height="100%"
metricName="MemoryPerf"
metricColumns="['Active','MemFree']"
timePeriod="LAST_DAY" />
<!--  <mp:Link label="Current" click="{controller.showCpuMetricDetails(event)}" /> -->
</mp:Region>

<mp:Region title="Memory Used (Current)" width="30%" height="100%">
<mp:LineChart id="memRt" width="100%" height="100%"
metricName="MemoryPerf"
metricColumns="['Active']"
timePeriod="REALTIME"
interval="15"/>
<!--  <mp:Link label="History" click="{invokeActivity('metricHistory',
bean('targetName', appModel.target.name, 'targetType', appModel.target.type,
'metric', 'Response', 'columns', ['Load'], 'period', 'LAST_DAY', 'title', 'Metric History'))}" /> -->
</mp:Region>

<!-- <mp:JobSummaryRegion width="25%" height="100%" /> -->
</mx:HBox>

<!--
2nd row - will occupy 35% of the overall page height and shows three
charts and shows the ability to access other activities (pages,
dialogs, etc.)

The 1st chart shows a line chart that displays a metric in
real-time.
It will automatically start polling the metric value in the
background and will continue to update the chart on the page until
the page is not shown. The 2nd chart shows a line chart that
displays a metric history.  The 3rd chart shows a barch chart
showing metric data grouped by the key in the data, in this case the
CPU #.

Each region also includes a Link component and shows the ability to
navigate to other activites.  This may be any activity (page,
dialog, train, URL, job).  The 1st chart shows using the
invokeActivity method being called directly from the page and
passing context to the activity using the bean method to form the
input context for the metricDetails activity.

The 2nd link shows calling a function in the controller, and then
navigating to another activity from within the controller.  The
final link shows the use of the invokeActivity method again, however
shows navigating to an activity that requires no additional context
(the Processes page).
-->
<mx:HBox width="100%" height="35%">

<mp:Region title="Per Processor Idle Time (%)" width="25%" height="100%">
<mp:BarChart id="bchart" timePeriod="LAST_DAY" width="100%" groupBy="byKey" metricName="CPUProcessorPerf" metricColumns="{['CPUIdle']}"/>
<mp:Link label="Show Processes" click="{invokeActivity('processesPg')}" />
</mp:Region>

<mp:Region title="CPU Utilization % (Last 24 Hrs)" width="45%" height="100%">
<mp:LineChart id="cpuutil" width="100%" height="100%"
metricName="CPUPerf"
metricColumns="['system','idle','io_wait']"
timePeriod="LAST_DAY" />
<mp:Link label="Current" click="{controller.showCpuMetricDetails(event)}" />
</mp:Region>

<mp:Region title="CPU Load (Current)" width="30%" height="100%">
<mp:LineChart id="cpuload" width="100%" height="100%"
metricName="Response"
metricColumns="['Load']"
timePeriod="REALTIME"
interval="15"/>
<mp:Link label="History" click="{invokeActivity('metricHistory',
bean('targetName', appModel.target.name, 'targetType', appModel.target.type,
'metric', 'Response', 'columns', ['Load'], 'period', 'LAST_DAY', 'title', 'Metric History'))}" />
</mp:Region>

<!--
<mp:Region title="Per Processor Idle Time (%)" width="34%" height="100%">
<mp:BarChart id="bchart" timePeriod="LAST_DAY" width="100%" groupBy="byKey" metricName="CPUProcessorPerf" metricColumns="{['CPUIdle']}"/>
<mp:Link label="Show Processes" click="{invokeActivity('processesPg')}" />
</mp:Region>
-->
</mx:HBox>

<!-- 3rd row - events region -->
<mx:HBox width="100%" height="35%">
<mp:IncidentRegion width="75%" height="100%" />
<!--
<mp:Region title="Memory Details" width="25%" height="100%" >
<mx:ComboBox id="selMemChart" dataProvider="{model.memChoices}" labelField="choiceLabel" change="{controller.changeMemChart(event)}" />
<mp:PieChart id="memChart" targetName="{appModel.target.name}" targetType="{appModel.target.type}"
metricName="MemoryPerf"
metricColumns="{model.memoryColumns}"
timePeriod="REALTIME" interval="15" />
</mp:Region>
-->
<mp:JobSummaryRegion width="25%" height="100%" />
</mx:HBox>

</mx:VBox>
</mp:Page>

</ActivityDefinition>

9.5.2.2 UIコンポーネントへのデータのマッピング

次のオプションのうち1つを使用して、メタデータ・ページ定義でUIコンポーネントにマップするデータを指定します。

- コンポーネントに含まれるデータを指定するプロパティをサポートするコンポーネントの場合。たとえば、チャート・コンポーネントは、チャートで表示されるメトリックの名前および列を指定するプロパティをサポートします。

<c:LineChart id="memRt" width="100%" height="100%"
metricName="MemoryPerf" metricColumns="['Active']"
timePeriod="REALTIME" interval="15"/>

前述の例では、LineChartには、チャートで表示されるメトリックを指定するプロパティが含まれます。MPCUIフレームワークは、チャートを移入するManagement Serverからデータを取得します。

- データ・サービス・タグを使用したデータ・バインディングの場合。データ・サービス・タグには、次のような複数のフォームがあります。

注意:
次のように、ページ定義の上部に、アクティビティ(ページ)内で使用するデータ・サービスを宣言する必要があります。

<intg:Page id="homePg" label="Home Page"
....
<intg:services>
....
</intg:services>

- MetricValuesDataService
MetricValuesDataServiceタグによって、Management Serverから、リアルタイムまたは履歴のいずれかのメトリック・データを含めることができます。その後、そのデータをUIコンポーネントにバインドします。

<ds:MetricValuesDataService id="procData"
flattenData="true"
targetName="{appModel.target.name}" targetType="{appModel.target.type}"
metricName="CPUProcessorPerf"
columns="{['CPUIdle']}"
timePeriod="REALTIME  "interval="15" />

- SQLDataService
SQLDataServiceタグによって、パッケージ化されたSQL文を実行し、resultSetに含まれた列をUIコンポーネントにバインドできます。

<ds:SQLDataService id="ids" queryID="INSTANCE_INFO"
properties="{props('TARGET_GUID',appModel.target.guid)}" />

ページのDataServiceを宣言すると、ページ内のコンポーネントは、サービスによって指定されたデータを参照できます。

<components:InfoItem label="CPU(0) Idle %"
value="{procData.result.getString('CPU1','CPUIdle')}" />

<components:InfoItem label="CPU Model"
value="{ids.result.getString(0,'CPU Model')}" />

それぞれが返したデータの構造、タグ上でのパラメータの設定方法、これらのサービスから返されるデータの簡単な統合をサポートするUIコンポーネントなど、これらのタグの詳細は、9.12項「タスク自動化の実行」を参照してください。

注意:
MetricValuesDataService、SQLDataService、AssociationDataServiceおよびAvailDataServiceなど、メタデータのみの実装またはFlexベースの実装でサポートされている多くのデータ・サービスがあります。

最後に、メタデータ・コンポーネントにマップされる際に使用できる多くの共通のデータ項目があります。これらの項目には、次を行うことができるプロパティが含まれています。

- 直接表示(たとえば、appModel.target.name)

- データ・サービスへのパラメータとして使用

- ナビゲートされるアクティビティへのbean入力として使用

共通のデータ項目にはappModelプロパティが含まれています。appModelプロパティには、アプリケーションがレンダリングされるターゲットに対して、ターゲット(およびそのすべてのプロパティ、oracle.sysman.emx.model.Targetを参照)を含むアプリケーション・ランタイムに関連付けられた静的プロパティが含まれています。

次のような表記法を使用して、メタデータのみの実装またはFlex実装のいずれかで、UIコンポーネントからappModel.targetプロパティを参照します。

<mp:InfoItem label="Target Name"
value="{appModel.target.name}" />

この場合、UIでは次のように表示されます。

Target Name MyTargetName

9.5.3 ナビゲーションの定義

MPCUIに含まれたメタデータUI定義サポートは、ページの定義に制限されており、ダイアログ、トレイン、ジョブなどの他のアクティビティはサポートされていません。そのため、UIのページ間で使用可能なナビゲーションは、次のいずれかの方法のみになります。

- ページへのアクセスに使用できるメタデータでメニュー項目を定義
MenuMetadata項目には、MPCUIメタデータで定義されたアクティビティへのナビゲーションを定義するmenuItem要素が含まれます。たとえば、メタデータが次のページ定義を含む場合です。

<ActivityDefinition>
<intg:Page id="processesPg" label="Processes" ..>
<!-- the body of the processes page would be declared here ?
</intg:Page>
</ActivityDefinition>

MenuMetadata要素でmenuItemを指定して、前のページへのナビゲーションを許可します。

<menuItem>
<command id="processesPg" label="Processes"
class="oracle.sysman.emSDK.pagemodel.menu.EMNavigationMenuCommand
partialSubmit="true" >
<property name="actionOutcome" value="goto_core-mpcustom-nav" /><property name="paramsMap"><mapEntry name="pageid" value="processesPg" />
</property>
</command>
</menuItem>

menuItem要素のキー・プロパティは次のとおりです。

- コマンド要素内のlabel。
labelは、ホームページ上のターゲット・メニューに表示されるラベルを指定します。前述の例では、メニュー項目Processesが含まれます。

- actionOutcomeプロパティに指定された値。
actionOutcomeは、SWFファイルを含むページのビューIDを指定します。

- invokeActivityディレクティブを使用したページ内からのナビゲート
invokeActivityディレクティブを使用して、MPCUI メタデータ実装で定義されたアクティビティ間でナビゲートします。このディレクティブを、LinkコンポーネントまたはButtonコンポーネントのクリック・プロパティに関連付けます。エンドユーザーがこれらのコンポーネントの1つをクリックすると、クリック・プロパティは、実行するアクションを指定します。

invokeActivityディレクティブは、次を取得します。

- 1つの必須パラメータ(アクティビティID)
アクティビティIDは、制御が渡されるアクティビティを指定します。

- 1つのオプション・パラメータ(アクティビティへの入力コンテキストを指定するbean)
入力コンテキストは、アクティビティに渡される情報を指定します。

たとえば、実装に2つのアクティビティ、homePgおよびprocessesPg (2つのページ)が含まれる場合です。クリックすると表示がプロセス・ページに変更されるリンクが、ホームページに含まれます。

<ActivityDefinition>
<intg:Page id="homePg" label="Home Page"
...
<mx:Link label=”Show Processes” click=”{invokeActivity('processesPg')}” />

アクティビティ・コンテンツ・パラメータを使用して、パラメータ化するアクティビティを定義するため、別のコンテキストから起動できます。メタデータに含まれるアクティビティ定義の一部として、パラメータ入力の要件を指定する必要があります。たとえば、任意の数の異なるメトリックおよびイベントが異なる可能性があるターゲットの履歴折れ線グラフを表示できるダイアログ・アクティビティが必要であるとします。統合メタデータで、アクティビティ定義は、次の例のように表示されます。

例: アクティビティの定義

<intg:DialogActivityDef id='metricHistory' label='Metric History' >
<intg:inputParams>
<intg:InputParam name='targetName'/>
<intg:InputParam name='targetType'/>
<intg:InputParam name='metric'/>
<intg:InputParam name='columns'/>
<intg:InputParam name='period'/>
<intg:InputParam name='title'/>
</intg:inputParams>
</intg:DialogActivityDef>

inputParams要素は、ダイアログ(アクティビティ)への入力パラメータを指定します。その後、別のページ・アクティビティから、2つの異なるリンクは、異なるパラメータを持つ同じダイアログに向けることができます。

<comp:Region title="Memory Used (Current)" width="30%" height="100%">
<c:LineChart id="memRt" width="100%" height="100%"
metricName="MemoryPerf" metricColumns="['Active']"
timePeriod="REALTIME" interval="15"/>
<comp:Link label="History"
click="{invokeActivity('metricHistory',
bean('targetName', appModel.target.name,
'targetType', appModel.target.type,
'metric', 'Response',
'columns', ['Load'],
'period', 'LAST_DAY',
'title', 'Memory Used (History)'))}" />
</comp:Region>

<comp:Region title="CPU Used (Current)" width="30%" height="100%">
<c:LineChart id="memRt" width="100%" height="100%"
metricName="CPUProcessorPerf" metricColumns="['CPUUser,'CPUIdle']"
timePeriod="REALTIME" interval="15"/>
<comp:Link label="History"
click="{invokeActivity('metricHistory',
bean('targetName', appModel.target.name,
'targetType', appModel.target.type,
'metric', 'CPUProcessorPerf',
'columns', ['CPUUser','CPUIdle'],
'period', 'LAST_DAY',
'title', 'CPU Used (History)'))}" />
</comp:Region>

9.6 MPCUIアプリケーションの定義

MPCUIフレームワークを使用してビルドされたカスタムUIの基礎は、Flexベースのアプリケーションで構築する必要があります。このプロセスを単純化するために、フレームワークは一連のベース・クラスおよび構造を提供します。この開発の開始点は、アプリケーションを定義するためにMpApplicationクラスを拡張することです。

アプリケーション・ファイルは単一のメソッドgetIntegrationClass()を実装する単純なMXMLファイルで、このアプリケーションに関連付けられた統合クラスのインスタンスを返します。統合クラス(9.6.1項「アプリケーション・アクティビティ(統合クラス)の定義」で説明)は、アプリケーションを構成する一連のアクティビティ(ページ、ダイアログおよびトレインなど)を定義します。

コンパイルされると、アプリケーション・バイナリ(SWFファイル)は、アプリケーション・ソース・ファイルと同じ名前で呼ばれます(デフォルト)。意味のあるアプリケーションを呼び出す際は、アプリケーション・クラスは、サポートするターゲット・タイプと同じ名前にすることをお薦めします。

例: アプリケーションMXML

<?xml version="1.0" encoding="utf-8"?>

<intg:MpApplication xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:intg="oracle.sysman.emx.intg.*"
backgroundColor="#EFF3F7" preloader="oracle.sysman.emx.MpPreloader" >
<mx:Script>
<![CDATA[
/* Must override the getIntegrationClass method and
return the class that extends Integration */
override public function getIntegrationClass():Class
{ return HostSampleInteg; }
]]>
</mx:Script>
</intg:MpApplication>

9.6.1 アプリケーション・アクティビティ(統合クラス)の定義

統合クラスは、アプリケーションを構成する一連のUI要素を定義します。MPCUIフレームワークは、アプリケーションの構造を理解するために統合クラスと相互作用し、フレームワークが、アプリケーションを構成するUI要素の表示と、UI要素間のナビゲーションの背後のプライマリ・ドライバとなることを許可します。

アプリケーションは、getIntegrationClassメソッドを介して、アプリケーション・クラスのMPCUIフレームワークに統合クラスを登録します。各アプリケーションは、単一の統合クラスのみを持ちます。

例: 統合クラスの登録

<?xml version="1.0" encoding="utf-8"?>
<intg:Integration
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:intg="oracle.sysman.emx.intg.*"
>
<!-- The integration class defines the pages, dialogs
and trains included in the application -->

<intg:activities>
<intg:PageActivityDef id='homePg' label='Home' pageClass='{HomePage}' pageControllerClass='{HomePageController}' isDefaultPage="true"  />
<intg:PageActivityDef id='processesPg' label='Processes' pageClass='{ProcessesPage}' pageControllerClass='{ProcessesPageController}' />
<intg:PageActivityDef id='adminPg' label='Administration' pageClass='{CredentialsPage}' pageControllerClass='{CredentialsPageController}' />
-->
<intg:DialogActivityDef id='metricHistory' label='Metric History' dialogClass='{MetricHistoryDialog}' >
<intg:inputParams>
<intg:InputParam name='targetName'/>
<intg:InputParam name='targetType'/>
<intg:InputParam name='metric'/>
<intg:InputParam name='columns'/>
<intg:InputParam name='period'/>
<intg:InputParam name='title'/>
</intg:inputParams>
</intg:DialogActivityDef>

<intg:DialogActivityDef id='availDialog' label='Availability' dialogClass='{AvailabilityDialog}' />

</intg:activities>
</intg:Integration>

前の例(統合クラスの登録)で、可用性アクティビティにはPageActivityDef、DialogActivityおよびTrainActivityDefが含まれています。各アクティビティは、通常、このアクティビティを参照するためにアプリケーション全体で使用されるidプロパティを指定します。

pageClassおよびdialogClassプロパティは、各アクティビティのビュー・クラスまたはUIレイアウトを指定します。たとえば、homePgアクティビティには、HomePageのpageClassがあります。これは、アプリケーションに含めると、通常MXMLで記述されたHomePageと呼ばれるクラスになることを意味します。

アクティビティは、コントローラ・クラス(pageControllerClass)を指定できます。このプロパティは、ページのデータを初期化し、ページ内のユーザーの相互作用からUIイベントに応答するために、アクティビティに関連付けられ、MPCUIフレームワークによって呼び出されるクラス(多くはActionScriptで記述された)を指します。

9.6.2 ページの定義

各ページは、PageActivityDefを追加することによって、統合クラスを介して、MPCUIフレームワークに登録する必要があります。PageActivityDefは、次によって定義されます。

- ページ・クラス
ページ・クラスは、レイアウトおよびコンテンツであるページの具体的な実装であり、ページ・クラスを拡張する必要があるクラスです。

- ページ・コントローラ
ページ・コントローラは、ActivityControllerベース・クラスを拡張するクラスで、データを取得し、それをUIコンポーネントにバインドし、エンドユーザーのかわりにUIによって発行されたイベント(ボタンの押下やリンクのクリックなど)に応答するために、Enterprise Managerサービス・レイヤーとの相互作用をサポートする一連のハンドラをカプセル化します。

各アプリケーションは、少なくとも1つのページ(1つのページ・アクティビティ)を含める必要があり、デフォルト・ページとしてページ・アクティビティの1つを特定する必要があります。

注意:
デフォルト・ページは、選択したターゲットのホームページとして、MPCUIフレームワークによって表示されます。

9.6.2.1 ページ・クラス

Pageクラスは、エンドユーザーによって定義されるすべてのページのベース・クラスです。pageは、アプリケーションで最上位のUI要素です。フレームワークは、次を行うことによって、Enterprise Managerコンソールにページの統合を指定します。

- Enterprise Managerメニュー・システムとのページの統合

- ページをブックマークできるように、ブラウザ履歴の更新の実行

- ページ間の単純なナビゲーションの指定

MXMLのページ・クラスを実装し、Pageベース・クラスを拡張して、MPCUIフレームワークと統合します。

ページを記述するために使用するタグ言語には、レイアウトおよびデータ表示のためのFlexコンポーネントとMPCUI提供のコンポーネントが混在しています。このドキュメントの以降の項で、これを使用するための各コンポーネントおよび例について説明しています。

ページ・クラスの例は、EDKのデモ・ホスト・サンプルのHomePage.mxmlファイルおよびProcessesPage.mxmlファイルを参照してください。

9.6.2.2 ページ・モデル

ページ内のコンポーネントは、Enterprise Managerサービス・レイヤーを介して取得された情報を表示し、通常、ページ・モデルを介してこのデータにバインドされます。ページ・モデルは、ページに関連付けられた一連のデータです。フレームワークは、ページの表示時にデータがロードされるように、このデータのライフサイクルを管理します。ページが削除されると、データはクリーンアップされ、Adobe Flash Playerプラグインによってガベージ・コレクションを実行できます。

次を行うことによって、ページ・モデルに含めるデータを指定します。

- データ・サービス・タグの使用

- Enterprise Managerサービス・リクエストの結果ハンドラでのページ・モデルへのデータの直接追加

サービス・レイヤーの使用の説明、およびモデルへのデータの追加方法の詳細は、9.12項「タスク自動化の実行」を参照してください。

Adobe FlexおよびActionScriptは、Scriptタグを使用してMXMLファイルにコードを埋め込む機能をサポートしていますが、Pageコードは、ページを構成するUI要素のレイアウトに制限することをお薦めします。データ・バインディングおよびイベント処理をコントローラに委任します。これにより、MPCUIフレームワークは、各ページおよびそれに正しくバインドされたデータのライフサイクルを管理できることが確認されます。

9.6.2.3 ページ・コントローラ

ページ・コントローラは、PageControllerベース・クラスを拡張するクラスで、データを取得し、管理アクションを処理するために、Enterprise Managerサービス・レイヤーと相互作用するコードが含まれます。さらに、コントローラには、ページ・コンポーネントから発行されたイベントへの応答で呼び出される一連のイベント・ハンドラが含まれます。

注意:
ページに表示されるすべてのデータがcomponentタグまたはDataServiceタグを介して指定でき、カスタム・イベント処理が不要な場合、ページ・コントローラは不要です。
たとえば、ページが多くのチャート・コンポーネントのコンテナである場合、各コンポーネントは、チャートに表示するためのメトリックの指定をサポートします。コンポーネントは、データのライフサイクルを正しく管理するために、MPCUIフレームワークと相互作用します。

コントローラが必要な場合、init(page:Page)メソッドは、ページUI要素にバインドされるデータをロードできるコード内の場所です。Enterprise Managerサービスとの相互作用、およびページ・モデルを使用したバインディングの例は、9.12項「タスク自動化の実行」を参照してください。

initメソッドに加えて、コントローラには、ページ内で元となるイベントに応答するメソッドが含まれます。イベント(ボタンの押下など)への応答で処理を実行する必要がある場合、そのイベントが発生したときに呼び出されるコントローラでメソッドを参照できます。

- ページ内は、次のとおりです。

<components:Link label="Show History"
click="controller.showHistory(buffCacheChart);"  />

- コントローラ内は、次のとおりです。

public function showProcessorHistory(even:MouseEvent):void
{
// show an example of invoking an activity (a dialog in this case) and
// getting information from the dialog when it returns (is closed)
// create the context to be passed to the dialog
var bean:Bean = new Bean('targetName',
ApplicationContext.getTargetName(), 'targetType',
ApplicationContext.getTargetType(),
'metric', 'CPUProcessorPerf', 'columns', ['CPUIdle'],
'period', 'LAST_DAY', 'title', 'Metric History');
page.invokeActivity('metricHistory', bean, processorHistoryDone);

}

ページ・コードでは、ページ・コントローラに含まれるコードと相互作用するために必要なすべてのものは、controllerへの参照です。フレームワークは、ページのロード時にコントローラ・クラスの作成を管理し、アクションを実行するためにコントローラを介して呼び出す機能を提供します。

フレームワークは、コントローラで追加のイベント・ハンドラを必要とせずに、ページから直接呼び出すことができる便利な方法を提供することによって、アクションを実行するためのプロセスを単純化します。たとえば、別のアクティビティへのアクセスは、ほとんどの場合、追加のコントローラ・コードを必要とせずに実行できます。

次の例では、リンクをクリックすると、アプリケーションをprocessPgアクティビティにリダイレクトします。

<components:Link label="Show Process" click="{invokeActivity('processPg')}" />

注意:
詳細は、デモ・サンプルのHomePageController.asファイルおよびProcessesPageController.asファイルを参照してください。

9.6.3 ダイアログの定義

ダイアログ・アクティビティは、MPCUIダイアログ・クラスを拡張します。ダイアログは、表示される現在のページから移動せずにアプリケーションの上部に表示するポップアップ・ウィンドウです。ダイアログは、通常、MXMLファイル内で定義され、別のコントローラ・クラスを持ちません(持つことはできます)。

<?xml version="1.0" encoding="utf-8"?>
<intg:Dialog
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:cht="oracle.sysman.emx.components.charts.*"
xmlns:intg="oracle.sysman.emx.intg.*"
xmlns:ds="oracle.sysman.emx.service.util.*"
xmlns:comp="oracle.sysman.emx.components.*"
xmlns:tbl="oracle.sysman.emx.components.table.*"
height="250" width="450"
title="{model.title}"
>
<cht:LineChart id="hchart" targetName="{model.targetName}" targetType="{model.targetType}" timePeriod="{model.period}" interval="15"
metricName="{model.metric}" metricColumns="{model.columns}" keys="{model.keys}" width="100%" height="100%" />
</intg:Dialog>

前の例では、ダイアログは、UIコンポーネントで使用するプロパティのソースとしてmodelを参照します。

次のいずれかの方法で、ダイアログ・モデルを初期化します。

- ダイアログに関連付けられたコントローラで

- 統合クラスのダイアログ定義が入力パラメータを指定する場合、MPCUIフレームワークによって

<intg:DialogActivityDef id='metricHistory' label='Metric History' dialogClass='{MetricHistoryDialog}' >
<intg:inputParams>
<intg:InputParam name='targetName'/>
<intg:InputParam name='targetType'/>
<intg:InputParam name='metric'/>
<intg:InputParam name='columns'/>
<intg:InputParam name='period'/>
<intg:InputParam name='title'/>
</intg:inputParams>
</intg:DialogActivityDef>

注意:
この場合、ダイアログで必要な入力パラメータを含む入力として、beanを指定する必要があります。

<components:Link label="Show History"
click="{invokeActivity('metricHistory',
bean('targetName', appModel.target.name,
'targetType', appModel.target.type,
'metric', 'Response',
'columns', ['Load'],
'period', '',
'title', 'Metric History'))}" />

注意:
詳細な例は、デモ・サンプルのMetricDetailsDialog.mxmlファイルおよびAvailabilityDialog.mxmlファイルを参照してください。

9.6.4 トレインおよびトレイン・ページの定義

トレイン・アクティビティでは、一連のページをつなげることによって、トレイン(ガイド付きワークフローまたはウィザード)を定義できます。

トレインを定義するには、トレイン自体(TrainActivityDef)および各ステップ(TrainStepActivityDef)の宣言を統合クラスに含めます。

<intg:TrainActivityDef id='addNewUserEmbeddedTrain' label='Add New User'>
<intg:stepActivities>
<mx:Array>
<intg:TrainStepActivityDef id='anuStep1' label='User Info'pageClass='{trainSamp.S1_UserInfo}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep2' label='Expiry' pageClass='{trainSamp.S2_Expiry}'pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep3' label='Credentials' pageClass='{trainSamp.S3_Credentials}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep4' label='Schedule' pageClass='{trainSamp.S4_Schedule}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep5' label='Notifications' pageClass='{trainSamp.S5_Notifications}' pageControllerClass='{trainSamp.NotificationsTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep6' label='Confirmation' pageClass='{trainSamp.S6_Confirm}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
</mx:Array>
</intg:stepActivities>
</intg:TrainActivityDef>

TrainControllerには、次のメソッドがあります。

- init(Train): トレインのロード時に呼び出されるメソッドで、トレインに関連付けられたモデルを制御できます。

- trainDone: ユーザーがトレイン内で「終了」または「取消」ボタンをクリックした場合に呼び出されるメソッドです。その時点で、トレインの状態(トレイン・モデルに格納されているもの)を調べて、次のいずれかを行うことができます。

- トレインを完了し、完了アクティビティを続行するかどうかを制御します。

- train.setStepメソッドを使用してトレインを前のステップに戻すなど、別のアクションを実行するか、またはトレインを終了して別のアクティビティを起動します。

トレイン内の各トレイン・ステップは、TrainStepPage (ページの特別なタイプ)を拡張し、コントローラ(TrainStepController)に関連付けられる必要があります。この場合、コントローラはPageControllerの特別なタイプで、トレイン・ページのコンテンツを初期化できるinit(Page)メソッドのサポートを含みます。ページはトレイン内にあるため、トレインは独自のページ・モデル(model.propertyなど)またはトレイン・モデルに格納されたデータ(train.model.propertyなど)のいずれかを参照する可能性があります。.

最後に、トレイン・ステップ・コントローラまたはトレイン・コントローラのいずれかで、コードは状態のチェックを行うことができ、トレインを完了できる場合、つまり、すべての必要な情報が入力された場合、コントローラ・コードはtrain.setMayFinish()を呼び出すことができます。

注意:
詳細は、デモ・サンプルのtrainSampの例を参照してください。

9.6.5 URLの定義

UrlActivityDefは、UIコンポーネント・クリック・ハンドラ(InfoItem、ImageLink、Buttonなど)からのinvokeActivityディレクティブを使用してアクセスできるURLを定義する能力をサポートしています。URLはすべてのリクエスト・パラメータを含む絶対URLとして表すことができ、パラメータは実行時に提供できます。実行時に置換される必要のあるURLパラメータを持つURLを定義するには、次のようにinputParamsを含むようにUrlActivityDefを定義します。

<mp:UrlActivityDef id='oracle' label='myExtApp' urlBase="http://www.extapp.com" >
<mp:inputParams>
<mp:InputParam name='pageId' />
</mp:inputParams>
</mp:UrlActivityDef>

URLを参照するには、invokeActivityディレクティブを使用して、UrlActivityDefのIDを指定し、パラメータと適切な値を含むbeanを渡します。提供されるパラメータは、リクエスト・パラメータとしてURLに追加されます。

<mp:InfoItem id="currentLoad" label="CPU Load"
value="{respData.result.getString('','Load')}"
click="{invokeActivity('extapp', bean('pageId','Load'))}"
/>

この例では、アクセスされるURLは、http://www.extapp.com&pageId=Loadです。

9.7 プラグインとのMPCUI実装のパッケージ化

プラグイン・ステージ・ディレクトリの/mpcuiサブディレクトリにMPCUIのメタデータ定義を置くことによって、プラグインにMPCUI実装を含めます。プラグインの構造およびパッケージ化の詳細は、第14章を参照してください。

メタデータのみの実装

MPCUIメタデータ・ファイルを次のディレクトリに置きます。

plugin_stage/oms/metadata/mpcui/my_mpcui_metatadata.xml

Flex実装

次のように、単一のメタデータ・ファイルおよびSWFファイル(カスタムUIであるFlexアプリケーション)を、/mpcuiサブディレクトリに含めます。

plugin_stage/oms/metadata/mpcui/my_mpcui_metadata.xml

plugin_stage/oms/metadata/mpcui/MyMpcui.swf

注意:
前の例では、プラグイン開発者として、要件に従ってXMLファイル(my_mpcui_metadata.xml)およびSWFファイル(MyMpcui.swf)の名前を設定します。

9.8 FlexベースUIへのメタデータベースUIの変換

メタデータベースUIのページを定義するために使用されるタグ言語は、Flexベースの実装でサポートされているタグ言語のサブセットです。そのため、メタデータベースUIがあり、Flex実装のみでサポートされている追加の機能を使用することを決定した場合、メタデータベースUIを使用して、FlexベースUIを作成します。メタデータは再利用できるため、再起動する必要はありません。

次の手順に従って、メタデータベースの実装用のメタデータ・ファイルで定義されたページを取得し、それをMPCUIアプリケーション(SWFファイル)の一部であるページにします。

1. メタデータ・ファイルから、変換するページを特定します。

2. ページのActivityDefinitionブロックをコピーし、そのブロックをMXMLファイルとして保存します。

3. 変換する各ページに対して、手順2を繰り返します。たとえば、4つのページ定義がある場合、4つのMXMLファイルを作成する必要があります。

4. メタデータ・ファイルから統合ブロックをコピーし、その統合ブロックをMXMLファイルとして保存します。

5. 各MXMLファイルの上部に、適切なMXMLネームスペースを追加します。

6. 9.6項「MPCUIアプリケーションの定義」で説明されているように、アプリケーションMXMLファイルを作成します。

7. 9.4項「MPCUIメタデータ・ファイルの作成」で説明されているように、Flexベースのメタデータ・ファイルを作成します。

9.9 システムのホームページの定義

システム・ターゲットとして識別されるターゲット・タイプの場合、ホームページがシステム・ターゲットにレンダリングされる3つのオプションがあります。

1. Enterprise Managerのデフォルトのシステムのホームページを表示します。
このページは、システム・メンバーの可用性およびインシデントのサマリーを表示します。次のいずれかの方法で、このオプションを有効化します。

- プラグインからMPCUIメタデータを省略します。

- プラグインにMPCUIメタデータを含め、MPCUIメタデータ・ファイルに次の<EmuiConfig>要素を含めます。
例: デフォルトのシステムのホームページの使用

<CustomUI target_type="demo_hostsystem"xmlns="http://www.oracle.com/EnterpriseGridControl/MpCui">

<EmuiConfig>
<use-framework-homepage>true</use-framework-homepage>
</EmuiConfig>
</CustomUI>

図9-1 デフォルトのシステムのホームページ

2. カスタマイズされたコンテンツを使用して、Enterprise Managerのデフォルトのシステムのホームページを表示します。
ホームページは、カスタマイズされたレイアウトで、多くの事前パッケージ済のリージョンを表示できます。手順1の例に示すように、デフォルトのホームページの使用は、メタデータによって制御されます。

リージョンの選択、およびホームページ上でのそのレイアウトは、systemUiIntegrationメタデータをプラグインに含めることによって指定されます。詳細は、9.9.1項「systemUiIntegrationメタデータの定義」を参照してください。

図9-2 カスタマイズを使用したシステムのホームページ

3. EDKに付属のMPCUI機能を使用して、カスタム・ホームページを構築します。
MPCUIメタデータまたはMPCUI Flexライブラリのいずれかを使用して、ホームページを構築します。システムまたは複合ターゲット・タイプに固有のMPCUIによって提供される、複数のデータ・サービスおよびUIコンポーネントがあります。詳細は、9.9.2項「システム・リージョンの定義」を参照してください。

図9-3 カスタマイズされたシステムのホームページ

9.9.1 systemUiIntegrationメタデータの定義

カスタマイズされたコンテンツを使用して、デフォルトのシステムのホームページを使用するには、次を実行します。

1. 次の情報を含む、ターゲット・タイプのsystemUiIntegrationメタデータXMLファイルを定義します。

- 優先レイアウト

- リージョンの追加または削除(リージョンを変更する場合のみ必要)
次の例に、systemUiIntegrationメタデータXMLファイルの例を示します。

systemUiIntegrationメタデータXMLファイルを制御するXMLスキーマ定義(XSD)の詳細は、ORACLE_HOME/sysman/emSDK/core/system/xml/SystemUiIntegration.xsdを参照してください。

例: systemUiIntegrationメタデータXML

<systemUiIntegration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/SystemUiIntegration.xsd"
xmlns="http://www.oracle.com/EnterpriseGridControl/SystemUiIntegration">

<general targetType="demo_hostsystem"
defaultLayout="twoColumnNarrowLeft"
showOptionalRegions="false"
topLevelTarget="true"
allowCreateFromSystemsUi="true"/>

<region taskFlowId="/WEB-INF/db/system/region/db-system-region-hihgavail-task-flow.xml#db-system-region-hihgavail-task-flow"
titleResBundle="oracle.sysman.db.rsc.inst.DBMsg"
titleNlsId="GENERAL"
titleDefText="General"
regionType="add"
displayOrder="1" />

<region taskFlowId="/WEB-INF/sdk/core/regions/events/console/incident-overview-task-flow.xml#incident-overview-task-flow"
titleResBundle="oracle.sysman.core.groups.ui.CoreGroupsUiMsg"
titleNlsId="ISSUE_OVERVIEW"
titleDefText="Issue Overview"
regionType="add"
displayOrder="4" />

<region taskFlowId="/WEB-INF/sdk/core/regions/jobs/jobs-activity-task-flow.xml#jobs-activity-task-flow"
titleResBundle="oracle.sysman.db.rsc.inst.DBMsg"
titleNlsId="JOB_ACTIVITY"
titleDefText="Job Activity"
regionType="add"
displayOrder="7" />

<region taskFlowId="/WEB-INF/db/system/region/db-system-region-dep-members-task-flow.xml#db-system-region-dep-members-task-flow"
titleResBundle="oracle.sysman.core.groups.ui.CoreGroupsUiMsg"
titleNlsId="DEPENDENT_TARGETS"
titleDefText="Dependent Targets"
regionType="add"
displayOrder="9" />

<region taskFlowId="/WEB-INF/sdk/core/regions/gccompliance/target/compliance-overview-task-flow-brief.xml#compliance-overview-task-flow-brief"
titleResBundle="oracle.sysman.core.groups.ui.CoreGroupsUiMsg"
titleNlsId="COMPLIANCE_SUMMARY"
titleDefText="Compliance Standard Summary"
regionType="add"
displayOrder="6" />

<region taskFlowId="/WEB-INF/sdk/core/regions/mos/patch/target-patch-recommendation-task-flow.xml#target-patch-recommendation-task-flow"
titleResBundle="oracle.sysman.db.rsc.inst.DBMsg"
titleNlsId="PATCH_RECOMMEND"
titleDefText="Patch Recommendations"
regionType="add"
displayOrder="12"/>

<region taskFlowId="/WEB-INF/config/adfc/blackout/region/emcore-groups-blackout-task-flow.xml#blackout_group_taskflow"
titleResBundle="oracle.sysman.core.groups.ui.CoreGroupsUiMsg"
titleNlsId="BLACKOUTS"
titleDefText="Blackouts"
regionType="add"
displayOrder="2" />

<region taskFlowId="/WEB-INF/sdk/core/regions/ecm/history/config-history-task-flow.xml#config-history-task-flow"
titleResBundle="oracle.sysman.db.rsc.inst.DBMsg"
titleNlsId="CONFIG_CHANGES"
titleDefText="Configuration Changes (24 Hours)"
regionType="add"
displayOrder="5" />

</systemUiIntegration>

2. systemUiIntegrationメタデータXMLファイルを次のディレクトリに保存します。

plugin_stage/stage/oms/metadata/systemUiIntegration

3. プラグインがすでにデプロイされている場合、emctl register oms metadataコマンドを使用して、プラグインのみのMPCUI部分を更新できます。emctl register oms metadataコマンドの詳細は、第14.7項を参照してください。

9.9.2 システム・リージョンの定義

MPCUIフレームワークは、システム・ターゲットの情報を表示するためにビルドされたホームページの一部として使用できる多くのリージョンをサポートしています。

9.9.2.1 システム・ステータス・リージョンの定義

システム・ステータス・リージョンは、システム・ターゲットおよびそのすべてのメンバーの最近の高可用性を表示します。リージョンは、次のタグを使用して、システムのホームページに含まれます。

<mp:StatusOverviewRegion id="statusOverview" height="50%"/>

図9-4 システム・ステータス・リージョン

9.9.2.2 システムの問題リージョンの定義

システムの問題リージョンは、システム内のすべてのターゲットのインシデントのサマリー数を表示します。リージョンは、次のタグを使用して、システムのホームページに含まれます。

<mp:IssuesOverviewRegion id="issuesOverview" height="50%"/>

図9-5 問題の概要リージョン

9.9.2.3 システムのジョブ・アクティビティ・リージョンの定義

システムのジョブ・アクティビティ・リージョンは、システム・ターゲットのそれぞれのプライマリ・ジョブ・ステータスのジョブの数、およびすべてのシステム・メンバーのサマリーを表示します。

<mp:JobsActivityRegion id="jobsOverview" height="40%"/>

図9-6 システムのジョブ・アクティビティ・リージョン

9.10 ナビゲーションの定義

MPCUIアプリケーションでのナビゲーションは、次のいずれかになります。

- アプリケーションで定義されたアクティビティ間。詳細は、9.10.1項「アクティビティへのナビゲーション」を参照してください。

- URLがEnterprise Managerの他のページまたは外部のURLを参照する、他のURLに対して。例:

http://www.example.com

詳細は、9.10.2項「URLおよびリンク」を参照してください。

9.10.1 アクティビティへのナビゲーション

9.5.3項「ナビゲーションの定義」では、メタデータ実装からのアクティビティ間のナビゲートへのアプローチについて説明しています。これらの説明は、MXMLで定義されたメニューまたは別のアクティビティからのアクティビティへのナビゲートに適用します。

この項では、コントローラ・コード、つまりアクティビティに関連付けられたActionScriptコード内から別のアクティビティへのナビゲート方法について説明します。

public function showProcessorHistory(even:MouseEvent):void
{
// show an example of invoking an activity (a dialog in this case) and
// getting information from the dialog when it returns (is closed)

// create the context to be passed to the dialog
var bean:Bean = new Bean('targetName',
ApplicationContext.getTargetName(), 'targetType',
ApplicationContext.getTargetType(),
'metric', 'CPUProcessorPerf', 'columns', ['CPUIdle'],
'period', 'LAST_DAY', 'title', 'Metric History');

page.invokeActivity('metricHistory', bean, processorHistoryDone);
}

前述の例は、page.invokeActivityメソッドを使用して別のアクティビティ(この場合はダイアログ)にリダイレクトするコントローラ・メソッドを示しています。

このメソッドと、MXMLページ内から使用可能なメソッド(9.5.3項「ナビゲーションの定義」で説明)との重要な相違点は、呼び出されたアクティビティの完了時に呼び出されるコールバック(この例ではprocessorHistoryDone)を関連付ける機能です。このコールバックは、現在のアクティビティのスコープ外への移動が引き起こされないアクティビティに対してのみ有用です。

9.10.2 URLおよびリンク

URLを介して、MPCUIアプリケーション内のコンポーネントから他の場所にナビゲートするには、多くの方法があります。Linkコンポーネントを使用して、ツールチップや場所など、HTML形式のリンクをレンダリングします。

- 絶対URL (Enterprise Managerの外部)
絶対URLへのリンクを指定するためにUrlAbsクラスを使用すると、このクラスのインスタンスは、Link宛先に関連付けられるか、invokeActivityメソッドを介してアクセスすることができます。

In the Page Class:
<comp:Link id=”gotoOracle” label=”Oracle” destination=”{model.oracleUrl}” />

In the Controller Class:
page.setModel(”oracleUrl”, new UrlAbs("http://www.oracle.com", "Oracle"));

invokeActivityを使用した代替方法は、次のとおりです。

In the Page Class:
<mx:Button label=”Go To Oracle” click=”{invokeActivity(model.oracleUrl)}” />

In the Controller Class:
page.setModel(”oracleUrl”, new UrlAbs("http://www.oracle.com", "Oracle"));

- ページ定数を使用したEnterprise Managerページへのリンク
絶対URLに加えて、MPCUIフレームワークは、Link宛先から参照できるか、またはクリック・ハンドラの一部としてinvokeActivityメソッドに渡すことができる、UrlEmオブジェクトを構築することによって、既知のEnterprise Managerのページにリンクする機能をサポートしています。リファレンス・ガイドには、使用可能なすべてのページ定数のoracle.sysman.emx.Constantsクラス、およびURLを生成するために指定する必要がある対応するパラメータの完全なリストが記載されています。

// setup link to availability page
var availLink:UrlEm = new UrlEm(Constants.PAGE_AVAILABILITY,
[new InputParam(Constants.P_TARGET_NAME,
ApplicationContext.getTargetName()),
new InputParam(Constants.P_TARGET_TYPE,
ApplicationContext.getTargetType()),
new InputParam(Constants.P_PAGE_TYPE,
Constants.BY_DAY)]);
page.setModel("availPageLink", availLink);

- 定数が定義されていないEnterprise Managerページへのリンク
UrlEmは、oracle.sysman.emx.util.Constantsクラス内のページ定数を介してサポートされているページにアクセスするためにのみ使用できます。現在定数が定義されていないページの場合、ページにアクセスするには、ページのADFビューID値を含むUrlRelオブジェクトを作成します。

たとえば、Bare Metal Provisioningダッシュボードにアクセスするには、次のようにページのビューID (/faces/core-bmp-dashboard)を指定します。

var url:UrlRel = new UrlRel("/faces/core-bmp-dashboard", null);

ページURLで特定のADFページのビューIDを見つける最も簡単な方法は、http://<server:host>/em/に続く文字列です。

- Enterprise Managerのターゲットのホームページへのリンク
Enterprise ManagerのターゲットのホームページへのURLを生成することは、特別な場合です。この場合、静的UrlEm.homepageUrlメソッドを使用します。

page.setModel("relatedHostLink", UrlEm.homepageUrl(host.name, host.type));

- DIRECT_URLを使用した動的URL
実行時にデータ・サービスから動的にURLを作成する必要がある場合、次のオプションが必要になることがあります。DIRECT_URLというアクティビティIDは、特別な場合のために予約されており、フレームワークによって提供されます。この場合UrlActivityDefが宣言されていませんが、かわりにinvokeActivityディレクティブから、urlプロパティを指定するbeanが渡されます。このプロパティのために提供される値は、コンポーネントをクリックしたときに誘導されるURLとして使用されます。

次の例では、URLを取得するために、データ・サービスrespDataが問い合せられます。必要なURLを取得するために、これは、ページ内で使用されているどのようなデータ・サービスにも置換されます。これはMetricValuesDataServiceまたはSqlDataServiceにすることができます。

<mp:InfoItem id="currentLoad" label="CPU Load"
value="{respData.result.getString('','Load')}"
click="{invokeActivity('DIRECT_URL',
bean('url',respData.result.getString('','Load')))}"
/>

9.10.3 外部アプリケーションへのリンクの追加

Enterprise Managerの外部の他のアプリケーションにリンクする機能は現在サポートされていません。

9.11 Enterprise Managerデータへのアクセス

MPCUIフレームワークは、Enterprise ManagerのWebサービス・レイヤーへのActionScriptインタフェースを介して、Enterprise Managerのサービスにアクセスできます。必要な場合、これらのクライアント・サービスに直接アクセスできます。多くの場合、Enterprise Managerサーバーと相互作用して管理UIで表示する適切なデータを取得するためにサービスを利用するUIコンポーネントを介して、サービスはさらに抽象化されます。

次の各項では、MPCUIフレームワークに含まれる様々なサービスについて説明し、これらのサービスをコードから使用する方法の簡単な例を示します。

注意:
EDKでは、Flex UIから任意のWebサービスへのアクセスはサポートされていません。Webサービスにアクセスする適切な方法は、メトリック、ジョブ、またはfetchletによって起動されるリモート・コマンドとして、サービス・ホストに常駐する管理エージェントを介します。

9.11.1 メトリック・サービス

MPCUIでは、リアルタイムまたは履歴のいずれかの形式でManagement Serverからメトリック・データを取得するための単純なサービスが提供されます。リアルタイム・データの場合、Oracle Management Serviceは管理エージェントにアクセスしてデータを取得するため、リアルタイムでメトリックを効率的に収集できる場合はこれを使用します。

9.11.1.1 メトリック値サービスの透過的な使用

通常、メトリック値サービスは、グラフに表示するメトリック(折れ線グラフの場合はデータの周期性)を指定することによって、グラフから透過的に使用されます。

<mp:LineChart id="cacheChart"
width="100%" height="100%"
metricName="MSSQL_MemoryStatistics"
metricColumns="['cache_hit_ratio']"
timePeriod="REALTIME" interval="15" >
</mp:LineChart>

この場合、コール元はサービスと直接相互作用することはありません。MPCUIフレームワークは、サービスを使用して、グラフのデータを取得します。

表コンポーネントの場合、次のようにメトリックを直接指定することもできます。

<c:Table id="processesTable" width="100%" height="100%"
metricName="CPUProcessesPerf"
metricColumns="['ProcUser', 'ProcCPU', 'ProcCmd']"
timePeriod="REALTIME"
interval="30"
>
<c:columns>
<mx:AdvancedDataGridColumn width="50" dataField="key" />
<mx:AdvancedDataGridColumn width="100" dataField="ProcUser" />
<mx:AdvancedDataGridColumn width="80" dataField="ProcCPU" />
<mx:AdvancedDataGridColumn width="400" dataField="ProcCmd" />
</c:columns>
</c:Table>

9.11.1.2 MetricValuesDataServiceタグの使用

ページ(またはダイアログ)内でMetricValuesDataServiceタグを使用して、表コンポーネントにメトリック・データを表示し、表のdataProvider属性はデータ・サービスに設定されます。その後、メトリック・サービスからのデータは表に表示され、サービスからのデータは複数のコンポーネント(たとえば、表とリンクまたはラベル)の間で共有されます。

例: MetricValueDataServiceタグの使用

<intg:services>
<dataserv:MetricValuesDataService id="mv1" flattenData="true"
targetName="{ApplicationContext.getTargetName()}"
targetType="{ApplicationContext.getTargetType()}"
metricName="Load" columns="{['cpuUtil', 'cpuUser', 'cpuKernel']}"
timePeriod="{MetricCollectionTimePeriod.LAST_DAY}"
/>
</intg:services>
<comp:Table id="mvTable" dataProvider="{mv1}" />

9.11.1.3 コントローラからのメトリック値サービスの呼出し

コントローラ内からメトリック値サービスを呼び出すことができます。これは、サービスを使用する最も柔軟性のある方法で、UIで表示できるよう、最終結果のモデルへの追加前に、必要に応じてコール元はデータを操作できます。

メトリック・サービスからの個々の値の取得(MXML)

Label、InfoItemまたはそのような他のコンポーネントで表示するために、メトリック・サービスから個々の値を取得できます。

<ds:MetricValuesDataService id="procData"
flattenData="true"
targetName="{appModel.target.name}"
targetType="{appModel.target.type}"
metricName="CPUProcessorPerf"
columns="{['CPUIdle']}"
timePeriod="REALTIME"
interval="15" />

値を表示するコンポーネントから、次のように記述します。

<components:InfoItem label="CPU(0) Idle %"
value="{procData.result.getString('0','CPUIdle')}" />

例: コントローラからのメトリック・サービス

var cpuPerf:Metric =
ApplicationContext.getTargetContext().getMetric("CPUPerf");
var cpuPerfSel:MetricSelector = procMetric.getSelector(
['system','idle', 'io_wait']);
cpuPerfSel.getData(cpuDataHandler, MetricCollectionTimePeriod.CURRENT,
page.getBatchRequest());

特定のメトリックのMetricSelectorを作成することによってメトリック・サービスを使用し、そのセレクタでgetDataメソッドを呼び出します。getDataメソッドを呼び出すと、次の2つのパラメータが渡されます。

- リクエストの結果を使用して呼び出されるハンドラ

- 選択の周期性

サービス・リクエストが完了すると、成功またはエラーのどちらの場合でも、ハンドラが呼び出され、リクエストの結果およびフォルトを渡します。データ結果の処理を続行する前に、コール元は、フォルトの存在を確認する必要があります。

例: メトリック・サービスの結果ハンドラ

public function cpuDataHandler(cpuData:MetricResultSet,fault:ServiceFault):void
{
if(fault != null) return;   // handle this better!

var dataPoint:TimestampMetricData = cpuData.results[0];
var collectionTime:Date = dataPoint.timestamp;
var idleTime:Number = dataPoint.data[0]['idle'];
var systemTime:Number = dataPoint.data[0]['system'];
var ioWaitTime:Number = dataPoint.data[0]['io_wait'];
}

データにアクセスするには、dataService.result.getString('key'、'column')への参照が設定されている必要があります。メトリックが複数のキーをサポートする場合に、サンプルで返される行を識別するために、キーが必要です。メトリックにキー列が含まれていない場合、キー値は''またはNULLとして渡されます。列は、メトリック定義から取得されるデータ列です。

各データ・ポイント(TimestampMetricData)には、データ・ポイントが収集されたときに知らせるタイムスタンプ・メンバーがあり、そのメトリックの表を効率的にするデータ配列が含まれています。

メトリックに複数のキー(プロセス、ファイルシステムなど)がある場合、データ配列には、複数の行(各キーに1つ)があり、各行にはリクエストされたデータ列があります。前の例では、データ配列には、各プロセスに対して1つの行が含まれています。メトリックにキー列が含まれていない場合、データ配列には、単一の行のみが含まれています。

データ配列内の各行は、KeyMetricDataオブジェクトです。メトリックにキーがある場合、metricKeyプロパティは、行が適用するキーを示します。メトリックのキーがない場合、このプロパティは無視されます。KeyMetricDataは、列の値を取得するためにその列の名前を使用して索引付けできる動的オブジェクトです。

前の例では、コードはデータ配列の中の行を進み、各行(KeyMetricData)で、データから'ProcUser'列を取得します。元のリクエストにも'ProcCPU'および'ProcCmd'列が含まれていたため、これらは、同じ方法、つまり、data['ProcCPU']またはdata['ProcCmd']でアクセスできます。

9.11.1.4 メトリック・データソース・フィルタ

MXMLのMetricValuesDataServiceまたはActionScriptのMetricSelectorを介してメトリック・データ・サービスを使用する場合、サービスによって返されるデータのセットを、いくつかの追加の選択基準に従ってフィルタ処理するようにリクエストすると便利な場合があります。これをコントローラ内で実行するには、カスタム・データソースを実装し、コントローラでメトリック・サービスの結果をフィルタ処理し、カスタム・データソースに結果を移入します。

サービス自体が結果をフィルタ処理し、フィルタ処理されたセットのみをクライアントに返して表示するようにするリクエストに適用できるメトリック・フィルタを定義することもできます。

メトリック・フィルタ(MetricPredicateと呼ぶ)は、個々の列フィルタ、フィルタ演算子、基準によるオプションの順序など、いくつかの要素で構成されています。各列フィルタには、フィルタ処理する列、フィルタ処理に使用する演算子、およびフィルタ処理での照合に使用する値を指定します。列フィルタは、GT、LT、GE、LEなど、数値データ用の標準的な演算子をサポートしています。

文字列データの場合、演算子には、EQ、NEおよびREGEXが含まれます。REGEX演算子は、各値とフィルタ入力値をパターンとして使用して、正規表現文字列一致を実行します。正規表現パターン一致はJava regexライブラリを使用して行うため、パターンは、Javaパターン一致の要件に従っている必要があります。

条件演算子は、列フィルタを組み合せて1つの式にし、AND (すべての列フィルタを満たす必要がある)またはOR (いずれかの列フィルタを満たせば十分)をサポートしています。条件による順序には、結果を順序付けする列、および制限する行数を指定します。これは、上位Nの結果を希望する場合に有用です。

メトリック・フィルタを作成する場合、列フィルタはオプションにでき、順序条件は指定したもののみにできます。あるいは、順位条件はオプションにでき、列フィルタは指定したもののみになります。メトリック・フィルタを作成する場合、列フィルタと順序条件に含まれるすべての列は、同じメトリックの一部である必要があり、このメトリックは、対応するメトリック・データ・サービス・リクエストで選択するメトリックである必要があります。複数のメトリックの列を組み合せて同じフィルタにすることは、サポートされていません。

次の例は、MetricValuesDataServiceタグ上でメトリック・フィルタを定義するプロセスを示しています。データ・サービス・タグには、次のように対応するメトリック・フィルタ(MetricPredicate)にバインドされる条件プロパティが含まれます。

<mp:MetricValuesDataService
id="fsMetDs"
metricName="FilesystemPerf"
columns="['MountPoint','Utilization','FreeKB','UsedKB','TotalKB','FSType',
'FSName']"
targetName="{appModel.targetName}"
targetType="{appModel.targetType}"
timePeriod="LAST_HOUR"
predicate="{model.fsFilter}"
/>

ページに関連付けられたコントローラでは、フィルタ列、演算子、および条件による順序を指定することで、フィルタが作成されます。次の例では、前述のサービスからのファイル・システム・メトリック・リクエストはフィルタ処理されて、TotalKBサイズが1000kbより大きく、.netのファイル・システム名(FSName)上の正規表現一致を備えたファイル・システムになります。最後に結果は、最初の5つのファイル・システムに制限されたFreeKB列(降順)によって順位が設定されます。

private function createFsFilter():MetricPredicate
{
var filters:Array = new Array(
new MetricFilter('TotalKB', MetricOperator.GT, 1000),
new MetricFilter('FSName', MetricOperator.REGEX, '(.*)net(.*)') );
var orderBy:MetricOrderBy = new MetricOrderBy('FreeKB',
MetricOrderBy.DESC, 5);
var predicate:MetricPredicate = new MetricPredicate(filters,
MetricOperator.AND, orderBy);

return predicate;
}

9.11.2 カスタム・データソース

グラフのデータを取得するために使用できるメトリックとSQLデータソース(およびサービス・タグ)、表およびその他のコンポーネントに加えて、これらのコンポーネントの独自のカスタム・データソースを構築できます。他のMPCUIサービスからデータを取得し、表示前にそれを操作する場合に、これは役立ちます。たとえば、2つのメトリックのデータを結合するには、何らかの方法でデータをフィルタ処理するか、またはデータを集計します。カスタム・データソースを作成するには、コントローラ・コードを使用して、ソース・データを取得してから、データソースを作成するようにそれを操作する必要があります。カスタム・データソースでは、次の重要な動作が実行されます。

- データの表示時にUIコンポーネントで役立つように、データソースに含まれるデータの列記述子を設定します。記述子には、データ型、表示ラベルなどのプロパティが含まれています(凡例または列ヘッダー用)。

- 時系列グラフでデータの表示を可能にするための、複数のデータ・ポイントをサポートします。

- データソースの基礎となる情報が変更されると、コンポーネントは更新されたデータを表示できるようになり、データソースのキャッシュおよび変更をサポートします。

9.11.2.1 カスタム・データソースの作成

通常、カスタム・データソース(oracle.sysman.emx.model.CustomDataSource)は、Page.setModelを使用して、ページ・モデルで構築および設定されます。データソースを構築する際には、次を示すフラグとともに、データソースを構成する列(またはデータ項目)を指定する必要があります。

- キーが含まれているようにデータを処理する場合
データソースが棒グラフまたは列グラフなどのキーを適用するグラフで表示される場合のみ、キーを指定します。データが表形式のビューや非グラフ・コンポーネントで表示される場合、列の1つをキーとして特定する必要はありません。

- 複数のタイムスタンプ・サンプルが含まれているようにデータを処理する場合
データが時系列グラフ(LineChart)で表示され、MPCUIポーリング・メカニズムを使用して一定期間にデータソースに追加されるデータ・サンプルがある場合のみ、データがタイムスタンプを含めるよう指定します。

public function CustomDataSource(columns:Array, hasKey:Boolean=false, isTimeSeries:Boolean=false)

列の配列は、データソースに含まれるデータ項目を指定します。この配列は次のいずれかになります。

- 各文字列がデータ項目のラベルを指定する、文字列の配列

- 列記述子(QueryColumDescまたはCustomColumnDescのいずれか)の配列
列記述子を指定すると、列のラベルおよびデータ型を指定できSpecifying (QueryColumnDescの場合)、列がソート可能な場合など、列幅などの表形式の表示でデータを表示するための追加のプロパティを指定できます(CustomColumnDescの場合)。

次の例に、SqlQueryServiceへのリクエストから返されるデータを処理するために設定されるコントローラでの結果ハンドラを示します。

例: SQLQueryServiceへのリクエストから返されるデータの処理

// execute a SQL query and then massage the data for display
var query:SqlQueryService = new SqlQueryService('CPU_USAGE',
[SqlQueryInput.createParam("TARGET_GUID",
ApplicationContext.getTargetContext().guid)]);
query.execute(cpuQueryHandler, page.getBatchRequest());
}

public function cpuQueryHandler(result:SqlQueryResultSet,
fault:ServiceFault):void
{

if(fault != null || result.getError() != null) return;

cpuSqlData = new CustomDataSource([
new QueryColumnDesc("Processor", QueryColumnType.STRING),
new QueryColumnDesc("Idle Percentage", QueryColumnType.DECIMAL),
new QueryColumnDesc("Used Percentage", QueryColumnType.DECIMAL)
], true);
page.setModel("cpuSqlData", cpuSqlData);

if(result.rows != null)
{
for(var r:int=0; r<result.rows.length; r++)
{
var id:String = result.getString(r, 'CPU Number');
var idle:Number = result.getNumber(r, 'Idle %');
var used:Number = result.getNumber(r, 'Used %');
cpuSqlData.setRow("Processor #"+id, idle, used);
}
}
}

前の例では、データソースは3つの列で構築され、データ型が指定されます。コンストラクタへの2番目のパラメータは、キーが含まれているようにデータを処理することを示すtrueとして渡されます。この場合、リストの最初の列は、常にキーとして処理されます。データ内の別の位置を指定できません。

最後に、SqlQueryResultSet (result.rows)の各行に対して、コードでは、カスタム・データソースに行を構築します。

関連項目:
処理の完全な例は、EDKのdemo_hostsample,ProcessesPageController.asを参照してください。

9.11.2.2 UIコンポーネントへのデータソースのバインディング

ページ・レイアウト(たとえばProcessesPage.mxml)で、データは、dataProviderプロパティを使用して、UIコンポーネントにバインドされます。次の例では、cpuSqlTableに注意してください。これは、cpuSqlDataカスタム・データソースにロードされたデータを表示する表です。

例: UIコンポーネントへのデータソースのバインディング

<mp:Region id="cpuUtilRegion" width="100%" height="100%" title="CPU Utilization" >
<mx:HBox width="100%" height="100%">
<mp:LineChart id="cpuUtilChart" width="60%" height="100%"
dataProvider="{model.cpuChartData}"
legendLocation="right" showLegend="true" />
<mp:Table id="cpuSqlTable" dataProvider="{model.cpuSqlData}"
width="40%" height="100%"/>
</mx:HBox>
</mp:Region>

図9-7に、前の例によって表示される結果を示します。

図9-7 cpuSqlDataカスタム・データソースにロードされたデータを表示する表

9.11.2.3 カスタム・データソースの更新

データソースはUIコンポーネントにバインドされるため、更新すると、UIは新しいデータを自動的に表示します。カスタム・データソースを更新するには、次の2つのオプションがあります。

1. CustomDataSource.setRowまたはsetRowsメソッドのいずれかを呼び出します。
これらのメソッドは、タイムスタンプ付きデータを含まないデータソースがある場合に使用されます。この場合、データソースに含まれる行を変更します。

2. データソースがタイムスタンプ付きデータを含む場合、CustomDataSource.setTimestampedRowsメソッドを呼び出します。
このメソッドは、新しいサンプルを時系列に追加し、通常、データソースを折れ線グラフに表示する場合に使用されます。このメソッドを呼び出して新しいサンプルを追加すると、新しい時間スライスが折れ線グラフに表示されます。

これらのメソッドの詳細は、APIリファレンスおよびカスタム・データソースを使用した例のdemo_hostsampleを参照してください。

9.11.3 計算されるデータソース

Enterprise Managerメトリック収集フレームワークは、カウンタからの値を計算する能力をサポートしています。ただし、値が正確であると保証されるのは、エージェントが収集した履歴データから取得され、リポジトリに格納されている場合のみです。リアルタイム・リクエスト(たとえば、timePeriodがREALTIMEに設定されているMetricValuesDataService)からこれらの値を問い合せしようとすると、予期しない結果が生じることがあります。計算される値は、リアルタイム収集用に格納されたカウンタではなく、履歴収集時に格納された最後のカウンタを使用するためです。したがって、計算されたメトリックのリアルタイム表示を必要とする場合、計算されたデータソースの使用の検討が必要になることがあります。

計算されたデータソースは、2つのメトリックからのデータを組み合せて1つの表示にできます。これが有用なのは、表示するメトリックが、すでに説明した格納済のカウンタを使用した計算式に基づいている場合です。

このデータソースを使用するには、通常2つのメトリックを定義します。1つのメトリックは、収集されて履歴用にリポジトリに格納される値を計算します。このメトリックは、格納されているカウンタを使用する計算式を含んでいます。もう1つのメトリックは、カウンタ自体のみを収集する一時メトリックです。RAWカウンタ値は通常有用ではないため、このメトリックは履歴目的では収集されません。

UIコードで計算されたデータソースを作成する場合、両方のメトリック・セットが必要です。1番目のメトリックは、計算された形式でメトリックを指定し、ソース・メトリックと呼ばれます。データソースは、これらのメトリックを使用して、列のラベルなどのデータの表示属性を定義し、必要な履歴データも取得します。

/**
* Construct a data source that shows the CPU-System% and CPU-Idle% from historical
* data and then appends data to it from a real-time data source that acquires
* counter columns and derives the values from the counters.  First declare the
* columns to be shown on the chart, the labels will be based on the metric-column * labels and will obtain the historical data that initially populates the chart.
*/
var srcCols:Array = [
new ComputeColumnDesc( ApplicationContext.getTargetContext(), "CPUPerf",
"system"),
new ComputeColumnDesc( ApplicationContext.getTargetContext(), "CPUPerf",
"idle"),
];

/**
* These are the counter columns; they do not need to be from the same metric as
* the source columns, however the counter columns must be from the same metric as
* all other counters.
*/
var ctrCols:Array = [
new ComputeColumnDesc( ApplicationContext.getTargetContext(), "CPUPerf",
"systemCounter"),
new ComputeColumnDesc( ApplicationContext.getTargetContext(), "CPUPerf",
"idleCounter"),
];

/**
* create the data source and pass the source columns, the counter columns and a
* pointer to the compute function.  Finally pass the page the data source will be
* consumed on and the interval to be used to populate the data.  The compute
* function will be called at each interval.
*/
var computedDataSource:ComputeDataSource = new ComputeDataSource(srcCols, ctrCols, computeFunction,
page, PollingInterval.EVERY_15_SECONDS);
page.setModel("compDataSource", computedDataSource);

計算されたデータソースは、履歴データを求めるリクエストを送り、指定した間隔でカウンタのポーリングを行います。サンプルが取得されるたびに、計算関数が呼び出され、計算されたデータソースと、カウンタ・メトリック用の最新の値セットを含むデータ・ポイント(TimestampMetricData)に参照が渡されます。

計算関数は、カウンタを使用して値を計算でき、ソース列で特定されるメトリックと同じ名前を持ったメトリックを含むデータ・ポイントを返す必要があります。前の例では、カウンタ列はsystemCounterとidleCounterですが、計算関数から返されるデータ・ポイントは、ソース列systemとidleの値を含んでいる必要があります。

public function computeFunction(ds:ComputeDataSource, dp:TimestampMetricData):TimestampMetricData
{
// retrieve the counter values from the data point passed; could also retreive
// any necessary context from the data source
var systemCounter:Number = dp.data[0]["systemCounter"];
var idleCounter:Number = dp.data[0]["idleCounter"];

// compute values; this is where you would replicate the logic in your
// computed metric
var systemValue:Number = systemCounter+Math.floor(Math.random()*(50 - 20 + 1)) + 20;
var idleValue:Number = idleCounter+Math.floor(Math.random()*(120 - 80 + 1)) + 80;

// you must now return a TimestampMetricData object.  You can use the one passed and return
// it, but to do so you must add columns to the data point.  The index reference [0] is
// a reference to the fact that the datapoint could have multiple rows, one for each key
// but the example does *NOT* support multiple keys.  Also, if you created a new
// data point to return you would need to set the timestamp of the datapoint
// correctly, using the timestamp of the sourced datapoint
dp.data[0]["system"] = systemValue;
dp.data[0]["idle"] = idleValue;

return dp;
}

9.11.4 パッケージ化されたSQLおよび問合せサービス

MPCUIフレームワークがUIコンポーネントまたは単純化されたサービス(メトリック・サービスなど)のいずれかを介して最も有用なデータにアクセスする場合、必然的に、より非構造化された形式で管理リポジトリに格納された他の情報にアクセスできる必要があります。MPCUIフレームワークは、このアクセスのためにSQL問合せサービスを提供します。

SQL問合せサービスによって、プラグインを使用してSQL文をパッケージ化し、その文をWebサービスを介して実行し、データをカスタムUIのUI要素にバインドすることができます。SQL問合せサービスでは、セキュリティ・リスクが発生する可能性があるため、無制限なAPIやスクリプト化可能なAPIを管理リポジトリに提供しません。

SQL問合せサービスは、Enterprise Managerの拡張フレームワークを介して管理リポジトリにデプロイされたSQL文のみを実行できます。これにより、文がEDKビューのみにアクセスできることを確認します。これにより、多くの柔軟性が提供され、Enterprise ManagerのパートナEDKビューとともに、独自のビュー(Enterprise Manager構成データから生成されたビューなど)からデータにアクセスする機能が提供されます。

SQLDataServiceタグを使用して、ページ・コード内の問合せサービスを完全にカプセル化できます。このタグによって、コール元がSQLを処理し、パラメータを渡すように指定できます。このデータ・サービス・オブジェクトは、表またはサポートする他のUIコンポーネントにバインドできます。

例: SQLDataServiceタグの使用

<intg:services>
<ds:SQLDataService id="dbSummaryDS" queryID="DATABASE_SUMMARY"
properties="{model.dbSummProp}" />
</intg:services>

<t:Table id="dbSummaryTable" dataProvider="{dbSummaryDS}">
<t:columns>
<mx:AdvancedDataGridColumn width="100" dataField="Name"/>
<mx:AdvancedDataGridColumn width="100" dataField="Status"/>
<mx:AdvancedDataGridColumn width="500" dataField="Database File Location"/>
</t:columns>
</t:Table>

SQL DataServiceからの個々の値の取得

コンポーネント(LinkやLabelなど)内で使用するためにSQLdataServiceから返される特定のセルを参照するには、次のタイプの参照が使用されます。

<ds:SQLDataService id="ids" queryID="INSTANCE_INFO"
properties="{props('TARGET_GUID',appModel.target.guid)}" />

<components:InfoItem label="CPU Model"
value="{ids.result.getString(0,'CPU Model')}" />

データ・サービスへの参照は、dataService.result.getString(rowIndex,'column')を介して行い、rowIndexは問合せから返される行で、columnは元のSQL問合せで指定される列の名前です。

問合せサービスは、コントローラ内から呼び出すこともでき、表示前のデータの操作方法の点で、より多くの柔軟性が提供されます。問合せサービスにアクセスする2つのAPIがあります。

- SqlQueryインタフェース
SqlQueryインタフェースによって、単一のSQL問合せが処理を行い、バインド変数を渡し、返される結果セットを受け取ることができます。結果セットでは、JDBC ResultSetのインタフェースとかなり類似したインタフェースが提供されます。

例: SqlQuery APIの使用

var getInfoSvc:SqlQuery = new SqlQuery("GET_TARGET_INFO",
[["TARGET", name],["TYPE", type]]);   // bind variables
getInfoSvc.execute(getTargetInfoHandler);

public function getTargetInfoHandler(resultSet:ResultSet, fault:ServiceFault):void
{
var target:Target;
if(fault == null)
{
if(resultSet != null && resultSet.getError() == null)
{
target.setGuid(resultSet.getBase64Binary(0, "TARGET_GUID"));
target.setTypeMetaVer(resultSet.getString(0, "TYPE_META_VER"));

var props:Array = new Array();
for(var i:int=1; i<Target.NUM_PROPERTIES+1; i++)
props.push(resultSet.getString(0, "CATEGORY_PROP_"+i));
target.setCatProperties(props);
}
}

- BulkSqlQueryインタフェース
バインド変数は、名前によって参照され、パッケージ化されたSQL文で表される変数に対応します。

SELECT target_guid, type_meta_ver, category_prop_1, category_prop_2,
category_prop_3, category_prop_4, category_prop_5
FROM mgmt_targets
WHERE target_name = ?TARGET?
AND target_type = ?TYPE?

多くの問合せを単一のリクエストで処理できる場合、BulkSqlQueryインタフェースを使用できます。各問合せは、一括問合せに追加する必要があり、処理するすべての問合せが追加されると、BulkSqlQuery.executeメソッドが呼び出され、結果を使用して呼び出される結果ハンドラに渡されます。

SqlQueryの結果ハンドラが、処理された問合せの単一のSqlQueryResultSetに渡されると、BulkSqlQueryの結果ハンドラがBulkResultSetに渡されます。その後、問合せの追加時に指定されたリクエストIDを使用して、各問合せのSqlQueryResultSetを取得する必要があります。

同じ問合せを、同じ一括リクエストの一部として、異なるバインド変数で複数回処理できる場合をサポートするには、別のリクエストIDが必要です。

例: BulkSqlQuery APIの使用

var guidParam:Array = [["TARGET_GUID", ApplicationContext.getTargetContext().guid]];

var bulkQuery:BulkSqlQuery = new BulkSqlQuery();
bulkQuery.addQuery("INSTANCE_INFO", "INSTANCE_INFO", guidParam);
bulkQuery.addQuery("PROCESS_STATES", "PROCESS_STATES", guidParam);
bulkQuery.addQuery("PROCESS_INFO", "PROCESS_INFO", guidParam);

bulkQuery.execute(pageDataHandler, page.getBatchRequest());

public function pageDataHandler(bulkResult:BulkResultSet, fault:ServiceFault):void
{
var info:SqlQueryResultSet = bulkResult.getResultSet("INSTANCE_INFO");

9.11.4.1 パッケージ化されたSQLの記述に関するガイドライン

MPCUI用にパッケージ化されたSQLを記述する際は、次のガイドラインに従ってください。

- パッケージ化されたSQLは、パートナEDKの一部であるビューにのみアクセスできます。これには、構成メトリック定義の結果として生成されるビューが含まれます。

- データの変更(更新または削除)を試行するSQLは、プラグイン・デプロイメントの際にMRSによってフィルタ処理されます。

- データ定義言語(DDL)を試行するSQL文は、MRSによって除外され、許可されません。

- PL/SQLプロシージャへのアクセスはパッケージ化されたSQLから許可されていないため、匿名PL/SQL (begin、endコンストラクトなど)は許可されません。

- バインド変数は、テキスト識別子によって識別し、接頭辞および接尾辞に?を付ける必要があります。たとえば、?TARGET_TYPE?のようになります。

- バインド変数は、大/小文字が区別されません。

- 問合せサービスでは、結果セットのサイズが1000行または100,000バイトに制限されるため、問合せで返される可能性がある結果セットのサイズを制限するよう注意してください。

9.11.4.2 プラグインでのSQLのパッケージ化

MPCUIコードで使用されるSQL文は、SqlStatements要素を使用したMPCUIメタデータでパッケージ化されます。

MPCUIメタデータでのSQL文の場所の詳細は、9.4.1項「MPCUIメタデータ要素の概要」を参照してください。MPCUIメタデータXSDの詳細は、EDKメタデータのAPIリファレンスを参照してください。

9.11.4.3 ターゲット・タイプ情報の取得

プラグインUIが、表示名などの関連のターゲット・タイプに関する情報を必要とし、また、そのターゲット・タイプの特定のインスタンスに関する詳細を必要としない場合、TargetFactoryは、このサマリー情報を取得する関数を提供します。

TargetFactory.getTargetTypeInfo関数は、ターゲット・タイプの表示名を含むTargetTypeInfoオブジェクトを返します。この関数を呼び出すと、内部targetTypeが提供された(たとえば、oracle_database) TargetTypeInfoオブジェクトとハンドラ関数が渡されます。ハンドラは、TargetTypeInfoと、リクエストの処理中に発生した障害とともに呼び出されます。

var typeInfo:TargetTypeInfo = new TargetTypeInfo("oracle_database");
TargetFactory.getTargetTypeInfo(typeInfo, getTypeInfoHandler);
}

private function getTypeInfoHandler(typeInfo:TargetTypeInfo,
fault:ServiceFault):void
{
if(fault != null)
{
MpLog.logError(fault, "Getting Target Type Info");
return;
}

MpLog.info("Target Display Label for (oracle_database):
"+typeInfo.typeDisplayName);
}

9.11.5 ターゲット・サービスの操作

以前に説明したサービスに加えて、MPCUIフレームワークでは、ターゲット・オブジェクト(oracle.sysman.emx.model.Target)の不可欠な部分である他の多くのサービスが提供されます。MPCUIアプリケーションの実行時に、ApplicationContext.getTargetContext()コールによって、プライマリ・ターゲットのターゲット・インスタンスが返されます。

関連するターゲットに対して、他のターゲット・インスタンスを構築できます。どちらの場合も、次の方法を使用して、MPCUIサービス・レイヤーを介してこれらのターゲットの追加情報を取得します。

9.11.5.1 ターゲット・プロパティ・サービス

ターゲット・クラスのインスタンスに対して、getTargetInfo()メソッドを呼び出して、そのターゲット・インスタンスに関連付けられたターゲット・プロパティを取得できます。返されるターゲット情報は、guid、catProperties、typeMetaVer、timezoneRegionなどのターゲット・インスタンスのプロパティを移入します。

これらのプロパティの詳細は、EDKのターゲット・クラスのドキュメント(/doc/partnersdk/mpcui/emcore/doc/oracle/sysman/emx/model/Target.html)を参照してください。

getTargetInfo()メソッドを呼び出す場合、ハンドラを指定する必要があります。このハンドラは、targetInfoサービスが返す際に呼び出されます。これは、完全に移入されたターゲット・インスタンス、および、ターゲット・プロパティを取得するためのリクエストの処理中に発生したエラーを含めるよう設定されたフォルト・オブジェクトに渡されます。

var target:Target = ApplicationContext.getTargetContext();
target.getTargetInfo(targetInfoHandler);

public function targetInfoHandler(target:Target, fault:Fault):void

注意:
ApplicationContext.getTargetContext()の場合、アプリケーションの起動時に、現在のターゲット情報がロードされ、ターゲット・プロパティが変更されたことを考慮しない場合、そのターゲット・インスタンスのgetTargetInfo()を呼び出す必要はありません。

9.11.5.2 関連ターゲット・サービス

target.getAssociatedTargets()メソッドを使用して、ターゲット・インスタンスに関連する一連のターゲットを取得します。このメソッドは、呼び出され、アソシエーション・タイプの配列および関連ターゲットのリストとともに呼び出されるハンドラに渡されます。このメソッドによって返されるオブジェクトのタイプの完全な説明は、APIドキュメントを参照してください。

// get associated host
var target:Target = ApplicationContext.getTargetContext();
var assocTypes:Array = [ AssociationDataService.HOSTED_BY ];
target.getAssociatedTargets(assocTypes, assocHandler);

public function assocHandler(assocResult:GetAssociationsResult,
fault:ServiceFault):void
{
var host:ManageableEntityComponent =
assocResult.getAssoc(AssociationDataService.HOSTED_BY);
if(host != null)
page.setModel("relatedHost", host.name);
}

9.11.5.3 メトリック・メタデータ・サービス

target.getMetricMetadata ()メソッドを使用して、ターゲット・インスタンスのメトリック定義情報を取得します。指定したメトリック名のメトリック・オブジェクトを返すTarget.getMetric()メソッドを呼び出すことによって、メトリック・メタデータ情報が取得されます。このメソッドによって返されるオブジェクトのタイプの完全な説明は、APIドキュメントを参照してください。

var target:Target = ApplicationContext.getTargetContext();
target.getMetricMetadata(metadataHandler);

public function metadataHandler (target:Target,
fault:Fault):void

注意:
ApplicationContext.getTargetContext()の場合、アプリケーションの起動時に、現在のターゲット・メトリック・メタデータがロードされ、ターゲット・メタデータが変更された(この可能性は低い)ことを考慮しない場合、そのターゲット・インスタンスのgetMetricMetadata()を呼び出す必要はありません。

9.11.5.4 可用性サービス

target.getAvailability()メソッドを使用して、ターゲット・インスタンスの現在の可用性情報を取得します。可用性情報(AvailOverviewData)には、現在のステータス、過去24時間の稼働時間(%)などがあります。このメソッドによって返されるオブジェクトのタイプの完全な説明は、APIドキュメントを参照してください。

var target:Target = ApplicationContext.getTargetContext();
target.getAvailability(targetAvailHandler);

public function targetAvailHandler(availInfo:AvailOvervieData,
fault:Fault):void

9.11.6 サービス・リクエスト・パフォーマンスの監視

MPCUIには、MPCUIコードで作成されたサービス・リクエストのパフォーマンスを監視できるトレース・サービスがあります。これは、遅いページのトラブルシューティングや、Management Serverでリクエストの処理に要した時間の特定を行う際に役立ちます。

サービス・トレースを有効にするには、次の手順に従います。

1. 実装に応じて、次のいずれかを選択します。

- FlexベースのUI

1. html-template/data/mpCuiProperties.xmlファイルを特定します。これは、プロジェクト・ディレクトリに含まれています(デモ・サンプルをテンプレートとして使用している場合)。

2. mpCuiProperties.xmlファイルに次の行を追加します。

<traceEnabled>true</traceEnabled>

3. アプリケーションを再ビルドしてから、Flex Builderデバッガを使用して起動するか、オプションを実行します。

- メタデータのみのUI

1. コンソールでMPCUIページを実行する際には、プラグインがデプロイされていることを確認します。

2. プラグインに関連付けられたターゲットのホームページにアクセスします。

3. ブラウザ・ウィンドウのアドレス・ボックスで、URLの末尾に次を追加します。

&traceEnabled=true

4. [Enter]を押して、ページをリロードします。

MPCUIアプリケーションはロードを行い、図9-8のような「アクティビティ・トレース」ダイアログを含むホームページが表示されます。

「アクティビティ・トレース」ダイアログには、現在のセッションでアクセスされた一連のページが表示され、各ページの下に、Management Serverに対して作成された一連のリクエストが表示されます。

図9-8 「アクティビティ・トレース」ダイアログ

2. 右上隅にあるコントロールを使用して、ダイアログを開いたり閉じたりします。MPCUIアプリケーションがアクティブである間、リフレッシュを続行します。

注意:
ダイアログの上部のペインで、サービス・リクエストを選択すると、合計時間(往復)およびManagement Serverでリクエストの処理に要した時間(サービス時間)が表示されます。

3. 詳細ペインで、「アイテム詳細の表示」をクリックすると、アプリケーションとManagement Serverとの間で送信されたリクエストおよび応答のメッセージの本文が表示されます。

9.11.7 サービス・リクエストの自動ポーリング

注意:
グラフ、表またはデータ・サービスに対するREALTIMEデータ選択の重要な使用方法は、指定した間隔でデータの自動ポーリングを開始することです。

MPCUIフレームワークでは、Management Serverへの膨大なリクエストを回避するため、リクエストをグループ化できるように、制限された間隔のサブセット(15、30、60、90秒)をサポートしています。

各ページまたはダイアログが表示されるか削除(スコープ外に移動)されると、MPCUIフレームワークは、これらのリクエストのポーリングを自動的に開始および停止します。

ページまたはダイアログのスコープを超えて永続的なポーリング・リクエストは開始できません。

9.11.8 サービス・リクエストのバッチ処理

ポーリング・リクエストのバッチ処理に加えて、MPCUIフレームワークでは、アクティビティ(ページまたはダイアログ)コントローラから実行時に作成されたリクエストを明示的にバッチ処理する機能が提供されています。UIメッセージのパフォーマンスを遅くするManagement Serverへの追加の往復を回避し、Management Serverにさらにオーバーヘッドを追加する場合に、リクエストのバッチ処理はよい方法です。

リクエストをバッチ処理する最も一般的な機会は、アクティビティの初期化の一部として行うときです。

- ページ・レイアウト(MXMLファイル)で宣言されたデータ・サービスの場合、MPCUIフレームワークは、リクエストをバッチ処理します。

- controller.init()メソッドから作成するサービス・リクエストの場合、ページのバッチ・リクエストをサービス・メソッドに渡すことができます。MPCUIフレームワークは、ページのロード後にinit()メソッドを呼び出します。

次の例は、デモ・サンプルのHomePageController.asファイルから抽出されます。メソッド内のpage.getBatchRequest()のインスタンスに注意してください。この方法で作成されたすべてのリクエストは、Management Serverへの単一のパスで実行されます。

例: アクティビティの初期化の一部としてのリクエストのバッチ処理

override public function init(pg:IActivity):void
{
super.init(pg);
page = pg as HomePage;

var guidParam:Array = [["TARGET_GUID",
ApplicationContext.getTargetContext().guid]];
var bulkQuery:BulkSqlQuery = new BulkSqlQuery();
bulkQuery.addQuery("INSTANCE_INFO", "INSTANCE_INFO", guidParam);
bulkQuery.addQuery("CPU_USAGE", "CPU_USAGE", guidParam);
bulkQuery.execute(queryResultHandler, page.getBatchRequest());

// get processes metric to get process summary information
var procMetric:Metric = ApplicationContext.getTargetContext()
.getMetric("CPUProcessesPerf");
var procSelector:MetricSelector = procMetric
.getSelector(['ProcUser', 'ProcCPU', 'ProcCmd']);
procSelector.getData(processesHandler,
MetricCollectionTimePeriod.CURRENT, page.getBatchRequest());

var cpuPerf:Metric = ApplicationContext.getTargetContext()
.getMetric("CPUPerf");
var cpuPerfSel:MetricSelector = cpuPerf.
getSelector(['system', 'idle', 'io_wait']);
cpuPerfSel.getData(cpuDataHandler,
MetricCollectionTimePeriod.REALTIME, page.getBatchRequest());

// get associated host
var target:Target = ApplicationContext.getTargetContext();
var assocTypes:Array = [ AssociationDataService.HOSTED_BY ];
target.getAssociatedTargets(assocTypes, assocHandler,
page.getBatchRequest());
}

MultiServiceRequestor (バッチ・リクエスト)を作成し、作成した各リクエストにそれを渡すことによって、コントローラ・コードの他の場所でバッチ・リクエストを使用できます。たとえば、ページでのボタン・クリックへの応答で、情報を取得するためにManagement Serverへの2つのリクエストが作成されるとします。次の例に示すように、これらはそれぞれ別に実行されます(サーバーへの往復が2回行われることになります)。

例: 個々のバッチ・リクエストの作成

var procMetric:Metric = ApplicationContext.getTargetContext()
.getMetric("CPUProcessesPerf");
var procSelector:MetricSelector = procMetric
.getSelector(['ProcUser', 'ProcCPU', 'ProcCmd']);
procSelector.getData(processesHandler,
MetricCollectionTimePeriod.CURRENT);    // 1st round trip

var cpuPerf:Metric = ApplicationContext.getTargetContext()
.getMetric("CPUPerf");
var cpuPerfSel:MetricSelector = cpuPerf.
getSelector(['system', 'idle', 'io_wait']);
cpuPerfSel.getData(cpuDataHandler,
MetricCollectionTimePeriod.REALTIME);  // 2nd round trip

かわりに、次の例に示すように、複数のバッチ・リクエストを単一のバッチ・リクエストに結合して、Management Serverへの追加の往復を回避することもできます。

例: バッチ・リクエストの結合

var batchRequest:MultiServiceRequestor = new MultiServiceRequestor();

var procMetric:Metric = ApplicationContext.getTargetContext()
.getMetric("CPUProcessesPerf");
var procSelector:MetricSelector = procMetric
.getSelector(['ProcUser', 'ProcCPU', 'ProcCmd']);
procSelector.getData(processesHandler,
MetricCollectionTimePeriod.CURRENT, batchRequest);

var cpuPerf:Metric = ApplicationContext.getTargetContext()
.getMetric("CPUPerf");
var cpuPerfSel:MetricSelector = cpuPerf.
getSelector(['system', 'idle', 'io_wait']);
cpuPerfSel.getData(cpuDataHandler,
MetricCollectionTimePeriod.REALTIME, batchRequest);

batchRequest.sendRequest();     // 1st and ONLY round trip!

注意:
バッチ・リクエストをコミットするには、sendRequest()メソッドを呼び出す必要があります。それ以外の場合、リクエストは送信されません。page.getBatchRequest()のPageController.initを使用する場合、MPCUIフレームワークで行われるため、これは必要ありません。

9.11.9 ソフトウェア・ライブラリ検索サービス

プラグインUIがソフトウェア・ライブラリ・エンティティに関する情報を必要とする場合、名前、ステータス、成熟度レベル、エンティティ属性など、様々な条件を使用して検索できます。SearchField列挙を使用して問合せ条件を指定すると、目的のエンティティをフィルタ処理できます。問合せ条件と一致するエンティティ・リビジョンを表すEntityInfoオブジェクトのリストが返されます。EntityInfoオブジェクトのURNは、エンティティ・リビジョンの一意な識別子として使用できます。エラーが発生した場合、ListSwlibEntitiesResult.errorMessageに設定されます。

// search the software library
var swSearch:ListSwlibEntities = new ListSwlibEntities();
swSearch.addSearchInput(new SearchInput(SearchField.NAME, "oracle"));
var swlib:Swlib = Swlib.getSwLib();
swlib.listEntities(swSearch, swSearchHandler);
}

private function swSearchHandler(result:ListSwlibEntitiesResult, fault:ServiceFault):void
{
var r:ListSwlibEntitiesResult; var e:EntityInfo;
if(fault != null)
{
MpLog.logError(fault, "Search Software Library");
return;
}

for(var i:int=0; i<result.swlibEntitiesList.length; i++)
{
var entity:EntityInfo = result.swlibEntitiesList[i];
MpLog.info("Swlib Entity: "+entity.toString());
}

page.setModel("swlibContents", result.swlibEntitiesList);
}

9.12 タスク自動化の実行

次の各項では、タスク自動化の実行方法について例とともに説明します。

次が含まれています。

- 自動化サービス

- 資格証明の操作

9.12.1 自動化サービス

MPCUIフレームワークのより強力な側面の1つは、目的のためにカスタマイズされたUIを介して、管理機能にアクセスする機能です。フレームワークでは、Enterprise Managerのジョブ・システムおよびジョブ・システムにアクセスするWebサービスを介して、管理タスクの処理をサポートします。

MPCUIでは、次のジョブ・サービスが提供されます。

- Job.submit

- Job.runSynchronous

- JobExecution.getStatus

- JobExecution.getDetails

- JobExecution.stopJob

- JobExecution.deleteJob

- JobExecution.getJobDetailsURL

- RemoteOp.performOperation

9.12.1.1 ジョブの発行または実行

ジョブ・サービスによって、プラグイン・ターゲットに登録されたジョブを、処理のために発行できます。サービスは、現時点でのシステムのジョブ・タイプを発行する機能はサポートしていません。

ジョブ・サービスを介したジョブのスケジュールは、ジョブ・システムによってサポートされた一連の制限付きスケジュール・オプションをサポートします。ジョブ・スケジュールは次のオプションをサポートしています。

- 即時、一度、毎時、毎日、毎週、毎月、毎年

- 発行の繰返しの開始時間および終了時間

- 繰返しの回数および頻度

- 開始期間の猶予期間

- 管理リポジトリまたはターゲットのタイムゾーン

サポートされているジョブのパラメータ・タイプは、Vector、Scalar、LargeおよびValueOfです。

他のサービスと同様に、Adobe Flexフレームワークは、リクエストを非同期に発行します。これには、リクエストが完了(または)失敗したときに呼び出されるハンドラを指定する必要があります。ジョブを発行すると、結果ハンドラが呼び出され、JobExecutionオブジェクトに渡されます。このオブジェクトには、発行されたジョブの処理コンテキストが含まれ、ジョブのステータスの取得や、ジョブにおける操作(停止や削除)に使用できます。

例: ジョブの発行

var job:Job = new Job("backup", "MyBackup", null,
ApplicationContext.getTargetContext(),
[Job.jobParam("dsn", "AdminDS"), Job.jobParam("sql_cmd",stmt)],
JobSchedule.IMMEDIATE);
job.submit(jobSubmitHandler);
}

private function jobSubmitHandler(exec:JobExecution, fault:Fault):void
{
// using exec (JobExecution) can now get current status of job,
// get step details, and start or stop the job
var execId:JobExecutionId = exec.getExecutionId();
}

ジョブがこの方法(submitメソッドを使用して)実行されると、ジョブは処理するために発行され、サービスは即時に返します。そのため、ジョブのステータスは、発行済から、実行中、完了に変更され、クライアントは、ステータスを定期的にチェックする必要があります。

ジョブ・サービスでも、即時処理のためにジョブを発行する方法が提供され、ジョブ実行が完了、失敗またはタイムアウトに到達するまで待機(同期的に)します。クライアント・ハンドラは、この状態に到達するまで呼び出されません。

例: 同期ジョブの実行

var job:Job = new Job("backup", "MyBackup", null,
ApplicationContext.getTargetContext(),
[Job.jobParam("dsn", "AdminDS"), Job.jobParam("sql_cmd",stmt)],
JobSchedule.IMMEDIATE);
job.runSynchronous((jobRunHandler, 30); // 2nd param is timeout
}

private function jobRunHandler(exec:SynchronousJobExecution, fault:Fault):void
{
// using exec (SynchronousJobExecution) can get details about job execution;
// this handler will not be called until the job completes, fails
// or the timeout is reached
var execId:JobExecutionId = exec.getExecutionId();
}

タスク・インタフェースは、Job.submitJob APIに関連付けられたすべての追加設定を行う必要なく、即時処理のためのジョブを発行する、単純化された方法です。

例: タスクAPIの使用

var task:Task = new Task("TTisql", null, [Job.jobParam("dsn", "AdminDS"),
Job.jobParam("sql_cmd",stmt)]);
task.execute(createTableHandler, 10);   // timeout is 10s
}

private function createTableHandler(result:SynchronousJobExecution, fault:Fault):void
{
var status:JobStatus = result.getRunStatus();
if(status == JobStatus.RUNNING)
{
// timed out while waiting for job... still running

同期ジョブの場合、ジョブのステータスは、ハンドラに渡された結果から即時に使用できます。ただし、それがJobStatus.RUNNINGと等しいかどうかを確認する必要があります。その場合、リクエストは指定したタイムアウトに到達しており、コール元は、ジョブ実行を非同期で発行されたように処理する必要があります。

9.12.1.2 ジョブのステータスおよびステップの詳細の取得

ジョブの発行後に、ジョブのステータスや、ジョブ出力などの各ステップの詳細を取得するために使用できるAPIがあります。これらのAPIを使用するには、コール元は、有効なJobExecutionオブジェクトを持っている必要があり、これは、submitおよびrunSynchronous APIの結果ハンドラに渡されます。現在は、クライアントにジョブ実行の検索を許可するサービスはありません。

例: ジョブ・ステータスの取得

private function submitHandler(exec:JobExecution, fault:Fault):void
{
exec.getStatus(statusHandler);
}

private function statusHandler(status:JobStatus, fault:Fault):void
{
if(status.getStatus() == JobStatus.FINISHED)

発行されたジョブのジョブ・ステータスを取得するには、サービス・リクエストが必要であるため、結果とともに呼び出されるハンドラが必要です(リクエスト処理が失敗した場合、フォルトの可能性があります)。ジョブのステータスの他に、ジョブ・ステップの詳細を取得できます。

ジョブ詳細の取得

ステップ出力の詳細およびジョブ・ステータスを取得するには、発行ハンドラに渡されるJobExecutionオブジェクトを使用します。ジョブが失敗するか、ステップが完了しない場合、データは返されません。

同期ジョブ実行の場合、Job.runSynchronousまたはTask.execute callのハンドラは、ジョブ・ステータスを確認でき、完了した場合、結果からジョブ詳細を直接取得します。

private function createTableHandler(result:SynchronousJobExecution, fault:Fault):void
{
var status:JobStatus = result.getRunStatus();
if(result != null && result.Status() == JobStatus.COMPLETED)
{
var steps:Array = result.getStepDetail();
for(var i:int=0; i<steps.length; i++)
{
var detail:JobStepDetail = steps[i];
proc.addDetailText(detail.output);
}

非同期ジョブ実行の場合、Job.submitのハンドラは、JobExecution.getStatus、JobExecution.getDetailsの順に呼び出す必要があります。各コールには、サーバーへのリクエストが必要です。

private function submitJob():void
{
var params:Array = new Array();
params.push(Job.jobParam("p0","p0value"));
var job:Job = new Job(type, name, desc, ApplicationContext.getTarget(), params,Job.immediateSchedule());
job.submit(submitHandler);
}

private function submitHandler(result:JobExecution, fault:Fault):void
{
if(fault == null && result != null)
{
// get the job status; calls the server
result.getStatus(statusHandler);
}
}

private function statusHandler(result:JobStatus, fault:Fault):void
{
if(fault == null && result != null)
{
if(result.getStatus() == JobStatus.COMPLETED)
{
// now can get job output details
result.getJobExecution().getDetails(detailsHandler);
}
}
}

private function detailsHandler(result:JobExecutionDetails, fault:Fault):void
{
if(fault == null && result != null)
{
var steps:Array = result.getStepDetail();
for(var i:int=0; i<steps.length; i++)
{
var detail:JobStepDetail = steps[i];
proc.addDetailText(detail.output);
}
}
}

9.12.1.3 タイマーを使用したジョブ・ステータスの定期的なチェック

ジョブが非同期で発行されるか(Job.submit)、または同期的に実行されるが、リクエストがタイムアウトに到達した場合、JobStatus.RUNNINGのジョブ・ステータスが返されます。これは、ジョブがまだ実行中であることを示し、後で再度ジョブのステータスを確認してください。

コードの観点から最も簡単なのは、アプリケーションがジョブのステータスを確認するように、ユーザーが相互作用するUI要素を公開することです。たとえば、UIは、現在ステータスを確認中とラベル付けされたボタンまたはリンクを含む「実行中」インジケータを表示します。ユーザーがボタンまたはリンクをクリックすると、JobExecution.getStatusメソッドが呼び出され、更新されたステータスを取得します。

必要な相互作用パターンが、ジョブがバックグラウンドで実行中で、ジョブのステータスに関する情報を持つUIを定期的に更新中に、UIがアクティブなままであることである場合、MPCUIは、ジョブ・ステータスの期間チェックを実行するジョブAPIを提供します。各更新は、現在のステータスを処理し、その情報を持つUIを更新する機会をコール元に提供するハンドラを呼び出します。

9.12.1.4 ジョブの停止および削除

MPCUI APIを介して発行されたジョブは、次のAPIを使用して、停止または削除できます。

例: ジョブの停止

private function stopJob(exec:JobExecution):void
{
// NOTE: the JobExecution must be a valid job context obtained from submitted a job
exec.stopJob(stopJobHandler);
}

private function stopJobHandler(exec:JobExecution, fault:Fault):void
{
if(fault == null && exec != null)
{
// job was successfully stopped
}
}

例: ジョブの削除

private function deleteJob(exec:JobExecution):void
{
// NOTE: the JobExecution must be a valid job context obtained from submitted a job
exec.deleteJob(deleteJobHandler);
}

private function deleteJobHandler(exec:JobExecution, fault:Fault):void
{
if(fault == null && exec != null)
{
// job was successfully deleted
}
}

Job.runSynchronous APIを使用して発行されたジョブの場合、deleteWhenFinishedパラメータをtrueに設定して渡すことによって完了すると、ジョブを削除できます。これは3番目のパラメータで、デフォルトはfalseです。

var job:Job = new Job("backup", "MyBackup", null,
ApplicationContext.getTargetContext(),
[Job.jobParam("dsn", "AdminDS"), Job.jobParam("sql_cmd",stmt)],
JobSchedule.IMMEDIATE);
job.runSynchronous((jobRunHandler, 30, true);

9.12.1.5 リモート操作

ジョブを使用して管理タスクを実行することは、スケジュールおよび制御(開始、中断または停止)の観点で最も柔軟性のあるアプローチですが、処理するタスクを管理するための追加のオーバーヘッドを伴います。スケジュールの制御が必要なく、迅速に実行されると思われる単純なタスクの場合、RemoteOpサービスを使用します。

このサービスによって、プラグインとパッケージ化されたスクリプトを、管理エージェントを介して直接実行できます。

注意:
スクリプトは、agent/ scriptsディレクトリで、プラグインとパッケージ化される必要があり(次の項で説明)、資格証明またはパラメータを処理する必要があります。

リモート操作のスクリプトのパッケージ化

リモート操作用のプラグインに含まれるスクリプトは、ステージング領域に含まれている必要があります。

stage/agent/scripts

必要な場合、/scriptsの下に追加のサブディレクトリを作成できます。この場所にあるスクリプトは、RemoteOpサービスを使用して、%scriptsDir%変数を参照することによって、参照できます。例:

プラグインのステージ領域

./stage/agent/scripts/process/kill_process.pl

MPCUIコード(ActionScript)

var params:Array = [
RemoteOp.param("%scriptsDir%/process/kill_process.pl"),
RemoteOp.param(pid) ];
var remoteOp:RemoteOp = new RemoteOp("perl", params);
remoteOp.performOperation(killProcessHandler);

この例では、RemoteOpオブジェクトは、実行するシェル/コマンドと、そのシェルに渡すパラメータを使用して構成されています。最初のパラメータは、常に、実行するスクリプトの場所である必要があり、%scriptsDir%変数に関連する場所を参照しています。実行するスクリプトで必要な場合、後続のパラメータを追加します。

リモート操作を実行するには、RemoteOp.performOperationメソッドを呼び出し、リモート操作が処理を完了する際に呼び出される関数に渡します。このハンドラには、次のシグネチャがあります。

private function killProcessHandler(remoteOp:RemoteOp, fault:Fault):void

リモート操作が管理エージェントへの通信に失敗した場合、faultパラメータに、そのエラーの詳細が記述されます。リモート操作が処理された場合、faultはNULLになり、remoteOpパラメータが指定されます。

管理エージェントでのコマンドの実行中に返されるエラー・ステータスを示しているため、remoteOpパラメータのステータスを確認してください。次の例に、このチェックの実行を示します。

例: remoteOpパラメータ・ステータスのチェック

/**
* Check status; could be any number of problems some of which may result
* in step output, some of which (like missing creds) result in a non-successful
* run status but no step details.
*
* result.getRunStatus() - the status of the job, refer to Constants.JOB_*_STATUS
* result.getStepDetail().stepName/detail - name and output from each step in the job
* result.getJob() - the complete job Object, to reference parameters:
*   result.getJob().parameter[0].paramName/paramValue[0]
*
*/
if(remoteOp.result.status != Constants.JOB_COMPLETED_STATUS)
{
// job did *NOT* complete successfully
var pid:String = remoteOp.getParameter(2).paramValue[0] as String;
var msg:String = "Unable to successfully kill process ["+pid+
"].  The status of the command was: "
+Util.getCatString(Util.JOB_STATUS, remoteOp.result.status)
+"\nReturn Code: "+remoteOp.result.returnCode
+"\nCommand Output: "+remoteOp.result.commandOutput;
MessageAlert.show(msg, "Failed to Kill Process", Alert.OK);
}
else
{
// successful job execution; process was killed; can look at the
// step details to get possible output from the job
MpLog.debug("Command was successful: "
+"\nReturn Code: "+remoteOp.result.returnCode
+"\nCommand Output: "+remoteOp.result.commandOutput);
page.processesTable.refreshImmediate();
}

9.12.2 資格証明の操作

Enterprise Managerの資格証明モデルは、資格証明を必要とする操作を実行するための次の3つの異なるモデルをサポートします。

- 優先資格証明
特定の資格証明が、特定タイプの1つまたはすべてのターゲットに設定されます。このモードでは、ユーザーは、一連の資格証明を追加したり、資格証明の値を指定することはありません。

- 名前付き資格証明セット
一連の資格証明が、特定タイプの1つまたはすべてのターゲットに作成され、各セットに名前が割り当てられます。このモードでは、ユーザーは、名前付きセットのリストに表示され、操作を実行するために使用するセットを選択できます。

- オーバーライド資格証明
このモードでは、ユーザーは、操作を実行するために使用する実行時の資格証明を指定できます。

9.12.2.1 資格証明情報の取得

MPCUIには、特定のターゲットに関する資格証明情報を取得する機能があります。このサービスは、現在のユーザーが参照する権限を持つ情報のみを返すことができます。これにより、セキュアな情報への未認可のアクセスがないことが保証されます。資格証明情報が、MPCUIコードにアクセスしているユーザーにとって使用できない状況についても、処理する必要があります。

9.12.2.1.1 優先資格証明のチェック

ターゲットに優先資格証明セットがあるかどうかを確認するには、次のようにCheckPreferredCredsService.getPreferredCredsInfoメソッドを呼び出します。

var ccSvc:CheckPreferredCredsService = new CheckPreferredCredsService();
ccSvc.getPreferredCredsInfo(ApplicationContext.getTargetName(),
ApplicationContext.getTargetType(),
'HostCreds', checkPrefCredsHandler);

サービスはCheckPreferredCredsResultオブジェクトを返し、これは、グローバル(すべてのターゲット・インスタンスのタイプに適用)またはインスタンス(単一のターゲット・インスタンスにのみ適用)のどちらの資格証明が使用可能であるかを示します。

public function checkPrefCredsHandler(result:CheckPreferredCredsResult,
fault:ServiceFault):void
{
if(fault != null)
MessageAlert.show(fault.faultDetail, "Error Checking Preferred Creds");
else
{
var msg:String = "Checked for Preferred Credentials for
target("+ApplicationContext.getTargetName()+","+
ApplicationContext.getTargetType()+" for set(HostCreds)
user("+ApplicationContext.getEmUser()+") \n"+
"Global Set = "+result.globalSet+" Instance Set = "
+result.instanceSet;
MessageAlert.show(msg, "Check Preferred Creds Result");
}
}

注意:
優先資格証明が設定されている場合、資格証明情報を渡すことなく、ジョブの発行やリモート操作の実行を行うことができます。この場合、優先セットが使用されます。

9.12.2.1.2 名前付き資格証明セットの取得

特定のターゲットで使用できる名前付き資格証明セットを取得し、次を行うことができます。

- 選択肢(リストまたはコンボ・ボックス)での名前付き資格証明セットの表示

- プラグインで必要な表記規則に基づいた名前付き資格証明セットからの選択

次のコードでは、現在のターゲットの2つの異なる資格証明タイプに対してすべての名前付きセットをリクエストし、結果とともにcredSetResultHandlerハンドラを呼び出します。

var target:Target = ApplicationContext.getTargetContext();
target.getCredentialSets(["HostCreds", "HostSampleCreds"],
credSetResultHandler);

結果ハンドラは、名前付きセットの戻りを適切に使用できます(この例では、表に表示するデータソースを構築します)。

var credTableData:ArrayCollection;
if(creds.credSet != null)
{
credTableData = new ArrayCollection(creds.credSet);

// check to see if there are sets for both types
var hostFound:Boolean = false;
var sampFound:Boolean = false;
for(var c:int=0; c<creds.credSet.length; c++)
{
if(creds.credSet[c].credentialType == "HostCreds")
hostFound = true;
else if(creds.credSet[c].credentialType == "HostSampleCreds")
sampFound = true;
}

var missingType:String = ( !hostFound ? "HostCreds" :
"HostSampleCreds" );
var empty:CredentialSet = new CredentialSet();
empty.credentialType = missingType;
empty.name = "<No Sets Found>";
empty.guid = "";
credTableData.addItem(empty);
}
else
{
empty = new CredentialSet();
empty.credentialType = "<No Credential Sets Defined>";
empty.name = "";
empty.guid = "";
credTableData = new ArrayCollection([empty]);
}

9.12.2.2 ジョブへの資格証明の受渡し送信およびリモート操作

この項では、ジョブおよびリモート操作への優先資格証明および名前付き資格証明セットの受渡しについて説明します。

優先資格証明

実行するタスク(ジョブまたは操作)が優先資格証明の使用を試みた場合、タスクに渡される資格証明パラメータは省略されます。ジョブとリモート・操作の両方のサービスは、優先資格証明を使用したタスクの実行を試みます。優先資格証明が設定されていない場合、エラーが返されます。

名前付きセット

タスクの実行に名前付きセットを使用するよう指定するために、JobCredential (ジョブの場合)およびOpCredential (リモート操作の場合)で、資格証明が渡されます。どちらの場合も、資格証明オブジェクトには次の4つのプロパティがあり、それらを指定する必要があります。

- targetName: 資格証明が適用するターゲットで、通常はApplicationContext.getTargetName()

- targetType: 資格証明が適用するターゲットのタイプで、通常はApplicationContext.getTargetType()

- usage: 操作に定義される、資格証明の使用方法(ジョブ・タイプ定義を参照)。この使用方法は、必要な資格証明タイプ、およびジョブの実行中に適用する場所を指定します。

- credGuid: 使用する名前付きセットの識別子。これは、名前付き資格証明セットを保持する、CredentialSetクラスのプロパティの1つです。詳細は、9.12.2.1項「資格証明情報の取得」を参照してください。

9.12.2.3 再利用可能な資格証明UIコンポーネント

MPCUIでは、エンドユーザーがタスク(ジョブまたはリモート操作)の実行時に使用可能な一連の資格証明を表示し、優先資格証明、名前付き資格証明またはオーバーライド資格証明を選択する、Enterprise Managerの資格証明サブシステムと相互作用できるページに含まれる資格証明リージョンが提供されます。

図9-9 資格証明ージョン

このリージョンをページに含めるには、次のMXMLを追加します。

例: 資格証明リージョンの追加

<credentials:CredentialsRegion id="credRegion" width="40%" height="100%"
title="Credentials" target="{ApplicationContext.getTargetContext()}"
credentialType="HostCreds" />

ページに関連付けられたページ・コントローラから、エンドユーザーによってこのリージョンに適用された設定を取得します。

例: 選択した資格証明情報の取得

public function getCredsEntered(event:MouseEvent):void
{
var mode:String = page.credRegion.getMode();
var msg:String = "Credential Option Selected: "+mode+"\n";

var namedSet:String;
var creds:Array;
if(mode == CredentialsRegion.NAMED_MODE)
{
namedSet = page.credRegion.getNamedSet();
msg += "Named Set Selected: "+namedSet;
}
else if(mode == CredentialsRegion.OVERRIDE_MODE)
{
try
{
creds = page.credRegion.getOverrideCredentials();
for(var c:int=0; c<creds.length; c++)
msg += "Field:"+creds[c].label+", "+creds[c].value+"\n";
}
catch(e:Error)
{
msg += "Error Entering Credentials:\n";
msg += e.message;
}
}
else
{
// preferred selected...
}
MessageAlert.show(msg, "Credentials Entered");
}

前の例では、ユーザーが優先資格証明、名前付き資格証明またはオーバーライド資格証明を選択したかどうかを決定するモードに注意してください。モードに応じて、名前付きセット(CredentialsRegion.getNamedSet())、またはオーバーライド資格証明(CredentialsRegion.getOverrideCredentials())を取得できます。

9.12.2.4 モニタリング資格証明の管理

Targetクラスは、現在のターゲットの監視資格証明を取得および設定する機能を提供します。監視資格証明を取得するには、Targetクラスのインスタンスが必要で、getMonitoringCredentials関数が呼び出され、監視資格証明セットを含む資格証明メタデータを受け取る結果ハンドラを渡します。

// get monitoring credentials
target.getMonitoringCredentials(getMonCredResultHandler, page.getBatchRequest());

ハンドラは次のように表示されます。

private function getMonCredResultHandler(cred:CredentialTypeMetadata, fault:ServiceFault):void
{
if(fault != null)
{
if(cred != null && cred.isMissingCredentials())
{
// no monitoring credentials are set
MpLog.info("Monitoring Credentials have not been set: "+fault.faultDetail);
}
else
MpLog.logError(fault, "Get Monitoring Credentials");
return;
}

/**
* The CredentialTypeMetadata returned includes the meta-data for the
* credentials as well as the actual values.  NOTE: credentials never
* return the actual values for any field identified as a password it only
* returns the masked "****" value.  You should never have any need to
* access the actual values for a password field as any time credentials
* are passed you are passing a credential set and don't need the actual
* values of a pre-existing credentials set
*/

var credFieldValues:Array = (cred.credentialSets[0] as CredentialSet).columnValues;
for(var i:int=0; i<credFieldValues.length; i++)
{
var credField:CredentialColumnValue = credFieldValues[i];
MpLog.debug("Monitoring Credentials["+credField.label+"] = "+credField.value);
}
}

監視資格証明を設定するには、資格証明タイプに従った資格証明フィールドを、資格証明の監視用に指定します。これはターゲット・メタデータで定義されます。

/**
* the CredentialSet passed contains the monitoring credentials to be set.
* Note that only the columnValues property of the credentials needs
* to be set when updating monitoring credentials as the framework
* derives the values for the credential set and type.  It is CRITICAL
* that the label set for each columnValue is the column NAME and not
* the display label for that column.  The name is the identifier assigned
* to the credential column in the target meta-data.
*
* In the demo_hostsample, for example, the credentials fields are:
*     name: SampleCredUser        label: User Id
*     name: SampleCredPassword    label: Password
*     name: SampleCredRole        label: Role
*/

var monitoringCreds:CredentialSet = new CredentialSet();
monitoringCreds.columnValues = [
new CredentialColumnValue("SampleCredUser", "myMonitoringUser"),
new CredentialColumnValue("SampleCredPassword", "myMonitoringPassword"),
new CredentialColumnValue("SampleCredRole", "myMonitoringRole")
];

var target:Target = ApplicationContext.getTargetContext();
target.setMonitoringCredentials(monitoringCreds, setMonCredResultHandler);

次に、ハンドラは次のように表示されます。

private function setMonCredResultHandler(cred:CredentialSet, fault:ServiceFault):void
{
if(fault != null)
{
MpLog.logError(fault, "Set Monitoring Credentials");
return;
}

/**
* if the set monitoring credentials was successful then the handler is
* called with no fault and the set of credentials that were passed in
*/
}

9.13 セッション状態の格納

セッション状態サービスは、Flexアプリケーションに関連付けられたグローバル状態を格納する機能を提供します。これが有用なのは、カスタムUIを定義するFlexアプリケーションの外側のページ間をユーザーが移動する場合でも、現在のユーザーに対して状態を維持する必要がある場合です。たとえば、ユーザーがホームページの状態を変更して「すべてのメトリック」ページに移動し、その後、ホームページに戻ったときに、ユーザーが離れたときのページの状態を復元したい場合です。Flexアプリケーションを構成するページをユーザーは離れたため、Flexアプリケーション自体の内部ではなく、このユーザー・セッション用に確立されたサーバー側セッションで必要な状態を格納する必要があります。

セッション状態を設定するには、EmUser.setSessionData関数を呼び出し、SessionAttributesオブジェクトを渡します。セッション属性にはSessionAttributeオブジェクトの配列が含まれ、各オブジェクトは、格納されている属性に対して対応する名前と値のペアを持ちます。

public function setSessionAttributes():void
{
var sessionData:SessionAttributes = new SessionAttributes();
var item1Value:String = page.item1Input.text;
var item2Value:String = page.item2Input.text;

sessionData.attributes.push(new SessionAttribute("attr1",
item1Value));
sessionData.attributes.push(new SessionAttribute("attr2",
item2Value));

EmUser.setSessionData(sessionData, setSessAttrResultHandler);
}

public function setSessAttrResultHandler(attr:SessionAttributes,
fault:ServiceFault):void
{
if(fault != null)
{
MpLog.logError(fault, "Set Session Data");
return;
}
}

セッション状態を取得するには、対応するEmUser.getSessionDataサービス関数を使用します。この関数は、SessionAttributesのリストと、結果とともに呼び出されるハンドラを渡すことでリクエストされるセッション状態を取得します。これは同じSessionAttributesになり、セッションから取得されたデータが移入されます。

public function getSessionAttributes():void
{
var sessionData:SessionAttributes = new SessionAttributes();
sessionData.attributes.push(new SessionAttribute("attr1"));
sessionData.attributes.push(new SessionAttribute("attr2"));
EmUser.getSessionData(sessionData, getSessAttrResultHandler);
}

public function getSessAttrResultHandler(attr:SessionAttributes, fault:ServiceFault):void
{
if(fault != null)
{
MpLog.logError(fault, "Get Session Data");
return;
}

for(var i:int=0; i<attr.attributes.length; i++)
{
var item:SessionAttribute = attr.attributes[i];
if(item.name == "attr1")
page.setModel("lastItem1Value", item.value);
else if(item.name == "attr2")
page.setModel("lastItem2Value", item.value);
}
}

9.14 ページ・レイアウト・コンポーネントの定義

ブラウザ・ウィンドウのサイズ変更時にMPCUIページが適切にリサイズされることを保証するために、MPCUIベースのページのページ・レイアウトに関する次のガイドラインをお薦めします。

- HBox (水平ボックス)およびVBox (垂直ボックス)コンテナを使用します。

- 絶対ピクセル・サイズではなく、サイズの割合を使用して、コンテナの高さと幅を設定します。

たとえば、3行で、それぞれがページの高さの3分の1を占めるレイアウトを作成するには、MXMLファイルに次のように入力します。

例: 3行のページ・レイアウトの定義

<mx:VBox height="100%" width="100%">
<!-- 1st row -->
<mx:HBox height="33%" width="100%">
</mx:HBox>

<!-- 2nd row -->
<mx:HBox height="33%" width="100%">
</mx:HBox>

<!-- 3rd row -->
<mx:HBox height="33%" width="100%">
</mx:HBox>
</mx:VBox>

次に、各行を、2つの均等に分かれたセクションに水平に分割するには、次のように入力します。

例: 2つの均等なセクションへの行の分割

<mx:VBox height="100%" width="100%">
<!-- 1st row -->
<mx:HBox height="33%" width="100%">
<mx:VBox height="100%" width="50%" >
</mx:VBox>
<mx:VBox height="100%" width="50%" >
</mx:VBox>
</mx:HBox>

<!-- 2nd row -->
<mx:HBox height="33%" width="100%">
<mx:VBox height="100%" width="50%" >
</mx:VBox>
<mx:VBox height="100%" width="50%" >
</mx:VBox>
</mx:HBox>

<!-- 3rd row -->
<mx:HBox height="33%" width="100%">
<mx:VBox height="100%" width="50%" >
</mx:VBox>
<mx:VBox height="100%" width="50%" >
</mx:VBox>
</mx:HBox>
</mx:VBox>

各セクション内に、ページのレイアウトに入力する個々のコンポーネントを含めます。

9.14.1 リージョンの定義

Enterprise ManagerのUIスタイル・ガイドでは、ページの情報をリージョンにまとめることをお薦めしています。リージョンは、開いたり閉じたりできるタイトルを持つ視覚的なボックスです。たとえば、3行のページ・レイアウトの定義の例では、各行は、垂直方向のコンテナではなく、別々のリージョンに分割されます。

例: リージョンの定義

<mx:VBox height="100%" width="100%">
<!-- 1st row -->
<mx:HBox height="33%" width="100%">
<components:Region height="100%" width="50%" title="Row 1 Region 1" >
</components:Region>
<components:Region height="100%" width="50%" title="Row 1 Region 2" >
</components:Region>
</mx:HBox>

<!-- 2nd row -->
<mx:HBox height="33%" width="100%">
<components:Region height="100%" width="50%" title="Row 2 Region 1" >
</components:Region>
<components:Region height="100%" width="50%" title="Row 2 Region 2" >
</components:Region>
</mx:HBox>

<!-- 3rd row -->
<mx:HBox height="33%" width="100%">
<components:Region height="100%" width="50%" title="Row 3 Region 1" >
</components:Region>
<components:Region height="100%" width="50%" title="Row 3 Region 2" >
</components:Region>
</mx:HBox>
</mx:VBox>

前の例の結果として、図9-10のように表示されます。各リージョンを使用して、意味のある情報を表示するための他のUIコンポーネント(表やグラフなど)を含めることができます。詳細な例は、拡張開発キットにあるデモ・サンプルの例を参照してください。

図9-10 リージョン

9.15 パッケージ化されたリージョンの包含

リージョン・コンポーネントは、UIを構築するための任意の数のコンポーネントを表示できる空のコンテナです。MPCUIでは、単一の単純なタグを使用してページに含めることができるいくつかのパッケージ化されたリージョンが提供されます。

9.15.1 「可用性」リージョン

「可用性」リージョンは、AvailabiltyRegionタグのdaySpanプロパティで指定した期間の、ターゲットの可用性を表示します。同じ期間の、ターゲット可用性の詳細(停止など)を示す、セグメント化された棒グラフで表示されます。

<avail:AvailabilityRegion width="25%" height="100%" daySpan=”1”/>

図9-11 可用性リージョン

9.15.2 「インシデントと問題」リージョン

インシデントのリージョンには、現在のターゲットおよび関連するすべてのターゲットの、一連のオープン・インシデントが表示されます。表示されたインシデントのリストをフィルタ処理するオプションが提供されています。リージョンに必要な設定は、サイズ(幅/高さ)のみです。

<events:IncidentRegion width="50%" height="100%"/>

図9-12 インシデントと問題

9.15.3 「ジョブ・サマリー」リージョン

ジョブ・サマリーのリージョンには、ステータス別のジョブ数が表示されます。

<jobs:JobSummaryRegion width="20%" height="100%" />

図9-13 ジョブ・サマリー

9.15.4 「資格証明」リージョン

再利用可能な資格証明UIコンポーネントの詳細は、9.12.2.3項「再利用可能な資格証明UIコンポーネント」を参照してください。

9.16 グラフの定義

MPCUIでは、3つのグラフ・コンポーネントをサポートしています。すべてのグラフ・コンポーネントには、メトリック・プロパティを指定してメトリック情報を表示するために不可欠なサポートがあります。さらに、SQLDataServiceなどの他のサービスから取得した情報を使用して、グラフに独自のデータを構築し、それをdataProviderプロパティを使用してグラフにマップすることができます。

次に示す各グラフ・タイプの例および説明は、各グラフで使用できる様々なオプションの簡単なサマリーです。各グラフのプロパティの完全な説明は、APIドキュメントを参照してください。実行時のこれらのグラフの操作方法の例は、拡張開発キットにあるデモ・サンプルを参照してください。

9.16.1 折れ線グラフ

通常、折れ線グラフには、一定期間の情報が表示されますT(時系列グラフと呼ばれることも多くあります)。そのため、メトリック情報を履歴またはリアルタイムで表示する際に役立ちます。グラフには、グラフで表示するmetricNameおよびmetricColumns (配列)を指定するプロパティ、および、履歴データまたはリアルタイムのサンプル・データを表示するために設定できるtimePeriodプロパティが含まれます。timePeriodを"REALTIME"に設定すると、グラフは、自動ポーリング・リクエストを管理し、新しいサンプルが到着するとグラフ・データを更新します。

<components:Region title="CPU Load" width="75%" height="100%" >
<charts:LineChart id="cpuload" width="100%" height="100%"
metricName="Response"
metricColumns="['Load']"
timePeriod=”REALTIME” interval=”15” />
<components:Link label="Show History"
click="{invokeActivity('metricHistory'))}" />
</components:Region>

図9-14 折れ線グラフの例

9.16.1.1 折れ線グラフのデータソースの指定

折れ線グラフを使用して描画されるメトリックを指定する他に、データを表示するグラフで使用する独自のデータソースを作成できます。たとえば、SQLデータ・サービスまたは他の方法(ポーリング・サービスを使用したり、グラフに追加するデータ・サンプルを作成するなど)で取得されたデータです。

次の例では、ページには、ページ・コントローラに構築されるページ・モデル内のアイテムにマップされたchartDataSourceを持つグラフが含まれます。

- ProcessesPage.mxml

<ch:LineChart id="cpuUtilChart" width="100%" height="100%"
chartDataSource="{model.cpuChartData}" />

- ProcessesPageController.as (initメソッド)

// setup a data provider for the CPU line chart; it will be
// updated each time a new data sample comes back for this metric

// first get the polling context for a 15 second interval
var pollingCtx:PollingContext =
page.pollingContext.getContext(PollingInterval.EVERY_15_SECONDS);

// now get the metric to be selected and initiate the request (won't start until
// "startPolling" is called)
var cpuPerf:Metric = ApplicationContext.getTargetContext().getMetric("CPUPerf");
var cpuPerfSel:MetricSelector = cpuPerf.getSelector(['system', 'idle', 'io_wait']);
cpuPerfSel.getData(cpuDataHandler, MetricCollectionTimePeriod.REALTIME, pollingCtx);

// start polling; this will automatically stop when the user moves to another page
pollingCtx.startPolling();

- ProcessesPageController.as (cpuDataHandlerメソッド)

public function cpuDataHandler(cpuData:MetricResultSet, fault:ServiceFault):void
{
if(fault != null) return;   // handle this better!

// get the current data point and derive a new one to
// add to the charts data source
var dataPoint:TimestampMetricData = cpuData.results[0];
var systemTime:Number = dataPoint.data[0]['system'];
var ioWaitTime:Number = dataPoint.data[0]['io_wait'];

// create a new data point; this is added to the chart
// data source (ChartData) below
var dataSample:ChartDataSample = new ChartDataSample();
dataSample.timestamp = dataPoint.timestamp;
dataSample["cpuTime"] = systemTime + ioWaitTime;

// check if the chart data source is there yet and if
// not create it and add it to the page model
var cpuChartData:ChartData = page.model["cpuChartData"] as ChartData;
if(cpuChartData == null)
{
cpuChartData = new ChartData();
page.setModel("cpuChartData", cpuChartData);

// define the series "cpuTime" in the chart including a label
page.cpuUtilChart.setLineSeries(["cpuTime"], ["CPU Time %"]);
}
cpuChartData.addDatapoint(dataSample);
}

9.16.1.2 凡例の制御

すべてのグラフには、グラフで示すアイテムを表示する凡例を含めることができます。次の例を使用して、4つの場所(上下左右)のいずれかに凡例を配置します。

<c:LineChart id="hchart" timePeriod="REALTIME"
showLegend="true" legendLocation="top"

9.16.2 面グラフ

面グラフは、折れ線グラフに類似しており、同じ属性を持っています。これは、LineChartと同じ方法で、データを表示します。showCumulativeLineプロパティは、面グラフの表示を制御します。ほとんどの面グラフでは、積上げまたは累積の面グラフを表示するために、このプロパティをtrueに設定して含める必要があります。それ以外の場合、面グラフは、グラフに含まれる各時系列の塗りつぶしの領域を重ね合せます。

<charts:AreaChart id="cpuutil" width="100%" height="100%"
metricName="CPUProcessorPerf"
metricColumns="{['CPUIdle']}"
timePeriod="LAST_DAY" />

9.16.3 横棒グラフ

棒グラフは、視覚的な属性およびデータソースの制御の指定について、列グラフと同じプロパティを公開します。

<charts:BarChart id="spaceChart" timePeriod="CURRENT"
width="100%" height="100%"
groupBy="byKey"
metricName="MSSQL_Database"
metricColumns="{['spaceavailable']}" />

図9-15 棒グラフ

9.16.3.1 棒のグループ化

groupByプロパティ(棒グラフおよび列グラフで使用可能)によって、データをキーまたは列ごとにまとめることができます。データ・セットにキーが含まれない場合、デフォルト(列ごと)が適用されます。

たとえば、「ユーザー」列がデータへのキーとして処理される場合の次のデータ・セットがあるとします。

ユーザー

ログイン

エラー

Jones

23

12

Smith

30

4

Shah

27

20

次の例では、groupByプロパティはbyColumnに設定されています。これにより、図9-16に示すように、2つの列のグループが作成され、それぞれが各データ列用になり、各グループに3つのすべてのキーが表示されます。

例: 列でグループ化

<mp:BarChart id="userBarChart"
dataProvider="{model.userData}"
showLegend="true"
groupBy="byColumn"
/>

図9-16 列でグループ化

次の例では、groupByプロパティはbyKeyに設定されています。これにより、図9-17に示すように、3つのグループが作成され、それぞれが各キー用になり、各グループに両方の列(データ項目)が表示されます。

例: キーでグループ化

<mp:BarChart id="userBarChart"
dataProvider="{model.userData}"
showLegend="true"
groupBy="byKey"
/>

図9-17 キーでグループ化

9.16.4 列グラフ(縦棒グラフ)

列グラフは、縦方向の棒グラフで、視覚的な属性およびデータソースの制御の指定について、棒グラフと同じプロパティを公開します。

<charts:ColumnChart id="bchart" timePeriod="LAST_DAY"
width="100%" groupBy="byKey"
metricName="CPUProcessorPerf" metricColumns="{['CPUIdle']}"/>

図9-18 列グラフ

9.16.5 円グラフ

次の例では、コードは、メトリック名およびメトリック列を指定することによって円グラフを構築します。MPCUIフレームワークは、Management Serverからから情報を取得するために必要なリクエストを実行し、値をグラフに移入します。

注意:
metricColumns属性では、グラフの上部にあるコンボ・ボックスの値を変更するユーザーへの応答として、コントローラに値を設定します(HomePageController.asの例を参照)。

<charts:PieChart id="memChart"
targetName="{appModel.target.name}"
targetType="{appModel.target.type}"
metricName="MemoryPerf"
metricColumns="{model.memoryColumns}"
timePeriod="LAST_DAY"
labelPosition="none" />

図9-19 円グラフ

9.17 表の定義

次の各項では、表を定義する様々な方法について、各方法の例を示して説明します。

9.17.1 データ・サービス

次の例では、metricNameおよびmetricColumnsを指定することによって、表をMetricDataServiceにマップします。メトリック列ラベルが入力されているため、列にheaderText属性を指定する必要はありません。必要な場合、これらのラベルをオーバーライドできます。

例: MetricDataServiceへの表のマッピング

<c:Table id="processesTable" width="100%" height="100%"
metricName="CPUProcessesPerf"
metricColumns="['ProcUser', 'ProcCPU', 'ProcCmd']"
timePeriod="REALTIME"
interval="30"
>
<c:adminElements>
<mx:Button id="killProcessButton" label="Kill Process"
click="controller.killProcess(event)"/>
</c:adminElements>
<c:columns>
<mx:AdvancedDataGridColumn width="50" dataField="key" />
<mx:AdvancedDataGridColumn width="100" dataField="ProcUser" />
<mx:AdvancedDataGridColumn width="80" dataField="ProcCPU" />
<mx:AdvancedDataGridColumn width="400" dataField="ProcCmd" />
</c:columns>
</c:Table>

図9-20 データ・サービス

9.17.2 カスタム・データ・プロバイダ

次の例では、表のデータはコントローラにロードされ、ページ・モデルprocessInfoDataアイテムにマップされます。processInfoDataは、(任意のタイプの)オブジェクトの配列です。各列に指定されたdataFieldプロパティは、各列に表示されるパブリック・プロパティを識別します。この場合、dataFieldの名前はheaderTextとしても使用されます。このラベルをオーバーライドするheaderTextプロパティを指定できます。

例: processInfoDataアイテムへの表のマッピング

<tbl:Table id="processInfoTable" dataProvider="{model.processInfoData}">
<tbl:columns>
<mx:AdvancedDataGridColumn width="100" dataField="Process ID"/>
<mx:AdvancedDataGridColumn width="250" dataField="User"/>
<mx:AdvancedDataGridColumn width="100" dataField="Database"/>
<mx:AdvancedDataGridColumn width="100" dataField="Status"/>
<mx:AdvancedDataGridColumn width="250" dataField="Command"/>
<mx:AdvancedDataGridColumn width="100" dataField="CPU Time"/>
<mx:AdvancedDataGridColumn width="100" dataField="Memory Usage"/>
</tbl:columns>
</tbl:Table>

9.17.3 選択した行の取得

表のselectedRowsプロパティを参照することによって、表で現在選択されている行を取得できます。このプロパティは、選択した行の配列で、各行は、列名でキー指定された行にデータが含まれるディクショナリ・オブジェクトです。行がカスタム・データソースに基づく場合、行は、表のデータソースにマップされたオブジェクトになります。

var process:Dictionary = page.processesTable.selectedRows[0];

表が単一の選択を許可するよう設定された場合、selectedRows配列には単一のエントリのみが含まれます(または行が選択されていない場合は何もありません)。

9.18 ダイアログの定義

ダイアログを構築する場合、通常、oracle.sysman.emx.intg.Dialogクラスを拡張して、MXMLクラスのみを必要とします。

9.18.1 ダイアログの登録

invokeActivityメソッドを使用して表示されるダイアログを使用可能にするには、ダイアログを統合クラスの一部として、アクティビティに登録する必要があります。次の例では、次のことに注意してください。

- id属性: IDは、アプリケーション内の他のアクティビティからこのダイアログを詳細するために使用されます。これは、アプリケーションに含まれるすべてのアクティビティ全体で一意である必要があります。

- dialogClass属性: dialogClass属性は、ダイアログを拡張し、このダイアログ用の実装であるMXMLクラスへの参照です。

inputParamsはオプションですが、入力パラメータが必要で、コンテキストとしてのオブジェクトをBeanディレクティブを使用してMXMLから直接渡す状況では、ダイアログを再利用できます。MPCUIフレームワークは、入力オブジェクト・パラメータをダイアログ・パラメータにマップします。

inputParamsをダイアログ定義の一部として定義しない場合、ダイアログで必要な入力データ(カスタム・プロパティなど)は、ActionScriptで設定し、Dialog.showメソッドを使用して表示されるダイアログとする必要があります。

例: ダイアログの登録

<intg:DialogActivityDef id='metricHistory' label='Metric History'
dialogClass='{MetricHistoryDialog}' >
<intg:inputParams>
<intg:InputParam name='targetName'/>
<intg:InputParam name='targetType'/>
<intg:InputParam name='metric'/>
<intg:InputParam name='columns'/>
<intg:InputParam name='period'/>
<intg:InputParam name='title'/>
</intg:inputParams>
</intg:DialogActivityDef>

図9-21 メトリック履歴ダイアログ

9.18.2 ダイアログの表示およびクローズ・イベントの待機

ダイアログに、ダイアログのクローズ時に必要な状態が含まれる場合、クローズ・ハンドラをinvokeActivityメソッドに渡すことができます。このハンドラは、CloseEventを使用して呼び出されます。このハンドラは、ダイアログをクローズするために押されたボタンを特定し、ダイアログ・オブジェクト自体を取得して、そこから情報を取得します。

例: クローズ・イベントの待機

public function showCpuMetricDetails(event:MouseEvent):void
{
var bean:Bean = new Bean("targetName", page.appModel.target.name,
"targetType", page.appModel.target.type,
"metric", page.cpuutil.metricName, "columns",page.cpuutil.metricColumns,
"period", "REALTIME", "title", "Metric Details (Current)");
page.invokeActivity("metricDetails", bean, metricDialogClosed);
}

public function metricDialogClosed(event:CloseEvent):void
{
MpLog.debug("Metric Details Dialog Closed");
var button:int = event.detail; // Alert.YES, Alert.NO, Alert.OK etc…
var metDetailsDialog:MetricDetailsDialog = event.currentTarget
as MetricDetailsDialog;
}

前の例では、metricDialogClosed関数はinvokeActivityに渡されます。ダイアログがクローズすると、メソッドが呼び出され、CloseEventに渡されます。このイベントから、currentTargetプロパティはダイアログ自体を含み、detailプロパティはダイアログをクローズするために押されたボタンを示します。

9.19 トレインの定義

トレインは、各ステップ間をナビゲートするための次と前のボタンを持つ、複数ステップのUIの定義を許可します。トレインは、通常、ユーザーがカテゴリにまとめることができる多くの属性を持つエンティティを作成または変更しようとする場合に、使用されます。

トレインは、統合クラスに登録する必要があり、トレインには、TrainControllerおよびトレイン内の各ステップのページ・クラスを拡張し、TrainStepPageを拡張するコントローラがあります。各ステップ(トレイン・ステップ・ページ)は、独自のコントローラ・クラスを持つことができます。各ステップはコントローラを持つページでであるため、レイアウト、データの管理およびステップ内のイベントへの応答は、アプリケーション内の他のページとまったく同じです。ページ・クラスの詳細は、9.6.2.1項「ページ・クラス」を参照してください。

トレイン・ステップ・コントローラは、TrainStepPage.trainプロパティを参照することによって、トレイン自体にアクセスできます。トレイン・オブジェクトまたはそれのモデル内で保持されている他の情報にアクセスするには、これを使用します。

9.19.1 トレイン定義の例

次の例にトレインの定義を示し、その次の例にトレインを示します。

例: トレインの定義

<intg:TrainActivityDef id='addNewUserEmbeddedTrain' label='Add New User'>
<intg:stepActivities>
<mx:Array>
<intg:TrainStepActivityDef id='anuStep1' label='User Info' pageClass='{trainSamp.S1_UserInfo}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep2' label='Expiry' pageClass='{trainSamp.S2_Expiry}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep3' label='Credentials' pageClass='{trainSamp.S3_Credentials}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep4' label='Schedule' pageClass='{trainSamp.S4_Schedule}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep5' label='Notifications' pageClass='{trainSamp.S5_Notifications}' pageControllerClass='{trainSamp.NotificationsTrainStepController}'/>
<intg:TrainStepActivityDef id='anuStep6' label='Confirmation' pageClass='{trainSamp.S6_Confirm}' pageControllerClass='{trainSamp.AddNewUserTrainStepController}'/>
</mx:Array>
</intg:stepActivities>
</intg:TrainActivityDef>

図9-22 トレインの例

9.19.2 トレイン・コントローラ

トレイン・コントローラは、トレイン内のすべてのページで保持される状態を管理し、トレインの変更(ステップ間の移動)に応答し、ユーザーが「終了」または「取消」ボタンをクリックしたときに完了するトレインに応答するために使用されます。

9.19.3 トレインの状態

状態は、Train.modelプロパティを使用して、トレイン・モデルに保持されます。このプロパティは、トレインに適した情報を保持するために使用できる動的プロパティです。個別のページは、独自のモデル・プロパティの独自の状態を格納でき、トレイン・モデルに格納された情報にアクセスすることもできます。

9.19.4 トレイン・イベント

各トレイン・ステップ・コントローラは、ステップの開始または停止時に呼び出されるinitメソッドおよびdestroyメソッドを実装できます。ステップは、次のいずれかを行うことができます。

- ステップ固有の処理ステップの実行

- トレインへのアクセスおよびトレインへのより高いレベルのロジック処理の許可

トレイン・コントローラは、トレインが完了したイベントに対してリスナー関数を追加することによってトレインが終了(「終了」または「取消」)した場合にも、呼び出すことができます。

例: リスナー関数の追加

// register a listener for the train complete event, this may be a cancel or finish.
train.addEventListener(TrainEvent.TRAIN_EVENT, trainDone);

リスナー(前の例のtrainDone)は、トレインの状態を調べて、処理を続行するかどうかを決定できます。これは、他のアクティビティ(ページ)への制御を指示するよう選択したり、トレインを別のステップに戻すよう設定することができます。

例: トレインの最後のアクションの定義

public function trainDone(event:TrainEvent):void
{
// train cancel/finish button was pressed, so caller can now validate
// the train (look at the model).  The caller has the various options indicated below.
var train:Train = event.target as Train;

if(train.model["isComplete"])
{
// want to end the train, but go somewhere else (otherPage is a page id)
train.endTrain("otherPage");
else
{
// go back to train at a certain step
train.controller.setStepById("step2");
}

9.20 情報アイテムと情報表示(ラベルと値のペア)の定義

InfoDisplayクラスおよびInfoItemクラスによって、ラベルを右に配置し、値を左に配置したグループで、一連のラベルと値のペアを表示できます。表示の各エントリ(InfoItem)は、ラベル、値、オプションのアイコン、宛先またはクリック・プロパティを指定します。

宛先またはクリック・プロパティによって、値はリンクとして表示されます。宛先は、次のいずれかに設定できます。

- 他のアクティビティ(ページまたはダイアログ)の識別子である文字列

- コントローラに構築されたURLオブジェクト(HomePage.mxmlおよびHomePageControllerなどを参照)

宛先ではなくクリック・ハンドラを指定して、ユーザーがアイテムをクリックしたときに呼び出されるコントローラ内の関数にそれを設定できます。

例: ラベルと値のペアの定義

<components:InfoDisplay width="100%" height="100%" >
<!-- ref to SQLDataService -->
<components:InfoItem label="CPU Model"
value="{ids.result.getString(0,'CPU Model')}" />
<!-- ref to MetricDataService for metric with a key -->
<components:InfoItem label="CPU(0) Idle %"
value="{procData.result.getString('0','CPUIdle')}" />
<!-- ref to MetricDataService for metric with no key -->
<components:InfoItem label="Current Load"
value="{respData.result.getString('','Load')}" />
<!-- ref to page model; model set in controller in SQL svc handler -->
<components:InfoItem label="{model.osVersLabel}" value="{model.osVersion}" />
<components:InfoItem label="Hosted By" value="{model.relatedHost}"
destination="{model.relatedHostLink}" />
</components:InfoDisplay>

図9-23 ラベルと値のペア

9.21 組込みレンダラの使用

表列、ヘッダー、およびFlexフレームワークが提供する機能を使用する他のUI要素用にカスタム・レンダラを定義する機能に加えて、MPCUIフレームワークは、表内またはInfoItem用にカスタム・アイコンを表示するために使用できるいくつかの組込みレンダラも提供します。これらのレンダラは、レンダラを実装するためのコントローラ・コードを作成できないメタデータのみの実装にも有用です。

これらの組込みレンダラは、TableコンポーネントまたはInfoItemコンポーネントに、テキスト値のかわりにアイコンを表示します。MXMLでappModel.rendererディレクティブを使用することでレンダラを指定し、レンダラIDを指定してレンダラを選択し、次にレンダラ・タイプに応じてレンダラ用の入力パラメータ・セットを選択します。

たとえば、次のコードでは、InfoItem上の値の横にアイコンが表示され、InfoItemに表示される値に応じてチェック・マーク、警告またはエラー・アイコンが表示されます。

<mp:InfoItem id="currentLoad" label="CPU Load"
value="{respData.result.getString('','Load')}"
imageRenderer="{appModel.renderer('CHECK_MARK',
bean('type','number','warning','0.1','critical','0.4'))}" />

最初のパラメータCHECK_MARKは、使用するレンダラを示します(次の完全なリストを参照)。2番目のパラメータbeanには、チェック・マーク・レンダラの入力パラメータを指定します。このパラメータは異なり、場合によっては、選択したレンダラに応じてオプションになります。入力パラメータに必要とされる各レンダラの詳細は、APIドキュメントを参照してください。

組込みレンダラには次のものが含まれています。

- CHECK_MARK
指定された値に応じて、チェック・マーク、警告アイコンまたはエラー・アイコンを表示します。レンダラを使用すると、ブール値が表示される場合にチェック・マークまたはエラー・アイコンを表示できます。ブール値は、true/false、t/f、または0/1にできます。タイプ・パラメータを数字として指定した場合、値は、入力パラメータに指定されたしきい値と比較されて、次のものが指定しきい値を超えている場合に異なるアイコンも表示します。

- TARGET_TYPE
ターゲット・タイプ値に関連付けられたアイコンを表示します。これは、内部ターゲット・タイプID (oracle_databaseなど)であり、ターゲット・タイプが実際に表示されている文字列表現ではありません。

- TARGET_STATUS
ステータス値に関連付けられたアイコンを表示します。ステータス値は、up/down、true/falseまたは0/1になり、その値に応じて、上向き矢印または下向き矢印を表示します。

レンダラがInfoItemに関連付けられている場合、InfoItemにデフォルトで表示される値は、レンダラに渡されて、どのアイコンを表示するかを決定します。別の値を使用してレンダラを制御する必要がある場合、InfoItemはimageDataSourceプロパティを提供します。このプロパティは、表示されている値とは異なるデータ・アイテムにバインドできます。

次の例では、TARGET_TYPEレンダラは、ターゲットの名前の横にターゲット・タイプ・アイコンを表示するために使用されます。これを行うには、imageDatasourceプロパティを、レンダラが必要とする内部ターゲット・タイプを含むアイテムに設定します。

<mp:InfoItem id="relatedHost" label="Hosted By" value="{model.relatedHost}"
imageRenderer="{appModel.renderer('TARGET_TYPE')}"
imageDataSource="{model.relatedHostType}"
destination="{model.relatedHostLink}"  />

9.22 リンクの定義

リンク・コンポーネントを使用して、URLへのリンクとなるユーザーに示すものを表示します。リンクは、ラベル・プロパティを指定し、宛先またはクリック・ハンドラ・プロパティのいずれかも指定します。宛先は、コントローラで構築されるアクティビティIDまたはURLオブジェクトになります。InfoItemクラスの詳細は、9.20項「情報アイテムと情報表示(ラベルと値のペア)の定義」を参照してください。

図9-24 リンクの例

9.23 Enterprise Managerイメージの包含

Flex実装とメタデータ実装の両方で、Enterprise Manager製品に付属のイメージの1つをMXMLから参照するには、appModel.emImage関数を使用して目的のイメージを参照します。イメージとそのファイル名のリストは、現在はEnterprise Manager EDKの一部ではないため、変更されることがあります。

Enterprise Managerの新しいリリースごとに、この情報の使用は検証およびテストする必要があります。通常のデプロイメントでは、イメージはemcore_war/imagesディレクトリの下にあります。例:

<mx:Image source="{appModel.emImage('yellowFlag.gif')}" />

9.24 処理カーソルの表示

UIは、次の場合に、処理カーソルまたはビジー・カーソルを自動的に表示します。

- 新しいアクティビティへのアクセス(ページ、トレインまたはダイアログ)

- Management Serverへのデータに関するリクエストの発生

通常、ビジー・カーソルを表示する必要はありません。ただし、ビジー・カーソルを表示する必要があると思われる場合は、カーソルが正常に終了するよう注意してください。ビジー・カーソルの表示中に例外がスローされた場合、例外が捕捉され、カーソルが削除されたことを確認します。

カーソルを表示するには、MpCursor.setBusyCursorメソッドを呼び出します。

カーソルを削除するには、MpCursor.removeBusyCursorを呼び出します。両方のメソッドは、オプションのownerパラメータを受け入れます。このパラメータによって、複数のカーソル呼出しをネストできます。

9.25 処理ウィンドウの定義

処理ウィンドウは、長時間実行しているタスクの間に表示されるダイアログを表示します。これは、タスクの実行時に、ステータス情報とともに定期的に更新できます。次の場合に、このダイアログを表示できます。

- 無限の完了。回転したステータス・アイコンが表示されます。

- 有限の完了。タスクの実行につれて更新される、割合の棒が表示されます(0から100%の完了)。

例: 処理ウィンドウの定義

private var proc:ProcessingWindow;
private var indeterminate:Boolean = false;

public function showDialog():void
{
proc = new ProcessingWindow();
proc.title="Processing";
proc.operationText = "Get Metric Info Many Times...";
proc.showDetailText = true;
indeterminate = !indeterminate;
proc.indeterminate = indeterminate;
proc.show();

taskCount = 0;
longRunningTask();
}

private var taskCount:int = 0;
private function longRunningTask():void
{
proc.addDetailText("Starting next item of work...");
var querySvc:SqlQuery = new SqlQuery(allMetricsHandler);
var queryRequest:RunQueryRequest = new RunQueryRequest();
var tgt:Target = ApplicationContext.getTargetContext();
queryRequest.addSqlQueryInput(new SqlQueryInput("GET_ALL_METRIC_INFO", "GET_METRIC_INFO", [
["TARGET_TYPE", tgt.type],
["TYPE_META_VER", tgt.typeMetaVer],
["CAT_PROP_1", tgt.catProperties[0]],
["CAT_PROP_2", tgt.catProperties[1]],
["CAT_PROP_3", tgt.catProperties[2]],
["CAT_PROP_4", tgt.catProperties[3]],
["CAT_PROP_5", tgt.catProperties[4]],
["TARGET_GUID", tgt.guid]
], SqlQueryInput.GENERIC_QUERY_TYPE));
querySvc.runQuery(queryRequest);
}

public function allMetricsHandler(event:RunQueryResultEvent):void
{
proc.addDetailText("Got a response from query service at "+new Date().toLocaleString());
taskCount++;
proc.addDetailText("task update for the "+taskCount+"th time...");
if(taskCount < 20)
{
if(!indeterminate) proc.setPercentComplete(taskCount*5);
longRunningTask();
}
else
{
proc.addDetailText("All work complete.");
proc.setComplete();
}
}
...

図9-25 処理ウィンドウの例

9.26 ターゲット・タイプ用のアイコンの定義

ターゲット・タイプ・アイコンが表示される場所(ターゲット・メニューの隣など)にはどこでも、Cloud Controlコンソールで表示されるターゲット・タイプに関連付けるアイコンを指定できます。

MPCUIは、アイコンの次のグラフィック形式をサポートします。

- PNG

- JPG

- GIF

アイコンには、次のサイズ指定をお薦めします。

- 小さいアイコン: 16x16

- 大きいアイコン: 24x24

アイコン・ファイルをplugin_stage/oms/metadata/mpcuiディレクトリに保存します。プラグイン・ステージング・ディレクトリの詳細は、第14.2項「プラグインのステージング」を参照してください。

例: アイコンの定義

<EmuiConfig>
<large-icon>demo_hs_large_icon.png</large-icon>
<small-icon>demo_hs_small_icon.png</small-icon>
</EmuiConfig>

図9-26および図9-27に、小さいアイコンおよび大きいアイコンの例を示します。

図9-26 小さいアイコン

図9-27 大きいアイコン

9.27 ターゲット・ナビゲータの表示

ターゲット・ナビゲータは、任意のコンポジット・ターゲットまたはそのメンバーのホームページの左側に表示できます。ターゲット・ナビゲータは、ルートにコンポジット・ターゲットを表示し、その下のcontainsアソシエーションを検索することによって、コンポジットのすべてのメンバーを表示します。コンポジット・ターゲットに関連付けられたターゲットは、コンポジット・ターゲットまたは他のターゲットとの別のnon-containsアソシエーションを持つことができます。ただし、コンポジット・ターゲットとのcontainsアソシエーションを持つターゲットのみが、ターゲット・ナビゲータに表示されます。アソシエーションの検出または導出のサポートされたメカニズムを介して、これらの包含アソシエーションを追加できます。詳細は、第11章を参照してください。

ターゲット・ナビゲータを有効化するには、MPCUIメタデータは、<EmuiConfig>要素のcontext-pane-visibleプロパティをtrueに設定して、含める必要があります。これは、コンポジット・ターゲット・タイプおよびそのメンバー・ターゲットに設定する必要があります。これがメンバー・ターゲットに設定されない場合、ナビゲータは表示されず、ホームページがこれらのターゲットに表示される際には、コンポジットの他のメンバーを表示します。

デフォルトでは、context-pane-visibleプロパティはfalseに設定されており、ターゲット・ナビゲータは表示されません。

注意:
containsアソシエーションがない場合、context-pane-visibleプロパティがtrueに設定されていても、ターゲット・ナビゲータは表示されません。

例: ターゲット・ナビゲータの有効化

<?xml version = '1.0' encoding = 'UTF-8'?>

<CustomUI target_type="demo_hostsystem"xmlns="http://www.oracle.com/EnterpriseGridControl/MpCui">

<EmuiConfig>
<context-pane-visible>true</context-pane-visible>
</EmuiConfig>

</CustomUI>

9.28 ガイドされた検出用のUIの定義

MPCUIフレームワークでは、ガイドされた検出フローの一部として登録できるカスタム・ユーザー・インタフェースを定義する機能がサポートされます。登録後に、この検出フローは、「ターゲットの手動追加」ページから使用できます。手動によるターゲットの追加の詳細は、第12.6項を参照してください。

9.28.1 ガイドされた検出について

ガイドされた検出フローでは、選択した管理エージェント上で検出スクリプトを実行し、適切なエンティティを追加するサービスAPIを呼び出すことによって、Enterprise Managerにターゲットおよびアソシエーションを追加する機能が提供されます。このプロセスは、ユーザー・インタフェース・ウィザード(トレイン)から駆動され、エンドユーザーが提供した情報を使用して、プロセスを説明できます。このプロセス中に、エンドユーザーから必要な情報を(特定の要件に基づいて)決定するかどうかは、任せられています。例は、EDK (demo_hostsampleおよびdemo_hostsystem)のプラグインのサンプルを参照してください。検出スクリプトの詳細は、第12章を参照してください。

ガイドされた検出中に通常使用されるサービスは、次のとおりです。

- 管理エージェントおよびターゲット(ターゲットの存在やターゲット・プロパティなど)を取得するTargetInfoサービス

- 既存のアソシエーションを取得するAssociationInfoサービス

- 選択した管理エージェント上で検出スクリプトを実行する検出サービス

- ターゲットを作成または削除するTargetManagementサービス

- アソシエーションを作成または削除するAssociationManagementサービス

これらのサービスの詳細は、9.28.5項「検出サービスの使用」、9.28.6項「ターゲット情報サービスの使用」および9.28.7項「ターゲット管理サービスの使用」を参照してください。

9.28.2 ガイドされた検出のサポート

ガイドされた検出をプラグインに追加するには、必要なファイルに次のディレクトリが含まれていることを確認してください。

- plugin_stage/discovery

- ガイドされた検出フローから実行されるスクリプト。これらのスクリプトには、複数のターゲットおよびアソシエーションが含まれます。検出スクリプトの詳細は、第12.3項を参照してください。

- customdiscover.lstファイル。このファイルには、各検出スクリプトに対してプラグインが提供されることを示す行を含める必要があります。各エントリは、検出カテゴリを参照する必要があり、これは、検出サービスを呼び出す際に実行されるスクリプトを識別するために使用される一意の識別子です。次のエントリは、ガイドされた検出フロー中にdemo_hostsample_discovery.plスクリプトを参照するために使用される検出カテゴリ(DHS_DISC)を示しています。

DHS_DISC|demo_hostsample_discovery.pl

- plugin_stage/oms/metadata/discovery
検出メタデータ・ファイル(plugin_discovery.xml)。検出メタデータ・ファイルおよび検出XMLの例の詳細は、第12.2項を参照してください。ガイドされた検出には、ガイドされた検出を正しく登録できるよう適切に指定する必要がある多くの属性があります。

- <DiscoveryModule name="DemoHostSample">
これは、検出モジュールの一意の名前で、MPCUIメタデータ・ファイルに検出SWFを登録するために使用されるモジュール名に一致する必要があります。

- <NlsValue>Discover Demo Host Sample Targets</NlsValue>
これは、Cloud Controlコンソールの「ターゲットの手動追加」ページの「ターゲット・タイプ」リストに表示されるラベルです。

<CustomDiscoveryUI>
<LaunchADF>
<DestOutcome>goto_core-mpcustomdiscovery-page</DestOutcome>
</LaunchADF>
</CustomDiscoveryUI>

これは、検出メタデータ・ファイル内でまったく同じである必要があります。これにより、ビルドしてプラグインに含めた、ガイドされた検出UIが起動されることを確認します。

- plugin_stage/oms/metadata/mpcui

- discovery.swf
ターゲットのホームページに作成されたMPCUIアプリケーションと同様、ガイドされた検出UIは、Flexアプリケーションとして構築されます。

- MyMpcui.swf
検出SWFに加えて、MPCUIメタデータ・ファイルには、適切な検出モジュールに検出SWFを登録するエントリが含まれている必要があります。

例: FlexベースUIのMPCUIメタデータ・ファイルからのSwfFilesタグ

<SwfFiles>
<Swf is_homepage="true">HostSample.swf</Swf>
<Swf discovery_module="DemoHostSample">HostSampleDiscovery.swf</Swf>
</SwfFiles>

<Swf discovery_module="DemoHostSample">HostSampleDiscovery.swf</Swf>エントリは、検出メタデータに登録された検出モジュールに登録する検出SWFを示しています。このUIは、Cloud Controlコンソールの「ターゲットの手動追加」ページで、ユーザーがこの検出モジュールを選択したときに、起動されます。

9.28.3 ガイドされた検出のユーザー・インタフェースの構築

ガイドされた検出UIは、Flex UIを構築するためのMPCUIの機能を使用して作成されます。リージョン、ボタン、表、ダイアログなどのUIコンポーネントは、Enterprise Managerに新しいターゲットを追加するプロセスを介してユーザーに説明するユーザー・インタフェースを構築するために使用されます。これらのUIコンポーネントの追加の詳細は、9.17項「表の定義」や9.18項「ダイアログの定義」など、この章の関連する項を参照してください。

9.28.3.1 検出アプリケーションおよび統合クラス

検出アプリケーションは、MpApplicationクラスではなく、MpDiscoveryApplicationクラスを拡張する必要があります。検出アプリケーションは、(ファイル名から取得した)アプリケーションの名前を指定するMXMLファイルと、検出アプリケーションに含まれるアクティビティを定義する統合クラスです。

例: アプリケーションMXML

<?xml version="1.0" encoding="utf-8"?>
<mp:MpDiscoveryApplication xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mp="http://www.oracle.com/mpcui"
backgroundColor="#EFF3F7" preloader="oracle.sysman.emx.MpPreloader" >
<mx:Script>
<![CDATA[
import discovery.DiscoveryInteg;
override public function getIntegrationClass():Class
return discovery.DiscoveryInteg; }
]]>
</mx:Script>
</mp:MpDiscoveryApplication>

検出アプリケーションの統合クラスは、検出UIで使用される一連のアクティビティを定義します。検出アプリケーションには、ガイドされた検出の開始時にロードされるページであることを示すisDefaultPage=trueプロパティを使用して定義されたPageActivityが、少なくとも1つ含まれている必要があります。次の例(demo_hostsystemサンプル・プラグインから抽出)では、discoHomePgアクティビティに注意してください。

例: 統合クラス

<mp:PageActivityDef id='discoHomePg' label='Discovery Console' pageClass='{discovery.DiscoveryTrainPage}' pageControllerClass='{discovery.DiscoveryTrainPageController}' isDefaultPage="true" />
<mp:TrainActivityDef id='discoTrain' label='Discover New Targets'>
<mp:stepActivities>
<mx:Array>
<mp:TrainStepActivityDef id='selAgentsStep' shortLabel="Select Agents" label='Add Demo Host System Target: Select Agents' pageClass='{discovery.train.SelectAgentsStep}' pageControllerClass='{discovery.train.DiscoveryTrainStepController}'/>
<mp:TrainStepActivityDef id='selHostSysStep' shortLabel="Select System" label='Add Demo Host System Target: Select Demo Host System' pageClass='{discovery.train.SelectHostSystemStep}' pageControllerClass='{discovery.train.DiscoveryTrainStepController}'/>
<mp:TrainStepActivityDef id='selTargetsStep' shortLabel="Configure Targets" label='Add Demo Host System Target: Configure Targets' pageClass='{discovery.train.SelectTargetsStep}' pageControllerClass='{discovery.train.DiscoveryTrainStepController}'/>
<mp:TrainStepActivityDef id='confTargetsStep' shortLabel="Confirm Changes" label='Add Demo Host System Target: Confirm Changes' pageClass='{discovery.train.ConfirmChangesStep}' pageControllerClass='{discovery.train.DiscoveryTrainStepController}'/>
<mp:TrainStepActivityDef id='finTopo' shortLabel="Summary" label='Add Demo Host System Targets: Apply Changes' pageClass='{discovery.train.FinalizeTopoStep}' pageControllerClass='{discovery.train.DiscoveryTrainStepController}'/>
</mx:Array>
</mp:stepActivities>
</mp:TrainActivityDef>

9.28.4 検出アプリケーションの構造

検出アプリケーションは、中にトレインが埋め込まれた単一のページ、または検出プロセスを説明するエンドユーザーからの情報を取得するためのダイアログを表示する単一のページのいずれかであることが多いです。ガイドされた検出フローのステップは要件に応じて異なりますが、多くは次のようになります。

1. 検出スクリプトを実行する管理エージェントの決定

2. 検出スクリプトの実行

3. エンドユーザーが提供した追加情報を追加して、検出スクリプトの結果を処理

4. ターゲットを追加または削除するAPIの呼出し

ガイドされた検出に関する重要な考慮事項の1つは、これは、新しいターゲットの検出とともに、既存のコンポジット・ターゲットのトポロジの更新に使用することも可能であるということです。サンプル・プラグイン(demo_hostsystem)の場合、ガイドされた検出UIによって、ユーザーは新しいシステム・ターゲットを追加できますが、既存のシステムに対してメンバーの追加または削除を行うこともできます。

このユースケースは、ターゲットがEnterprise Managerによってすでに管理されているかどうかを識別する検出スクリプトから返される情報を持つセットを比較するために、Enterprise Managerに認識された既存のターゲットのセットを問い合せる、Enterprise Manager APIを使用するための要件も示しています。たとえば、結果は、追加する必要がある新しいターゲットのリストと、管理構成にすでに存在しないためEnterprise Managerから削除する必要がある他のターゲットのリストになります。

このシナリオは、検出アプリケーションは、ターゲットのホームページにビルドされたカスタムUIと統合する可能性もあることも示しています。これにより、コンポジット・ターゲットのホームページから、既存のコンポジット・ターゲットの構成を直接更新する機能がユーザーに提供されます。

ターゲットのホームページ内から検出UIを使用する例は、demo_hostsystemサンプル・プラグインのHostSystemConfigurationページを参照してください。

9.28.5 検出サービスの使用

検出サービスは、プラグインに付属の検出スクリプトを実行するために使用されます。検出をサポートするプラグインの要件の説明は、9.28.2項「ガイドされた検出のサポート」を参照してください。

次の例(DiscoveryTrainStepController内のdemo_hostsystemサンプル・プラグインに含まれています)に、検出サービス(TargetFactory.discoverTargets)の呼出しを示します。このサービスには、必要な場合、複数の管理エージェント上の検出を処理するために複数回呼び出すことができるaddRequestメソッドが含まれています。

addRequestメソッドへの各呼出しは、検出スクリプトの結果を使用して呼び出されるハンドラとともに、次に渡されます。

- リクエストID
リクエストに関連付けられた特定の結果を取得できる特定のリクエストに関連付けられた一意の識別子(ユーザーが割り当てる)。

- エージェント
検出を実行する管理エージェント・ターゲット。

- プラグインID
実行する検出に関連付けられたプラグインID。プラグインには、複数の検出モジュールおよびカテゴリを含めることができます。

- 検出カテゴリ
検出カテゴリ。これは、プラグインのエージェント部分に含まれているdiscover.lstファイルのエントリを使用して、検出スクリプトにマップする必要があります。

例: 検出サービス

/**
* when doing discovery, the service will accept multiple requests to be
* processed at the same time.  this would typically be the case if multiple
* agents were involved in the process, but could also be if different discovery
* categories (scripts) were to be processed.
*
* the discovery request includes the following elements:
*     requestId   a unique identifier associated with that particular request
*                 that will allow you to retrieve the specific results associated
*                 with that request.
*     agent       the agent Target that the discovery should be run against
*     pluginId    the pluginId associated with the discovery to be run; a plug-in
*                 can include multiple discovery modules and categories
*     discCat     the discovery category; this must map to a discovery script via
*                 an entry in the discover.lst file included in the agent part of
*                 the plugin
*     params      parameters that are to be passed to the discovery script
*
* Note on discoveryModule - in addition to the pluginId, the discovery UI is
* passed the discovery module associated with this discovery pass.  If you've
* chosen to implement multiple types of discovery operations from a single
* discovery UI you may retrieve thediscoveryModule to determine in what context
* the UI was launched.
*/

var requestId:String = "DiscReq1";
var pluginId:String = ApplicationContext.getPluginId();
var discoveryCategory:String = "DHSYSTEM_DISC";
discSvc.addRequest(requestId, agent, pluginId, discoveryCategory, params);

TargetFactory.discoverTargets(discSvc, discoverResultsHandler);

次のように宣言される検出結果ハンドラは、フォルト・オブジェクトおよび検出結果に渡されます。

public function discoverResultsHandler(disc:Discovery, fault:ServiceFault):void

検出スクリプトの処理中にフォルトが発生しなかった場合、フォルト・オブジェクトはNULLになります。ハンドラに渡される検出オブジェクトには、addRequestメソッドを呼び出すことによって構築されたDiscoveryRequestオブジェクトの配列が含まれています。各リクエストには、指定したプロパティ(エージェント、カテゴリなど)が含まれ、DiscoveredTargetsオブジェクトも含まれています。DiscoveredTargetsオブジェクトには、指定したリクエストのターゲット管理エージェントで実行された検出スクリプトから返されたターゲットのリストが含まれています。検出スクリプトの詳細は、第12.3項を参照し、DiscoveryServiceで返された検出オブジェクトの詳細は、EDKのAPIドキュメントを参照してください。

9.28.6 ターゲット情報サービスの使用

検出処理中に、エージェントのリストや特定のタイプのターゲットのセットなど、ターゲット情報を取得する必要がよくあります。ターゲット情報サービスでは、このような目的で使用できる多くのAPIが提供されています。この項では、これらのサービスの概要について説明します。詳細は、EDKのAPIドキュメントを参照し、これらの使用例は、demo_hostsystemサンプル・プラグインを参照してください。

- TargetFactory.getAgents
getAgents APIは、検出を実行するために使用できる一連の管理エージェントを取得できます。Windowsホスト上で実行中のすべての管理エージェントを選択するなど、選択プロパティ(TargetPropertyの配列)を指定することによって、リストをフィルタ処理できます。

- TargetFactory.getTargets
getTargets APIを使用して、ホスト、ターゲット・タイプ、管理対象ステータス、メタデータ・バージョンなど、任意の数の選択基準を指定するターゲットのリストを取得します。各アイテムは使用可能な値のリストとして指定され、リクエストは1つ以上の選択基準を含めることができます。

- Target.getSystemMembers
getSystemMembers APIを使用して、システム・メンバー・ターゲットのリストを取得します。これらは、systemStencilを介してシステムに含まれるターゲットです。システム・ターゲットの詳細は、『Oracle Enterprise Manager Cloud Control拡張プログラマーズ・ガイド』を参照してください。

- Target.getCompositeMembers
getCompositeMembers APIを使用して、コンポジット・メンバー・ターゲットのリストを取得します。コンポジット・メンバーは、包含アソシエーションを介してコンポジット(またはシステム・ターゲット)に含まれるメンバーです。コンポジット・ターゲットの詳細は、『Oracle Enterprise Manager Cloud Control拡張プログラマーズ・ガイド』を参照してください。

9.28.7 ターゲット管理サービスの使用

ターゲット管理サービスでは、ターゲットまたはアソシエーションを作成または削除する機能が提供されます。ターゲット管理の場合、アソシエーションは、ターゲット定義の一部として渡すこともでき、そのアソシエーションは、ターゲット自体を追加するプロセスの一部として追加されます。この項では、これらのサービスの概要について説明します。詳細は、EDKのAPIドキュメントを参照し、これらの使用例は、demo_hostsystemサンプル・プラグインを参照してください。

- TargetFactory.createTargets
createTargets APIを使用して、ターゲットをEnterprise Managerに追加します。Enterprise Managerにターゲットを追加するプロセスは、各ターゲットに関連付けられた管理エージェントへの必要なプラグインのデプロイメントを強制します。このAPIへのリクエストは、ターゲット・オブジェクトのリストで、このオブジェクトのそれぞれは、最低でも、名前、タイプおよびエージェントを指定する必要があります。通常、ターゲット・インスタンス・プロパティ(このターゲット・タイプに使用される場合)を指定することもできます。

- TargetFactory.deleteTargets
deleteTargets APIを使用して、ターゲットをEnterprise Managerから削除します。このAPIへのリクエストは、ターゲット・オブジェクトのリストです。ターゲットの削除は元に戻せず、すべてのターゲット、メトリックおよび構成の履歴を削除するため、Enterprise Managerからのターゲットの削除は、注意して実行する必要があります。

- Target.createAssociations
createAssociations APIを使用して、指定したターゲットと別のターゲットの間のアソシエーションを追加します。導出されたアソシエーションまたはシステム・ステンシルを使用してアソシエーションを作成する場合は、この方法で作成できます。すべての場合、アソシエーションは、対応する許可されたペアの定義に関連付ける必要があります。詳細は、第11章を参照してください。

- Target.deleteAssociations
deleteAssociations APIを使用して、指定したターゲットと他のターゲットの間のアソシエーションを削除します。

9.29 ロギングについて

次の各項では、MPCUIのロギング・オプションについて説明します。

9.29.1 コードへのロギングの追加

ロギング機能(MpLog)を使用して、コードからメッセージを記録します。

注意:
Flashトレース・グローバル・メソッドのみが、ブラウザがAdobe Flash Playerのデバッグ・バージョンを実行しているFlashログへの出力を提供しているため、これを使用しないでください。

ロギングは、診断が必要な状況で役立つ一方、コード・サイズおよびオーバーヘッドの観点ではコストがかかります。そのため、ロギングは注意して使用してください。

MpLogメソッド(デバッグ、情報、エラーまたは致命的など)のうち1つを呼び出して、ロギングを実行します。メソッドは、置換する必要があるメッセージ文字列およびオプションのパラメータのリストを受け入れます。

パラメータを置換するには、{#}フォーマットを使用して、パラメータの位置を示します。

MpLog.debug("The metric {1} was not found for the target {2}.", metricName, targetName);

このログ文で生成されたメッセージは、次のログ出力に表示されます。

2011-04-22 11:10:17 [MpCui] DEBUG The metric CPU was not found for the target MYHOST

レベル(情報、デバッグ、エラー、致命的)によって、ユーザーは、異なるクラスのメッセージのログ出力を有効化できます。

- デフォルトでは、すべてのエラーおよび致命的メッセージは、ログ出力の場所に送信されます。

- 情報およびデバッグのレベルのメッセージは、これらのレベルが明示的に有効化されている場合のみ、送信されます。

さらに、各レベルのメッセージを異なる出力場所に送信できます。使用可能なログの場所には、次の3つがあります。

- FLASHLOG: メッセージはFlashログに送信されます(デバッグAdobe Flash Playerが必要)

- EMLOG: メッセージはEnterprise Managerアプリケーション・ログに送信されます

- CONSOLE: メッセージは、MPCUI表示の下部に表示される小さいウィンドウに送信されます

9.29.2 ログ出力を取得するオプション

ログ出力を取得するオプションは、実装に依存しています。

- Adobe Flash BuilderからのMPCUIの実行

- Enterprise ManagerコンソールからのMPCUIの実行

9.29.2.1 Adobe Flash BuilderからのMPCUIの実行

Adobe FlashまたはFlex Builderを使用してMPCUIを開発している場合、FLASHLOGに送信されたログ・メッセージは、デフォルトで、Adobe Flash Builder統合開発環境(IDE)の下部にあるコンソール・ウィンドウに表示されます。

これらのロギング設定を変更するには、次の手順に従います。

1. html-template/data/mpCuiProperties.xmlファイルを開きます。

2. loglevel要素を特定します。

<!-- Logging
level: DEBUG, INFO, ERROR, FATAL, WARN (or ALL)
output location: FLASHLOG, CONSOLE, EMLOG
format: level,output;level,output (e.g. DEBUG,FLASHLOG;ERROR,EMLOG)
-->
<loglevel>ALL,FLASHLOG</loglevel>

3. 必要に応じて、loglevel要素を変更します。

4. Adobe Flexアプリケーションを実行する前に、アプリケーションを再ビルドします。

9.29.2.2 Enterprise ManagerコンソールからのMPCUIの実行

プラグインのデプロイ後に、ロギングの設定がHTTPリクエストから検出されます。デフォルト設定は、FATAL,FLASHLOG;ERROR,FLASHLOGです。

エンドユーザーは、次のように設定を変更できます。

1. ブラウザのアドレス・バーで、URLに次を追加します。

&loglevel=ALL,FLASHLOG

2. ALL,FLASHLOGを、ERROR,CONSOLEなどの有効なロギング設定に置換できます。

3. 診断の状況の場合、URLの末尾に次を追加します。

&loglevel=ALL,CONSOLE

4. ページをリフレッシュして、図9-28のようなコンソール・ウィンドウのページおよびすべてのログ・メッセージを確認します。

図9-28 ログ・メッセージの表示

9.30 開発環境オプション

プラグインのカスタムUIをビルドする場合、次の開発環境オプションがあります。

- メタデータのみ
好みのテキスト・エディタを使用して、MPCUIメタデータ・ファイルを編集します。MPCUIメタデータ・ファイルの詳細は、9.4.1項「MPCUIメタデータ要素の概要」を参照してください。

- Flex SDKおよびApache Ant
Flex SDKをダウンロードし、EDKで提供されるApache Antビルド・ファイルを使用して、SWFコードをビルドします。このオプションには、Flex Builderのライセンスは必要ありませんが、Flex Builderの一部であるグラフィカル・デバッガではなく、コマンドライン・デバッガ(fdb)を使用する必要があります。Flex SDKおよびApache Antの使用の詳細は、9.30.1項「Flex SDKおよびApache Antを使用したMPCUIの開発」を参照してください。

- Flex Builder
Flex Builderのビルドを行うライセンスを取得し、プラグインに付属のFlexコードをデバッグする必要があります。Flex Builderの使用の詳細は、9.30.2項「Adobe FlashまたはFlex BuilderでのMPCUIの開発」を参照してください。

注意:
MPCUIプロジェクト用のAdobe Flash Builderで使用するプロジェクト設定は、アプリケーションが正しくビルドされ、プラグインの一部としてデプロイされる際に適切に動作することを確認するために不可欠です。demo_hostsampleサンプル・プロジェクトの設定を参考にし、これらの設定に正確に一致させることをお薦めします。
Adobe Flash Builderで、プロジェクト・プロパティを選択し(「File」メニューから「Properties」を選択)、設定がサンプル・プロジェクトの設定と一致することを確認します。「Library path」タブの「Flex Build Path」プロパティの設定が、「Flex Compiler」プロパティの設定と同じであることを確認します。

9.30.1 Flex SDKおよびApache Antを使用したMPCUIの開発

Flex Builderを使用できない場合、次のように、Adobe Flex SDKをインストールし、Antを使用してプラグイン用のSWFファイルをビルドします。

注意:
次のステップによって、Windows上でAntを使用して、HostSample.swfをビルドします。
コマンドラインから、またはFlex Builder IDEを使用せずに、デモ・サンプルをビルドする場合、参照用に次の2つのApache Antビルド・ファイルがあります。

- demo_hostsample\mpcui\build.xml

- demo_hostsample\mpcui\plugin-build-config.xml

1. 次のWebサイトから、Apache Antをダウンロードおよびインストールします。

http://ant.apache.org

1. ANT_HOME環境変数を、Apache Antがインストールされている場所に設定します。

2. コマンド・シェルのPATH環境変数に、$ANT_HOME\binをインクルードします。

3. ANT_OPTS環境変数を-Xmx512mに設定します。

2. Flex SDKバージョン3.5をダウンロードおよびインストールします。

- 次のWebサイトから、Flex SDK 3.5 ZIPファイルをダウンロードします。

http://download.macromedia.com/pub/flex/sdk/flex_sdk_3.5.zip

- 次のWebサイトから、Flex Builder ZIPファイル用のFlex 3.5データ仮想化コンポーネントをダウンロードします。

http://download.macromedia.com/pub/flex/sdk/datavisualization_sdk3.5.zip

- 次のWebサイトから、Flex Builder ZIPファイル用のFlex 3.5自動化ライブラリをダウンロードします。

http://download.macromedia.com/pub/flex/sdk/automation_sdk3.5.zip

注意:
SDKディレクトリに自動化ライブラリを追加する際には、FLEX_HOMEディレクトリではなく、FLEX_HOME/frameworksディレクトリに展開する必要があります。

3. demo_hostsample\mpcui\build.xmlファイルを編集します。
locationがFlex SDKインストールの場所を指すように、FLEX_HOMEプロパティを更新します。

4. HostSample.swfファイルをビルドします。

1. cd demo_hostsample\mpcui

2. ant
このコマンドを入力すると、demo_hostsample\mpcui\bin-debug\HostSample.swfファイルをビルドします。

9.30.2 Adobe FlashまたはFlex BuilderでのMPCUIの開発

注意:
この項では、Adobe Flash Builder 4を使用していることを前提とします。ただし、Adobe Flex Builder 3を使用している場合も、これらのステップは同じになります。

この項では、MPCUIライブラリおよびAdobe Flash Builderを使用してFlexアプリケーションをビルドする際に従うプロセスについて説明します。これらのステップは、デモ・ホスト・サンプル(またはdemo_hostsample)と呼ばれる、EDKで提供されるサンプル・アプリケーションを使用していることを前提とします。多くの開発アクティビティと同様に、提供されたAPIの動作方法、およびこれらを使用してより高いレベルのユースケースを実行する方法を理解するために、実施例から開始することは、多くの場合、最も容易です。

カスタムUIを開発するプロセスを単純化するには、各変更後にEnterprise Managerへのプラグインの再デプロイを行う必要なく、Adobe Flash BuilderからFlexアプリケーションをビルドおよび実行します。Adobe Flash Builderから実行する場合、UIは、コンソールで使用可能なEnterprise Managerの他の機能およびページにはアクセスできませんが、プラグインの一部としてデプロイする前に、適切に機能していることを確認するためにUIを実行できるようになります。

9.30.2.1 Adobe Flash Builderの構成

EDKで提供されるMPCUIライブラリは、Flex SDK 3.5を使用してビルドされ、Flex SDK 3.5を使用する必要があります。そのため、Adobe Flash BuilderでMPCUIプロジェクトをビルドする際には、3.5 SDKを使用する必要があります。

バージョンをチェックするには、次の手順に従います。

1. Adobe Flash Builderで、「Window」メニューから、「Preferences」を選択します。

2. 「Preferences」ダイアログで、「Flash Builder」を開き、「Installed Flex SDKs」を選択します。

注意:
Adobe Flex Builder 3では、「Preferences」ダイアログから、「Flex」を開きます。

Flex SDK 3.5がない場合、Flex SDK 3.5をインストールする必要があります。

1. 次のFlex SDK 3.5 ZIPファイルをダウンロードします。

- 次のWebサイトから、Flex SDK 3.5 ZIPファイルをダウンロードします。

http://download.macromedia.com/pub/flex/sdk/flex_sdk_3.5.zip

- 次のWebサイトから、Flex Builder ZIPファイル用のFlex 3.5データ仮想化コンポーネントをダウンロードします。

http://download.macromedia.com/pub/flex/sdk/datavisualization_sdk3.5.zip

- 次のWebサイトから、Flex Builder ZIPファイル用のFlex 3.5自動化ライブラリをダウンロードします。

http://download.macromedia.com/pub/flex/sdk/automation_sdk3.5.zip

2. これらのZIPファイルを、システム上の新しいディレクトリに展開します(たとえばc:\flex3.5\sdks\)。

注意:
SDKディレクトリに自動化ライブラリを追加する際には、FLEX_HOMEディレクトリではなく、FLEX_HOME/frameworksディレクトリに展開する必要があります。

Adobe Flash Builder (またはFlex Builder)へのSDKのバージョンの追加の詳細は、AdobeのWebサイトを参照してください。

http://www.adobe.com/support/flashbuilder/

3. Adobe Flash Builderで、「Window」メニューから、「Preferences」を選択します。

4. 「Preferences」ダイアログで、「Flash Builder」を開き、「Installed Flex SDKs」を選択します。

注意:
Adobe Flex Builder 3では、「Preferences」ダイアログから、「Flex」を開きます。

5. 「Add」をクリックし、手順2でZIPファイルを解凍した場所を参照します。

9.30.2.2 デモ・サンプル・プロジェクトの設定

デモ・サンプル・プロジェクトを設定するには、次の手順に従います。

1. EDK配布でdemo_hostsample.zipファイルを特定します。

2. Adobe Flash Builderをインストールおよび構成したWindowsシステム上の場所に、このファイルをコピーします。

3. Adobe Flash Builderで、「File」メニューから、「Import Flex Project」を選択します。

4. demo_hostsample.zipファイルがある場所を参照し、そのファイルを選択して「Finish」をクリックします。
警告ダイアログ(「Project Will Be Upgraded」)が表示され、これは、プロジェクトdemo_hostsampleは、前のバージョンのFlash Builderで作成されたことを示しています。

2番目のダイアログ(「Choose Flex SDK Version」)が、同じ警告とともに表示されます。

5. 2番目のダイアログで、リストから「Use a specific SDK」を選択し、「Flex 3.5」を選択して「OK」をクリックします。

6. 最初のダイアログで、「OK」をクリックして、プロジェクトをアップグレードします。
Adobe Flash Builderナビゲータに、demo_hostsampleプロジェクトが表示されます。

7. mpcui/srcディレクトリにナビゲートして、プラグインUIを構成するソース・ファイルを表示します。
これらのファイルをコンパイルすると、mpcui/bin-debug/HostSample.swfファイルが作成されます。これは、このターゲットのカスタムUIであるFlexアプリケーションで、プラグインに含まれます。

SWFファイルの詳細は、9.7項「プラグインとのMPCUI実装のパッケージ化」および9.6項「MPCUIアプリケーションの定義」を参照してください。

9.30.2.3 Adobe Flash Builderからのデモ・サンプルのMPCUIの実行

注意:
MPCUIの利点の1つは、デプロイされたプラグインの一部として、またはAdobe Flash Builder内から直接実行して、Flex UIをテストできることです。この後者のオプションでは、反復の開発をより単純にできますが、少なくとも1つのバージョンのプラグインをEnterprise Managerにデプロイし、Adobe Flash BuilderからUI (Flexアプリケーション)を実行しようとする前にターゲット・インスタンスがすでに検出されている必要があります。

デモ・サンプル・プラグインがデプロイされ、demo_hostsample.zipプロジェクトがAdobe Flash Builderにインポートされて正常にビルドすると、Adobe Flash BuilderからFlexアプリケーションを実行できます。

1. ナビゲータから、demo_hostsampleを選択します。

2. 「Run」メニューから、「Run HostSample」または「Debug HostSample」を選択します。
「管理サーバー接続」ログイン・ダイアログとともに、ブラウザ・ウィンドウが表示されます。

注意:
「管理サーバー接続」ダイアログが表示されない場合、または他のエラーが表示される場合、プロジェクトが正常にインポートされたことを確認し、Flash Builderウィンドウの下部に表示される「Problems」タブまたは「Console」タブにエラーが表示されていないことを確認します。
通常の操作時に、ユーザーがターゲットのホームページに移動してEnterprise Managerコンソールを介してUIにアクセスする場合、UIはEnterprise Managerコンソールの不可欠な部分として実行中で、コンソール・セッションに埋め込まれているため、このダイアログは表示されません。

ただし、Adobe Flash Builderから実行している場合、UIは、プラグインがデプロイされていて、管理するターゲット・インスタンスがあるEnterprise Managerのサイトに接続するための情報を必要とします。実行中のEnterprise Managerコンソールに接続するために使用するホスト、ポートおよび資格証明の、同じ情報を入力します。構成に応じてhttpまたはhttpsのいずれかを使用できますが、指定したポートが提供されたプロトコルに対して正しいことを確認する必要があります。

3. 監視するターゲットの下に、このプラグインに関連付けられたターゲット・インスタンスのターゲット名およびターゲット・タイプ(表示されたラベルではなく内部タイプ)を入力します。これは、Enterprise Managerにすでに存在するターゲットである必要があります。デモ・サンプルを使用している場合、ターゲット・タイプはdemo_hostsampleで、ターゲット名は、ターゲット・インスタンスの作成時に指定したターゲット名です。

4. 「OK」をクリックします。
デモ・サンプルのホームページが表示され、データが移入されます。

注意:
このモードでは、Enterprise Managerのページ装飾およびターゲット・コンテキスト領域は、ページの上部に表示されませんが、Enterprise Managerコンソールからターゲットのホームページにアクセスすると、これらは表示されます。カスタムUIに含まれる複数のページを実行できるメニューが表示されます。

9.30.2.4 デモ・サンプルのFlex UIの要素

次に、デモ・サンプルのFlex UIを構成するコンポーネントの簡単なリストを示します。各ファイルの目的を説明するコメントおよび各ファイルに示したアイテムの詳細は、ソース・コードを参照してください。

demo_hostsample
html-template/data/demo_hostsample_menu.xml
mpcui/src
HostSample.mxml            The application definition, must extend
MpApplication and implement the single
method "getIntegrationClass"
HostSampleInteg.mxml       The integration class, defines the set of
pages, dialogs, trains, etc. that make up
the application
HomePage.mxml              The target homepage, contains the layout of
the UI for the homepage
HomePageController.as      The controller for the HomePage, includes
the methods that load data for the page
and respond to events from the page
ProcessesPage.mxml
ProcessesPageController.as
CredentialsPage.mxml
CredentialsPageController.as
AvailabilityDialog.mxml
MetricHistoryDialog.mxml

9.30.2.5 デモ・サンプルの更新

Adobe Flash BuilderでUIを変更および再ビルドするとき、変更が行われると、 Adobe Flash BuilderからFlexアプリケーションを直接実行またはデバッグできます。

続行しようとする前に、「Problems」タブにコンパイラ・エラーが表示されていないことを確認してください。未解決のエラーがあるアプリケーションを実行しようとした場合、Adobe Flash Builderは警告を表示します。

注意:
Adobe Flash Builderで更新されたUIを参照できますが、Enterprise Managerにデプロイされるバージョンを更新していません。プラグインを更新するまで、更新されたバージョンはEnterprise Managerコンソールに表示されません。

9.30.2.6 デプロイされたプラグインの変更

Adobe Flash BuilderでUIへの変更を行った後で、Enterprise Managerコンソール内のターゲットのホームページから更新を表示できるよう、変更をプラグインに適用できます。

これを行うには、新しいバージョンのプラグインを作成およびデプロイするか、メタデータ登録サービス(MRS)を使用する必要があります。

MRSによって、新しいバージョン全体を作成およびデプロイせずに、増分更新をプラグインに適用できます。MRSの詳細は、第14.7項を参照してください。

Adobe Flash BuilderでFlexコードを変更することによってカスタムUIを変更した後で、次の手順に従います。

1. SWFファイル(/bin-debug)を再ビルドします。

2. Enterprise Managerのサイトがインストールされたサーバーおよび最初にデモ・サンプル・プラグイン(HostSample.swf)をデプロイしたサーバーに、SWFファイルをFTP送信またはコピーします。

3. プラグイン・ステージング・ディレクトリを作成した場所に、このファイルをコピーします。

stage/oms/metadata/mpcui

注意:
このディレクトリには、このファイル(HostSample.swf)の既存のバージョンが、MPCUIのメタデータXMLファイルとともに存在します。

4. 次のコマンドを使用して、プラグインを更新します。

emctl register oms metadata -sysman_pwd sysman -pluginId oracle.sysman.xohs
-service mpcui -file demo_hostsample_uimd_swf.xml

emctlコマンドの詳細は、第14.7項を参照してください。

9.30.3 MPCUI用のAdobe Flash Builderプロジェクトの設定

この項では、Adobe Flash Builder 4.5を使用していることを前提としますが、Adobe Flash Builder 3のユーザー向けの注意も記載しています。

Adobe Flash Builderプロジェクトを設定するには、空のプロジェクトを作成するか、demo_hostsampleプロジェクトをテンプレートとして使用するためにAdobe Flash Builderにインポートします。demo_hostsampleプロジェクトをインポートする場合、9.30.3.1項「開始する前に」の手順を完了します。それ以外の場合、9.30.3.2項「Adobe Flash Builderプロジェクトの作成」に進みます。

注意:
Adobe Flash Builderを、Flex 3.5 SDKファイルを含めるように構成しておく必要があります。Flex 3.5 SDKファイルを含める場合の詳細は、9.30.2.1項「Adobe Flash Builderの構成」を参照してください。

9.30.3.1 開始する前に

demo_hostsampleプロジェクトをテンプレートとして使用する場合、MPCUI用にAdobe Flash Builderプロジェクトを設定する前に、次の手順を実行する必要があります。

1. 次のディレクトリの中身を削除します。

- /stage

- /scripts

- /rsc

これらのディレクトリは、サンプル・プラグインのデプロイへのサポートを提供しますが、新しいプロジェクトには適していません。

2. mpcui/metadataディレクトリの、demo_hostsample_uimd_swf.xmlファイルの名前をtargettype_mpcui.xml (targettypeはターゲット・タイプの名前)に変更します。

mpcui/metadataディレクトリの中身を、targettype_mpcui.xmlを除いてすべて削除します。

3. mpcui/data directoryディレクトリの、mpCuiProperties.xmlファイルを次のように編集します。

- OMS接続を、Enterprise Managerサーバーに接続するための情報に置き換えます。

<!-- Default OMS Connection -->
<hostname>myhost.us.example.com</hostname>
<port>7777</port>
<emUser>sysman</emUser>
<password>sysman_pasword</password>

- <metadata>タグを、手順2で作成したファイル名 (/metadata/targettype_mpcui.xml)に置き換えます。

<!--                 the filename that includes the mpcui meta-data that will be included
in the plug-in. This is used to populate the menus for testing of the
UI in standalone (FlashBuilder) mode
If not specified then a default filename of <targetType>_menu.xml will be used.       -->
<metadata>../metadata/targettype_mpcui.xml</metadata>

4. /srcディレクトリの、HostSample.mxml (アプリケーション定義)およびHostSampleInteg.mxml (統合クラス)のファイルの名前を、MyTargetUi.mxmlおよびMyTargetUiInteg.mxmlなど、ターゲットに関連するファイル名に変更します。これらのファイルの詳細は、9.6項「MPCUIアプリケーションの定義」を参照してください。
/srcディレクトリの中身を、MyTargetUi.mxmlおよびMyTargetUiInteg.mxmlの2つのファイルを除いてすべて削除します。

5. 次の2つファイルが/mpcui/libsディレクトリにあることを確認します。

- mpcui_13.1.0.1.0.swc

- mprslldr_13.1.0.1.0.swc

注意:
これらのファイルはバージョン固有です。EDKの以前のバージョンから新しいバージョンに移行した場合、これらのファイルを最新のバージョンに置き換え、この変更を反映するようプロジェクト・プロパティが更新されていることを確認する必要があります。

6. stylesFusionFX.swfファイルが/html-templateディレクトリにあることを確認します。このファイルが見つからない場合、demo_hostsample.zipファイルでこのファイルを特定し、/html-templateディレクトリに追加します。

7. Adobe Flash Builderで、プロジェクト・プロパティを選択し(「File」メニューから「Properties」を選択)、「Flex Compiler」を選択します。
Flex SDKのバージョンがFlex 3.5に設定されていることを確認します。エラーが発生する場合、Flex 3.5 SDKファイルの場所がサンプルに使用されている場所と同じではありません。

「Configure Flex SDKs...」をクリックし、Flex 3.5の設定を、Flex 3.5 SDKファイルをインストールした場所を指すよう編集します。

9.30.3.2 Adobe Flash Builderプロジェクトの作成

Adobe Flash Builderから、新しいプロジェクトを作成し、次の手順を実行してプロジェクトを設定します。

1. ターゲットに関連する意味のある名前をプロジェクトに付けます(MyTargetUIなど)。この名前は、プロジェクトの作成後に、デフォルトのアプリケーション・ファイルに割り当てられます。たとえば、/src/MyTargetUi.mxmlのようになります。

2. Flex SDKのバージョンがFlex 3.5に設定されていることを確認します。詳細は、9.30.2.1項「Adobe Flash Builderの構成」を参照してください。「Finish」をクリックして、アプリケーションを作成します。

3. demo_hostsample.zipファイルで、mpcui/html-template/stylesFusionFX.swfファイルを特定します。/html-templateディレクトリの下のプロジェクトに、このファイルのコピーを作成します。

4. demo_hostsample.zipファイルで、mpcui/libsディレクトリを特定し、/libsディレクトリの下のプロジェクトに、次のファイルをコピーします。

- mpcui_13.1.0.1.0.swc

- mprslldr_13.1.0.1.0.swc

5. metadataと呼ばれるディレクトリを作成し、targettype_mpcui.xmlと呼ばれるファイルを作成します。このファイルには、プラグインのMPCUIメタデータが含まれています。このファイルの詳細は、demo_hostsampleおよび9.4項「MPCUIメタデータ・ファイルの作成」を参照してください。

6. demo_hostsample.zipファイルで、mpcui/data/mpCuiProperties.xmlファイルを特定し、dataと呼ばれる新しいディレクトリの中のプロジェクトにコピーします。
このファイルを次のように編集します。

- OMS接続を、Enterprise Managerサーバーに接続するための情報に置き換えます。

<!-- Default OMS Connection -->
<hostname>myhost.us.example.com</hostname>
<port>7777</port>
<emUser>sysman</emUser>
<password>sysman_pasword</password>

- <metadata>タグを、手順5で作成したファイル名 (/metadata/targettype_mpcui.xml)に置き換えます。

<!--                 the filename that includes the mpcui meta-data that will be included
in the plug-in. This is used to populate the menus for testing of the
UI in standalone (FlashBuilder) mode
If not specified then a default filename of <targetType>_menu.xml will be used.       -->
<metadata>../metadata/targettype_mpcui.xml</metadata>

7. /srcディレクトリに、projectname.mxmlファイルがあります。MPCUIアプリケーションの必須設定に対応するよう、このファイルを変更し、統合クラスを追加する必要があります。詳細は、9.6項「MPCUIアプリケーションの定義」を参照してください。

8. 9.30.3.3項「MPCUIプロジェクト・プロパティの設定」で説明するように、プロジェクト・プロパティが正しく設定されていることを確認します。

9.30.3.3 MPCUIプロジェクト・プロパティの設定

プロジェクトが正常に動作することを確認するために、MPCUIアプリケーションのプロジェクト・プロパティが正しく設定されていることを確認することは重要です。

1. Adobe Flash Builderで、プロジェクト・プロパティを選択し(「File」メニューから「Properties」を選択)、「Flex Compiler」を選択します。

- 「Flex SDK version」がFlex 3.5に設定されていることを確認します。

- 「Enable strict type checking」が選択されていないことを確認します。

2. Adobe Flash Builderで、「Project」、「Properties」、「Flex Build Path」の順に選択し、「Library Path」タブをクリックします。

- 新しいプロジェクトから開始する場合、プロジェクトのビルド・パス・プロパティ・ページにアクセスして、ライブラリ・パスを編集する必要があります。

- ビルド・パス・ライブラリでlibsエントリを削除します。

- 「Add SWC」をクリックし、mprslldr.swcファイルを選択します。

- mpcui.swcファイルを選択するように、前の手順を繰り返します。
各ファイルが別のリンケージ設定を持つために、これらの手順は必要です。

- 「Verify RSL Digests」がチェックされていないことを確認します。

- mprslldr.swcエントリを開き、「Link Type」が「Merged into code」に設定されていることを確認します。設定されていない場合、「Link Type」を選択し、設定を「Merged into Code」に変更します。

- Flex Builder 3を使用している場合、次のことを確認します。

- MPCUI swcエントリを開き、「Link Type」を選択して「Edit」をクリックします。

- 「Link Type」を「Runtime shared library (RSL)」に変更します。

- 「Verification」を「None (trusted environments only)」に設定します。

- 「Deployment Path/URL:」をmpcui.swfに設定し、「Automatically extract swf to deployment path」を選択します。

- Adobe Flash Builder 4.5を使用している場合、次を実行します。

- MPCUI swcエントリを開き、「Link Type」を選択して「Edit」をクリックします。

- 「Link Type」を「Runtime shared library (RSL)」に変更します。

- 「RSL deployment paths:」の隣にある「Add」をクリックし、「Deployment Path/URL」にmpcui.swfと入力し、「Automatically extract SWF to deployment path」が選択されていることを確認します。

- 「RSL Deployment paths」にすでにエントリが存在し、それがmpcui.swfではない場合、それを編集し、前の手順で示したような正しいパスであることを確認します。

9.30.3.4 適切なMPCUIライブラリ・リンケージの検証

プロジェクトを設定し、SWFをビルドしている場合、使用しているEDKのバージョンをサポートしている様々なEnterprise Managerプラットフォームのバージョンのいずれかにデプロイされているときに正しく動作していることを検証する必要があります。

最初に、SWFファイルのサイズを検証します。1MBより大きい場合、SWFが正しくリンクされていない可能性があります。標準的なMPCUIのSWFファイルは300から600KBです。これは決定的なテストではありませんが、SWFが正しくリンクされているかどうかのよい目安となります。

SWFが正しくリンクされていることを検証するには、次の手順を実行します。

1. プラグインのSWFファイルを更新し、新しいバージョンのプラグインをEnterprise Managerサーバーにデプロイします。

注意:
プラグインがすでにデプロイされている場合、emctl register oms metadataコマンドを使用して、プラグインのみのMPCUI部分を更新できます。詳細は、14.7項を参照してください。

2. このプラグインおよびプラグインに含まれるSWFファイルに関連付けられたターゲットのホームページにアクセスします。

3. TargetInfoServiceでエラーが発生して、ホームページのロードが失敗した場合、RSLとしてリンクせずに古いswcファイル(12.1.0.2.0より前)でリンクした可能性があります。これが発生した場合、次を実行します。

- ブラウザ・アドレスのURLを次のテキストを追加して変更し、ページをリロードします。

&traceEnabled=true

- ページをロードしてエラーが表示されると、エラー・ダイアログを閉じ、リクエスト・トレース・ウィンドウで、TargetInfoService.getTargetInfoエントリを特定および選択して、Shot Item Detailsを選択します。

- rslVersionErrorの下部にあるウィンドウの右側に表示される応答メッセージを探します。このテキストが見つかった場合、サーバーが、不正にリンクされたクライアントからのリクエストを拒否したことを示しています。プロジェクト・プロパティを確認して、9.30.3.3項「MPCUIプロジェクト・プロパティの設定」で説明したように、正しくリンクされたSWFがあることを確認します。
応答メッセージにエラーが含まれる場合、通常、次のように表示されます。

<rslVersionError SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next" xmlns="http://em.oracle.com/">12.1.0.2.0
</rslVersionError>

4. ホームページが正しくロードされた場合、ブラウザ・アドレス・バーのURLを次のテキストを追加して変更し、ページをリロードします。

&loglevel=ALL,CONSOLE

5. ページがロードされたら、ページの下部にあるロギング・ウィンドウに表示されるログ出力をチェックし、次のテキストを探します。

[MpCui] INFO Application Linked with Version

アプリケーションが正しくリンクされている場合、リンクされたswcファイルのバージョンがこの行に表示されます。

その次の行には次のテキストが含まれ、接続しているEnterprise Managerサーバーのバージョンを示しています。そうなっていない場合、SWFは正しくリンクされていません。

[MpCui] INFO RSL Library Loaded Version

例: ログ出力

2012-05-04 13:37:44.269 [MpCui] INFO Application Linked with Version: 12.1.0.1.1
2012-05-04 13:37:44.270 [MpCui] INFO RSL Library Loaded Version     : 12.1.0.2.0
2012-05-04 13:37:44.271 [MpCui] INFO RSL Library Min Supported Vers : 12.1.0.1.0
2012-05-04 13:37:44.273 [MpCui] INFO RSL Build Date                 : 2012.04.02
2012-05-04 13:37:44.274 [MpCui] INFO Application & RSL Versions are COMPATIBLE

9.30.3.5 新しいEnterprise Manager OMSでの以前のSWCファイルの使用

古いバージョンのEDK (バージョン12.1.0.1.0など)に対してMPCUI SWFをビルドしているが、新しいバージョンの一部である既存のOMSに対して実行する場合、プラグインの一部として、Enterprise Managerに更新されたSWFをデプロイする必要があります。

これを行うには、Adobe Flash Builderを使用できますが、Adobe Flash Builderのプロジェクトには古いバージョンのmpcui.swfファイルが含まれ、それを使用しているため、OMSからの新しいバージョンではなく、Adobe Flash Builder内のローカル・コピーが使用されます。これにより、予期しない結果となるため、次の手順に従います。

このモードで実行するには、次のようになります。

1. Enterprise Managerサーバーからmpcui.swfファイルをコピーし、プロジェクトの下のbin-debugディレクトリにこのファイルを追加します。

注意:
プロジェクトが、以前のMPCUI swcファイルに基づいて、更新されたコピーでこのファイルの再ビルドおよび置換えをしないように、自動ビルドが無効になっていることを確認します。

2. このビルド手順によって、コンパイルしているMPCUI swcファイルに関連付けられたファイルでmpcui.swfファイルを置き換えると、プロジェクトを更新および再ビルドするたびに、Adobe Flash Builderのmpcui.swfファイルが置き換えられます。

9.30.3.6 MPCUI RSLキャッシュについて

MPCUI RSLを使用する利点は、このライブラリに含まれるコードをAdobe Flash Playerのブラウザでキャッシュできることです。そのため、MPCUI SWFファイルが含まれるEnterprise Managerのページにアクセスするたびに、コードを再ロードしないでください。

ただし、Enterprise Managerのサイトをアップグレードすると、以前のバージョンからページにアクセスしたユーザーは、ブラウザでキャッシュされた古いバージョンのMPCUI RSLをまだ持っています。このリリースでは、サーバーに対してこれを検証する追加チェックがあり、MPCUI RSLでバージョンの不一致によりページをロードできないことを示すエラーがユーザーに表示されます。このエラーが表示された場合、Adobe Flash Playerのキャッシュをクリアしてから続行する必要があります。詳細は、9.30.3.7項「Adobe Flash Playerのキャッシュのクリア」を参照してください。

9.30.3.7 Adobe Flash Playerのキャッシュのクリア

ブラウザのキャッシュをクリアせずに、Adobe Flash Playerのキャッシュをクリアするには、次の手順に従います。

1. 「Adobe Flash Player Settings Manager」: 「Global Storage Settings」ページにアクセスするために、次のURLをオープンします。

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html">>http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html

次のウィンドウが表示されます。

図9-29 「Adobe Flash Player Settings Manager」: 「Global Storage Settings」

2. 「Store common Flash components to reduce download times」を選択解除します。

3. キャッシュされたRSLをクリアするための確認ウィンドウで、「Confirm」をクリックします。

4. 「Store common Flash components to reduce download times」を選択します。
これにより、キャッシュが再度有効化され、以前にキャッシュされたRSLがダウンロードされます。

9.31 ホームページのカスタマイズの移行

Enterprise Managerの拡張フレームワークの以前のバージョンは、次の方法で、Enterprise Managerのデフォルトのホームページをカスタマイズする機能をサポートしていました。

- ホームページに表示する一連のグラフの設定

- ホームページに表示する一連の関連リンクの定義

Enterprise Managerリリース11.2では、ターゲットのUIの基準としてこれらのカスタマイズの使用を続行するかどうかを選択できました。これにより、ターゲットのカスタムUIの実装が回避されますが、ホームページの制限された制御が維持されます。

empdkユーティリティを使用して、Enterprise Managerからホームページのカスタマイズを読み取り、このメタデータを定義するために必要な11.2のファイルを生成します。

注意:
Enterprise Managerの11.2より前のリリースからホームページのカスタマイズを読み取り、11.2のメタデータを生成する機能は、このリリースではサポートされていません。

9.32 アクセシビリティ・ガイドライン

MPCUIフレームワークは、OracleグローバルHTMLアクセシビリティ・ガイドライン(OGHAG)を使用してコンパイルするユーザー・インタフェースをサポートするように設計されます。この項では、UI実装のためのアクセシビリティ標準の情報について説明します。

また、Adobeでは、アクセシビリティ標準を満たすための(MPCUIのベースとなる)Flexアプリケーションの実装に役立つガイドラインおよび情報が提供されます。詳細は、次のWebサイトを参照してください。

- Adobe Flexアクセシビリティ・ページ

http://www.adobe.com/accessibility/products/flex/

- Adobe Flexアクセシビリティ・ベスト・プラクティス

http://blogs.adobe.com/accessibility/files/2011/03/Flex-4-Accessibility-Best-Practices.pdf

- Adobe Flexアクセシビリティ・ブログ

http://blogs.adobe.com/accessibility/category/flex

9.32.1 Enterprise Managerでのアクセシビリティ・オプション

Enterprise Managerでは、スクリーン・リーダー・オプションなど、アクセシビリティのためのオプションを設定する機能がエンドユーザーに提供されています。MPCUIフレームワークは、これらの設定を認識し、Flexコード内で使用可能にします(APIリファレンスのoracle.sysman.emx.util.AdaSettingsを参照)。

エンドユーザーがアクセス可能なユーザー・インタフェースを必要とするアカウントを設定すると、MPCUIはアクセス可能なコンポーネントを自動的にレンダリングするため、通常、これらの設定をチェックする必要はありません。特に、これは、グラフを同じデータのアクセス可能なビューに置き換えます。

9.32.2 クリティカルな問題のサマリー

アクセス可能なMPCUI Flexアプリケーションを構築する際には、次の項目を考慮してください。

- アクセシビリティの有効化
コンパイラ設定にアクセス可能なフラグを追加します。

詳細は、Adobeベスト・プラクティスおよびdemo_hostsampleのプラグインの例での設定を参照してください。

- MPCUIのページ、ダイアログおよびコンポーネントの使用
これらのコンポーネントには、アクセシビリティ・サポートがあります。

詳細は、9.32.3項「MPCUIコンポーネントの使用」を参照してください。

- コンポーネントのタブ順序の設定
すべてのコンポーネントの読取りおよびタブの順序を設定します。

詳細は、9.32.4項「読取りおよびタブ移動の順序の制御」を参照してください。

- 名前および説明の設定
追加のテキスト説明が必要なコンポーネント(イメージなど)に対して。

詳細は、Adobeベスト・プラクティスを参照してください。

- ドラッグ・アンド・ドロップ、オーディオおよび装飾的なコンテンツに相当する、アクセス可能なものの使用および提供の回避。
詳細は、Adobeベスト・プラクティスを参照してください。

- 色を使用した情報の伝達の回避
詳細は、Adobeベスト・プラクティスを参照してください。

- Flexアプリケーションにメニューを追加しません。
Enterprise Managerの「ターゲット」メニューを使用します。

詳細は、このガイドを参照してください。

- アクセス不能なFlexコンポーネントの使用の回避
アクセス可能なコンポーネントのリストは、Adobeベスト・プラクティスを参照してください。

9.32.3 MPCUIコンポーネントの使用

MPCUIフレームワークでは、ベースのFlexコンポーネントを超えたアクセシビリティ・サポートを含むコンポーネントが提供されるため、MPCUIバージョンのコンポーネントを使用します。表9-2にリストされた特定のコンポーネントに加えて、アプリケーションには、ページ、ダイアログ、トレインなどの、MPCUIのみの最上位のアクティビティが含まれています。MpApplicationベース・クラスに基づいて、アプリケーションを実装します。表9-2に、MPCUIフレームワークに含まれる重要なコンポーネントのリストを示します。

表9-2 重要なMPCUIコンポーネント

Flexコンポーネント

MPCUI代替

mx.controls.Panel

oracle.sysman.emx.components.Region

mx.controls.Label

oracle.sysman.emx.components.AccLabel

mx.controls.AdvancedDataGrid

oracle.sysman.emx.table.Table

mx.charts.PieChart

oracle.sysman.emx.charts.PieChart

mx.charts.BarChart

oracle.sysman.emx.charts.BarChart

mx.charts.ColumnChart

oracle.sysman.emx.charts.ColumnChart

mx.charts.AreaChart

oracle.sysman.emx.charts.AreaChart

mx.charts.LineChart

oracle.sysman.emx.charts.LineChart

9.32.4 読取りおよびタブ移動の順序の制御

Flexではアプリケーションに含まれるコンポーネントの読取りおよびタブ移動の順序を決定するためのサポートが提供されていますが、複数のリージョンやページを含む複雑なレイアウトの場合、うまく機能しません。意味をなすタブ順序がアプリケーションに提供されていることを確実にするために、各ページまたはダイアログ内で順序を設定します。

MPCUIフレームワークでは、タブ順序を設定する方法が提供されます。各プロパティのtabIndexを設定するかわりに、この方法を使用します。ページに含まれるコンポーネントのtabIndexを設定するのではなく、ページまたはダイアログのtabOrderを使用します。

tabOrderプロパティを使用するには、ページに含まれるすべてのコンポーネントに一意のIDを割り当てる必要があります。すべてのFlexおよびMPCUIコンポーネントは、idプロパティをサポートしています。次の例に、tabOrderプロパティを含むページの宣言を示します。

<mp:Page label="Home Page"
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mp="http://www.oracle.com/mpcui"
tabOrder="{[ summaryRegion, statusRegion, currentStatus, statusSince, availability,
configurationRegion, cpuModel, cpuPer, currentLoad, osVersion, relatedHost,
installedSoftware, jobSummary,
reportsRegion, allReports, hostPerfReport,
currentLoadRegion, cpuLoadRegion, cpuload, showCpuHistory,
processSummaryRegion, numUsers, numProcesses,
resourcesRegion, cpuUtilRegion, cpuutil,
processorRegion, processorChart, showProcessorHistory,
memoryRegion, selMemChart, memChart,
eventsRegion
]}"
defaultComponent="{currentStatus}"
>

<!-- First Column, 25% width of page, two regions stacked vertically -->
<mx:HBox width="100%" height="100%">
<mx:VBox width="25%" height="100%" >
<mp:Region id="summaryRegion" title="Summary" height="50%" width="100%" >
<mp:InnerRegion id="statusRegion" title="Status" height="40%" width="100%" >
<mp:InfoDisplay width="100%" height="100%">
<!-- reference to the AvailDataService -->
<mp:InfoItem id="currentStatus" label="Current Status" value="{ads.currentStatus}" image="{ads.currentStatusIcon}"
click="invokeActivity(Constants.PAGE_AVAILABILITY, bean(Constants.P_TARGET_NAME, appModel.target.name,
Constants.P_TARGET_TYPE, appModel.target.type));" />
<mp:InfoItem id="statusSince" source="{ads.statusSinceItem}"  />
<mp:InfoItem id="availability" label="Availability %" value="{NumberFormat.formatNumber(ads.availPercent,1)}%" destination="availDialog" />
</mp:InfoDisplay>
</mp:InnerRegion>

tabOrderプロパティは、タブ移動または読取りの順序で含める必要があるページに含まれるコンポーネントIDの配列です。

詳細は、demo_hostsampleサンプル・アプリケーションおよびAPIリファレンス・ドキュメントを参照してください。

注意:
スクリーン・リーダーに表示するコンポーネントのtabOrderプロパティの設定に加えて、defaultComponentプロパティも設定します。これにより、ページを最初にレンダリングする際に、特定のコンポーネントにフォーカスを設定するよう、スクリーン・リーダーに指示します。

9.33 ローカリゼーション・サポート

ローカライズされたテキスト・リソースのサポートを提供するには、カスタムUIで文字列を使用する必要があります。次の設定を行う必要があります。

- バンドルの登録

- MXMLからの文字列の参照(ページ、ダイアログ、定義)

- ActionScript(コントローラ・コード)からの文字列へのアクセス

9.33.1 バンドルの登録

MPCUI (Flexコード)でリソース・プロパティ・ファイルを使用するには、リソース・バンドルを統合クラスに登録する必要があります。demo_hostsampleプラグインを使用すると、統合クラスはHostSampleInteg.mxmlです。これは統合を拡張するクラスです。そのクラス内で、アクティビティ・リストの前に、次のようなブロックを含めます。

<mp:resourceBundles>
<mp:MpBundle name="demoUiMsg" path="oracle.samples.xohs.rsc" isDefault="true" />
<mp:MpBundle name="demoJobMsg" path="oracle.samples.xohs.rsc" />
</mp:resourceBundles>

ここで示すように、リソースを複数のバンドルに分割し、1つのバンドルをデフォルト・バンドルとしてマークします。これにより、UIコードの残りの部分全体でこのバンドルの文字列へのアクセスが容易になります。パス属性はプロパティ・ファイルがProperties JARファイルに追加されたパスと一致する必要があります。Properties JARファイルの詳細は、第3.7.4項「リソース・バンドルのパッケージ化」を参照してください。

9.33.2 MXMLからの文字列の参照(ページ、ダイアログ、定義)

MXMLでページまたはダイアログ・クラス内の文字列を参照するには、getStringおよびgetBundleStringメソッドを指定する必要があります。getStringメソッドはデフォルトのリソース・バンドルから文字列を取得し、getBundleStringメソッドは統合クラスに登録された任意のバンドルから文字列を取得します。

getStringメソッドは、次のように使用されます。

<mp:InnerRegion id="configurationRegion" title="{getString('CONFIGURATION')}" height="60%" width="100%" >

このメソッドはデフォルトのリソース・バンドル(demoUiMsg)内でキーCONFIGURATIONを持つ文字列を検索し、この内部リージョンのタイトルとして使用します。文字列が見つからない場合、キー(CONFIGURATION)が表示されます。

getBundleStringメソッドは、次のように使用されます。

<mp:InfoItem id="currentLoad" label="{getBundleString('demoJobMsg', 'JOBLOAD')}"  value="{respData.result.getString('','Load')}" />

getBundleStringへの最初のパラメータは、文字列を取得するバンドルを指定します。

9.33.3 ActionScript(コントローラ・コード)からの文字列へのアクセス

ActionScriptコードから文字列にアクセスするには、Util.getStringメソッドまたはUtil.getBundleStringメソッドのいずれかを使用します。

var str:String = Util.getString("CONFIGURATION"); // retrieves string from default bundle
var str2:String = Util.getBundleString("demoJobMsg", "JOBLOAD"); // retrieves string from named bundle

9.34 オンライン・ヘルプの表示

カスタマイズされたUIページのオンライン・ヘルプを含める場合、次のディレクトリにあるヘルプJARファイルをパッケージ化します。

plugin_stage/oms/online_help

ヘルプJARファイルの例は、EDKのdemo_hostsampleの例の/oms/online helpディレクトリにあるplugin_sample_help.jarを参照してください。

10 インシデント・マネージャのカスタマイズ

この章では、イベント詳細ページをカスタマイズして、イベントの詳細な診断情報を提供し、根本的な問題の迅速な解決を容易にする方法について説明します。インシデント・マネージャUIの詳細ページで、ユーザーは、イベントの詳細を表示できます。このようなページのコンテンツは、ユーザーが根本的な問題の基本的性質を理解する際に役立ち、問題を迅速に解決するための追加のコンテキスト詳細(テキスト、診断または解決のページへのリンクなど)を提供します。

1つのイベントのみを持つインシデントの場合、イベント詳細ページに適用されたカスタマイズは、自動的に「インシデントの詳細」ページに適用されます。

注意:
インシデント管理の詳細は、『Oracle Enterprise Manager Cloud Control管理者ガイド』の「インシデント管理の使用」の章を参照してください。

http://www.oracle.com/pls/em131/homepage

この章の内容は次のとおりです。

- インシデント・マネージャのカスタマイズの概要

- サポートされたカスタマイズについて

- イベント固有のカスタマイズXMLの作成

- カスタマイズされたイベントの詳細の追加

- 「ガイドされた解決」リージョン内のコンテンツの指定

- My Oracle Supportのナレッジの検索文字列の定義

- カスタマイズの条件の定義

- カスタマイズの登録

- カスタマイズ後のインシデント・マネージャのテスト

10.1 インシデント・マネージャのカスタマイズの概要

プラグイン開発者は、インシデント・マネージャのカスタマイズにおいて、次の手順に従う必要があります。

1. インシデント・マネージャUIに必要なカスタマイズを決定します。きめの細かいアクセスのために、条件を使用します。詳細は、10.2項「サポートされたカスタマイズについて」を参照してください。

2. XSDに従って、カスタマイズXMLを構築します。詳細は、10.3項「イベント固有のカスタマイズXMLの作成」を参照してください。

3. カスタマイズを登録します。詳細は、10.8項「カスタマイズの登録」を参照してください。

4. 条件に一致するイベントを公開することで、UIをテストします。詳細は、10.9項「カスタマイズ後のインシデント・マネージャのテスト」を参照してください。

10.2 サポートされたカスタマイズについて

図10-1に、「インシデント・マネージャ」ページから選択したインシデントの「一般」タブを示します。

図10-1 インシデント・マネージャ

このページでは。次のカスタマイズがサポートされます。

- 「インシデントの詳細」リージョンへの名前と値のペアの追加。
詳細は、10.4項「カスタマイズされたイベントの詳細の追加」を参照してください。

- 「ガイドされた解決」リージョン内の「アクション」リンクおよび「診断」リンクのカスタマイズ。
詳細は、10.5項「「ガイドされた解決」リージョン内のコンテンツの指定」を参照してください。

- 「ガイドされた解決」リージョンへの推奨の追加。
詳細は、10.5.1項「XMLを使用した推奨の追加」を参照してください。

- My Oracle Supportのナレッジのデフォルトの検索フレーズの指定。
詳細は、10.6項「My Oracle Supportのナレッジの検索文字列の定義」を参照してください。

各カスタマイズ仕様には、次の2つの部分があります。

1. 条件
これは、カスタマイズされたコンテンツを表示するイベントを識別するために使用される基準です。たとえば、データベース上のメトリック・アラートへの診断リンクを表示するシナリオを考えてみます。条件は、「イベント・クラスはmetric_alertで、ターゲット・タイプはoracle_database」になります。別の例として、メトリック・チャートを含むリージョンを表示します。この条件は、「イベント・クラスはmetric_alertで、metric_typeは数値」になります。

注意:
任意のターゲット・タイプ名がサポートされます。イベントの照合時に、条件のターゲット・タイプを、イベントのターゲット・タイプと一致させます。

2. アクション
アクションは、カスタマイズされたコンテンツを指定します。たとえば、診断リンクの指定(リンクの下に表示されるラベルおよびURL)などです。

10.3 イベント固有のカスタマイズXMLの作成

Oracleでは、インシデント・マネージャUI上に表示するための特定のイベントのカスタマイズを説明するためにXMLを記述できるよう、イベント固有のカスタマイズXSDが提供されます。

注意:
完全なイベント固有のカスタマイズXMLスキーマ定義(XSD)は、拡張開発キット(EDK)を参照してください。

イベント固有のカスタマイズXSDは、インシデント・マネージャUIがUIのカスタマイズをサポートする方法を定義します。

きめの細かい条件を定義して、「イベントの詳細」ページまたは「インシデントの詳細」ページをカスタマイズできます。

例: メタデータ・ファイルのサンプル

<evt:CustomUI AppliesTo="EVENT" EventClass ="metric_alert" TargetType =host">
<evt:ConditionDetails>
<evt:Condition>
<evt:Attrib Name="metric_name" Value="Load"/>
<evt:Attrib Name="metricColumn" Value="cpuUtil"/> </evt:Condition>
</evt:ConditionDetails>
</evt:CustomUI>

メタデータXMLには、次のネーミング規則をお薦めします。

- event_class_description.xml
前述のファイル名では、次のようになります。

- event_classは、イベント・クラスの名前を表します。
イベントのカスタマイズでは、次のイベント・クラスをサポートします。

- metric_alert

- target_availability

- job_status_change

- cs_rule_violation

- cs_score

- sla_alert

- metric_error

- descriptionは、イベントのカスタマイズの短い説明を表します。

たとえば、job_status_change_recommendation.xmlです。

- event_class_target_type_description.xml
前述のファイル名では、次のようになります。

- event_classは、イベント・クラスの名前を表します。

- target_typeは、このイベントが生成されるターゲット・タイプの名前を表します。

- descriptionは、イベントのカスタマイズの短い説明を表します。

たとえば、host_metric_alert_diaglinks.xmlです。

注意:
ファイル名の最大長は255文字です。

メタデータXMLのディレクトリの場所の詳細は、10.8項「カスタマイズの登録」を参照してください。

注意:
empdk validate_pluginコマンドを使用して、XMLメタデータ・ファイルを検証します。empdk validate_pluginコマンドの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

10.3.1 イベント固有のカスタマイズ・メタデータ要素の概要

表10-1では、イベント固有のカスタマイズXMLを定義する重要な要素について説明します。

表10-1 イベント固有のカスタマイズXML内の重要な要素

要素

説明

evt:CustomUI

これは、XMLのルート要素です。カスタマイズを定義します。

次の属性があります。

- AppliesTo: イベントのカスタマイズに適用可能です。有効な値はEVENTのみです。

- EventClass: 内部イベント・クラス名を指定し、カスタマイズがイベントに適用する場合のみ適用可能です。

- TargetType: ターゲット・タイプの内部名。カスタマイズは、このターゲット・タイプのすべてのターゲットからのイベントに適用します。

evt:ConditionDetails

カスタマイズが適用される基準を指定します。

evt:Condition

カスタマイズの条件を指定します。

注意: evt:ConditionDetailsタグ内でのみ、1つの条件をサポートします。

evt:DetailUI

「インシデント・マネージャ」UIページの「詳細」リージョンをカスタマイズしていることを指定します。

詳細は、10.4項「カスタマイズされたイベントの詳細の追加」を参照してください。

evt:GuidedResolutionDetails

「インシデント・マネージャ」UIページの「ガイドされた解決」リージョンをカスタマイズしていることを指定します。この要素を使用すると、アクション・リンク、診断リンクおよび推奨を追加できます。

詳細は、10.5.1項「XMLを使用した推奨の追加」を参照してください。

10.3.2 イベントについて

この項では、共通イベント属性と、最も一般的に使用されている2つのイベント・タイプの定義について説明します。

- 共通イベント属性

- ターゲット可用性イベント

- メトリック・アラート・イベント

10.3.2.1 共通イベント属性

すべてのイベントには、次の共通属性があります。

表10-2 共通イベント属性

属性

説明

sys_event_class

イベント・タイプ

使用可能な値は次のとおりです。

- target_availability: ターゲット可用性イベント

- metric_alert: メトリック・アラート・イベント

sys_event_name

イベントの性質を一意に識別するためのイベント名

sys_event_key

このイベントが関連付けられているイベント・ソース・オブジェクト内のサブコンポーネントの名前。これはオプションです。たとえば、ホスト上のディスクの名前、表領域の名前などです。

sys_event_msg

イベント・メッセージ

sys_action_msg

アクション・メッセージ

sys_source_obj_type

ソース・オブジェクト・タイプ。たとえば、ジョブベースのイベントのJOBSです。

sys_source_obj_id

ソース・オブジェクトの一意の内部識別子

sys_target_guid

ターゲットの一意の内部識別子

sys_target_name

ターゲット名

sys_target_owner

ターゲット所有者

sys_target_version

ターゲット・バージョン

sys_target_lifecycle_status

ライフサイクル・ステータス

sys_incident_id

インシデントID

sys_severity

イベントの重大度

使用可能な値は次のとおりです。

- 32: 致命的

- 16: クリティカル

- 8: 警告

- 4: マイナー警告

sys_category

イベント・カテゴリ。

使用可能な値は次のとおりです。

- 可用性: 1

- 構成: 2

- 容量: 4

- フォルト: 8

- 負荷: 16

- パフォーマンス: 32

- セキュリティ: 64

- ジョブ: 128

- 診断: 256

- エラー: 512

- ビジネス: 1024

10.3.2.2 ターゲット可用性イベント

ターゲット可用性イベントは、ターゲットの可用性ステータスを表します。

次に、ターゲット可用性XMLファイルによって定義されたイベント属性を示します。表10-3に、ターゲット可用性のすべてのイベント属性のリストを示します。

例: target_availability.xmlファイル

<evt:EventClass Name="target_availability"
NLSID="TARGET_AVAILABILITY"
ResourceBundle="oracle.sysman.core.common.events.classes.rsc.availability.AvailabilityEventsMsg"
TargetAware="ALWAYS"
SourceObjectType="TARGET"
Version="1.0"
xmlns:evt="http://www.oracle.com/EnterpriseGridControl/eventclass_model"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/eventclass_model EventClass.xsd">

<evt:DescriptionNLSID>TARGET_AVAILABILITY_DESC</evt:DescriptionNLSID>

<evt:AttributeDef>

<!--This attribute is used to store the availability status of a target-->
<evt:Attrib Name="target_status"
DataType="STRING"
isReferenced="false"
NLSID="TARGET_STATUS"
isValueTranslatable="true">
<evt:DescriptionNLSID>TARGET_STATUS_DESC</evt:DescriptionNLSID>
</evt:Attrib>

<!--The guid of the severity record associated with this availability record-->
<evt:Attrib Name="severity_guid"
DataType="RAW"
isReferenced="false"
NLSID="SEVERITY_GUID"
isValueTranslatable="false">
<evt:DescriptionNLSID>SEVERITY_GUID_DESC</evt:DescriptionNLSID>
</evt:Attrib>

<!--The cycle guid of the severity record associated with this availability record-->
<evt:Attrib Name="cycle_guid"
DataType="RAW"
isReferenced="true"
NLSID="CYCLE_GUID"
isValueTranslatable="false">
<evt:DescriptionNLSID>CYCLE_GUID_DESC</evt:DescriptionNLSID>
</evt:Attrib>

<!--The below attributes specifies the metric guid of response metric -->
<evt:Attrib Name="metric_guid"
DataType="RAW"
isReferenced="true"
NLSID="METRIC_GUID"
isValueTranslatable="false">
<evt:DescriptionNLSID>METRIC_GUID_DESC</evt:DescriptionNLSID>
</evt:Attrib>

<!--The below attribute represents a sub-state for availability states like Status pending, Agent Unreachable and Blackout.
TARGET STATUS        CODE     SUB_STATE

Any                  0        None (Default)
Agent unreachable    1        Normal
Agent unreachable    2        Host Down
Agent unreachable    3        Disk Full
Status Pending       10       Normal
Status Pending       11       Stuck
-->
<evt:Attrib Name="avail_sub_state"
DataType="NUMBER"
isReferenced="false"
NLSID="AVAILABILITY_SUB_STATE"
isValueTranslatable="false">
<evt:DescriptionNLSID>AVAILABILITY_SUB_STATE_DESC</evt:DescriptionNLSID>
</evt:Attrib>

<!--The below attributes specifies the availability transition severity
that resulted in the target availability status that is specified by
target_status attribute -->
<evt:Attrib Name="avail_severity"
DataType="NUMBER"
isReferenced="false"
NLSID="AVAILABILITY_SEVERITY"
isValueTranslatable="false">
<evt:DescriptionNLSID>AVAILABILITY_SEVERITY_DESC</evt:DescriptionNLSID>
</evt:Attrib>
</evt:AttributeDef>

<evt:RefAttribSource><![CDATA[ mgmt_avail.get_target_avail_ref_attribs]]></evt:RefAttribSource>

<!-- For availibility we don't have any identifier attribute list. -->
<!-- So system will use target_guid, event_class name to generate the identifier attribute. -->

<evt:RuleAttribs>
<evt:RuleAttrib Name="target_status" /></evt:RuleAttrib>
<evt:RuleAttrib Name="avail_sub_state" /></evt:RuleAttrib>
<evt:RuleAttrib Name="avail_severity" /></evt:RuleAttrib>
</evt:RuleAttribs>

<evt:NotifAttribs>
<evt:NotifAttrib Name="target_status" />
<evt:NotifAttrib Name="severity_guid" />
<evt:NotifAttrib Name="avail_sub_state" />
<evt:NotifAttrib Name="avail_severity" />
<evt:NotifAttrib Name="metric_guid" />
<evt:NotifAttrib Name="cycle_guid" />
</evt:NotifAttribs>

<evt:Severities>
<evt:Severity>FATAL</evt:Severity>
<evt:Severity>CRITICAL</evt:Severity>
<evt:Severity>WARNING</evt:Severity>
<evt:Severity>MINOR_WARNING</evt:Severity>
<evt:Severity>INFORMATIONAL</evt:Severity>
</evt:Severities>
</evt:EventClass>

表10-3 ターゲット可用性のイベント属性

属性

説明

TARGET_STATUS

可用性ステータス

AVAILABILITY_SUB_STATE

可用性サブステータス

AVAILABILITY_SEVERITY

遷移重大度

10.3.2.3 メトリック・アラート・イベント

特定のターゲットのメトリック(ホスト・ターゲットのCPU使用率など)またはターゲットとオブジェクトの組合せのメトリック(データベース・ターゲットの特定の表領域の領域使用率など)でアラートが発生した場合に、メトリック・アラート・イベントが生成されます。

次に、メトリック・アラートXMLファイルによって定義されたイベント属性を示します。表10-4に、メトリック・アラート・イベントのすべてのイベント属性のリストを示します。

例: metric_alert.xml

<evt:EventClass Name="metric_alert"
NLSID="METRIC_ALERT_EVENT"
TargetAware="ALWAYS"
SourceObjectType="TARGET"
ResourceBundle="oracle.sysman.core.common.events.classes.rsc.metrics.MetricEventsMsg"
Version="1.1"
xmlns:evt="http://www.oracle.com/EnterpriseGridControl/eventclass_model"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/eventclass_model EventClass.xsd">
<evt:DescriptionNLSID>METRIC_ALERT_DESC</evt:DescriptionNLSID>
<evt:AttributeDef>
<evt:Attrib Name="metric_guid" DataType="RAW" isReferenced="false"
NLSID="METRIC_GUID_NLSID" isValueTranslatable="false">
<evt:DescriptionNLSID>METRIC_GUID_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_value" DataType="STRING" isReferenced="false"
NLSID="KEY_VALUE_NLSID" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="severity_guid" DataType="RAW" isReferenced="false"
NLSID="SEVERITY_GUID_NLSID" isValueTranslatable="false">
<evt:DescriptionNLSID>SEVERITY_GUID_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="cycle_guid" DataType="RAW" isReferenced="true"
NLSID="CYCLE_GUID_NLSID" isValueTranslatable="false">
<evt:DescriptionNLSID>CYCLE_GUID_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="value" DataType="STRING" isReferenced="true"
NLSID="VALUE_NLSID" isValueTranslatable="false">
<evt:DescriptionNLSID>VALUE_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="metric_group" DataType="STRING" isReferenced="true"
NLSID="METRIC_GROUP_NLSID" isValueTranslatable="true">
<evt:DescriptionNLSID>METRIC_GROUP_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="metric_column" DataType="STRING" isReferenced="true"
NLSID="METRIC_COLUMN_NLSID" isValueTranslatable="true">
<evt:DescriptionNLSID>METRIC_COLUMN_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="metric_description" DataType="STRING" isReferenced="true"
NLSID="METRIC_DESCRIPTION_NLSID" isValueTranslatable="true">
<evt:DescriptionNLSID>METRIC_DESCRIPTION_DESC_NLID</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="coll_name" DataType="STRING" isReferenced="true"
NLSID="COLL_NAME_NLSID" isValueTranslatable="true">
<evt:DescriptionNLSID>COLL_NAME_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_1" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_1" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_1</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_2" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_2" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_2</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_3" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_3" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_3</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_4" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_4" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_4</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_5" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_5" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_5</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_6" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_6" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_6</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_7" DataType="STRING" isReferenced="true"
NLSID="ALERT_KEY_COL_NLSID_7" isValueTranslatable="true">
<evt:DescriptionNLSID>ALERT_KEY_COL_DESC_7</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_1_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_1" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_1</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_2_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_2" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_2</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_3_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_3" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_3</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_4_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_4" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_4</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_5_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_5" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_5</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_6_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_6" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_6</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="key_column_7_value" DataType="STRING" isReferenced="true"
NLSID="KEY_VALUE_PART_NLSID_7" isValueTranslatable="false">
<evt:DescriptionNLSID>KEY_VALUE_PART_DESC_7</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="metric_type" DataType="NUMBER" isReferenced="true"
NLSID="METRIC_TYPE" isValueTranslatable="false">
<evt:DescriptionNLSID>METRIC_TYPE_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="num_keys" DataType="NUMBER" isReferenced="true"
NLSID="NUM_KEYS" isValueTranslatable="false">
<evt:DescriptionNLSID>NUM_KEYS_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="unit" DataType="STRING" isReferenced="true"
NLSID="UNIT_NLSID" isValueTranslatable="true">
<evt:DescriptionNLSID>UNIT_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="is_thresholdable" DataType="NUMBER" isReferenced="true"
NLSID="IS_THRESHOLDABLE" isValueTranslatable="false">
<evt:DescriptionNLSID>IS_THRESHOLDABLE_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="is_remote" DataType="NUMBER" isReferenced="true"
NLSID="IS_REMOTE" isValueTranslatable="false">
<evt:DescriptionNLSID>IS_REMOTE_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="is_long_running" DataType="NUMBER" isReferenced="true"
NLSID="IS_LONG_RUNNING" isValueTranslatable="false">
<evt:DescriptionNLSID>IS_LONG_RUNNING_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="is_udm" DataType="NUMBER" isReferenced="true"
NLSID="IS_UDM" isValueTranslatable="false">
<evt:DescriptionNLSID>IS_UDM_DESC</evt:DescriptionNLSID>
</evt:Attrib>
<evt:Attrib Name="is_metric_extension" DataType="NUMBER" isReferenced="true"
NLSID="IS_METRIC_EXTENSION" isValueTranslatable="false">
<evt:DescriptionNLSID>IS_METRIC_EXTENSION_DESC</evt:DescriptionNLSID>
</evt:Attrib>
</evt:AttributeDef>

<evt:RefAttribSource><![CDATA[sysman.em_severity.get_metric_alert_ref_attribs]]></evt:RefAttribSource>

<evt:SignatureAttribs>
<evt:SignaturePart>metric_guid</evt:SignaturePart>
<evt:SignaturePart>key_value</evt:SignaturePart>
</evt:SignatureAttribs>

<evt:RuleAttribs>
<evt:RuleAttrib Name="metric_group"/>
<evt:RuleAttrib Name="metric_column"/>
<evt:RuleAttrib Name="key_value"/>
<evt:RuleAttrib Name="key_column_1_value"/>
<evt:RuleAttrib Name="key_column_2_value"/>
<evt:RuleAttrib Name="key_column_3_value"/>
<evt:RuleAttrib Name="key_column_4_value"/>
<evt:RuleAttrib Name="key_column_5_value"/>
<evt:RuleAttrib Name="key_column_6_value"/>
<evt:RuleAttrib Name="key_column_7_value"/>
</evt:RuleAttribs>

<evt:NotifAttribs>
<evt:NotifAttrib Name="metric_guid"/>
<evt:NotifAttrib Name="severity_guid"/>
<evt:NotifAttrib Name="cycle_guid"/>
<evt:NotifAttrib Name="coll_name"/>
<evt:NotifAttrib Name="metric_group"/>
<evt:NotifAttrib Name="metric_column"/>
<evt:NotifAttrib Name="metric_description"/>
<evt:NotifAttrib Name="value"/>
<evt:NotifAttrib Name="key_value"/>
<evt:NotifAttrib Name="key_column_1"/>
<evt:NotifAttrib Name="key_column_1_value"/>
<evt:NotifAttrib Name="key_column_2"/>
<evt:NotifAttrib Name="key_column_2_value"/>
<evt:NotifAttrib Name="key_column_3"/>
<evt:NotifAttrib Name="key_column_3_value"/>
<evt:NotifAttrib Name="key_column_4"/>
<evt:NotifAttrib Name="key_column_4_value"/>
<evt:NotifAttrib Name="key_column_5"/>
<evt:NotifAttrib Name="key_column_5_value"/>
<evt:NotifAttrib Name="key_column_6"/>
<evt:NotifAttrib Name="key_column_6_value"/>
<evt:NotifAttrib Name="key_column_7"/>
<evt:NotifAttrib Name="key_column_7_value"/>
<evt:NotifAttrib Name="num_keys"/>
</evt:NotifAttribs>

<evt:Severities>
<evt:Severity>CRITICAL</evt:Severity>
<evt:Severity>WARNING</evt:Severity>
</evt:Severities>

</evt:EventClass>

表10-4 メトリック・アラートのイベント・クラス属性

属性

説明

KEY_VALUE_DESC

メトリック・アラート・イベントに対応するメトリックの監視対象オブジェクト

VALUE_DESC

イベントがトリガーされたときのメトリックの値

METRIC_GROUP_DESC

メトリックの名前

METRIC_COLUMN_DESC

メトリック列の名前

KEY_COLUMN_1_VALUE

キー列1の値

KEY_COLUMN_2_VALUE

キー列2の値

KEY_COLUMN_3_VALUE

キー列3の値

KEY_COLUMN_4_VALUE

キー列4の値

KEY_COLUMN_5_VALUE

キー列5の値

KEY_COLUMN_6_VALUE

キー列6の値

KEY__COLUMN_7_VALUE

キー列7の値

IS_METRIC_EXTENSION_DESC

メトリックがメトリック拡張かどうかを示すフラグ

10.4 カスタマイズされたイベントの詳細の追加

「インシデントの詳細」リージョンには、イベントに関する情報が表示されます。これは、システム属性(メッセージ、ターゲット名、イベントが報告されたタイミングなど)と、クラス属性で構成されます。クラス属性の名前と値のペアをカスタマイズできます。

イベント固有のカスタマイズXMLを使用して、どの属性を表示するか(名前部分のラベルなど)、および値の下のリンクが必要かどうかを選択できます。詳細は、10.3項「イベント固有のカスタマイズXMLの作成」を参照してください。

例: 名前と値のペアの構築

<evt:DetailUI>
<evt:UIAttributeList>
<evt:UIAttrib Name="metric_name">
<evt:URL PageType="sdkcore-dummy-published-page-id">
<evt:URLParam Name="target" Value="^TARGET:sys_target_name^"/>
<evt:URLParam Name="type" Value="^TARGET:sys_target_type^"/>
<evt:URLParam Name="metric" Value="^metric_name^"/>
<evt:URLParam Name="metricColumn" Value="^metric_column^"/>
<evt:URLParam Name="ctxType" Value="Hosts"/>
</evt:URL>
</evt:UIAttrib>
</evt:UIAttributeList>
</evt:DetailUI>

前述の例では、「インシデントの詳細」リージョンの下の名前と値のペアを構築しています。名前は、イベント・クラス属性であるmetric_nameの変換された値です。値の部分は、URLパラメータが指定されたMETRIC_DETAILSページへのリンクが含まれるmetric_nameの値です。

注意:
evt:URLタグの場合、pageTypeとして、EDKの公開されたページIDを使用する必要があります。設計時に、リンク・ナビゲーションを検証できないため、このAPIを使用している場合、インシデント・マネージャUIでリンクが正しく機能することを確認する必要があります。

リンク内のURLパラメータは次のようになります。

- イベント属性: カレット(^)で囲む必要があります。たとえば、^metric_name^のようになります。
イベント属性の詳細は、10.3.2項「イベントについて」を参照してください。

- ターゲット属性: 接頭辞にTARGETを付ける必要があります。たとえば、^TARGET:sys_target_type^のようになります。
使用可能なターゲット属性は次のとおりです。

- sys_target_name

- sys_target_type

- sys_target_owner

- sys_target_version

- sys_target_lifecycle_status

- sys_target_guid
これらの属性の詳細は、表10-2を参照してください。

- イベント・コンテキスト属性: 接頭辞にEVENTを付ける必要があります。たとえば、^EVENT:evt_context_attrib_name^のようになります。
イベント・コンテキスト属性は、イベント・パブリッシャによるイベント属性への追加のイベント情報の提供を可能にし、名前と値のペアとして定義されます。

- 定数: リテラル文字列として指定する必要があります。たとえば、byDayのようになります。

注意:
「インシデントの詳細」リージョンをカスタマイズして、クラス固有の属性のみを含めることができます。

10.5 「ガイドされた解決」リージョン内のコンテンツの指定

「ガイドされた解決」リージョンには、次のカスタマイズを行うことができます。

1. 「修復」リンクおよび「診断」リンクのカスタマイズ(これらのリンクは追加または削除できます)

2. 「ガイドされた解決」リージョンへの推奨の追加

3. My Oracle Supportのナレッジのデフォルトの検索フレーズの指定

4. 「ガイドされた解決」リージョンへのテキストを含む領域の追加

「ガイドされた解決」リージョンでは、ユーザーによるデバッグおよび問題の解決に役立つように、関連するEnterprise Managerのページにリンクを提供します。これらの状況依存リンクは、リンクの宛先ページ内のコンテンツの性質に基づいて、複数の領域にグループ化されます。次の領域は、コンテンツを持つ場合のみ表示されます。

- 診断: この領域には、ユーザーによる問題の診断に役立つリンクが含まれます。たとえば、ターゲットに基づくイベントの場合、「診断」領域には、トポロジ・ビューアにドリルダウンする「トポロジの表示」と呼ばれるリンクが含まれます。evt:DiagLinksタグ(「「診断」サブセクションへのリンクの追加」の例を参照)を使用して、この領域に対してリンクを追加または削除できます。

- 修復: この領域には、ユーザーによる問題の解決に役立つリンクが含まれます。たとえば、しきい値を含むメトリック・アラートの場合、この領域には「しきい値の編集」へのリンクが含まれます。evt:ActionLinksタグを使用して、この領域に対してリンクを追加または削除できます。この領域は、オープン・イベントの場合のみ表示されます。

- 推奨: この領域には、メトリック・アドバイザリ(使用可能な場合)から取得されたテキスト・コンテンツが含まれます。evt:Recommendationタグ(第10.5.1項「XMLを使用した推奨の追加」の「推奨の追加」の例を参照)を使用して、この領域のコンテンツをカスタマイズできます。

- 任意の追加領域: この領域には、メトリック・アドバイザリ(使用可能な場合)から取得されたテキスト・コンテンツが含まれます。evt:Sectionsタグ(第10.5.2項「セクションのカスタマイズ」の「カスタマイズされた領域の追加」の例を参照)を使用して、このセクションのコンテンツをカスタマイズできます。

次に、XMLを使用して「ガイドされた解決」リージョンの「診断」リストにリンクを追加する例を示します。

例: 「診断」サブセクションへのリンクの追加

<evt:DiagLinks>
<evt:Add>
<evt:Link LinkID="diagLink1_example">
<evt:Label>
<evt:LocalizedLabel DefaultLabel="Edit Thresholds"
NLSID="EDIT_METRIC_THRESHOLDS"
ResourceBundle="oracle.sysman.resources.MntrResourceBundle"/>
</evt:Label>
<evt:URL PageType="sdkcore-published-page-id-for-edit-threshold">
<evt:URLParam Name="target" Value="^TARGET:sys_target_name^"/>
<evt:URLParam Name="type" Value="^TARGET:sys_target_type^"/>
<evt:URLParam Name="event" Value="doEditTreshold"/>
<evt:URLParam Name="metric" Value="^metric_name^"/>
<evt:URLParam Name="collName" Value="^coll_name^"/>
<evt:URLParam Name="keyValue" Value="^key_value^"/>
<evt:URLParam Name="metricColumn" Value="^column^"/>
</evt:URL>
</evt:Link>
</evt:Add>
</evt:DiagLinks>

前述の例では、リンク・テキストはevt:Label指定から導出され、URLはevt:URLから導出されます。

リンク内のURLパラメータは次のようになります。

- イベント属性: カレット(^)で囲む必要があります。たとえば、^metric_name^のようになります。
イベント属性の詳細は、10.3.2項「イベントについて」を参照してください。

- ターゲット属性: 接頭辞にTARGETを付ける必要があります。たとえば、^TARGET:sys_target_type^のようになります。
使用可能なターゲット属性は次のとおりです。

- sys_target_name

- sys_target_type

- sys_target_owner

- sys_target_version

- sys_target_lifecycle_status

- sys_target_guid
これらの属性の詳細は、表10-2を参照してください。

- イベント・コンテキスト属性: 接頭辞にEVENTを付ける必要があります。たとえば、^EVENT:evt_context_attrib_name^のようになります。
イベント・コンテキスト属性は、イベント・パブリッシャによるイベント属性への追加のイベント情報の提供を可能にし、名前と値のペアとして定義されます。

- 定数: リテラル文字列として指定する必要があります。たとえば、byDayのようになります。

10.5.1 XMLを使用した推奨の追加

「ガイドされた解決」リージョンの「アクション」リストによって、問題を診断または解決するためにユーザーが従う推奨ステップを説明するテキストが示されます。Labelタグのいずれかを使用して、推奨を指定します。

例: 推奨の追加

<evt:GuidedResolutionDetails>
<evt:GuidedResolution>
<evt:Recommendation ID="reco_foo">
<evt:Label>
<evt:LocalizedLabel
DefaultLabel="Recommendation for my event class"
NLSID="MY_EVENT_CLASS_NLSID"
ResourceBundle="oracle.sysman.MyResourceBundle"/>
</evt:Label>
</evt:Recommendation>
</evt:GuidedResolution>
</evt:GuidedResolutionDetails>

evt:Labelタグの他のバリアントを使用して、より複雑な推奨を構築できます。たとえば、推奨としてalertActionなどのイベント属性の値を置換するには、次の例を使用します。

例: 複雑な推奨の追加

<evt:GuidedResolutionDetails>
<evt:GuidedResolution>

<evt:Recommendation ID="reco_unique_id">
<evt:Label>
<evt:AttributeValue Name="alertAction" />
</evt:Label>
</evt:Recommendation>

</evt:GuidedResolution>
</evt:GuidedResolutionDetails>

10.5.2 セクションのカスタマイズ

「ガイドされた解決」リージョンにセクションを追加することによって、テキスト情報を表示できます。たとえば、即時利用可能な構成標準に関するインシデントを優先するとき、その構成標準が追加された理由を説明する原理を確認することが役立つ場合があります。追加されたそれぞれの領域には、ヘッダーとテキスト・コンテンツがあります。

「ガイドされた解決」リージョンにセクションを追加するために、次の例のように、カスタマイズXMLに仕様を追加できます。

例: カスタマイズされた領域の追加

<evt:Sections>
<evt:Add>
<evt:Section ID = "section_eventclass_1">
<evt:SectionHeader>
<evt:Label>
<evt:LocalizedLabel DefaultLabel="Section Hdr 1"
NLSID="TRANSLATION_ID"ResourceBundle="oracle.sysman.MyResourceBundle"/>
</evt:Label>
</evt:SectionHeader>
<evt:SectionText>
<evt:Label>
<evt:LocalizedLabel DefaultLabel="Section for my event class"
NLSID="MY_EVENT_CLASS_NLSID" ResourceBundle="oracle.sysman.MyResourceBundle"/>
</evt:Label>
</evt:SectionText>
</evt:Section>
</evt:Add>
</evt:Sections>

10.6 My Oracle Supportのナレッジの検索文字列の定義

カスタマイズ・フレームワークでは、次のプリファレンスの順序で、デフォルトの検索フレーズを提供します。

1. プラグイン開発者からカスタマイズされた値

2. イベント・サマリーで検出されたORAエラー

3. イベント・サマリー

次の例に示すように、XMLを使用して、検索文字列を明示的に指定できます。この検索文字列は、プラグイン・コンポーネントの高いCPU使用率を示すメトリック・アラートを検索します。

例: 検索文字列の定義

<evt:GuidedResolutionDetails>
<evt:GuidedResolution>
<evt:SearchPhrase>High CPU Utilization </evt:SearchPhrase>
</evt:GuidedResolution>
</evt:GuidedResolutionDetails>

10.7 カスタマイズの条件の定義

カスタマイズが適用されるイベントを選択するために、イベントの属性を使用して、条件を定義できます。イベント・ペイロード(たとえば、ターゲット名、ターゲット・タイプなどのシステム属性、またはメトリック・アラートのmetric_nameなどのイベント・クラス固有の属性、またはイベント・コンテキスト属性)からの属性を使用して条件を定義するには、XMLを使用します。

evt:ConditionDetailsタグの下で、条件を定義できます。ここで様々なイベント属性を指定でき、それらはAND条件を使用して暗黙的に結合されます。

注意:
evt:ConditionDetailsタグの下でのみ、1つの条件を定義できます。

例: 条件の定義

<evt:CustomUI AppliesTo ="EVENT" EventClass ="metric_alert" TargetType =host">
<evt:ConditionDetails>
<evt:Condition>
<evt:Attrib Name="metric_name" Value="Load"/>
<evt:Attrib Name="metricColumn" Value="cpuUtil"/>

</evt:Condition>
</evt:ConditionDetails>
...
</evt:CustomUI>

条件を定義するために、次の演算子がサポートされています。

- EQ: 等しい。これがデフォルトの演算子です。

- NE: 等しくない

- ISNULL: NULLである

- ISNOTNULL: NULLではない

- CONTAINS: 文字列に含めることができる(部分文字列として)

- BEGINSWITH: 次で始まる(たとえば、表領域で始まるイベント名)

- IN: 事前定義済の値セット内(事前定義済のデリミタであるカンマ(,)で区切られた)

- NOT_IN: 事前定義済の値セット内ではない。除外に使用します。

10.8 カスタマイズの登録

イベント固有のカスタマイズXMLファイルは、$PLUGIN_ORACLE_HOME/sysman/metadata/events/custmznディレクトリにあります。製品の出荷バージョンで、これらのXMLはプラグインのインストールの一部として登録されています。

すでに設定されているビューや変更をテストするためのビューで最初にXMLを作成する場合、メタデータ登録サービス(MRS)を使用して、イベント・クラスのXMLを登録します。MRSの詳細は、14.7項「メタデータ登録サービス(MRS)を使用してデプロイされたメタデータ・ファイルの更新」を参照してください。

emctl register oms metadata -service eventSpecificCustmzn -file XML filename -pluginId plugin_name -sysman_pwd sysman -debug

例:

emctl register oms metadata -service eventSpecificCustmzn -file metric_alert_host_load.xml -pluginId test.demo.xyz -sysman_pwd sysman -debug

イベント固有のカスタマイズXMLを登録した後で、OMSホーム・ディレクトリ(OMS_HOME)からemctlコマンドを使用して、Oracle Management Service (OMS)を再起動する必要があります。

OMS_HOME>emctl stop oms
OMS_HOME>emctl start oms

イベント固有のカスタマイズXMLを登録する際に、次のエラーが発生することがあります。

- XMLの構文エラー
正しい構文およびXMLの例の詳細は、10.3項「イベント固有のカスタマイズXMLの作成」を参照してください。

- 不正な属性名の値
属性名の詳細は、10.3.2項「イベントについて」を参照してください。

- 不正な資格証明
資格証明が不正であると、管理リポジトリに接続できません。認可された資格証明を使用していることを確認してください。

10.9 カスタマイズ後のインシデント・マネージャのテスト

次のように、条件に一致するイベントを公開することで、インシデント・マネージャUIをテストし、それのために作成されたインシデントが存在することを確認します。

1. インシデント・マネージャにアクセスするには、「エンタープライズ」メニューから、「監視」、「インシデント・マネージャ」の順に選択します。
「インシデント・マネージャ: オープンなインシデントと問題」ページが表示されます。

2. 「ビュー」から、次のいずれかを選択します。

- インシデントを検出する場合は、「すべてのオープン・インシデント」

- インシデントを作成していない場合は、「インシデントのないイベント」

11 導出されたアソシエーションの使用

ITインフラストラクチャを効果的に管理するには、ITエンティティ間の関係に関する知識が必要です。ITIL (Information Technology Infrastructure Library)で説明されているようなベスト・プラクティスは、このような関係の取得と使用に依存します。Enterprise Manager Cloud Control 12cは、サポートされるこの種の関係を拡張し、これらの関係を保守できる宣言的なメカニズムを追加しています。関係に基づいてシステム内のエンティティのメンバーシップも決定します。正確な関係に基づいて、次のような様々なEnterprise Managerアプリケーションおよびコンポーネントで顧客の使用をサポートできます。

- 依存性分析。
たとえば、ホストのシャットダウンの(アプリケーションとインフラストラクチャに対する)影響を理解します。

- トポロジ・ビューア。

- 変更管理。
たとえば、クローン・データベースのソースの追跡。

- 問題を分析および特定するためにアプリケーション・コンポーネント間の相互依存関係を知る必要のあるエンドツーエンドのパフォーマンス分析。

- VMリソースの割当て方法の変更など、関係の変更追跡。

この章の内容は次のとおりです。

- 導出されたアソシエーションの概要

- Enterprise Managerアソシエーションの概念について

- アソシエーション導出ルール管理について

- パフォーマンスの確認

- オーバーラップ・アソシエーションの使用

- よくある質問

11.1導出されたアソシエーションの概要

プラグイン開発者は、管理対象エンティティ・タイプに適用されるアソシエーション・タイプを定義し、適切なアソシエーション(アソシエーション・インスタンス)が存在することを確認する必要があります。

管理可能エンティティとは、Enterprise Managerが管理できるエンティティです。これは、エンティティがCloud Controlアプリケーションでエンド・ユーザーになんらかの形式で公開され、適切に定義された属性とセマンティクスを持つことを意味します。

プラグイン開発者は、導出されたアソシエーションについて、次の手順に従う必要があります。

1. 所有する管理対象エンティティ(ME)に対して表す必要のあるすべてのアソシエーションを識別します。
一般に、これには所有するMEと他の任意のME間の包含または依存のアソシエーションが含まれます。識別されたアソシエーションの種類ごとに、関連するMEタイプの所有者と協力して、そのタイプのアソシエーション・インスタンスを最新に保つ責任を持つ担当者を決定することが必要な場合があります。一部のアソシエーション(特に、hosted_byとmanaged_by)は、Enterprise Managerによって自動的に保守されるため、これらに対してアソシエーション導出ルールを使用する必要はありません。

2. Enterprise Managerに付属の即時利用可能なアソシエーション・タイプのセットについて理解し、最も適切なタイプを使用します。
詳細は、第11.2.1項「即時利用可能なアソシエーション・タイプについて」を参照してください。

3. アソシエーション導出ルールを使用して、リポジトリに存在する構成データに基づいて存在する必要のあるアソシエーションを(宣言的に)記述します。
ルールは、構成収集によってトリガーされます(ターゲット・プロパティの変更も構成収集として扱われます)。

詳細は、第11.3.1項「アソシエーション導出ルールの構文とセマンティクスの使用」を参照してください。

4. MEタイプのアソシエーションは他のプラグインのMEタイプに関係することが多いため、アソシエーションのメンテナンスについて他のMEの所有者と協力する必要があります。
ルールをパッケージ化するプラグインを決定します。ルールをインストールする前にすべてのターゲット・タイプおよびそれらのECMメタデータが存在するようにするために、ルールを所有するプラグインでは、他のすべての必要なプラグインを前提条件として指定する必要があります。

第11.3.10項「アクティブ化式について」で説明するように、必要なすべてのターゲット・タイプが存在することを保証できない場合は、高度なアクティブ化式を使用できます。ルールのトリガーは、トリガーで指定されたターゲット・タイプを定義するプラグインに存在する必要があります。ただし、プラグインのインストール前にターゲット・タイプが存在することがわかっている場合、トリガーはルールとともに存在できます。

11.1.1 前提条件

この章では、次の内容を十分に理解していると想定します。

- アソシエーション・タイプの概要、アソシエーション・タイプ階層、アソシエーション・タイプに対して許可される管理可能エンティティ・タイプのペアの概念、順方向および(抽象に対する)具体アソシエーション・タイプ、およびEnterprise Managerの即時利用可能なアソシエーション・タイプのセマンティクス。

- ターゲット・モデル、ターゲット・プロパティおよびターゲット・コンポーネント。

- 構成データとしてのターゲット・プロパティの処理を含む、エンタープライズ構成管理構成収集。

- プラグインとそのXMLファイルのパッケージ化の方法を含む、プラグイン開発の概要。

- トポロジ・ビューア(アソシエーションを表示するため)。

11.2 Enterprise Managerアソシエーションの概念について

Enterprise Managerでは、関係の概念は内部的にアソシエーションと呼ばれます。アソシエーション(アソシエーション・インスタンス)は、2つの管理対象エンティティ間の関係を表し、ソース、宛先、アソシエーション・タイプの3つの値を指定します。たとえば、"database1 exposed_by listener1"では、database1がソース、listener1が宛先、"exposed_by"がアソシエーション・タイプです。

ここでは、アソシエーション・タイプを定義する簡潔で宣言的な手段を提供するアソシエーション導出ルールについて説明します。アソシエーション導出(アソシエーションの存在は収集されたデータから導出されるため、このように呼ばれます)は、ターゲットから収集したデータに基づいて開発者がアソシエーション・インスタンスを作成および削除できるメカニズムを提供します。

アソシエーション導出は、構成収集を使用して収集されてEnterprise Managerリポジトリに存在するデータに基づきます。アソシエーション導出メカニズムでは、アソシエーションと収集された構成データの整合性を保ち、(アクセスできるデータが少ないエージェント・ロジックによるのではなく)すべての既知のデータに基づいてアソシエーションを集中的に決定できます。

11.2.1 即時利用可能なアソシエーション・タイプについて

Enterprise Managerは、ほとんどのプラグイン開発者のニーズを満たす必要のあるアソシエーション・タイプの共通セットを提供しているため、これらのアソシエーション・タイプに精通し、適宜使用することをお薦めします。

カーディナリティでは、全体的なアソシエーション・タイプのカーディナリティを指定します。allowed_pairs (制約)では、重複するカーディナリティを指定できず、より特定的なカーディナリティを指定できます。抽象アソシエーション・タイプに対しては、アソシエーション・インスタンスを作成できません。

次の図に、コア・アソシエーション・タイプの階層を示します。即時利用可能なアソシエーション・タイプの詳細は、付録A「即時利用可能なアソシエーション」を参照してください。

図11-1 コア・アソシエーション・タイプの階層

11.2.2 アソシエーション導出の使用

アソシエーション導出を使用するには、次の手順を実行します。

1. ターゲット構成の収集後に実行するロジックを指定します。
ロジックは、ソースで管理されるエンティティGUID、アソシエーション・タイプ、および宛先で管理されるエンティティGUIDを指定する3重形式でアソシエーション・インスタンスのセットを導出します。たとえば、oracle_listenerタイプのターゲットのアソシエーション導出ロジックは、リスナーとリスニング対象の各データベース間のアソシエーションを表す3つの項目を返すことができます。

2. 3つの項目の導出に使用されるロジックを含むSELECT文を作成および実行します。
返される各行には、アソシエーション・タイプ、ソースおよび宛先の列が含まれ、存在する必要のあるアソシエーションを表します。

3. エンタープライズ構成管理スナップショット・タイプに対する導出ロジックを登録します。
すべてのスナップショットの収集後に、登録されたロジックが呼び出されます。ロジックへの入力は、データが収集されるターゲットのGUIDです。

ターゲットTのスナップショットSのアソシエーション導出ロジックが実行されると、導出されたアソシエーションは、ターゲットTのスナップショットSについて以前に導出されたアソシエーションを置き換えます。たとえば、アソシエーションA1およびA2が昨日収集され、本日はA1のみ収集される場合、A2は実際上削除されます。

11.2.3 アソシエーションの自動検出および昇格について

Enterprise Managerにアソシエーションを追加する1つのオプションは、ターゲットとそれらの間のアソシエーションを検出する検出スクリプトを提供することであり、検出スクリプトは、選択したエージェント・セットで実行するようにエンドユーザーによってスケジュールされます。このタイプのスクリプトで検出されたターゲットとアソシエーションは自動的に昇格され、Enterprise Managerに自動的に追加されます。このアプローチは、プラグインで管理されるため特定のターゲットの識別情報がわかっている(つまり、アソシエーションの両方の側にターゲットを作成する)ターゲット間のアソシエーションに役立ちます。これらのアソシエーションがプラグインに含まれない他のターゲットに対するものである場合は、通常、導出されたアソシエーション・ルールを使用して"外部"ターゲットの特定方法を指定します。

スクリプトで検出された情報をフィルタするためにエンドユーザーまたは管理者との対話が必要な場合、またはEnterprise Managerがすでに認識している他の情報と比較するために一定量の後処理が必要な場合は、ガイドされた検出プロセスを使用できます。

11.2.4 ガイドされた検出時のアソシエーションの作成について

このアプローチは、Enterprise Managerエージェントによって実行できる検出スクリプトを提供するという点で、前の項で説明した自動検出アプローチと似ています。その検出スクリプトは、任意の数の関連ターゲットおよびそれらの間のアソシエーションを返すことができます。違いは、ガイドされた検出の場合、エンドユーザーが検出スクリプトの実行を駆動し、返される結果を処理するために対話するユーザー・インタフェースを提供することです。この処理は、検出スクリプトから出力を取得し、さらにフィルタ処理するか、エンドユーザーに提示してエンドユーザーが重要な情報を追加できるようにすることができます。

ガイドされた検出は、ターゲット・サービスを使用してEnterprise Managerシステムと対話し、Enterprise Managerがすでに認識しているターゲットに関する情報を取得して、検出されたターゲットのトポロジに対する増分更新を実行することもできます。このアプローチは、作成されるアソシエーションが、プラグインで管理されるため特定のターゲットの識別情報がわかっているターゲット間アソシエーションの場合にも使用されます。つまり、アソシエーションの両方の側にターゲットを作成しますが、これらのアソシエーションをEnterprise Managerに追加する前に追加の介入が必要です。

11.2.5 システム・ステンシルから導出されたアソシエーションの使用

このアプローチは、システム・ターゲットとそのメンバー間のシステム・メンバーシップ・アソシエーションの作成にのみ使用されます。システム・トポロジを形成するにはシステム・ターゲットとそのメンバー間に存在するアソシエーションのタイプに関する知識が必要であるため、システム・ターゲットとそのメンバーシップは、通常、1つのプラグインのすべてです。

システム・ステンシルは、システム・メンバーシップの形成時に考慮する必要のあるアソシエーション・パスのセットを定義します。この方法で、プラグインは複雑なアソシエーション・パスを探索して、システムのメンバーとして扱う必要のあるターゲットを特定できます。これは、システム・メンバーが他の"ネイティブ"アソシエーションによってシステム・ターゲットに直接関連付けられていない場合に重要です。

プラグインに、システムとして扱うターゲット・タイプが含まれない場合、このアプローチは無視できます。

11.2.6 ルールから導出されたアソシエーション

アソシエーションの作成のこのアプローチは、アソシエーションの宛先ターゲットがプラグインの一部ではないが、Enterprise Managerによって管理されることがわかっている場合に特に適しています。たとえば、ターゲットの構成に、ターゲット操作に関連する情報の格納に使用されたOracleデータベース(アプリケーション・ストアなど)への接続が含まれていることを想定します。ターゲットの構成には、使用するデータベースに関する情報(おそらく、host-port-sidやhost-serviceなど、接続関連の詳細)があります。

Enterprise Managerがデータベースを管理する場合に、エンドユーザーがこの関係を参照して探索し、そのデータベースに関する他の情報を取得して管理できるように(適切かつ許可される場合)、ターゲットとEnterprise Managerのデータベース間のこのアソシエーションを表す必要があります。

Enterprise Managerがデータベースを管理しているかどうかはわからず、持っている識別情報はEnterprise Managerデータベース・ターゲット名ではなく接続情報であるため、ターゲットの構成内の接続情報をEnterprise Managerのデータベースの接続情報にマップする導出ルールを作成できます。

このアプローチは、プラグインの一部であるターゲットと一部の外部ターゲット(特に、Oracle Fusion MiddlewareやOracle Databaseなどの一部のEnterprise Managerスタック・コンポーネント)間にこのタイプのアソシエーションを作成する場合に非常に役立ちます。

11.3 アソシエーション導出ルール管理について

Enterprise Manager Cloud Control 12cは、Enterprise Managerコンポーネントによるアソシエーションの使用を拡張し、全体的なアソシエーション・フレームワークを強化しています。トポロジ・ビューアなど、アソシエーションの新しいコンシューマを導入しています。

アソシエーション・フレームワークの強化には、構成データとしてのアソシエーションの処理が含まれます。変更追跡や保存されたスナップショットなどのエンタープライズ構成管理機能は、アソシエーションおよび従来の構成データに適用されるようになりました。アソシエーションは、ソースと宛先のターゲット・コンポーネントに加えて、ターゲットGUIDを指定できるようになりました。

次の各項では、導出ルールの使用と管理の詳細な手順を示します。

- アソシエーション導出ルールの構文とセマンティクスの使用

- XMLメタデータ・ファイル構文とセマンティクスについて

- ルール・セマンティクスの使用

- パフォーマンスの維持

- 正規問合せおよびトリガー・パターンについて

- 問題の診断

- 役立つ例

- 統合の機械的手順の適用

- アクティブ化式について

- トラブルシューティングおよびデバッグ

11.3.1 アソシエーション導出ルールの構文とセマンティクスの使用

次の各項では、名前、問合せ、トリガー、データベース・オブジェクトなど、ルール問合せで参照できるルールの内容について説明します。

名前

ルールは、すべてのプラグインで一意である必要のある一意のルール名で識別されます。適切な接頭辞を使用して、名前の重複を回避することをお薦めします。たとえば、会社のシンボルまたは名前の後にプラグイン名を指定します。

問合せ

ルールの主要構成要素は、アソシエーションのセットを識別するルール問合せです。問合せで返される各行は、アソシエーションを表します。SQLは、次の名前とタイプを持つ4つの列を返す必要があります。

- assoc_type
(VARCHAR2(64)): アソシエーション・タイプ

- source_me_guid
(RAW(16)): 管理対象エンティティのGUID

- dest_me_guid
(RAW(16)): 管理対象エンティティのGUID

- derivation_target_guid, derivation_target_guid2, derivation_target_guid3
(RAW(16))

多くの場合に不要ですが、アソシエーションの導出に関連するターゲット(ソースまたは宛先以外)を識別する1つ以上のオプションのターゲットGUID列があります。

- これらはターゲット・コンポーネントIDであってはならず、ターゲットGUIDである必要があります。

- 列は順番に使用する必要があります。
つまり、derivation_target_guid2を返す問合せはderivation_target_guidも返す必要があります。derivation_target_guid3を返す問合せは、derivation_target_guid列とderivation_target_guid2列も返す必要があります。

導出ターゲットGUIDが必要な一部のケースは、ターゲットの収集が他の2つのターゲット間のアソシエーションを決定するケースで示されます。たとえば、Siebel Enterprise Systemに対する収集によって、そのメンバー・ターゲット間のアソシエーションが決定されます。

この場合、導出ターゲットGUIDはSiebel Enterprise SystemターゲットのターゲットGUIDですが、ソースと宛先は他のターゲットです。Oracle E-Business SuiteとOracle WebLogic Serverでも同様のケースが存在し、構成情報がOracle WebLogic Serverドメイン管理サーバーなどの単一ソースから収集され、ドメイン・メンバー間のアソシエーションの導出に使用されます。

問合せで返される各行では、有効なアソシエーション・インスタンスを指定する必要があり、具体(抽象ではない)順方向(逆方向ではない)アソシエーション・タイプを使用する必要があります。有効なアソシエーション・インスタンスは、指定されたアソシエーション・タイプに対して有効な管理対象エンティティを指定する必要があります。たとえば、hosted_byアソシエーションでは、ホスト・ターゲットである宛先を指定する必要があります。逆アソシエーション・タイプを返してはなりません。たとえば、hosted_byの逆であり、エラーとしてログに記録されるhost_forは使用しないでください。

ルール問合せはアソシエーションのリポジトリ全体のセットを返しますが、アソシエーションは一度に1つのターゲットのために増分的に移入されます。ルールが評価される場合、単一ターゲットの観点から評価されます。評価時に、フレームワークは問合せを外部問合せでラップします。例:

"SELECT … FROM <query> WHERE derivation_target_guid = <initiatingTarget> AND …"

注意:
フレームワークは問合せを自身の問合せでラップするときに重複を排除するため、ルール問合せに(一番外側のレベルで)DISTINCTキーワードを指定する必要はありません。
問合せサイズは2000文字以下にする必要があります。(これは将来のリリースで4000文字に拡張される予定です)。

ルール問合せで参照されるDBオブジェクト

セキュリティ上の理由から、SYSMAN_ROユーザーがルール問合せを実行します。したがって、このユーザーがアクセスできるオブジェクトだけを参照できます。プラグインの外部で作成されたオブジェクトの場合は、MGMT$の接頭辞の付いたビューなど、プラグイン・レベルで拡張開発キット(EDK)によって公開されているビューを参照できます。

プラグインで作成されたオブジェクトの場合は、ターゲット・タイプの収集用のエンタープライズ構成管理フレームワークで自動生成されるCM$ビューを参照できます。DA_接頭辞の付いたビューおよびDA_接頭辞の付いたインボーカ権限のあるパッケージも参照できます。

問合せの実行時までに存在することが確実な場合(たとえば、対応するトリガーが起動される場合 - 次を参照)を除き、問合せはアソシエーションに依存してはなりません。構成が到着して対応するアソシエーションが導出される順序は任意であるため、導出されたアソシエーションでは、実行の順序は決定的ではありません。使用できるアソシエーションの例は、ターゲット検出時に出現する、導出されたアソシエーションではないhosted_byアソシエーションです。

トリガー

通常、トリガーはルール問合せに加えて提供されます。トリガーは、変更するとルール問合せによって返されたアソシエーションに影響する可能性のある表を指定します。ルール問合せは複数の表のデータを参照することが多く、ターゲットのデータに対する変更は問合せで返されるアソシエーション行に影響する可能性があるため、一般には複数のトリガーがあります。

2つのターゲットのうち1つが変更されない場合のように、2つのトリガーが常に必要とはかぎりません。たとえば、ターゲットの1つの(固定の) IDプロパティに基づいて宛先を決定するアソシエーション・ルールは、ソース・ターゲットの構成に対する変更の影響のみ受けます。その場合も、2つのトリガーを指定することが理想です。ソースの後に宛先ターゲットが出現することがあり、この出現が原因で新規アソシエーションが即時に作成される場合は、トリガーが必要です。

トリガーは次の項目を指定します。

- スナップショット表
(新規データのアップロードによる)表に対する変更はトリガーを起動します。トリガーを不必要に起動するとパフォーマンスに影響するため、アソシエーションのセットに影響する表のみ含める必要があります。表は、ターゲット・タイプ、スナップショット・タイプおよび表名で識別されます。

- 列IDフラグ
これは、ソース、宛先、または導出ターゲットGUIDを使用して、新規にアップロードされた構成データの影響を受けるアソシエーションを識別する必要があるかどうかを示します。つまり、列の値に応じて、ソース、宛先または導出ターゲットのアソシエーションは、トリガー表のデータが変更されたときにそのターゲットに対して計算された新規アソシエーション・セットで置き換えられます。可能な値は、source、destination、derivationTarget、derivationTarget2、derivationTarget3などです。

トリガーが起動すると、アソシエーション導出フレームワークは、指定されたターゲットが(フラグに応じて)ソース、宛先または導出である現在存在するすべてのアソシエーションを新規に計算されたアソシエーションで実際上置き換えます。新規アソシエーション・セットを計算するために、ルール問合せはターゲットIDにバインドされた対応する列で実行されます。この簡略化した説明は、アソシエーションの存在理由がこの単一ルールだけであることを想定しており、ターゲット・コンポーネントの場合には若干変更されます。

たとえば、ルール問合せはリスナー構成表とデータベース構成表のデータにアクセスし、<database> exposed by <listener>という形式のアソシエーションを返します。データベースの構成表に対する変更は、データベースがアソシエーションのソースである行に影響することがあるため、1つのトリガーではデータベース構成表とソースの列IDフラグを指定します。同様に、リスナーの構成表に対する変更は、リスナーがアソシエーションの宛先である行に影響することがあるため、2番目のトリガーではリスナー構成表と宛先の列IDフラグを指定します。

複数のルールをスナップショット表に対してトリガーできる場合、トリガーの実行順序は決定的ではありません。つまり、開発者は順序を想定できません。

トリガーで指定された表名(TN)は、実際には実表、ビューまたはシノニムの名前であることがあります。どの場合も、TNの基礎となる表が識別されます。トリガーは、エンタープライズ構成管理表である表ごとに作成されます。

11.3.2 XMLメタデータ・ファイル構文とセマンティクスについて

ルールを作成または更新するには、ルール(またはルールのセット)を定義するXMLメタデータ・ファイルを編集し、それをリポジトリにインポートします。メタデータのインポートは、リポジトリの作成またはアップグレード時に実行されます。プラグインの追加、アップグレードまたは削除時にも実行されます。

図式的に、各ルールの次の情報をファイルに指定します。

- 名前

- 問合せ

- 次のものを持つ0からnのトリガー

- 完全修飾スナップショット・タイプ(ターゲット・タイプを含む)。

- そのスナップショットのメトリック表(このような表を参照するビューまたはシノニム)
通常、このビューはルール問合せで使用されます。

- 列フラグ(source、destination、derivationTarget、derivationTarget2またはderivationTarget3)。

- オプションの詳細(ターゲット・プロパティに基づくトリガーのターゲット・プロパティ名の指定に使用されます)。

XMLセマンティクスは、以前の状態にかかわらず、ルールとそのトリガーの最新状態を記述するように設計されています。したがって、ルールとそのトリガーがプラグインに対してどのように指定されているかを知るために、特定のルールの最新のXML指定のみ必要です。さらに、1つのプラグインが別のプラグインのトリガーに直接影響を与えることはできません。ただし、ルールが削除されると、他のプラグインからルールを参照しているトリガーは使用できなくなります。

次に、ルール問合せ指定のセマンティクスを概説します。

- 空でない問合せは、追加する必要があるか、必要に応じて同じプラグインで登録されたルールの以前のルール問合せを上書きする必要があることを意味します。

- 問合せを指定しないことは、ルール問合せが同じプラグインによって登録され、変更がない場合に、ルールを削除することを意味します。

ルールの場所

ルールRとその問合せがプラグインP内のファイルFに配置されると、対応するXMLルール要素はそのファイルまたはそのプラグインから削除できなくなります(ただし、その属性とサブ要素は変更できます)。ルールRは常にプラグインPによって所有されます。ルールを削除する必要がある場合、ルールRが削除されたことを示す、問合せサブ要素を持たないルール要素がファイルFに残る必要があります。ルールRを別のファイルまたはプラグインに移動することが重要な場合は、ルールの名前を(たとえばR2に)変更し、ファイルFで上記の構文を使用してルールRを削除し、新しい場所にR2を追加します。これにより、事実上Rが削除され、新しいルールR2が作成されます。

ルールRを所有するプラグインPを慎重に選択して、ルール問合せに必要なすべてのターゲット・タイプがプラグインPのインストール時に存在するようにする必要があります。ルールRは、Enterprise Managerに常に存在するターゲット・タイプ(たとえばホスト)、プラグインPで定義されているターゲット・タイプ、またはプラグインPの前提条件であるプラグインで定義されたターゲット・タイプに依存する必要があります。このようなプラグインを選択できない場合は、後で説明するアクティブ化式の高度な機能の使用を検討してください。

トリガー仕様セマンティクス

トリガー仕様セマンティクスに関しては、同じプラグイン内のトリガーを新しく指定したトリガーのセットで置換する必要があります。または、新規に指定したセットが空の場合は既存のトリガーの削除のみ行うことができます。

トリガーの場所

通常、トリガーは同じプラグイン内のルール定義の一部として定義されます。このため、ルールを変更すると、対応するトリガーも必要に応じて変更されることがあります。ただし、トリガーのターゲット・タイプを定義しているプラグインにトリガーを配置することが望ましい場合またはそれのみ可能な場合があります。たとえば、ターゲットとそれに対応するOracleホーム・ターゲット間のアソシエーションを計算するルールは、可能なすべてのターゲット・タイプおよび対応するトリガーをリストできません。

かわりに、ルールを使用するターゲット・タイプを所有しているプラグインは、関連するターゲット・タイプのトリガーを指定します。したがって、oracle_iasターゲット・タイプを所有するプラグインにはこのルールのトリガーがあり、トリガーのターゲット・タイプとしてoracle_iasがリストされています。このようなトリガーは、対応するプラグインとともに変更または削除されます。

ルールのXMLがoracle_iasを所有するプラグインのファイルFにリストされた後、(ルールのトリガーのみ指定する場合でも)別のファイルに移動できません。ここでの例では、ルール問合せ自体は、Oracleホーム・ターゲット・タイプにのみ依存し、他の特定のターゲット・タイプには依存しないため、ターゲット・タイプに固有ではありません。したがって、ルールはプラグイン(oracle_iasプラグインなど)より前にインストールされたプラグインPに定義されています。このため、トリガーは、Enterprise Managerにインポートされると、すでに存在するルールを探します。

次の点を考慮する必要があります。

- 特定のプラグインに対して最大1つのファイルに指定されたルールとそのトリガーが常に必要です。
たとえば、ルールのトリガーの一部(異なるプラグインP1で定義)がプラグインP2の2つのファイルで指定されている場合、2番目のファイルをインポートすると、最初のファイルで指定されたトリガーが上書きされます。2つのファイルのインポート順序は保証されません。

- 異なるプラグインによって登録されたルールに対して問合せが指定されると、エラーが発生します。
つまり、ルール問合せを指定していないプラグインは、そのコンテキストで新しいトリガーのセットのみ指定でき、問合せを上書きできません。事実上、1つのプラグインのみがルール問合せを所有します。

- 存在しないか(ルール問合せを指定しないことで)削除されているルールに対するトリガー仕様がある場合は、エラーが発生します。

- 特定のルールに対してすべてのプラグインのすべてのトリガーを効果的に無効にするために、プラグイン作成者は、前述の構文を使用してルールを削除できます。必要に応じて、作成者は異なる名前のルールを置換として作成することもできます。

- 以前のリリースでルール問合せを指定したプラグインで、トリガーを置換しルール問合せを置換しない場合は、次のプラグイン・バージョンで同じ問合せを再び指定し、新しいトリガーのセットを指定します。

注意:
パフォーマンスについては、同じ問合せテキストを指定すると、フレームワークは問合せのすべてのアソシエーションを再計算する必要がないため、アップグレードのパフォーマンスが最大化されます。

ルール定義の構文は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="YesNo">
<xs:annotation><xs:documentation>
Type definition for the Yes/No atribute value.
</xs:documentation></xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Y"/>
<xs:enumeration value="N"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NameDef">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z][A-Za-z0-9_]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TriggerKind">
<xs:restriction base="xs:string">
<xs:enumeration value="C"/>
<xs:enumeration value="H"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ColumnID">
<xs:restriction base="xs:string">
<xs:enumeration value="source"/>
<xs:enumeration value="destination"/>
<xs:enumeration value="derivationTarget"/>
<xs:enumeration value="derivationTarget2"/>
<xs:enumeration value="derivationTarget3"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="RuleContentWFlags">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="source_comp" type="YesNo" use="optional">
<xs:annotation> <xs:documentation>
Can source entity be a target component? Default: No
</xs:documentation> </xs:annotation>
</xs:attribute>
<xs:attribute name="dest_comp" type="YesNo" use="optional">
<xs:annotation> <xs:documentation>
Can destination entity be a target component? Default: No
</xs:documentation> </xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="RuleType">
<xs:annotation> <xs:documentation>
Rule definition.
</xs:documentation> </xs:annotation>
<xs:sequence minOccurs="0">
<xs:choice>
<xs:element name="query" type="RuleContentWFlags" minOccurs="0"
maxOccurs="1">
<xs:annotation> <xs:documentation>
Query that returns 1 row  per association.  Must return
columns named ASSOC_TYPE, SOURCE_ME_GUID, DEST_ME_GUID, and
optionally, one or more of DERIVATION_TARGET_GUID,
DERIVATION_TARGET_GUID2, DERIVATION_TARGET_GUID3.
Returning DERIVATION_TARGET_GUID[N] column
implies the query also returns DERIVATION_TARGET_GUID and all
DERIVATION_TARGET_GUID[K] for all K between 2 and N.
</xs:documentation> </xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="trigger" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="targetType" type="xs:string" minOccurs="1"
maxOccurs="1"/>
<xs:element name="snapshotType" type="xs:string" minOccurs="0"
maxOccurs="1"/>
<xs:element name="table" type="xs:string" minOccurs="0"
maxOccurs="1">
<xs:annotation> <xs:documentation>
Name of an ECM table or more likely a view whose query
relies on ECM snapshot table(s). The table(s), when
uploaded,
should trigger evaluation of the rule.  (The fully
qualified name includes target type and snapshot
type.)
</xs:documentation> </xs:annotation>
</xs:element>
<xs:element name="idColumn" type="ColumnID" minOccurs="1"
maxOccurs="1">
<xs:annotation> <xs:documentation>
Indicates whether source, destination, or a derivation
target
should be used to identify associations affected by the
newly
uploaded configuration data. In other words, depending on
this
column value, associations for the source, destination, or
a derivation target will be replaced with new set of
associations computed for that target, when the trigger
table data changes.
ColumnID type definition contains allowed values.
</xs:documentation> </xs:annotation>
</xs:element>
<xs:element name="details" type="xs:string" minOccurs="0"
maxOccurs="1">
<xs:annotation> <xs:documentation>
Additional details for the trigger. Currently used for
target properties table, in which case, it contains comma
separated list of property names that should fire the
trigger. Absence
of property names indicates that any property change would
fire the trigger (for the given target type).
Note: white space is ignored.
</xs:documentation> </xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="kind" type="TriggerKind" use="optional">
<xs:annotation> <xs:documentation>
Kind of the trigger. "C" (configuration load trigger) by
default.
Other allowed value: "H" (host change trigger)
</xs:documentation> </xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="NameDef" use="required">
<xs:annotation> <xs:documentation>
Name of rule, which must be unique.  Recommendation: Use a
prefix that identifies your plugin.
</xs:documentation> </xs:annotation>
</xs:attribute>
<xs:attribute name="activation_expr" type="xs:string" use="optional">
<xs:annotation> <xs:documentation>
Optional activation expression. If not present or empty, implies
that the rule is always active. Else, the value is a Boolean
activation expression which must produce true if and only if
the rule should be active.

The expression can use (case insensitive) "AND", "OR", and
parenthesis. Operands of the expression are target types.
Each occurrence of a target type evaluates to "true" if
and only if the target type is present in EM.

Note that a number of target types do not need to be listed in
the expression because they are always going to be present
whenever the rule is installed and present in EM installation.
These include:
- target types installed with the plugin where the rule resides
(i.e. target types in the plugin which owns the rule)
- target types in other plugins on which the plugin owning
the rule depends
- target types always installed with EM (like host)
Thus, in many cases, if this option is used, a single target
type, as in example 1 below, may suffice.

Examples:

(1) "oracle_ovm"
This simple expression implies that the rule should be
active only if oracle_ovm target type is installed at EM
(in addition to any other target types that are already known
to be present when this rule is installed).

(2) "oracle_ovm and (oracle_oam_cluster or oracle_oim_cluster)"
This expression implies that the rule should be active only if
oracle_ovm target type is present and either oracle_oam_cluster or
oracle_oim_cluster is also present.
</xs:documentation> </xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="Rules">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="Rule" type="RuleType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

例:

<?xml version="1.0" encoding="UTF-8"?>
<Rules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Rule name="ora_listensFor">
<query>
SELECT ...
fill in query
</query>
<trigger>
<targetType>oracle_database</targetType>
<snapshotType>db_config</snapshotType>
<table>CM$DB_CONFIG_TABLE</table>
<idColumn>destination</idColumn>
</trigger>
</Rule>
</Rules>

11.3.3 ルール・セマンティクスの使用

次のアルゴリズムは、トリガーが問合せQ、およびソース、宛先または導出ターゲットGUIDの列名に対応するフラグFCを指定するルールRのセマンティクスの簡略化された形式を示します。

スナップショット表に対する更新をGUIDがt_guidのターゲットtに対してアップロードする場合は、変更された表を指定するトリガーごとに次の文を実行します。

DELETE FROM MGMT_ASSOC_INSTANCES
WHERE <FC> = t_guid AND RULE_ID = R

INSERT INTO MGMT_ASSOC_INSTANCES
(SELECT a.*, R
FROM (<Q>) a
WHERE <FC> = t_guid )

実際の実装は、次の理由で上記の例と異なります。

- 実際の実装では、同じアソシエーションの削除と追加では不十分であるため、この操作を行いません。
かわりに、現在のセットと新しいセットを比較し、必要な場合にのみ変更します。さらに、実際のdelete文では、ターゲットのターゲット・コンポーネントを指定するアソシエーションも削除されます。

- アソシエーションは複数の起点によってアサートされることがあります。
これは、コンテンツがMGMT_ASSOC_INSTANCES表にロールアップされる起点表を使用して管理されます。

- 検証テストは様々なポイントで実行されます。
たとえば、提供されているソースおよび宛先MEに対してアソシエーション・タイプが有効であることがテストされます。

11.3.4 パフォーマンスの維持

導出ルールの評価は頻繁に行われることがあるため、ルール問合せのパフォーマンスが低いと問題になることがあります。ルールの作成者は、必要な索引が存在することを確認し、各トリガーに対して生成された特定の問合せに基づいて問合せのパフォーマンスをテストする必要があります。

具体的には、各トリガーは異なる問合せの実行の原因となるため、トリガーごとにルール問合せのテストを実行する必要があります。ルール問合せが値を返す方法は、トリガーに応じて特定のターゲット・グローバル一意識別子(GUID)にバインドされます。

これらのバインドを使用する索引が必要です。さらに、問合せは、外部から問合せへのバインドのプッシュを妨げない方法で記述する必要があります。

11.3.5 正規問合せおよびトリガー・パターンについて

次の各項では、問合せとトリガーに通常見られる正規パターンについて概説します。問合せとトリガーがこれらのパターンに従っているかどうかを確認し、従っていない場合はその理由を文書化します(このようなケースは通常、経験則による例外を表すため)。

問合せパターン

次に、一般的な問合せパターンを概説します。

1. 導出ターゲットは、このようなターゲットのECM構成を使用して他の2つのエンティティ間のアソシエーションを導出するときに、null以外である必要があります。
導出ターゲットを使用する既知のケースの1つは、データベース・システムとのアソシエーションです。データベース・インスタンス・ターゲットは構成を提供し、アソシエーションは対応するデータベース・システム・ターゲットで行われます。このような場合、ターゲット・インスタンスは対応するデータベース・システム・ターゲットへのアソシエーションの導出ターゲットとして機能する必要があります。

2. 問合せは、CM$などのオブジェクト、エンタープライズ構成管理データにアクセスする他のビュー、またはMGMT_TARGETSなどのターゲット情報にアクセスするビューにのみアクセスする必要があります。
アクセスできるオブジェクトの詳細は、第11.3.1項「アソシエーション導出ルールの構文とセマンティクスの使用」を参照してください。

3. アソシエーション・タイプは順方向および具体である必要があります。

トリガー・パターン

次に、一般的なトリガー・パターンを概説します。

1. 多くの場合、トリガーの数は、FROM句のターゲット・エンティティ以外のビューの数と同じです。つまり、mgmt_targets、mgmt_target_properties、mgmt$target、mgmt$target_propertiesなどのビューは無視されます。
各エンタープライズ構成管理ビューは、1つのトリガーに対応します。1つの例外は、表を複数のターゲット・タイプ(たとえば、oracle_databaseとrac_databaseなど)からトリガーできる場合です。この場合、同じエンタープライズ構成管理ビューに対して複数のトリガーを指定できます。

2. トリガーの表名は、トリガーのターゲット・タイプおよびスナップショット・タイプで指定されたスナップショットのエンタープライズ構成管理メタデータ表に基づく必要があります。
通常は、ルール問合せのFROM句のオブジェクトの1つ(たとえば、CM$ビュー)である必要があります。

3. トリガーで指定されたビューは、問合せでターゲット(またはターゲット・コンポーネント)エンティティと(おそらく間接的に)結合されます。
エンティティIDは、SELECT句でソース、宛先、または導出ターゲットとして返されます。idColumnがこれと一致します。

たとえば、ターゲットAとBの間のアソシエーションはcm$Aconfig表とcm$Bconfig表の間の結合に依存し、cm$Aconfig表のデータはターゲットAから取得され、cm$Bconfig表のデータはターゲットBから取得されます。cm$Aconfig表のトリガーはターゲットA (たとえばソース)と一致するidColumnを持ち、cm$Bconfig表のトリガーはターゲットBのGUIDが返される場所(たとえば宛先)と一致するidColumnを持ちます。

4. トリガー・ターゲット・タイプは、idColumnで指定された列の問合せで返されるターゲットのターゲット・タイプと一致する必要があります。
より一般的には、ルール問合せで返されるターゲットのターゲット・タイプは、トリガー・ターゲット・タイプのサブタイプまたはターゲット・コンポーネントにすることができます。

5. トリガーがターゲットのプロパティに依存する場合、特定のプロパティ名は詳細タグで識別する必要があります。

11.3.6 問題の診断

問題を診断し、アソシエーションがどのように導出されたかを理解するために、フレームワークはデバッグ・モードでアソシエーションがどのように導出されたかに関する情報を記録します。デバッグの詳細は、第11.3.11項「トラブルシューティングとデバッグ」を参照してください。追加の健全性(エラー)チェックも含まれます。たとえば、1つのテストは、導出ターゲットGUIDが実際の現在のターゲットのGUIDであることをチェックします。

11.3.7 役立つ例

次の例には、適切な運用を示すためのターゲット・プロパティの使用方法が含まれますが、ターゲット・プロパティに依存することはお薦めしません。かわりに、ECM表を使用して構成データを適切にモデル化する必要があります。詳細は、第11.7.2項「ターゲット・プロパティを使用するときのガイドラインはありますか」を参照してください。

これらの例を確認するときに、次の概念を覚えておくと便利です。

- すべてのターゲット・タイプに、orcl_tp_configというエンタープライズ構成管理スナップショット・タイプがあります。
これには、必要に応じてトリガーで使用する必要のあるGC$TARGET_PROPERTIESビューによって参照されるスナップショット表が含まれます。ターゲット・プロパティの現在のデータには、MGMT_TARGET_PROPERTIESおよびMGMT$TARGET_PROPERTIES EDKオブジェクトを通じてアクセスできます。

- すべてのエンタープライズ構成管理スナップショット表には、デフォルトで、現在の構成データにアクセスするためのビューがあります。
その名前は、表の名前に接頭辞CM$が付きます。ほとんどのルール問合せは、CM$ビューを通じて構成表を参照します。

11.3.7.1 仮想マシン上のホスト

'deployed_on'アソシエーション・タイプを使用して、ホスト・ターゲットが仮想マシン・ターゲットにデプロイされているという事実を表します。

次の問合せは、MACアドレスの一致に基づいて、ホストと関連仮想マシン間のすべてのアソシエーションを返します。トリガーは、対応する構成ビュー(MACアドレスを含む)が変更されるたびにルールをトリガーするように定義されています。次に説明するルールは、仮想マシンを定義するプラグインに存在します(ホスト・ターゲット・タイプはどのEMインストールにも存在することが保証されます)。両方のトリガーをルールに含めることができ、どちらも仮想マシンを定義しているプラグインに属します。

<Rule name="...">
<query>
select 'deployed_on' as assoc_type,
host.target_guid as source_me_guid,
guest.cm_target_guid as dest_me_guid
from mgmt$hw_nic host,
cm$vt_vm_vnic guest
where guest.mac_address = host.mac_address_std
</query>
<trigger>
<targetType>host</targetType>
<snapshotType>ll_host_config</snapshotType>
<table>MGMT$HW_NIC</table>
<idColumn>source</idColumn>
</trigger>
<trigger>
<targetType>oracle_vm_guest</targetType>
<snapshotType>ovm_guest_config</snapshotType>
<table>CM$VT_VM_VNIC</table>
<idColumn>destination</idColumn>
</trigger>
</Rule>

11.3.7.2 ターゲットinstalled_at Oracleホーム

Oracleホーム・ターゲット・タイプには、Oracleホームが存在するディレクトリの名前を含むINSTALL_LOCATIONターゲット・プロパティが含まれます。Oracleホームにインストールされるすべてのターゲット・タイプについて、INSTALL_LOCATIONと同じ値を指定するOracleHomeターゲット・プロパティがあります。ターゲットのOracleHome値がINSTALL_LOCATION値と一致し、両方のターゲットが同じホストに存在する場合は、installed_atアソシエーションが存在します。

ターゲットのOracleHomeとホームのINSTALL_LOCATIONの両方が変更の対象となります。ホームまたはターゲットに一致する、ターゲットまたはホームも作成できます。ただし、ターゲットのホストの値は固定です。

問合せ

Oracleホーム・ターゲットとそれらにインストールされているターゲット間のすべてのアソシエーションを返します。

<Rule name="...">
<query>
select 'installed_at' as assoc_type,
t.target_guid as source_me_guid,
o.target_guid as dest_me_guid
from mgmt_targets t,
mgmt_targets o,
mgmt_target_properties tp,
mgmt_target_properties op
where o.target_type = 'oracle_home' and
t.host_name = o.host_name and
tp.target_guid = t.target_guid and
tp.property_name = 'OracleHome' and
op.target_guid = o.target_guid and
op.property_name = 'INSTALL_LOCATION' and
tp.property_value = op.property_value
</query>
<trigger>
<targetType>oracle_home</targetType>
<snapshotType>orcl_tp_config</snapshotType>
<table>GC$TARGET_PROPERTIES</table>
<idColumn>destination</idColumn>
<details>INSTALL_LOCATION</details>
</trigger>
</Rule>

トリガー2

同じルールに対する次のトリガーは、oracle_databaseターゲット・タイプを定義するプラグインに存在します。

<Rule name="...">
<trigger>
<targetType>oracle_database</targetType>
<snapshotType>orcl_tp_config</snapshotType>
<table>GC$TARGET_PROPERTIES</table>
<idColumn>source</idColumn>
<details>OracleHome</details>
</trigger>
</Rule>

トリガー3-n

これはトリガー2と同じですが、OracleHomeプロパティを持つ別のターゲット・タイプのみ持ちます。これらのトリガーは、対応するターゲット・タイプを定義するプラグインとともに存在します。このトリガーは、Oracle_Homeプロパティを持つ別のターゲット・タイプを使用することを除き、トリガー2と同じ特性を持ちます。

11.3.7.3 リスナーとデータベース

exposed_byアソシエーション・タイプを使用して、データベースがリスナーによってアプリケーションに公開されているという事実を表します。このアソシエーションを作成できる1つの方法は、リスナーが構成されるポートに基づきます。

問合せ

ポートが一致する同じマシン上のデータベースとリスナー間のすべてのアソシエーションを返します。どちらのトリガーも、OracleデータベースおよびOracleリスナー・ターゲット・タイプを定義するプラグインのルールとともに存在できます。

<Rule name="...">
<query>
select 'exposed_by' AS assoc_type,
oradb.target_guid AS source_me_guid,
oralsnr_ports.cm_target_guid AS dest_me_guid
from mgmt_targets oradb,
mgmt_target_properties oradbprops1,
mgmt_target_properties oradbprops2,
cm$listener_ports oralsnr_ports
where oradb.target_type = 'oracle_database'
and oradb.target_guid = oradbprops1.target_guid
and oradbprops1.property_name = 'MachineName'
and oradbprops1.property_value = oralsnr_ports.machine_name
and oradbprops1.target_guid = oradbprops2.target_guid
and oradbprops2.property_name = 'Port'
and oradbprops2.property_value = oralsnr_ports.listener_port
</query>
<trigger>
<targetType>oracle_database</targetType>
<snapshotType>orcl_tp_config</snapshotType>
<table>GC$TARGET_PROPERTIES</table>
<idColumn>source</idColumn>
<details>MachineName</details>
</trigger>
<trigger>
<targetType>oracle_listener</targetType>
<snapshotType>listener_config</snapshotType>
<table>CM$LISTENER_PORTS</table>
<idColumn>destination</idColumn>
</trigger>
</Rule>

11.3.8 統合の機械的手順の適用

ME/アソシエーション・モデルを決定し、ルールを記述したら、次のような実装に進みます。

1. まだ存在しないエンタープライズ構成管理構成データがルールに必要な場合は、新しいエンタープライズ構成管理メトリックを追加するか、既存のメトリックを拡張します。
必要に応じて、新しいエンタープライズ構成管理表または列を追加する必要があります。デフォルトの収集スケジュールで<Schedule OFFSET_TYPE="INCREMENTAL">を指定する必要もあります。そうしないと、構成のロードが遅延し、たとえば新規に検出されたターゲットが30分以上アソシエーションを取得しないことがあります。

2. アソシエーション・タイプ・フレームワークには、特定のアソシエーション・タイプによって関連付けることのできるターゲット・タイプを指定する許可されたペアの概念があります。それぞれのアソシエーション・タイプに対して許可されたペアとしてリストされていないMEタイプ間にアソシエーションを作成する場合は、必要なペアを追加します。

3. 1つ以上のファイルを作成して、アソシエーション導出ルールを定義します。XSDに準拠していないなどの構文エラーは、Java例外として渡されます。JDeveloperまたは別のツールを使用して、有効なドキュメントを作成したことを確認できます。

4. 次のコマンドを使用してインポートすることにより、ルール・ファイルをテストします。

emctl register oms metadata -sysman_pwd sysman -pluginId <your.plugin.id> -service derivedAssocs -file <fileName>

有効性テストが実行されるため、診断を行うことができます。

5. ファイルをプラグインにパッケージ化します。
これらは、リポジトリ作成時またはアップグレード時にメタデータ・フレームワークで定義された変換に従ってインポートされるように配置します。プラグインの一部である場合は、次のような場所にファイルを配置します。

<stage_dir/plugin_dist>/oms/metadata/derivedAssoc

6. 指定したすべてのルール・トリガーを調べるケースで導出ルールをテストします。
1つのオプションは、エンタープライズ構成管理構成データのアップロードを開始し、アソシエーションが正しく確立されていることを確認することです。また、ルールをトリガーするPL/SQLプロシージャを直接呼び出すことができます。

DECLARE
temp GC$DERIV_ASSOC_CHANGE_LIST := GC$DERIV_ASSOC_CHANGE_LIST();
BEGIN
GC$ECM_CONFIG.run_assoc_deriv_rule(
p_target_guid => hextoraw('CC70BC294B82E7E9A95DFC257CFA6459'),  --
Updated target/ME guid
p_rule_name => '...', -- your rule name
p_column_flag => 'D', -- column flag specifying the
perspective from which to fire the rule. Possible values:
S|D|T|U|V (implying source,destination, derivation target,
derivation target 2, or derivation target 3, respectively)
p_change_list => temp);
COMMIT;
-- examine p_change_list if needed
END;

注意:
第11.4項「パフォーマンスの確認」で説明するように、問合せの対応する出力がバインドされた後で、各トリガーの問合せのパフォーマンスをテストします。
インポート・ユーティリティを使用して、ルールを変更して再試行します。

11.3.9 特殊トリガー: ホスト名変更トリガー

このリリースでは、ターゲットのホスト名を変更するときに、新しい種類のトリガーがサポートされています。問合せがmgmt_targets表のhost_name列に依存している場合は、トリガーが役立ちます。トリガーは、ターゲットの再配置などにより、host_name列が変更されると起動されます。

トリガー構文には、値H(ホスト変更トリガーを表す)を持つtrigger要素のkind属性を指定します。トリガー・サブ要素は、トリガーによって適用されるターゲット・タイプ、およびルールを評価するためのパースペクティブを特定するidColumnを指定します。idColumnで使用可能な値は、通常のトリガーの値と同じです。

例:

<trigger kind="H">
<targetType>oracle_database</targetType>
<idColumn>source</idColumn>
</trigger>

これは、oracle_databaseターゲットのhost_name列が変更されるたびに、ルール(トリガーを一部として含んでいる)をソース・パースペクティブから再評価する必要があることを指定しています。

一般に、ホスト変更トリガーには、通常のトリガーと同じルールが適用されますが、その中には適用可能なトリガー・パターンがあります(たとえば、トリガー・パターン4は、問合せによってidColumnに対応する列が戻される場合に、この列がtargetType要素のタイプまたはサブタイプである必要があることを示します)。ファイルおよびプラグインにおけるトリガーのライフサイクルおよび通常のトリガーの配置に関連するルールは、ホスト名変更トリガーにも適用されます。

11.3.10 アクティブ化式について

前に説明したように、ルールは通常、ルール問合せに必要なすべてのターゲットがルールのインストール時までに存在することを必要とするプラグインによって所有されます。ただし、ルール問合せに必要な2つ以上のプラグインが独立しており、プラグインの1つが存在し、他のプラグインが存在しない場合がまれにあります。つまり、両方のプラグインのターゲット・タイプの構成表とデータに依存する特定のルール問合せに対して、1つのプラグインが別のプラグインの前提条件であることは指定できない場合があります。

このような場合は、ルールをいつアクティブにする必要があるかを示すアクティブ化式をルールに指定できます。ルールは依然として(最大で)単一のプラグインによって所有され、ルール問合せは将来ルールの変更または削除を担当する1つのプラグインでのみ指定できます。ただし、必要なすべてのターゲット・タイプがシステムに存在するのでないかぎり、ルールを非アクティブにできます。

構文については、ルールの問合せが指定されているRule要素の属性を使用してアクティブ化式を指定します。

<Rule name="..." activation_expr="..."> ...

通常、activation_expr属性が存在しない場合は、ルールを常にアクティブにする必要があることを意味します。存在する場合、その値は、ルールをアクティブにする必要がある場合にのみtrueを生成する必要のあるBoolean式です。式では、(大文字と小文字を区別しない) "AND"、"OR"およびカッコを使用できます。式のオペランドはターゲット・タイプです。ターゲット・タイプがEnterprise Managerに存在する場合にのみ、ターゲット・タイプの各オカレンスは"true"と評価されます。

いくつかのターゲット・タイプは、Enterprise Managerのインストールでルールがインストールされて存在する場合は常に存在するため、式にリストする必要はありません。これには次のものがあります。

- ルールが存在するプラグインとともにインストールされるターゲット・タイプ(ルールを所有するプラグインのターゲット・タイプ)。

- ルールを所有しているプラグインが依存する他のプラグイン内のターゲット・タイプ。

- 常にEnterprise Managerとともにインストールされるターゲット・タイプ(ホストなど)。

したがって多くの場合、アクティブ化式が使用されるときに、次の例1で説明するように単一のターゲット・タイプで十分です。

1. 例1: oracle_ovm
この単純な式は、(このルールのインストール時に存在することがすでにわかっている他のターゲット・タイプに加えて) oracle_ovmターゲット・タイプがインストールされる場合にのみルールがアクティブになる必要があることを意味します。

この種のアクティブ化式は、(たとえば) oracle_ovmおよびoracle_xyzターゲット・タイプの構成表に依存する問合せを持つルールにあると予想できます。これらのターゲット・タイプが異なる独立したプラグインに属すると想定すると、oracle_xyzターゲット・タイプを所有するプラグインにルールが配置されている場合に、そのアクティブ化式はoracle_ovmになります。

2. 例2: oracle_ovm and (oracle_oam_cluster or oracle_oim_cluster)
この式は、oracle_ovmターゲット・タイプが存在し、oracle_oam_clusterまたはoracle_oim_clusterも存在する場合にのみルールがアクティブになる必要があることを意味します。

アクティブ化式はルールのアクティブ化の前のチェックがなくエラーになりやすいため、非常に慎重に例外的に使用する必要があります。たとえば、ターゲット・タイプの入力ミスや論理式エラーがあると、ルールが決してアクティブにならないことや、正しいケースでアクティブ化されないことがあります。Enterprise Managerは、式内の不明なターゲット・タイプが将来インストールされる可能性があると想定するため、ターゲット・タイプの有効性をチェックできません。

次に、アクティブ化式機能が他の導出されたアソシエーション機能と相互作用する方法を説明します。

- ルールXMLの新規リリース時に、ルール問合せが変更されておらず、アクティブ化式が変更されている場合、アクティブ化式が更新され、必要に応じてルールがアクティブ化または非アクティブ化されます。ルールがアクティブ化または非アクティブ化されている場合、ルールのアソシエーション・インスタンスはそれぞれ再評価または削除されます。

- (たとえばプラグインのインストールまたはアンインストールにより) Enterprise Managerがターゲット・タイプを追加または削除すると、Oracleは関連するアクティブ化式を再評価し、それに従って対応するルールをアクティブ化または非アクティブ化します。
ターゲット・タイプの追加は、対応するターゲットおよびそのアソシエーションまたはデータが追加される前に実行されます。ターゲット・タイプの削除は、ターゲット・インスタンスおよびそのアソシエーションが削除された後に行われます。したがって、影響を受けるルールの対応するアソシエーション・インスタンスは再評価しません。ターゲット・タイプの追加によりルールがアクティブ化されるまで、このようなルールに対してアソシエーションは存在しません。

同様に、ターゲット・タイプを削除したためルールが非アクティブ化された場合は、そのターゲット・タイプのすべてのターゲットが削除されるため、アソシエーションも削除されます。このロジックは、式のターゲット・タイプがソース、宛先または導出ターゲットの1つのターゲット・タイプである場合を含め、すべての既知のケースに適用されます。このため、ターゲット・タイプの追加または削除時にルールの再評価は行われません。

- 隔離機能とアクティブ化式には違いがあります。隔離機能は、オフにするルール評価を決定するためにエンドユーザーまたは管理者によって制御されます。一方、アクティブ化式は、ルールの作成者および特定のEnterprise Manager設定によって制御されます(たとえば、関連するターゲット・タイプの存在または不在)。
一度もアクティブ化されていないルールは隔離できません。そうでない場合、他のすべての組合せがサポートされます。たとえば、隔離されたルールが非アクティブ化され、アクティブ化式を使用して再びアクティブ化された場合は、隔離されたままになります。

同様に、アクティブなルールが管理者によって隔離され、後でターゲット・タイプの削除が原因で非アクティブになった場合、アクティブ化された場合にアソシエーションの計算が開始されるように、管理者は隔離を解除できます。

- ルールが削除されると、ルールのアクティブ化式とそのアクティブ化ステータスは無視されます。つまり、ルールは非アクティブな場合でも削除できます。

一般にサポートされているバージョン指定には次の4種類があります。

- target_type[version]、たとえば"oracle_ovm[3.7]"
指定したバージョンのターゲット・タイプが存在する場合にのみ、式のこの部分がtrueと示されます。前の例では、oracle_ovmターゲット・タイプのバージョン3.7がインストールされていない場合、他のバージョンのoracle_ovmが存在したとしても、式はfalseと評価されます。

- target_type[version1-version2]、たとえば"oracle_ovm[3.7-5.2]"
指定したバージョン範囲(指定した2つのバージョンを含む)に該当するバージョンのターゲット・タイプが存在する場合のみ、式のこの部分がtrueと示されます。したがって前の例では、バージョン3.7、3.8、4.5、5.0または5.2のoracle_ovmターゲット・タイプが存在する場合に、この式がtrueになります。

これに対し、インストールされているoracle_ovmターゲット・タイプのバージョンが、3.7から5.2の範囲に該当しない場合、"oracle_ovm[3.7-5.2]"はfalseと評価されます。

- target_type[version-]、たとえば"oracle_ovm[3.7-]"
ターゲット・タイプのバージョンが、指定したバージョン以上の場合にのみ、式のこの部分がtrueと示されます。これは最も一般的に使用されるバリエーションであり、通常は、指定したバージョンが、ルール問合せで使用される表がターゲット・タイプ・コレクションに導入されるバージョンになります。前の例では、バージョン3.7以上のターゲット・タイプoracle_ovmがEnterprise Managerにインストールされている場合のみ、式がtrueと評価されます。

- "target_type[-version]、たとえば"oracle_ovm[-5.2]"
ターゲット・タイプのバージョンが、指定したバージョン以下の場合のみ、式のこの部分がtrueと示されます。したがって前の例では、バージョン5.2以下のターゲット・タイプoracle_ovmがEnterprise Managerにインストールされている場合にのみ、式がtrueと評価されます。

注意:
ターゲット・タイプと左大カッコの間にスペースはありません。
バージョン指定は任意です。すべてのバージョンのターゲット・タイプが式のこの部分を満たすことを暗に示す、ターゲット・タイプ指定を使用することができます。

例:

"oracle_ovm[3.7-] and (oracle_oam_cluster or oracle_oim_cluster[-2.5] or oracle_oim_cluster[2.8-])"

この式では、ルールがアクティブになるのは、バージョン3.7以上のoracle_ovmターゲット・タイプが存在し、さらに任意のバージョンのoracle_oam_cluster、バージョン2.5以下のoracle_oim_cluster、バージョン2.8以上のoracle_oim_clusterのいずれかが存在する場合であることを示しています。

11.3.11 トラブルシューティングとデバッグ

トリガーの起動に使用する構成収集を開始することでデバッグを開始できます。これらの収集は、ターゲットが最初に使用されるとき、またはトリガーで指定されている表またはビューに含まれる構成データを変更するたびに行われます。管理エージェントを再起動してデータを再収集できます。トリガーが起動されるかどうかを確認する前に、構成表のデータが期待どおりに変更されていることを確認します。

ルール問合せで、開発Enterprise Managerリポジトリに必要なすべてのアソシエーションが生成されることを確認します。

最後に、GC$ECM_CONFIG.RUN_ASSOC_DERIV_RULE PL/SQL APIを手動で実行して、構成変更時にルールを起動した場合と同様に、必要なアソシエーションを手動で作成します。

期待するアソシエーションが作成されない場合は、次のことを行います。

1. 問合せを手動で実行し、正しいターゲットにソースまたは宛先のGUIDをバインドする際、必要なアソシエーションが生成されるようにします。

2. この項で指定されている関連するエラー表でエラーを確認します。

これで問題が解決しない場合、プロセスが失敗している理由を把握する必要があります。次のいずれかになります。

- 構成収集が収集されていない

- 構成収集がトリガーで指定された場所で変更されていない

- トリガーの起動でエラーが発生した

- 起動したトリガーが必要なアソシエーションを生成しない

- キューのバックログのため、トリガーの起動アクションが処理されていない

トラブルシューティングのヒント

次のリストに、アソシエーションが作成されない問題調査する方法のヒントを示します。

- 環境内でルールがアクティブで隔離されていないことを確認します。

select r.rule_name, q.column_flag, r.is_active,
case when q.quarantined_time is null
then 'No' else 'Yes' end as is_quarantined
from mgmt_deriv_rules r, mgmt_deriv_rule_queries q
where r.rule_id = q.rule_id and r.rule_name = your_rule_name;

- 導出されたアソシエーション関連のエラーが管理リポジトリにあるかどうかを確認します。

select *
from mgmt_system_error_log
where module_name = 'EM.deriv'
order by occur_date desc

関連していないように思われる結果が多すぎる場合、結果を限定するためにオプションで、"and error_msg like '%<your rule name>%'"条件を追加したり、アソシエーションに関連した他のサブストリングを使用したりできます。

たとえば、「ORA-20624: 指定したアソシエーションは制約アソシエーション・タイプと一致しません」を含んだメッセージが表示された場合、これは、このアソシエーション・タイプおよびソース/宛先ターゲット・タイプに許可されているタイプ・ペアがリポジトリに登録されていなかったことを示しています。

- 問題を再現できる場合は、追加のログをオンにし、次のいずれかを呼び出します。

EMDW_LOG.SET_TRACE_LEVEL('EM.deriv', EMDW_LOG.LINFO); COMMIT;

EMDW_LOG.SET_TRACE_LEVEL('EM.deriv', EMDW_LOG.LDEBUG); COMMIT;

DEBUGは非常に冗長であり、使用される問合せを含みます。

注意:

- モジュール名はEM.derivです。

- 新しいセッションが新しいレベルを取得します。長時間実行セッションなどの既存のセッションは、EMDW_LOGに実装されているため変更による影響を受けません。

- 定数EMDW_LOG.LOFFを使用して、ログをオフにできます。

- ログを表示します。
ログはEMDW_TRACE_DATA表で実行されます。この問合せを使用してログを表示します。

SELECT log_timestamp, TRIM(log_message)
FROM   emdw_trace_data
WHERE  module = 'EM.deriv'
ORDER BY log_timestamp ASC

注意:
"log_message like"および"log_message like '%<your rule name>%'"条件などを追加することで、結果を減らすことができます。

- ログをチェックして、適切なルールがトリガーされていることを確認します。
"Resulting action list:"行に続く、ルールと列フラグS|D|T|U|Vを指定する各アクションの行を探します。

- 起動する必要があるトリガーおよび必要なアソシエーションを作成する必要があるターゲットを決定します。たとえば、どのトリガーが変更され、最新のものはどれなのかを確認するために、トリガーを起動するスナップショットに関して、MGMT$ECM_CURRENT_SNAPSHOTSビューでsaved_timestampを確認します。
次に、キューのバックログによってトリガーが起動されなかったのかを確認します。これは、実行キューでバックログが発生する可能性の高い大規模なサイトにあてはまります。

1. 再試行アクションの導出されたアソシエーション・キューを確認します。

select * from em_deriv_retry_actions
where is_pending = 'T'
and rule_id = (select rule_id from mgmt_deriv_rules
where rule_name = <'<your rule name>')
and target_guid in (list of hextoraw(<target_guid on both ends of your
missing associations - or just the target you found
should have triggered the evaluation>);

この文が行を返す場合、トリガーの評価はバックログのために保留中のままになります。

2. ターゲット・プロパティに依存するトリガーがある場合、ターゲット・プロパティ・キューを確認して、指定されたターゲット・プロパティの更新のためにシステムがすべてのフォローアップ・アクションを処理したかどうかを確認します。

select * from EM_TPROPS_PENDING

where target_guid = hextoraw(<target guid of the target with changed
target property>);

この問合せは、トリガーが起動されていないキュー内のすべての未処理のターゲット・プロパティを返します。

- ルール問合せをテストします(前述の箇条書きで説明したようにデバッグがオンの場合)。
emdw_trace_data表で、After query:という行の直後で実行されている問合せのバリエーションを探します。:xをHEXTORAW(target guid)で置換して、それを実行してみます。GUIDは、ログの最初の方にあるvvvvvvvvvvv RUN_SNAPSHOT_RULES行に見つかります。

これは、指定したルールとターゲットの収集に基づいて存在する必要のある各アソシエーションの行を返します。そうでない場合は、正しくない問合せを入力したりトリガーに不適切なフラグを指定したりしていないことを確認します。

最後の行でバリエーションを試すことができます。例:

WHERE source_me_guid = :y
WHERE dest_me_guid = :y
WHERE derivation_target_guid[N] = :y

- ルール問合せをログに記録すると、ログは変更する必要のあるMGMT_ASSOC_INST_ORIGINS表の行に続いてMGMT_ASSOC_INSTANCESの実際のアソシエーション行を反映します。

- アソシエーション・インスタンスがMGMT_ASSOC_INST_ORIGINSに存在することを確認します。
その場合は、DERIVATION_RULE_ID列にリストされている導出されたアソシエーション・ルールがそのアソシエーションの存在を正常にアサートしました。何かがアソシエーションの作成を妨げています。アソシエーション・タイプが正しく、許可されるタイプのペアがアソシエーション・フレームワークに登録されていますか。例外がスローされましたか。

11.4 パフォーマンスの確認

提供するルールは、定義するトリガーおよび対応する構成表の変更頻度に応じて頻繁に起動されることがあります。頻繁にトリガーされるルールのパフォーマンスが低いと、OMS全体の操作に悪影響を及ぼすことがあります。

ルール問合せは、より特定的な問合せにマップされます。実行される問合せは、トリガーの列フラグ(source、destination、またはderivationTarget[N]列)によって決まります。前述のように、ルール問合せ<Q>は次の形式の問合せにマップされます。

SELECT a.*,
FROM (<Q>) a
WHERE <FC> = ?

パラメータは、エンタープライズ構成管理収集がトリガーを起動したターゲットのGUIDで、<FC>はトリガーで指定された問合せのsource/destination/derivationTarget[N]列です。

見てわかるように、全体の問合せ(<Q>)は、返されるターゲットGUIDの1つに基づいてフィルタされます。これは、問合せ計画が一般にそのターゲットのデータから開始し、そこから結合を実行することを意味します。問合せ計画は、<FC> = ?条件を完全にプッシュし、この条件を使用して評価を開始する必要があります。通常、問合せ計画は、最も深いレベルで前述のバインディングを実行し、索引付けされた検索から始まる残りのデータのところに移動する数多くのネストされたループを含んでいます。一般に、潜在的に大きいデータ表(つまり、ハッシュ結合)の全表スキャンはありません。

第11.3.7.3項「リスナーとデータベース」の例を考えてみます。最初のトリガーが起動すると、問合せはデータベース・ターゲットをバインドし、関連付けられているリスナー・ターゲットを探します。Enterprise Managerリポジトリがアソシエーション(たとえば、リスナー・ターゲット)の相手側を検索できる唯一の方法は、machine_name列とlistener_port列上のcm$listener_ports oralsnr_ports結合を介したものです。ビューcm$listener_portsの下の表が大きくなることがある場合、ルールの作成者は、表の全表スキャンを実行するかわりに迅速にリスナー・ターゲットを突き止めるために、これらの2つの列から始まる索引を用意する必要があります。

各トリガーについて、サポート索引が存在することを確認し、前述のように問合せでそれらを囲んだ後で問合せのパフォーマンスをテストする必要があります。ただし、たとえばsource列フラグのトリガーが複数ある場合、生成される問合せは両方の問合せで同じであるため、パフォーマンスを1回のみテストすれば十分です。

11.4.1 データ収集でのカスタム構成仕様の使用

カスタム構成仕様(CCS)に精通していない場合は、この注意事項をスキップしてください。CCS表は様々なデータを収容できるように汎用的であるため、問合せのパフォーマンスがよくない傾向があります。一方、適切にモデル化されたECM表は、収集されるデータに固有であり、導出されたアソシエーション計算コードなどのクリティカルなコード・パスに対して適切に実行できます。したがって、導出されたアソシエーション・ルールにはCCSで収集されたデータを使用しない必要があります。かわりに、導出されたアソシエーションに必要なデータは、標準のECM収集を使用して個別に収集します。

11.5 オーバーラップ・アソシエーションの使用

複数のルールで同じアソシエーションを導出できますが、通常はこのようなオーバーラップ・ルールの作成を回避する必要があります。ここでは、アソシエーションが複数のルールによって導出された場合に何が起きるかについて説明し、これを回避するタイミングと方法に関する提案を示します。

11.5.1 ルールによって導出されるアソシエーション間のオーバーラップ

複数のルールが同じアソシエーションを導出する場合、そのアソシエーションは各ルールによって導出されなくなるまで存在し続けます。

これが目的の動作である場合があります。たとえば、2つのアプリケーション・ターゲット・タイプそれぞれが、実行されるOracle WebLogic Serverとアクセスするデータベースの両方を認識しているとします。この認識に基づいて、それぞれにOracle WebLogic Serverとデータベース間のアソシエーションを導出する方法があります。どちらかのルールがアソシエーションを導出すると、そのアソシエーションが現実に存在します。両方のルールがアソシエーションを導出しなくなった場合にのみ、アソシエーションが存在しなくなったことが保証されます。

"ルールによって導出される場合に存在"セマンティクスは、意図したものでないことがあります。データベースとOracleホーム間のinstalled_onアソシエーションに対して定義できる2つのルールについて考えます。どちらも同じデータにアクセスしますが、一方はOracleホームに対するプロパティ変更によってトリガーされ、もう一方はデータベースに対する変更によってトリガーされます。どちらかのルールによって関係がなくなったと判断されたらすぐに、アソシエーションを削除する必要があります。このような場合は、2つのトリガーがある単一のルールを使用する必要があります。

このような場合に1つのルールのみ作成するように注意しなかったとします。この誤りは重大ではなく、結局のところアソシエーションはすぐに削除されると考える可能性があります。しかしそうではなく、不要なアソシエーションが無限に存在する可能性があります。前述の例で、アソシエーションが2つのルールを使用して導出され、データベースがアップグレードされ、そのOracleHomeプロパティが変更されたとします。古いホームとのアソシエーションは削除される必要がありますが、もう一方のルールが起動されるまで削除は行われません。ただし、Oracleホーム・ターゲットについては何も変更されていないため、そのルールはトリガーされず、アソシエーションが残ります。実際に、1つのターゲットのみ変更され、他のターゲットは長期にわたって変更されないことがよくあります。

経験則として、特定の表セットのデータに基づくアソシエーションは、複数のトリガーを持つ単一のルールを使用して導出する必要があります。

アソシエーションをアサートする別の理由が存在しないかぎり、1つのルールのみ使用する必要があります。このような場合、導出ルールによって返されるアソシエーションを分解する必要があります。これを記述する別の方法は、これらのアソシエーションに対して、すべてのルール問合せで返されるすべての行のセットで重複を指定しないことです。アソシエーションは、ソース、宛先およびアソシエーション・タイプで識別されます。このため、この3つの値の組合せは一意である必要があります。

11.6 コンポジットおよびシステム・ターゲット・タイプのアソシエーションの作成

コンポジット・ターゲットまたはシステム・ターゲットの作成時に考慮する必要のあるアソシエーションのタイプがいくつかあり、これらのアソシエーションをEnterprise Managerに追加する方法がいくつかあります。次に、これらの各タイプのアソシエーション、Enterprise Managerフレームワークでそれらを使用する方法、およびそれらを作成する典型的なアプローチについて説明します。

11.6.1 コンポジット・メンバーシップと包含アソシエーション

最初の重要なアソシエーション・タイプは"contains"アソシエーションです。このアソシエーション・タイプは、通常、コンポジット・ターゲットとその各メンバーの間に追加されます。コンポジット・ターゲットのターゲット・ナビゲータ(ツリー)を移入するには、このアソシエーションが存在する必要があります。コンポジットのメンバーである("contains"アソシエーションを通じて関連付けられた)ターゲットのセットは、TargetクラスのgetCompositeMembers()メソッドを使用して取得できます。

これらの包含アソシエーションは、検出時に、完全に自動化されたアプローチを使用するかガイドされた検出プロセスを通じて作成されることが最も多くなります。どちらの場合も、プラグインで提供される検出スクリプトを使用して、コンポジットとそのメンバー間の包含アソシエーションのセットを識別します。その他の非包含アソシエーションも検出されることがありますが、これらはコンポジットのメンバーシップに影響せず、ターゲット・ナビゲータのコンテンツにも影響しません。

コンポジット・ターゲットもシステムとして扱われる場合は、システム・ステンシルに、この方法で作成された包含アソシエーションのタイプを表すルール・パスを含めることを強くお薦めします。これにより、ターゲット・ナビゲータとシステム・メンバーシップにメンバー・ターゲットが一貫して表示されます。

11.6.2 その他の非コンポジット・アソシエーション(コンポジット・トポロジ)

包含アソシエーションの検出に加えて、コンポジット・トポロジのメンバー間の他のアソシエーション・タイプを表すことが必要な場合があります。これらのアソシエーションは、ターゲット管理者にとってのみ意味があり、他の操作を実行するためにプラグイン・コードで使用されることがあります。

これらのアソシエーションは、通常は検出スクリプトを使用して、完全に自動化されたアプローチの一部として、またはガイドされた検出プロセスを通じて作成されます。

11.6.3 システム・メンバーシップ・アソシエーション

システム・メンバーシップは、システム・ステンシルに基づくEnterprise Managerフレームワークによって構築されます。このステンシルは、システム・メンバーの識別時に考慮する必要のあるネイティブ・アソシエーションのセットを定義します。これらのネイティブ・アソシエーションは、通常は包含またはその他の非コンポジット・アソシエーションです。

システム・ステンシルの評価中にこれらのアソシエーションが見つかった場合、宛先ターゲットはシステム・メンバーとして追加されます。

11.6.4 外部ターゲットへのアソシエーション

これまでに説明したすべてのアソシエーションは、同じプラグインの一部であると想定されるターゲット間のアソシエーションであるため、検出およびUIを含むプラグイン・コードには、これらのターゲットの構成とトポロジに関する詳細で直接的な知識があります。

一方、ターゲット構成に、アプリケーションまたはターゲットのバッキング・ストアとして使用されるOracleデータベースなど、プラグインに含まれない他のターゲットへのアソシエーションが含まれる場合があります。ターゲットの構成には、使用するデータベースに関する情報(おそらく、host-port-sidやhost-serviceなど、接続関連の詳細)があります。

Enterprise Managerがデータベースを管理する場合に、エンドユーザーがこの関係を参照して探索し、そのデータベースに関する他の情報を取得して管理できるように(適切かつ許可される場合)、ターゲットとEnterprise Managerのデータベース間のこのアソシエーションを表す必要があります。

Enterprise Managerがデータベースを管理しているかどうかはわからず、持っている識別情報はEnterprise Managerデータベース・ターゲット名ではなく接続情報であるため、ターゲットの構成内の接続情報をEnterprise Managerのデータベースの接続情報にマップする導出ルールを作成できます。

11.6.5 アソシエーション作成のタイミングについて

ターゲットとアソシエーションの作成および削除は様々なソース(自動化された検出、ガイドされた検出、導出されたアソシエーション・ルール、システム・ステンシル・ルールなど)から開始できるため、Enterprise Managerのコンポジット・エンティティがそのエンティティの現実と同期していないように見えることがあります。プラグイン開発者として、これを認識し、エンドユーザーに提示する情報で可能なかぎりそれを考慮することが重要です。

発生する可能性のある典型的な状況の1つは、ターゲットの検出が行われること、構成情報が収集されること、およびこれに続いて導出ルールとしてのアソシエーションの変更がEnterprise Managerアソシエーション・フレームワークによって処理されることです。このシナリオでは、ユーザーは最初に、検出時に追加されたアソシエーションを含むエンティティのトポロジを参照します。ただし、導出ルールによって作成された追加のアソシエーションは、後になるまで表示されません。

11.7 よくある質問

ここでは、最もよくある3つの質問に回答します。

1. ルール問合せではどの表を参照できますか

2. ターゲット・プロパティを使用するときのガイドラインはありますか

3. 検出されたアソシエーションと導出されたアソシエーションにはどのような関係がありますか

11.7.1 ルール問合せではどの表を参照できますか

ほとんどの場合、問合せはCM$ビューを使用して構成(エンタープライズ構成管理)表のみ参照し、トリガーもこれを参照します。参照できるオブジェクトの完全なリストは、第11.3.1項「アソシエーション導出ルールの構文とセマンティクスの使用」を参照してください。他の表も参照する場合、およびデータがエンタープライズ構成管理表の変更に関係なく変更される可能性がある場合は、必要に応じてアソシエーションを更新できないことがあります。表に対する変更がルール評価をトリガーする必要のある、エンタープライズ構成管理表以外の表が参照されるユースケースがある場合は、オラクル社の担当者に連絡してください。表が配置されるコンポーネントも考慮する必要があります。ルールで参照される表がEnterprise ManagerコアEDKの一部でない場合、プラグインではその表のプラグインに対する依存関係を考慮する必要があります。たとえば、プラグイン依存性メカニズムを使用して、参照するオブジェクトがリポジトリにすでに存在することを確認する必要があります。

11.7.2 ターゲット・プロパティを使用するときのガイドラインはありますか

ターゲット・プロパティは構成データとして扱われ、各ターゲット・タイプに移入されるエンタープライズ構成管理スナップショット表があります。この表のデータを使用する際には注意する必要があります。

- 多くのターゲット・プロパティは検出時に設定され、決して変更されません。

- 名前/値のペア・データの問合せは扱いにくい場合があり、データがより構造化されている他の表の問合せより時間がかかることがあります。

- ターゲット・プロパティ表とエンタープライズ構成管理スナップショット表の両方のデータを使用可能な場合は、後者を使用する必要があります。

- 構成データのコレクションを追加する必要がある場合は、ターゲット・プロパティ表の新しい行としてではなく、エンタープライズ構成管理表でそれを行う必要があります。

一般に、ターゲット・プロパティの使用は避ける必要があり、データは標準のECMメカニズムを使用して収集およびモデル化する必要があります。

ただし、たとえば追加できるエンタープライズ構成管理コレクションがターゲットにない場合は、ルールでターゲットのプロパティを参照することが必要な場合があります。このようなターゲットへのアソシエーションを作成する場合は、それを識別する方法が必要です(たとえば、ルールはそのターゲット・プロパティを参照する必要があります)。

ターゲット・プロパティを使用する必要がある場合は、ルール問合せでMGMT_TARGET_PROPERTIESを参照する必要があります。ビューが必要な結合をすでに実行している場合は、ルール問合せでMGMT$TARGET_PROPERTIESを参照することもできます。ただし、トリガーでは、orcl_tp_configスナップショット・タイプにGC$TARGET_PROPERTIESビューを使用する必要があります。

MGMT_TARGET_PROPERTIESの方が効率的であるため問合せではこれを使用する必要がありますが、GC$ビューで使用可能でないプロパティがいくつか含まれることがあります。トリガーは、GC$ビューのプロパティ変更に基づいてのみ使用できます。たとえば、GC$ビューには、Enterprise Managerに適切に登録されているプロパティのみ含まれます。

11.7.3 検出されたアソシエーションと導出されたアソシエーションにはどのような関係がありますか

これは、オーバーラップ・アソシエーションの別の例です(詳細は、第11.5項「オーバーラップ・アソシエーションの使用」を参照)。たとえば、ターゲットT1とT2の間のアソシエーションを検出する検出ロジックと、同じアソシエーションを導出するルールがある場合があります。同じアソシエーションを作成するために2つのロジック・セットを作成しないことをお薦めします。この場合は、次のことが推奨されます。

- アソシエーションが変更される可能性があるため導出ルールが必要な場合は、導出ルールのみ作成する必要があります。

- 検出されたアソシエーションが、ソースまたは宛先が削除されるまで変更されない場合、アソシエーションの検出は適切であり、より単純または効率的な場合があります。

2つのロジック・セットを作成して同じアソシエーションを作成する場合は(検出ロジックと導出ルール)、検出されたアソシエーションが残り、導出ロジックはそのアソシエーションの存在もアサートします。後でルール評価でアソシエーションが存在しなくなったと判断された場合、ルールのアサーションは削除されますが、アソシエーションは検出されたアソシエーションを手動で削除するまで存在し続けます。

12 ターゲット検出の定義

自動検出スクリプト、ターゲット・プロパティの指定によるターゲットの手動追加、およびガイドされた検出を使用したターゲットの手動追加など、様々な方法でEnterprise Manager内のターゲットの検出を実行できます。

自動ターゲット検出は、ターゲットを配置するプロセスで、Enterprise Managerに追加されます。インストール後にOracle Management Agentを起動すると自動的に検出されます。管理エージェントが実行中のサーバーに存在するターゲットが検出され、まだ管理されていないターゲットとして管理リポジトリに送信されます。エンドユーザーは、Enterprise Managerによって管理されるターゲットとしてこれらのターゲットを昇格することによって、監視するターゲットを選択できます。

この章の内容は次のとおりです。

- ターゲット検出の定義の概要

- 検出XMLの作成

- 検出スクリプトの作成

- 検出XMLおよび検出コンテンツのパッケージ化

- 検出の設定およびテスト

- 手動によるターゲットの追加

- Enterprise Managerによる監視のためのターゲットの構成および昇格

- 汎用的な検出フレームワークの使用例

- プラグインの自動検出の構成

12.1 ターゲット検出の定義の概要

プラグイン開発者は、検出プロセスにおいて、次の手順に従う必要があります。

1. 検出メタデータを作成します。
検出メタデータXMLファイルの作成のガイドラインは、検出のXMLスキーマ定義(XSD)を使用します。

メタデータ内で、次を行います。

- DiscoveryModule要素を使用した検出モジュールの定義。

- DiscoveryInput要素を使用した検出パラメータの定義(必要な場合)。

検出メタデータの作成の詳細は、12.2項「検出XMLの作成」を参照してください。

2. Perlを使用して、検出スクリプトを作成します。
検出スクリプトによって、管理エージェントは、プラグインに属しているすべてのターゲット・タイプを自動的に検出できます。

検出スクリプトの作成の詳細は、12.3項「検出スクリプトの作成」を参照してください。

3. 検出に必要な追加のPerlモジュールまたはJARファイルを特定します。

4. 検出メタデータおよびコンテンツをプラグイン・ステージング・ディレクトリ(plugin_stage)にバンドルします。

1. 検出XMLをplugin_stage/oms/metadata/discoveryディレクトリに保存します。

2. 検出コンテンツをplugin_stage/discoveryディレクトリに保存します。

パッケージ化の詳細は、12.4項「検出XMLおよび検出コンテンツのパッケージ化」を参照してください。

5. プラグインを再パッケージ化(必要な場合)およびデプロイします。
プラグイン・アーカイブを作成し、プラグインがManagement Serverにデプロイされた後で、エンドユーザーは、登録された検出モジュールの検出構成UIを使用して、検出を開始できます。

プラグインのデプロイの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

6. 次のように自動検出を構成します。

1. Enterprise Managerにログインします。

2. 「設定」、「ターゲットの追加」、「自動検出の構成」の順に選択します。
「自動検出の構成」ページが表示されます。このページのオプションの詳細は、Enterprise Managerのオンライン・ヘルプを参照してください。

自動検出の構成の詳細は、12.9項「プラグインの自動検出の構成」を参照してください。

7. 検出結果をテストします。
検出のテストの詳細は、12.5項「検出の設定およびテスト」を参照してください。

12.2 検出XMLの作成

Oracleでは、検出メタデータXMLに書き込んで検出フレームワークに登録できるように、検出XSDが提供されます。検出フレームワークに登録すると、検出ページは、プラグインに属しているターゲット・タイプの検出を起動できます。

検出XSDの詳細は、拡張開発キット(EDK)仕様を参照してください。

次の項および「検出パラメータを使用した検出統合XML」の例で、検出XMLの例を示します。

12.2.1 汎用的な検出統合の例

この例では、検出には情報の入力が必要なく、ターゲットの昇格には特別なロジックが必要ありません。

ターゲットを構成するための特別な要件はありませんが、UIにアクセスする必要があります。

次の例では、この検出のための検出統合XMLを示します。

注意:
検出XMLファイルのネーミングに関して制限されていません。ただし、標準の規則はplugin_discovery.xmlです。

例: 検出統合XML

<?xml version="1.0" encoding="UTF-8"?>
<EmTargetDiscovery
xmlns="http://www.oracle.com/EnterpriseGridControl/disc_metadata"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/disc_metadata discovery.xsd ">
<DiscoveryInfo>
<AutomaticDiscovery>
<DiscoveryModule name="simple_disc_plugin" resourceBundlePkg="oracle.sysman.simpleplugin.rsc.simplePluinMsg">
<Display NLSID="SIMPLE_DISC_MODULE">
<NlsValue>simple_disc_plugin</NlsValue>
</Display>

<SupportedAgentOsList>
<SupportedAgentOs>2000</SupportedAgentOs>
</SupportedAgentOsList>
<BasicDiscoveryInfo>
<DiscoveryScript>SimplePluginDisc.pl</DiscoveryScript>
<DiscoveryCategory>SIMPLE_PLUGIN_DISC</DiscoveryCategory>
</BasicDiscoveryInfo>
<TypesDiscovered>
<TargetType>simple_plugin_target_type1</TargetType>
<TargetType>simple_plugin_target_type2</TargetType>
</TypesDiscovered>
</DiscoveryModule>
</AutomaticDiscovery>
</DiscoveryInfo>
</EmTargetDiscovery>

前のXMLを登録した後で、検出フレームワークは、SimplePluginDisc.pl検出スクリプトを使用してsimplePluginTypeの検出を起動できます。

12.2.2 検出スクリプトの例

たとえば、2つのターゲット・インスタンスを検出するSimplePluginDisc.plスクリプトに次のコンテンツを含めることができます。

#all the discovery scripts get emdRoot and hostname of the agent as arguments to the script.
my ($emdRoot, $hostName) = @ARGV;
#Discovery root is sent to the script as env variable.
my $discovery_root = $ENV{DISC_ROOT};
print "\<Targets\>\n";
print  "\<Target TYPE=\"simple_plugin_target_type1\" NAME=\"smpl_tgt1\"\>\n";
print  "\<Property  NAME=\"Prop1\"   VALUE=\"prop1_foo\"/\>\n";
print "     \<Property NAME=\"Prop2\" VALUE=\"prop2_value_bar\"/\>\n";
print "   \<\/Target\>\n";
print "  \<Target TYPE=\"simple_plugin_target_type2\" NAME=\"smpl_tgt2\"\>\n";
print "    \<Property  NAME=\"Prop1\"   VALUE=\"value_foo\"/\>\n";
print "     \<Property NAME=\"Prop2\" VALUE=\"value_bar\"/\>\n";
print "   \<\/Target\>\n";
print  "\<\/Targets\>\n";

このスクリプトにより、次の出力が作成されます。

<Targets>
<Target type =”simple_plugin_target_type1” NAME=”smpl_tgt1” >
<Property NAME=”Prop1”  VALUE=”prop1_foo” />
<Property NAME=”Prop2” VALUE=”prop2_value_bar” />
</Target>
<Target type=”simple_plugin_target_type2” NAME=”smpl_tgt2” >
<Property NAME=”Prop1” VALUE=”value_foo” />
<Property  NAME=”Prop2” VALUE=”value_bar” />
</Target>
</Targets>

プラグインがManagement Server上にデプロイされた後で、検出モジュールは検出UIにリストされます。ユーザーは、1つ以上の管理エージェント上でこのモジュールの検出を構成できます。これにより、管理エージェント上でプラグインの検出コンテンツがデプロイされ、その後、管理エージェントで検出スクリプトが実行されます。

たとえば、この検出スクリプトを自動検出で実行する場合、ターゲットは、まだ管理されていないターゲットとして、生成され、Management Serverに送信されます。検出結果UIを使用すると、Enterprise Managerによって管理されるターゲットとして、これら2つのターゲットを昇格できます。

注意:
EMD_PERL_INFO、EMD_PERL_DEBUGおよびEMD_PERL_ERRORなどのデバッグ情報を書き込むためのメソッドがあり、これには、Perlパッケージemdcommon.pmを介してアクセスできます。管理エージェントのログ・ディレクトリにあるOracle Management Agentトレース・ファイル(emagent_perl.trc)に、(Perlメソッドによって書き込まれた)トレース情報が見つかります。

12.2.3 検出メタデータ要素の概要

表12-1では、検出メタデータを定義する重要な要素について説明します。

表12-1 plugin_discovery.xmlファイルの重要な要素

要素

説明

EmTargetDiscovery

ファイルのルート要素

DiscoveryInfo

このプラグインに1つ以上の自動検出モジュールを指定します。各自動検出モジュールは、管理エージェント上で実行された検出スクリプトに関連付けられています。

AutomaticDiscovery

自動検出モジュールを指定します。

DiscoveryModule

これは、自動検出モジュール内の要素です。これには、検出モジュールの名前を定義する名前属性が含まれます。

SupportedAgentOSList

この検出がサポートされる管理エージェント・プラットフォームのリストを指定します。これには、プラットフォームを定義するSupportedAgentOS属性が含まれます。有効な値は2000 (すべてのプラットフォーム)です。

BasicDiscoveryInfo

実行する検出スクリプトおよびオプションのカテゴリ名を指定します。次の属性があります。

- DiscoveryScript: 検出スクリプトの名前を定義します。

- DiscoveryCategory: カテゴリ名を定義します(オプション)。

TypesDiscovered

この検出モジュールを使用して、検出できるターゲット・タイプのリストを指定します。これには、ターゲット・タイプ名を定義するTargetType属性が含まれます。

DiscoveryInput

検出中にユーザーが入力する情報を指定します。ユーザーによって入力された情報は、管理エージェントで実行中の検出スクリプトで環境変数として使用できます。

12.3 検出スクリプトの作成

検出XMLを登録した後で、検出フレームワークは、検出スクリプトを使用して検出を起動します。

検出スクリプトを作成するには、次の手順に従います。

1. Perlを使用して、最上位の検出スクリプトを記述します。このスクリプトは、Java、Shellなどを呼び出すことができます。

2. デフォルトでは、次の3つの変数を検出のPerlスクリプトに指定します。

1. 検出フレームワークでは、スクリプトへの引数として、emdRootと、管理エージェントのホスト名を指定します。
例:

my ($emdRoot, $hostName) = @ARGV;

2. 検出ルート・ディレクトリは、環境変数としてスクリプトに送信されます。
例:

my $discovery_root = $ENV{DISC_ROOT};

3. 検出の入力がある場合、それらは環境変数として使用できるようになります。
例:

my $crs_home = $ENV{&rsquor;CRS_HOME'};

検出スクリプトの出力が、ターゲット・タイプのターゲットを追加するのに必要なすべての名前と値のペアを返すことが理想的です。そうでない場合、ユーザーは、ターゲットの昇格時に残りの値を指定する必要があります。

「検出スクリプトのサンプル」の例では、検出のPerlスクリプトの例を示しています。

12.3.1 検出されたターゲットDTD

検出のPerlスクリプトでは、次のDocument Type Definition (DTD)に準拠した出力を作成する必要があります。

例: 検出されたターゲットDTD

<!ELEMENT Targets (Target*) >
<!ATTLIST Targets
>

<!--

Target defines a target instance, it may also define Properties

TYPE(required)      : the target type.
NAME(required)      : the target name.  It must be unique within a type
across all nodes.

DISPLAY_NAME(optional)      : the display name for a target.will be
defaulted to NAME if not given.
-->

<!ELEMENT Target (Property*) >
<!ATTLIST Target
TYPE                CDATA #REQUIRED
NAME                CDATA #REQUIRED
DISPLAY_NAME        CDATA #IMPLIED
>

<!--
A Property tag describes a name-value pair of target instance properties

NAME(required)      : the property name .
VALUE(required)     : the property value.
-->
<!ELEMENT Property EMPTY>
<!ATTLIST Property
NAME CDATA #REQUIRED
VALUE CDATA #REQUIRED
>

12.4 検出XMLおよび検出コンテンツのパッケージ化

次の項では、プラグイン・ステージング・ディレクトリに検出XMLおよびコンテンツを含める場所について説明します。

12.4.1 検出メタデータ・ファイルの場所

検出メタデータXMLファイルが完成したら、プラグイン・ステージング・ディレクトリの次のディレクトリにファイルを含めます。

plugin_stage/oms/metadata/discovery

12.4.2 検出コンテンツのパッケージ化

検出コンテンツは、特定のターゲット・タイプの検出を実行するために必要なすべてのPerlスクリプト、PerlモジュールおよびJARファイル(存在する場合)を参照します。

Enterprise Manager Cloud Control 12cでは、検出コンテンツは、ユーザーが最初に検出を試行したときのみ、管理エージェントに送信されます。特定の検出モジュールに対応する検出コンテンツは、独自の領域に存在します。

検出とスクリプトの監視は別々に行われます。両方とも、プラグインの一部です。コンテンツを監視せずに、検出を実行できます。両方のライフサイクルは検出またはプラグインのライフサイクル・フレームワークによって管理され、プラグイン開発者に対して透過的です。

特定のターゲット・タイプを検出するために必要な検出コンテンツをパッケージ化する必要があります。たとえば、既存のデータベース検出の場合、検出コンテンツは、oracledb.plと、データベース検出を実行するために必要なユーティリティです。

注意:
検出メタデータ・ファイルは、管理エージェント・アーカイブではなく、Oracle Management Serverアーカイブとパッケージ化する必要があります。

各検出プラグインのコンテンツをインストールするために、plugin_stageの下に検出ディレクトリを作成します。plugin_stageの下のディレクトリの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

例: 検出コンテンツのインストールのためのディレクトリ構造

plugin_stage/discovery/
|
|
|__other subdirectories created as you specified

Oracle Database検出の場合、検出コンテンツは次のように表示されます。

plugin_stage/discovery/
|
|
|___oracledb.pl
|
|
|__utl
|
|___oracledbUtl.pl
|
|___initParamFileUtl.pl
|
|___winRegistry.pl

カスタムPerlモジュールが検出プロセスに必要な場合、前に示したようなディレクトリ構造の下にモジュールを配置します。検出スクリプトに指定された検出ルート変数は、このPerlモジュールをロードするために使用できます。たとえば、perlモジュールをplugin_stage/discovery/utl/pmディレクトリの下に配置する場合、それらを次のように検出スクリプトからロードできます。

my ($emdRoot,$hostName,$crsHome) = @ARGV;
my $discovery_root = $ENV{DISC_ROOT};
require "$discovery_root/utl/pm/propertiesFileParser.pm";
require "$discovery_root/utl/pm/Targets.pm";

注意:
検出モジュールによって、ターゲットの管理などの他の目的で使用されるPerlコンテンツは、検出バンドルおよびプラグイン・バンドルとパッケージ化する必要があります。

12.4.2.1 検出スクリプトで必要なJavaコンテンツ

一部の検出スクリプト(Oracle Fusion Middlewareの場合など)は、検出のプロセスでJARファイルを使用します。JARファイルが検出固有のみの場合、それらは検出領域に存在する必要があります。

検出を実行するよう記述されたJavaメソッドがある場合、検出で必要ないコンテンツを送信しないようにするため、可能な場合はそれらを別のクラス・ファイルに移動する必要があります。

現在の管理コンテンツから独立して検出を実行できるように、検出コンテンツと管理コンテンツは分けることをお薦めします。これにより、検出されたターゲット(存在する場合)を管理するためにプラグインをインストールするかどうかを決定するのに役立ちます。検出コンテンツは、軽量にして、検出に必要なファイルのみを含める必要があります。

たとえば、次のディレクトリの下に、特定の検出モジュールの検出固有のコードを含むJARを配置できます。

plugin_stage/discovery/lib

注意:
個々の検出スクリプトは、クラスパスの構築を行います。

特定の検出モジュールの検出コンテンツ領域で、独自のディレクトリ構造を作成できます。Fusion Middlewareなど、各検出モジュールに対する最上位のPerlスクリプトは、使用するJavaユーティリティの実行前に、クラスパスを構築します。検出モジュールに固有のJARファイルは、独自の検出コンテンツ領域にあるため、検出のPerlスクリプトは、必要なクラスパスを容易に構築できます。再度、検出のみの実行を行うコードを分けて、特定の検出モジュールに固有の検出コンテンツ領域にインストールする必要があります。

12.5 検出の設定およびテスト

テスト目的で、次のように検出を実行できます。

1. Enterprise Managerにログインします。

https://em_host:em_port/em/

2. コンソールから、「設定」、「ターゲットの追加」、「自動検出の構成」の順に選択します。
「自動検出の構成」ページが表示されます。

3. 「自動検出の構成」表の「検出モジュール」の下で、「単一ホストで重複するターゲット・タイプの検出」を選択します。
「ターゲットの検出(エージェント・ベース)」ページが表示されます。

4. 必要なエージェント・ホスト名を選択し、「検出を今すぐ実行」をクリックします。
ターゲットの検出が完了すると、「正常に完了しました」ウィンドウが表示されます。

12.6 手動によるターゲットの追加

自動検出に加えて、Cloud Controlでは、ホストおよび様々なOracleソフトウェアとコンポーネントを管理対象ターゲットとして手動で追加できます。ターゲットを手動で追加する場合、ターゲットを直接追加することにより、検出プロセスを実行せずに済みます。この方法でターゲットを検出すると、エージェントで検出が不要なときに検出を実行するリソースを消費しなくて済みます。

管理対象ターゲットのプロパティを指定し、Enterprise Manager管理対象ターゲットを作成できる必要があります。

すべてのターゲット・タイプを手動で追加できるわけではありません。検出フレームワークへの登録中に、ターゲット・タイプの所有者はそのターゲット・タイプが手動で追加可能かどうかを指定します。

手順については、次の各項を参照してください。

- 手動によるホスト・ターゲットの追加

- 手動による非ホスト・ターゲットの追加

12.6.1 手動によるホスト・ターゲットの追加

ウィザードによって、管理エージェントを新しいホスト・ターゲットに手動でデプロイするプロセスが順を追って説明されます。

管理エージェントのインストール手順は、『Enterprise Manager Cloud Control基本インストレーション・ガイド』のOracle Management Agentのインストールに関する項を参照してください。

12.6.2 手動による非ホスト・ターゲットの追加

ターゲット・タイプのメタデータに基づく構成ページまたはウィザードが表示され、ターゲットの管理に必要なすべてのインスタンス・プロパティがリストされます。

ターゲットの名前を指定し、必要な構成情報を入力できます。

ターゲットをEnterprise Managerに手動で追加するには、次の手順に従います。

1. Enterprise Managerにログインします。

2. 「設定」メニューから、「ターゲットの追加」、「ターゲットの手動追加」の順に選択します。
ターゲットの手動追加ページが表示されます。

3. 「ターゲットの手動追加」ページで、「ターゲットの手動追加」サブセクションに移動して、次のオプションのいずれかを選択します。

- ガイド付きプロセスを使用して非ホスト・ターゲットを追加
「ターゲット・タイプ」リストから、「Oracleクラスタおよび高可用性サービス」、「Oracle Database Machine」またはWebLogicドメインの検出などの追加するターゲット・タイプのいずれかを選択し、「ガイドされた検出を使用した追加」をクリックします。このプロセスは、関連ターゲットも追加します。

- ターゲット監視プロパティを指定して非ホスト・ターゲットを追加
「ターゲット・タイプ」リストから、「Fusion J2EEアプリケーション」、「Applications Utilities」または「Supplier Portal」などの追加するターゲット・タイプのいずれかを選択し、「監視エージェント」リストから必要な監視エージェントを選択し、「手動追加」をクリックします。

4. ターゲット・タイプの選択後、ターゲットを追加するターゲット・タイプに固有のウィザードに従います。
確認後、ターゲットはEnterprise Managerの管理対象ターゲットになります。Enterprise Managerでは、情報が承認され、可能な場合は入力されたデータの検証が実行されて、ターゲットの監視が開始されます。

関連項目:
Enterprise Managerへの手動によるターゲットの追加の詳細は、Oracle Enterprise Managerのオンライン・ヘルプを参照してください。

12.7 Enterprise Managerによる監視のためのターゲットの構成および昇格

Enterprise Manager管理対象ホスト上のターゲットの検出により、新規データベースやEnterprise Managerによって管理されていないSQLサーバーなどのターゲットのリストが提供されます。これは、検出された新規ターゲットがEnterprise Managerによる監視および管理対象の候補になるかどうかを決定するために役立ちます。

Enterprise Manager UIによって、検出された管理対象外ターゲットを確認し、ターゲットをEnterprise Managerによる管理対象ターゲットとして監視できるように昇格できます。

関連項目:
ターゲットの構成および昇格の詳細は、Oracle Enterprise Managerのオンライン・ヘルプを参照してください。

12.8 汎用的な検出フレームワークの使用例

汎用的な検出UIを使用して、検出を起動し、検出を管理エージェントで定期的に実行するようスケジュールできます。汎用的な検出UIが検出を起動するためには、登録XMLで必要な入力を指定する必要があります。Enterprise Managerは、この情報を使用して、汎用的な検出UIを構築します。

12.8.1 ユーザー入力を必要とする検出統合の例

この例では、検出にはユーザーが情報を入力する必要があります。ユーザーは、CRS_HOMEおよびCRS_HOME1の値を入力するよう求められます。ユーザーは、CRS_HOMEの値は入力する必要はありませんが、CRS_HOME1の値は必須です。

ターゲットを構成するための特別な要件はありませんが、UIにアクセスする必要があります。

注意:
サポートはされていますが、必要な検出入力の使用は、自動検出の利点を排除してしまうため、お薦めしません。検出プロセスを最適化するためのヒントとして、オプションの検出入力を使用できます。

例: 検出パラメータを使用した検出統合XML

<?xml version="1.0" encoding="UTF-8"?>
<EmTargetDiscovery
xmlns="http://www.oracle.com/EnterpriseGridControl/disc_metadata"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/disc_metadata discovery.xsd ">
<DiscoveryInfo>
<AutomaticDiscovery>
<DiscoveryModule name="simple_disc_plugin" resourceBundlePkg="oracle.sysman.simpleplugin.rsc.simplePluinMsg">

<Display NLSID="SIMPLE_DISC_MODULE_MSG_ID">
<NlsValue>simple_disc_plugin</NlsValue>
</Display>
<SupportedAgentOsList>
<SupportedAgentOs>2000</SupportedAgentOs>
</SupportedAgentOsList>

<BasicDiscoveryInfo>
<DiscoveryScript>simple_plugin_disc.pl</DiscoveryScript>
<DiscoveryCategory>SIMPLE_PLUGIN_DISC</DiscoveryCategory>
</BasicDiscoveryInfo>
<TypesDiscovered>
<TargetType>simple_plugin_target_type1</TargetType>
<TargetType>simple_plugin_target_type2</TargetType>
</TypesDiscovered>

<!-- optional discovery hint -->
<DiscoveryInput name="CRS_HOME" isRequired="false">
</DiscoveryInput>

<!-- a required discovery input -->
<DiscoveryInput name="CRS_HOME1" isRequired="true">
</DiscoveryInput>

</DiscoveryModule>
</AutomaticDiscovery>
</DiscoveryInfo>
</EmTargetDiscovery>

前のXMLを登録した後で、検出フレームワークは、simple_plugin_disc.pl検出スクリプトを使用して検出を起動できます。

simple_plugin_disc.plスクリプトのサンプルに示すように、simple_plugin_disc.plスクリプトは検出パラメータにアクセスできます。

例: 検出スクリプトのサンプル

my $discovery_root = $ENV{DISC_ROOT};

#Inputs passed to the script.
my $crs_home = $ENV{'CRS_HOME'};
my $crs_home1 = $ENV{'CRS_HOME1'};

#add the logic here to find the targets.

print "\<Targets\>\n";
print " \<Target TYPE=\"simple_plugin_target_type1\" NAME=\"smpl_tgt1\"\>\n";
print "   \<Property  NAME=\"Prop1\"  VALUE=\"prop1_foo\"/\>\n";
print "     \<Property NAME=\"Prop2\" VALUE=\"prop2_value_bar\"/\>\n";
print "   \<\/Target\>\n";
print "  \<Target TYPE=\"simple_plugin_target_type2\" NAME=\"smpl_tgt2\"\>\n";
print "   \<Property  NAME=\"Prop1\"  VALUE=\"value_foo\"/\>\n";
print "     \<Property NAME=\"Prop2\" VALUE=\"value_bar\"/\>\n";
print "   \<\/Target\>\n";
print  "\<\/Targets\>\n";

注意:
検出のPerlスクリプトの出力のガイドラインは、12.3.1項「検出されたターゲットDTD」を参照してください。

12.9 プラグインの自動検出の構成

管理エージェント側で実行するためのプラグインで、ターゲットの自動検出を構成できます。現在、自動検出は、毎日実行するようスケジュールされています。

構成は、メタデータが存在するOracle Management Serverから行います。

注意:
管理エージェントのインストール前にデプロイされたプラグインまたは新規ホストにデプロイされたプラグインの場合、検出は24時間ごとに自動的に実行されます(検出がユーザー入力を必要としない場合のみ)。
管理エージェントのインストールまたはデプロイ後に、Enterprise Manager UIからパラメータを構成できます。

検出後に、ターゲットはEnterprise Managerに送信されます。エンドユーザーは、ターゲットを確認し、Enterprise Managerによって管理されるターゲットとしてターゲットを昇格することによって、監視するターゲットを選択できます。

関連項目:
自動検出の構成の詳細は、Oracle Enterprise Managerのオンライン・ヘルプを参照してください。

13 コンプライアンス標準の追加

Oracle Enterprise Manager Compliance Managementソリューションは、コンプライアンス・フレームワークおよびコンプライアンス標準を定義、カスタマイズおよび管理する機能を提供します。

コンプライアンス管理フレームワークの視覚的デモンストレーションを表示するには、次のURLにアクセスして「ビデオの再生」をクリックします。

https://apex.oracle.com/pls/apex/f?p=44785:24:0::NO:24:P24_CONTENT_ID,P24_PREV_PAGE:5773,1

この章の内容は次のとおりです。

- コンプライアンス標準の追加の概要

- コンプライアンス標準ルールについて

- コンプライアンス標準の定義

- コンプライアンス・フレームワークの定義

- コンプライアンス・コンテンツの定義

- コンプライアンス・コンテンツの削除

- 翻訳のサポート

- コンプライアンスXMLのパッケージ

- コンプライアンス標準およびルールの設定とテスト

- その他のコンプライアンス例

- 自己更新を使用したコンプライアンス・コンテンツの公開

13.1 コンプライアンス標準の追加の概要

プラグイン開発者は、コンプライアンス標準を追加する際に、次の手順に従う必要があります。

1. コンプライアンス標準ルールを定義します。
コンプライアンス標準ルールは次のいずれかにすることができます。

- リポジトリ・チェックベースのルール

- リアルタイム監視ルール

コンプライアンス標準ルールの定義の詳細は、第13.2項「コンプライアンス標準ルールについて」を参照してください。

2. コンプライアンス標準を定義します。
詳細は、第13.3項「コンプライアンス標準の定義」を参照してください。

3. コンプライアンス・フレームワークを定義します。
詳細は、第13.4項「コンプライアンス・フレームワークの定義」を参照してください。

4. コンプライアンス標準ルール、標準およびフレームワークをメタデータXMLとしてパッケージ化します。
詳細は、第13.8項「コンプライアンスXMLのパッケージ」を参照してください。

5. コンプライアンス・コンテンツを設定およびテストします。
詳細は、第13.9項「コンプライアンス標準およびルールの設定とテスト」を参照してください。

6. プラグインをデプロイします。
プラグインのデプロイの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

13.1.1 前提条件

この章では、次の内容を十分に理解していると想定します。

- プラグインとそのXMLファイルのパッケージ化の方法を含む、プラグイン開発の概要。

- コンプライアンス・データをemctl register oms metadata -service gccomplianceコマンドでインストールする場合は、EM_COMPLIANCE_UTIL.trigger_rule_dependency_jobコールバックが必要です。SYSMANユーザーとして、SQL*Plusを通じて次のコマンドを入力する必要があります。

begin EM_COMPLIANCE_UTIL.trigger_rule_dependency_job;
end;
/

注意:
これは、emctl register oms metadata -service gccomplianceコマンドを使用してコンプライアンス・コンテンツをインストールする場合にのみ必要です。
プラグインをインストールする場合は、前のSQLを入力する必要はありません。

emctl register oms metadataコマンドの詳細は、第14.7項「メタデータ登録サービス(MRS)を使用してデプロイされたメタデータ・ファイルの更新」を参照してください。

13.2 コンプライアンス標準ルールについて

ここでは、次のことについて説明します。

- リポジトリ・チェックベースのルールの定義

- リアルタイム監視ルールの定義

13.2.1 リポジトリ・チェックベースのルールの定義

リポジトリ・チェックベースのルールでは、1つ以上のターゲットの構成状態をチェックします。テストが違反を特定するのに失敗した場合、ルールはコンプライアンスです。つまり、テストでは、構成アイテムが必要な状態にあるか、規定した値を持っていると判断されます。違反を発見するルールは、非コンプライアンスです。

ルールのテスト条件によって評価されるデータ・ソースは、リポジトリの問合せに基づきます。ルールのテスト条件は、基本的なメトリックまたは問合せの列の値またはSQL式、またはPL/SQL関数に基づくしきい値の条件を使用して実装できます。(ポリシーは、Oracle Enterprise Manager 10gリリース5と同様です)。

この領域の主要な点は次のとおりです。

- コンプライアンス標準ルール、コンプライアンス標準およびコンプライアンス・フレームワークの定義

- 即時利用可能なポリシー・グループ(10.2.x/11.10)から、コンプライアンス標準ルールを参照するように作成するコンプライアンス標準への置換え

- 適切なコンプライアンス・フレームワークへのコンプライアンス標準のマッピング

- コンプライアンスのOracle Business Intelligence Publisher (BI Publisher)レポートの定義

次の例では、リポジトリ・ルールを定義する構文を示し、さらに例でリポジトリ・ルールの定義例を示します。

注意:
完全なコンプライアンスXMLスキーマ定義(XSD)については、次のJARファイルを参照してください。

$ORACLE_HOME/sysman/jlib/gccomplianceCommon.jar

関連項目:
他の例については、第13.10項「その他のコンプライアンス例」を参照してください。

例: リポジトリ・ルール定義の構文

<xsd:complexType name="RuleT">
<xsd:sequence>
<xsd:element name="DisplayName" type="std:DisplayString256Def" minOccurs="0"/>
<xsd:element name="TargetType" type="std:Name256Def"/>
<xsd:element name="IsSystem" type="std:BooleanDef" minOccurs="0" default="false"/>
<xsd:element name="IsHidden" type="std:BooleanDef" minOccurs="0" default="false"/>
<xsd:element name="evaluateAlways" type="std:BooleanDef" default="false" minOccurs="0"/>
<!-- E.g. target version, platform based filter -->
<xsd:element ref="std:TargetPropertyFilter" minOccurs="0"/>
<xsd:element name="Description" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="Impact" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="Recommendation" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="FixLinkList" type="std:FixLinkListT" minOccurs="0"/>
<xsd:element name="ViolationContextList" type="std:ViolationContextListT"/>
<xsd:element name="CheckSource" type="std:CheckSourceT" minOccurs="1" maxOccurs="1"/>

<xsd:element name="Severity" default="MinorWarning" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="MinorWarning"/>
<xsd:enumeration value="Warning"/>
<xsd:enumeration value="Critical"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LifeCycleStatus" default="Development" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Development"/>
<xsd:enumeration value="Production"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="KeywordList" type="std:KeywordListT" minOccurs="0"/>
<xsd:element name="UrlLink" type="std:String4000Def" minOccurs="0"/>
<xsd:element name="ViolationMessage" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="ClearViolationMessage" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="Author" type="std:Name256Def" minOccurs="0"/>
<xsd:element name="LastUpdatedBy" type="std:Name256Def" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type="std:Name256Def" use="required"/>
<xsd:attribute name="oms_version" type="std:Name32Def" use="required"/>
</xsd:complexType>

次の例は、データベース・プラグインの一部であるoracle_database target_typeに対して定義されています。

Enterprise Managerに登録されている任意のターゲット・タイプのルールを定義できます。

例: サンプル・ルール

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule1">
<DisplayName nlsid="SAMPLE_RULE_1_NAME">Sample Rule 1</DisplayName>
<TargetType>oracle_database</TargetType>
<IsSystem>true</IsSystem>
<TargetPropertyFilter>
<PropertyItem>
<PropertyName>orcl_gtp_operating_system</PropertyName>
<ValueList>
<Value>Windows</Value>
</ValueList>
</PropertyItem>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>8.1.6+</Value>
</ValueList>
</PropertyItem>
</TargetPropertyFilter>
<Description nlsid="SAMPLE_RULE_1_DESC">Checks for use of a single control file</Description>
<Impact nlsid="SAMPLE_RULE_1_IMPACT">The control file is one of the most
important files in an Oracle database. It maintains many physical characteristics
and important recovery information about the database. If you lose the only copy
of the control file due to a media error, there will be unnecessary down time and
other risks.</Impact>
<Recommendation nlsid="SAMPLE_RULE_1_RECO">Use at least two control files that are multiplexed on different disks.</Recommendation>
<ViolationContextList>
<Column type="String" name="FILE_LIST">
<DisplayLabel nlsid="SAMPLE_RULE_1_COL_1">FILE_LIST</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
<Column type="Number" name="CONTROL_FILE_COUNT">
<DisplayLabel nlsid="SAMPLE_RULE_1_COL_2">CONTROL_FILE_COUNT</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>oracle_database</TargetType>
<MetricName>sample_rule1</MetricName>
<SourceType>SQL</SourceType>
<Source>select CONTROL_FILE_COUNT, FILE_LIST, TARGET_GUID from MGMT$CS_DB_CONTROL_FILE_COUNT</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>FILE_LIST</ColumnName>
<ColumnType>String</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_1_COL_1">FILE_LIST</ColumnLabel>
</MetricColumnInfo>
<MetricColumnInfo>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_1_COL_2">CONTROL_FILE_COUNT</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<MinorWarnThreshold>1</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<ThresholdCriteria>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<TestOperator>EQ</TestOperator>
<ThresholdValue>1</ThresholdValue>
<ThresholdType>Number</ThresholdType>
</ThresholdCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>MinorWarning</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="CONFIGURATION">Configuration</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_1_VIOL_MSG">The database has an insufficient number of control files.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_1_VIOL_CLEAR_MSG">The database has sufficient number of control files.</ClearViolationMessage>
<Author>SYSMAN</Author>
</Rule>

表13-1で、リポジトリ・ルールの定義に使用するタグについて説明します。

表13-1 リポジトリ・ルールの定義用の主要なタグ

タグ

サブタグ

説明

DisplayName

ルールの表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

TargetType

このルールを関連付けることのできるターゲットのタイプ

IsSystem

即時利用可能なルールの場合はTrue。それ以外の場合はFalseです。

IsHidden

デフォルトは、falseです。

Trueに設定した場合、IsHiddenルールはUIに表示されず、イベントは生成されません。この要素は、即時利用可能なルールに対してtrueに設定する必要があります。

Description

ルールの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Impact

ルールに違反した場合(ルールが非コンプライアンスの場合)の影響。メッセージの翻訳をサポートするためのnlsid属性を提供します。

ViolationContextList

違反コンテキストは、ルールの違反を一意に定義します。違反コンテキストは、違反の一部として表示される<Source>問合せの列をリストします。各列は、キーまたは非キーとしてマークする必要があります。

<Source>問合せの必須のtarget_guid列は、違反コンテキストに暗黙的に追加されるため、違反コンテキストに明示的に含める必要はありません。

列

メトリック列名。属性名とタイプを使用します。

- DisplayLabel: 列の表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

- IsHidden: この列を違反コンテキストの一部として表示しない場合はTrue。それ以外の場合はFalseです。

- IsKey: この列がキーの場合はTrue。

CheckSource

ルール評価のデータ・ソースを定義します。

..RepositoryCheckDefinition

リポジトリ・ルールのデータソースを定義します。

Metric

データ・ソース問合せを定義します。

- MetricName: メトリックの名前

- SourceType: SQL.サポートされる唯一のSourceTypeです。

- Source: これは、MGMT$_%ビューに対して記述されたSQL問合せです。(Enterprise ManagerはMGMT$_%ビューを提供します。『Oracle Enterprise Manager Cloud Control管理リポジトリ・ビュー・リファレンス』を参照してください。)必要に応じて、このSQL問合せは、Enterprise ManagerのMGMT_VIEWユーザーに対する直接のSELECT権限を持つ他の提供されたビューに対して記述できます。
注意: ルール・ソース問合せ内でtarget_guidを指定できます。これで、実行時にtarget_guidが問合せにバインドされるようになります。これにより、パフォーマンスが向上します。

次に例を示します。

select a.cm_target_guid as target_guid, a.SESS_LAZY_DESER_ENABLED from MGMT$WEBLOGIC_CLUSTER a, mgmt$target_flat_members mtfm where mtfm.member_target_guid = a.cm_target_guid and mtfm.aggregate_target_type = 'exalogic_system' and a.cm_target_guid = :target_guid

- MetricColumnList: ソース問合せの列のリスト

- MetricColumnInfo: メトリック列
ColumnName: メトリック列名

ColumnType: メトリック列タイプ

isKey: 列がキー列の場合はTrue。それ以外の場合はFalseです。

ColumnLabel: 列の表示名

ParameterList

パラメータのリスト

注意: パラメータが指定され、where句で使用されている場合は、コンプライアンス標準ルールとターゲット・タイプ・レベルまたはコンプライアンス標準ルールとターゲット・インスタンス・レベルでパラメータ値をカスタマイズできます。これにより、ユーザーはターゲット・インスタンスごと、またはターゲット・タイプ・レベルでチェック定義の動作をカスタマイズまたは制御できます。

RuleParameter

パラメータ定義

ParamName

パラメータの名前

ParamType

パラメータ・タイプ(文字列または数値)

ParameterDefaultSettings

パラメータのデフォルト値

ParamValue

パラメータのデフォルト値を定義します。

- ParamName: パラメータの名前

- CritThreshold/WarnThreshold/MinorWarnThreshold: パラメータのデフォルト値。クリティカル重大度の場合は、CritThresholdを使用します。警告重大度の場合は、WarnThresholdを使用します。マイナー警告重大度の場合は、MinorWarnThresholdを使用します。

TestCondition

TestConditionタグは、メトリックの<Source>問合せを実行することでフェッチされたデータ・ソースを操作します。条件を満たすデータ・ソース行はルールに違反します。

ThresholdCriteria

列値をしきい値に関連付けるにはSource問合せの列、しきい値、および演算子(=、<、>など)が必要です。

SqlWhereClauseCriteria

<Source>問合せの列に対するSQL条件が必要です。オプションで、この条件に1つ以上のパラメータを含めることができます。

Severity

ルールの重大度(Critical、Warning、MinorWarning)

LifeCycleStatus

ルールのライフサイクル・ステータス(「開発」または「本番」)

UrlLink

ルールに関する詳細を含む、ルールの詳細URL

ViolationMessage

違反で記録されたメッセージ(ルールの場合)。通知に使用されます。メッセージの翻訳をサポートするためのnlsid属性を提供します。

ClearViolationMessage

違反のクリアで記録されたメッセージ(ルールの場合)。通知に使用されます。メッセージの翻訳をサポートするためのnlsid属性を提供します。

KeywordList

ルールに関連付けられているキーワードのリスト。

Keyword

コンプライアンス標準に適用できるキーワード

Author

ルールの作成者。

13.2.2 リアルタイム監視ルールの定義

リアルタイム監視ルールを使用して、ファイル、データベース・オブジェクトまたはMicrosoft Windowsレジストリ・キーに対して実行できるアクションを監視できます。プロセスの開始と停止、ログイン、ログアウトおよびユーザーのユーザー(su)アクティビティの切替えも監視できます。監視のリアルタイムの側面は、アクションが実行された正確な時刻と、アクションを実行したユーザーの取得を意味します。

リアルタイム監視からの結果は、BMC Remedyなどの変更管理システムと調整できます。この調整では、アクションが発生する(認可)と想定されたか、または発生しない(未認可)と想定されたかを自動的に判別できます。顧客が変更管理サーバーを持っていない場合、この監査ステータス注釈はUIを通じて自動で行うことができます。

ITコンプライアンス構想の主要な部分は、IT運用スタッフが企業ポリシーに従って環境を変更および管理することです。環境で顧客の変更管理プロセスに何が起きるかを調整するため、リアルタイム監視は、高リスク環境につながるポリシー外のアクションまたは監査を失敗させるコンプライアンス制御の識別に役立ちます。

リアルタイム監視ルールの作成には、次の手順が必要です。これらについて後で詳細に説明します。

- 監視されるターゲット・タイプとエンティティ・タイプを選択します。ルールは、特定のターゲット・タイプ・プロパティ(OS、ターゲット・バージョン、ハードウェア・プラットフォームおよびターゲット・ライフサイクル)に基づいて制限することもできます。

- 監視する1つ以上のターゲット・タイプ・ファセットを選択します。

- 監視する1つ以上の監視を選択します。

- 監視される結果をフィルタするゼロ以上のファセットを選択します。

- 変更管理調整オプションを選択します。

この領域の統合点は次のとおりです。

- ターゲット・タイプの(1つ以上の)ファセットの定義。ファセットは、監視される低レベルのアーティファクトを定義します。

- 新規または既存のコンプライアンス標準に対する新しいコンプライアンス標準ルールの定義

- コンプライアンス標準ルールとコンプライアンス標準から、業界標準フレームワークに関連する即時利用可能なコンプライアンス・フレームワークへのマッピング。

- 新しいチケッティング・システムをサポートするためのコネクタの作成(カスタム・リージョンの定義を含む)。これを使用して、即時利用可能な変更調整サポートを拡張することもできます(現在はRemedy 7.xに制限されています)。新規コネクタの作成プロセスの詳細は、Oracle Enterprise Managerコネクタ統合ガイドを参照してください。

13.2.2.1 監視できるエンティティ・タイプ

リアルタイム監視ルールを定義する場合、最初に、ホスト上の監視するエンティティ・タイプを決定する必要があります。Oracle Enterprise Manager Cloud Control 12cでは、次のエンティティ・タイプをリアルタイム監視ルールで監視できます。

- OSファイル

- OSプロセス

- OSユーザー

- Microsoft Windowsレジストリ

- Microsoft Active Directoryユーザー

- Microsoft Active Directoryコンピュータ

- Microsoft Active Directoryグループ

- Oracleデータベース表

- Oracleデータベース・ビュー

- Oracleデータベース・プロシージャ

- Oracleデータベース・ユーザー

- Oracleデータベース索引

- Oracleデータベース順序

- Oracleデータベース関数

- Oracleデータベース・パッケージ

- Oracleデータベース・ライブラリ

- Oracleデータベース・トリガー

- Oracleデータベース表領域

- Oracleデータベースのマテリアライズド・ビュー

- Oracleデータベース・クラスタ

- Oracleデータベース・リンク

- Oracleデータベースのディメンション

- Oracleデータベース・プロファイル

- Oracleデータベース・パブリックDBリンク

- Oracleデータベースのシノニム

- Oracleデータベースのパブリック・シノニム

- Oracleデータベース・セグメント

- Oracleデータベース・タイプ

- Oracleデータベース・ロール

- OracleデータベースのSQL問合せ文

これらのエンティティ・タイプは現在のリリースの機能によって固定されており、拡張はできません。ただし、ファセットおよびリアルタイム監視ルールの作成時にこれらを使用できます。

何を監視できるかを定義するファセットに加えて、フィルタ処理に使用できるエンティティのセットもあります。次のリストは、最もよく使用されるフィルタリング・エンティティ・タイプを示しています。

- OSプロセス

- OSユーザー

- Oracleデータベース・ユーザー

- 時間ウィンドウ

- ホスト

リアルタイム監視ルールの作成時に、監視の対象(つまり、ファイル)を選択します。次に、特定のユーザーによって実行されたアクション、または特定の期間のみ監視されるようにフィルタリングを使用するかどうかを選択します。

13.2.2.2 リアルタイム監視ファセットについて

ターゲット・タイプ・ファセットを使用して、監視するエンティティのリストを指定します。これらのファセットは、後で任意の数のルールで再び使用できます。これらは独自に作成するか、リアルタイム監視ルールに従ってインラインで作成できます。

OSのファイルの監視の場合、ファセットは、個別の単一ファイルのリスト、多数のファイルを含むワイルドカードを使用したパターン、または単にディレクトリ全体になります。

これらのパターンにパラメータをデフォルとともに含めることもできますが、各ターゲットの必要に応じて上書きできます。

次に、HOSTターゲット・タイプとOS FILEエンティティ・タイプに対して定義できるファセットの例を示します。

ユーザー資格証明ファイル

- /etc/passwd

- /etc/shadow

- /etc/mail/trusted-users

ネットワーク構成ファイル

- /etc/hosts

- /etc/resolv.conf

- /etc/hosts.*

- /etc/defaultrouter

- /etc/nsswitch.conf

- /etc/netmasks
{app_install_directory}/network/config

次に、HOSTターゲット・タイプとOS PROCESSンティティ・タイプに対して定義できるファセットの例を示します。本番サーバーで開始されたこれらのプロセスはいずれも重大なセキュリティ・リスクを引き起こす可能性があるため、これらをリアルタイムで監視できます。

ネットワーク構成ツール

- ifconfig

- xhost

次の表に、特定のターゲット・タイプに対して作成できる仮説ファセットのリストを示します。ファセット名には任意の名前を使用できます。一部のプラグイン開発者は、これらの限定された例よりも多くのファセットを使用している場合があります。各ファセットについて、含まれるパターンの説明があります。

ターゲット・タイプ・ファセット

説明

ログ・ファイル

ターゲット・タイプが持つ各ログ・ファイルをリストします。
顧客は(システム・ユーザーではなく)通常のユーザーがいつログ・ファイルを変更するかの監視を望みます。

バイナリ・ファイル

ターゲット・タイプが持つ各バイナリ・ファイルをリストします。
バイナリが改ざんされたかどうか、またはバイナリにパッチがいつ適用されたかを監視するためのルールを作成できます。個々のバイナリをリストするかわりに、頻繁に変更されるファイルを除外してディレクトリ全体をリストすることもできます。

ライブラリ・ファイル

ターゲット・タイプが持つ各ライブラリをリストします。
ライブラリが改ざんされたかどうか、またはライブラリにパッチがいつ適用されたかを監視するためのルールを作成できます。個々のライブラリをリストするかわりに、頻繁に変更されるファイルを除外してディレクトリ全体をリストすることもできます。

一般構成ファイル

通常はユーザーが変更できるがユーザーが変更を取得することが必要な場合がある構成ファイルをリストします。

セキュリティ・キー・ファイル

証明書やキーなどを格納するファイルをリストします。
これをディレクトリ全体にして、定期的に変更されるファイルを除外することもできます。ユーザーが証明書の内容の取得の試行でファイルを読み取るかどうかを監視します。

セキュリティ構成ファイル

暗号化構成など、ターゲット・タイプでのセグメントの動作を構成するファイルをリストします。

アプリケーション・ユーザー

通常のアプリケーション・ユーザー(Oracle、root)などをリストします。
ユーザーは、このファセットを使用して、アプリケーション・ユーザーが変更を行うかどうかを考慮しない場合にその変更の監視をフィルタできます。

ユーティリティ・プロセス

通常はメンテナンス期間中に実行され、本番中は実行する必要のないユーティリティ・プロセス。

レジストリ・キー

ターゲットの構成に影響するMicrosoft Windowsレジストリ・キー

構成表

構成データを格納するデータベース表。

13.2.2.3 リアルタイム監視ファセットの作成

ここでは、リアルタイム監視ファセットの作成で使用されるXMLタグの概要と、ファセット作成を示すXMLフラグメントの例を示します。ファセットは、この例で示すように自身で作成するか、リアルタイム監視ルールに従ってインラインで作成できます。

表13-2では、リアルタイム監視ファセットの定義に使用するタグについて説明します。

表13-2 リアルタイム監視ファセットの定義に使用する主要なタグ

タグ

サブタグ

説明

Name

ファセットの内部名。これは、存在するすべてのファセット間で一意である必要があり、UIには表示されません。

DisplayName

ファセットの表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

TargetType

このルールを関連付けることのできるターゲットのタイプ。

EntityType

ファセットを作成するエンティティ・タイプ(osfile、osprocess、osuserなど)

IsSystem

即時利用可能なルールの場合はTrue。それ以外の場合はFalseです。

Description

ファセットの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Author

ファセットの作成者であるEnterprise Managerユーザー。

LastUpdatedBy

ファセットを最後に更新したEnterprise Managerユーザー。これは、最初に作成されたデータの作成者と同じである必要があります。

SourcePattern/GeneralPattern:

ファセットを構成するパターン定義を保持するコンテナ

Patterns/Pattern

ファセットを定義するパターンのコレクション。単一のファセットは含めるおよび除外パターンで構成できます。

- Value: 実際のパターン。このパターンには、ワイルドカードとパラメータを含めることができます。パラメータは、指定されるか、{および}でバインドされます。パラメータには、XMLでさらに定義されるデフォルト値が必要です。
エンティティ・タイプは、ワイルドカードの使用方法に関する制限を決定します。製品ドキュメントは、エンティティ・タイプごとのこれらの制限を概説します。

- Description: パターンの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

- IsIncluded: このパターンが含めるパターンと除外パターンのどちらであるか。含めるまたは除外の表記はワイルドカードに役立ちます。ディレクトリ全体を含め、その含めるディレクトリ下のサブディレクトリまたは個々のファイルを除外するパターンを指定できます。値0は、このパターンが除外パターンであることを示します。1は含めるパターンを指定します。

Parameters/Parameter

パターンに導入された各パターンのパターン・デフォルト値のコレクション。パラメータは、ファセット間で共有されません。2つのファセットで同じパラメータ名を使用する場合、各ファセットでは固有のデフォルト値を定義する必要があります。

- Name: XMLで定義された上記のパターンで使用されるパラメータ名。

- Value: このパラメータのデフォルト値。ユーザーは、このファセットが使用されている1つ以上のターゲットにコンプライアンス標準を関連付けるときに、ターゲットごとにこのパラメータ値をオーバーライドできます。

- Description: パラメータの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

- isActive: このパラメータがパターンのリストで現在使用されているかどうか。パターンで使用せずに新規パラメータを定義することはないため、これは常に1である必要があります。

例: サンプル・ファセット定義

<Facet xmlns="http://www.oracle.com/DataCenter/ConfigStd" is_time_window="0">
<Name>network_configuration_files</Name>
<DisplayName nlsid=”SAMPLE_FACET_DNAME”>Networking configuration files</DisplayName>
<TargetType>host</TargetType>
<EntityType>osfile</EntityType>
<IsSystem>1</IsSystem>
<Description nlsid=”SAMPLE_FACET_DESC”>Files on a standard UNIX operating system that contain configuration relevant to the networking operations.</Description>
<Author>SYSMAN</Author>
<LastUpdatedBy>SYSMAN</LastUpdatedBy>
<SourcePattern>
<GeneralPattern>
<Patterns>
<Pattern>
<Value>{ETCDIR}/hosts</Value>
<Description nlsid=”SAMPLE_FACET_PATTERN_1_DESC”>Contains IP to hostname mappings</Description>
<IsIncluded>1</IsIncluded>
</Pattern>
<Pattern>
<Value>{ETCDIR}/resolv.conf</Value>
<Description nlsid=”SAMPLE_FACET_PATTERN_2_DESC”>Contains local name resolution mappings.</Description>
<IsIncluded>1</IsIncluded>
</Pattern>
<Pattern>
<Value>{ETCDIR}/appsecurity/*</Value>
<Description nlsid=”SAMPLE_FACET_PATTERN_3_DESC”>All files in a directory used for my custom application.</Description>
<IsIncluded>1</IsIncluded>
</Pattern>
<Pattern>
<Value>{ETCDIR}/appsecurity/sample.conf</Value>
<Description nlsid=”SAMPLE_FACET_PATTERN_4_DESC”>Excluding one file that is not a production configuration file that does not need to be monitored.</Description>
<IsIncluded>0</IsIncluded>
</Pattern>

<Parameters>
<Parameter>
<Name>ETCDIR</Name>
<Description nlsid=”SAMPLE_FACET_PARAMETER_1_DESC”>Location where all base Unix configuration files sit.</Description>
<Value>/etc</Value>
<IsActive>1</IsActive>
</Parameter>
</Parameters>
</GeneralPattern>
</SourcePattern>
</Facet>

13.2.2.4 時間ウィンドウのリアルタイム監視ファセットの作成

時間ウィンドウは、リアルタイム監視のフィルタに使用される特殊なタイプのファセットです。通常、Enterprise Managerエンド・ユーザーは独自の操作スケジュールに固有であるため時間ウィンドウ・ファセットを作成しますが、このドキュメントには参照目的のコンテンツが含まれます。

表13-3で、時間ウィンドウ・ファセットのタグについて説明します。

表13-3 時間ウィンドウ・ファセットの定義に使用する主要なタグ

タグ

サブタグ

説明

Name

ファセットの内部名。これは、存在するすべてのファセット間で一意である必要があり、UIには表示されません。

DisplayName

ファセットの表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

TargetType

このルールが関連付けられるターゲットのタイプ

EntityType

ファセットを作成するエンティティ・タイプ。この例ではtimewindowです。

IsSystem

即時利用可能なルールの場合はTrue。それ以外の場合はFalseです。

Description

ファセットの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Author

ファセットの作成者であるEnterprise Managerユーザー。

LastUpdatedBy

ファセットを最後に更新したEnterprise Managerユーザー。これは、最初に作成されたデータの作成者と同じである必要があります。

SourcePattern/SchedulePattern

TZDisplayName

英語のタイム・ゾーンの表示名。たとえば、グリニッジ標準時(UTC+0)です。

Duration

- DurStartMinute: 00:00 (午前0時)から時間ウィンドウの開始時刻までの分。たとえば、1439 = 11:59PMです。

- DurEndMinute: 00:00 (午前0時)から時間ウィンドウの終了時刻までの分。

- DurMinute: 特に2日にわたる場合に、時間ウィンドウの記述に使用できる事前に計算された期間。期間は1440 (24時間)以下である必要があります。

Recurrence

- RecStartDate: 時間ウィンドウが開始する日付

- RecurrencePattern:
RecPattern: 繰返しのタイプ。オプションは、"Single"、"Daily"、"Weekly"、"Monthly"または"Yearly"です。

RecPatternDays: 曜日をカンマ区切り値で表します。Sunday = 1、Saturday = 7です。

RecPatternFrequency: 繰返しのタイプが"Every X of some pattern"の場合に繰り返す頻度。

例: 時間ウィンドウ・ファセット定義のサンプル

<Facet is_time_window="1>
<Name>general_working_hours</Name>
<DisplayName>General Working Hours</DisplayName>
<TargetType>host</TargetType>
<EntityType>timewindow</EntityType>
<IsSystem>0</IsSystem>
<Description>Define the work hour from 9:00 am to 5:00 pm</Description>
<Author>SYSMAN</Author>
<LastUpdatedBy>SYSMAN</LastUpdatedBy>
<SourcePattern>
<SchedulePattern>
<TZDisplayName/>
<Duration>
<DurStartMinute>540</DurStartMinute>
<DurEndMinute>1020</DurEndMinute>
<DurMinute>480</DurMinute>
</Duration>
<Recurrence>
<RecStartDate>2010-07-26</RecStartDate>
<RecurrencePattern>
<RecPattern>WEEKLY</RecPattern>
<RecPatternDays>1,2,5</RecPatternDays>
<RecPatternFrequency>1</RecPatternFrequency>
</RecurrencePattern>
</Recurrence>
</SchedulePattern>
</SourcePattern>
</Facet>

13.2.2.5 リアルタイム監視ルールの作成

ここでは、リアルタイム監視ルールの作成で使用されるXMLタグの概要と、ルール作成を示すXMLフラグメントの例を示します。このXMLフラグメントでは、ファセットがすでに作成され、このルールで参照されていることを想定します。

表13-4で、リアルタイム・ルールの定義に使用するタグについて説明します。

表13-4 リアルタイム・ルールの定義に使用する主要なタグ

タグ

サブタグ

説明

DisplayName

ルールの表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

TargetType

このルールが関連付けられるターゲットのタイプ

IsSystem

即時利用可能なルールの場合はTrue。それ以外の場合はFalseです。

Description

ルールの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Impact

ルールに違反した場合(ルールが非コンプライアンスの場合)の影響。メッセージの翻訳をサポートするためのnlsid属性を提供します。

ViolationContextList

違反コンテキストは、ルールの違反を一意に定義します。違反コンテキストは、違反の一部として表示される<Source>問合せの列をリストします。各列は、キーまたは非キーとしてマークする必要があります。

<Source>問合せの必須のtarget_guid列は、違反コンテキストに暗黙的に追加されるため、違反コンテキストに明示的に含める必要はありません。

列

メトリック列名。属性名とタイプを使用します。

- DisplayLabel: 列の表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

- IsHidden: この列を違反コンテキストの一部として表示しない場合はTrue。それ以外の場合はFalseです。

- IsKey: この列がキーの場合はTrue。

CheckSource

ルール評価のデータ・ソースを定義します。

RealTimeMonitoringLogicDefinition

リアルタイム監視ルールのデータ・ソースを定義します。

EntityType

実行される監視のタイプ(osfile、osprocess、osuserなど)。完全なリストは第13.2.2.1項「監視できるエンティティ・タイプ」を参照してください。

Facets

このルールで参照するファセットのコレクション。ファセットには、監視ファセットとフィルタリング・ファセットがあります。

- Facet Reference: ファセットの内部参照名
Name: ルールで参照されるファセットの内部参照名

TargetType: 参照されるファセットのターゲット・タイプ。これは常にコンテンツのルール・ターゲット・タイプと同じである必要があります。

EntityType: 参照されるファセットのエンティティ・タイプ

IsFilteredFacet: 0は、このファセット参照を使用して監視対象を決定することを示します。1は、ファセット参照がフィルタであることを示します。

InvertedFilteredFacet: IsFilteredFacet=1の場合にのみ適用されます。これは、ファセット定義のパターンが逆(1)か逆でない(0)かを指定します。フィルタ・ファセットが「本番時間」に対するものであり、それが逆の場合、モニターは「本番時間」に対して定義されたパターンの外部でのみ行われます。

ObservationTypes/ObservationType

リアルタイムで監視する監視のタイプ。

Name: このルールで監視する監視タイプの内部参照名。

Settings

- CMSetting: 変更管理調整のパフォーマンスに関連する設定。
auto_authorized=0属性は、手動調整のみを指定します。1は、変更管理サーバーとの統合を指定します。通常は、コネクタがまだ存在しないため、このフィールドを使用できません。CM設定のないルールを作成する場合、顧客はルールをオーバーライドし、ルールをコンプライアンス標準に関連付けた後で独自のカスタムCM設定を設定できます。

CMConnector: ルールが自動調整に使用する必要のあるコネクタ。

AnnotateAuthObservation: 変更管理コネクタが、監視を認可したリクエストに認可された監視の注釈を付ける必要があるかどうかを指定します。

AdvancedSetting

拡張ルール設定

- GroupSetting: 監視バンドルを終了する方法に関する設定。監視バンドルは、同じユーザーによって同じルールに対して短期間に同じターゲット上で行われた一連のアクションを収集します。
ObsGroupIdleTimeout: 最後のユーザー・アクションが行われてからバンドルが終了するまでのタイムアウト期間(分単位)。

ObsGroupMaxAge: 監視バンドルの最大継続時間(分単位)。

ObsGroupMaxObservations: 監視バンドル内の監視の最大数。

- GenerateEventByManualAuth: 手動調整を使用している場合、監視の発生時に情報レベルのイベントを生成するオプションがあります。1は、情報イベントが各監視グループに対して作成されることを示します。0は、情報イベントが作成されないことを示します。

Options

エンティティ・タイプに基づいて構成できる追加オプション。一部のエンティティ・タイプにはオプションがありません。

- Option (名前/値): オプション設定の単一の名前または値のペア。

Severity

ルールの重大度(Critical、WarningまたはMinorWarning)

LifeCycleStatus

ルールのライフサイクル・ステータス(「開発」または「本番」)

UrlLink

ルールに関する詳細を含む、ルールの詳細URL

ViolationMessage

違反で記録されたメッセージ(ルールの場合)。通知に使用されます。メッセージの翻訳をサポートするためのnlsid属性を提供します。

ClearViolationMessage

違反のクリアで記録されたメッセージ(ルールの場合)。通知に使用されます。メッセージの翻訳をサポートするためのnlsid属性を提供します。

KeywordList

ルールに関連付けられているキーワードのリスト

Keyword

コンプライアンス標準に適用できるキーワード

Author

ルールの作成者

例: ルール定義のサンプル

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" Name="monitor_critical_os_config_files">
<DisplayName nlsid=”SAMPLE_RULE_NAME”>Monitor critical OS configuration files</DisplayName>
<TargetType>host</TargetType>
<IsSystem>True</IsSystem>
<Description nlsid=”SAMPLE_RULE_DESC”>Monitor several critical
configuration areas of a Linux host to ensure no configuration changes are
happening out of bounds. Monitoring is only done during production
hours.</Description>
<Impact nlsid=”SAMPLE_RULE_IMPACT”>Capturing real-time changes to these files may indicate a serious security issue.</Impact>
<Recommendation nlsid=”SAMPLE_RULE_RECO”>Ensure that change management policy documents how and when changes should be made in production.
Create compensating controls to address these out of bound issues.</Recommendation>
<ViolationContextList/>
<CheckSource>
<RealTimeMonitoringLogicDefinition>
<EntityType>osfile</EntityType>
<Facets>
<FacetReference>
<Name>network_configuration_files</Name>
<TargetType>host</TargetType>
<EntityType>osfile</EntityType>
<IsFilteredFacet>0</IsFilteredFacet>
<InvertFilteredFacet>0</InvertFilteredFacet>
</FacetReference>
<FacetReference>
<Name>maild_configuration_files</Name>
<TargetType>host</TargetType>
<EntityType>osfile</EntityType>
<IsFilteredFacet>0</IsFilteredFacet>
<InvertFilteredFacet>0</InvertFilteredFacet>
</FacetReference>
<FacetReference>
<Name>sshd_configuration_files</Name>
<TargetType>host</TargetType>
<EntityType>osfile</EntityType>
<IsFilteredFacet>0</IsFilteredFacet>
<InvertFilteredFacet>0</InvertFilteredFacet>
</FacetReference>
<FacetReference>
<Name>crontab_configuration_files</Name>
<TargetType>host</TargetType>
<EntityType>osfile</EntityType>
<IsFilteredFacet>0</IsFilteredFacet>
<InvertFilteredFacet>0</InvertFilteredFacet>
</FacetReference>
<FacetReference>
<Name>kernel_configuration_files</Name>
<TargetType>host</TargetType>
<EntityType>osfile</EntityType>
<IsFilteredFacet>0</IsFilteredFacet>
<InvertFilteredFacet>0</InvertFilteredFacet>
</FacetReference>
<FacetReference>
<Name>production_hours</Name>
<TargetType>host</TargetType>
<EntityType>timewindow</EntityType>
<IsFilteredFacet>1</IsFilteredFacet>
<InvertFilteredFacet>0</InvertFilteredFacet>
</FacetReference>
</Facets>
<ObservationTypes>
<ObservationType>
<Name>osfile_create_suc</Name>
</ObservationType>
<ObservationType>
<Name>osfile_content_modified_suc</Name>
</ObservationType>
<ObservationType>
<Name>osfile_delete_suc</Name>
</ObservationType>
<ObservationType>
<Name>osfile_content_mod_archive_suc</Name>
</ObservationType>
</ObservationTypes>
<Settings>
<CMSetting auto_authorized="0">
<CMConnector></CMConnector>
<AnnotateAuthObservation></AnnotateAuthObservation>
</CMSetting>
<AdvancedSetting>
<GroupSetting>
<ObsGroupIdleTimeout>15</ObsGroupIdleTimeout>
<ObsGroupMaxAge>30</ObsGroupMaxAge>
<ObsGroupMaxObservations>1000</ObsGroupMaxObservations>
</GroupSetting>
<GenerateEventByManualAuth>0</GenerateEventByManualAuth>
</AdvancedSetting>
</Settings>
<Options>
<Option value="10" name="osfile_archivenumber"/>
<Option value="50000" name="osfile_polling_maxfilealert"/>
<Option value="100" name="osfile_archive_maxsrcfilealert"/>
</Options>
</RealTimeMonitoringLogicDefinition>
</CheckSource>
<Severity>MinorWarning</Severity>
<LifeCycleStatus>Development</LifeCycleStatus>
<KeywordList>
<Keyword nlsid=”CONFIGURATION”>Configuration</keyword>
<Keyword nlsid=”SECURITY”>Security</keyword>
</KeywordList>
<ViolationMessage nlsid=”SAMPLE_RULE_VIOL_MSG”>Violation due to change in critical OS configuration files during production hours.</ViolationMessage>
<ClearViolationMessage nlsid=”SAMPLE_RULE_VIOL_CLRMSG”>Cleared violation due to change in critical OS configuration files during production hours.</ClearViolationMessage>
<Author>SYSMAN</Author>
</Rule>

13.3 コンプライアンス標準の定義

コンプライアンス標準は、階層形式のコンプライアンス標準ルール(リポジトリ・ルールまたはリアルタイム監視ルール)にマップされます。

次の例では、コンプライアンス標準を定義する構文を示し、さらに例でコンプライアンス標準の定義例を示します。

注意:
完全なコンプライアンスXSDについては、次のJARファイルを参照してください。

$ORACLE_HOME/sysman/jlib/gccomplianceCommon.jar

関連項目:
他の例については、第13.10項「その他のコンプライアンス例」を参照してください。

例: コンプライアンス標準定義の構文

<xsd:complexType name="StandardT">
<xsd:sequence>
<xsd:element name="DisplayName" type="std:DisplayString128Def" minOccurs="0"/>
<xsd:element name="TargetType" type="std:Name128Def" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="std:TargetPropertyFilter" minOccurs="0"/>
<xsd:element name="Author" type="std:Name256Def" default="ORACLE" minOccurs="0"/>
<xsd:element name="Version" type="xsd:nonNegativeInteger" default="1" minOccurs="0"/>
<xsd:element name="LifeCycleStatus" default="Development" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Development"/>
<xsd:enumeration value="Production"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="IsHidden" type="std:BooleanDef" minOccurs="0" default="false"/>
<xsd:element name="IsSystem" type="std:BooleanDef" minOccurs="0" default="false"/>
<xsd:element name="IsAutoEnable" type="std:BooleanDef" minOccurs="0" default="false"/>
<xsd:element name="Description" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="KeywordList" type="std:KeywordListT" minOccurs="0"/>
<xsd:element name="ReferenceURL" type="std:String4000Def" minOccurs="0"/>
<xsd:element name="FrontMatter" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="RearMatter" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="Notice" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="Body" type="std:BodyT" minOccurs="0"/>
<xsd:element name="ExtraInfo" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="std:NameDef" use="required"/>
<xsd:attribute name="oms_version" type="std:Name32Def" use="required"/>
</xsd:complexType>

表13-5で、コンプライアンス標準の定義に使用するタグについて説明します。

表13-5 コンプライアンス標準の定義に使用する主要なタグ

タグ

サブタグ

説明

DisplayName

コンプライアンス標準の表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

注意: nlsid属性は、メタデータ・プラグインには適用されません。

TargetType

このコンプライアンス標準を関連付けることのできるターゲットのタイプ

Author

コンプライアンス標準の作成者

Version

コンプライアンス標準のバージョン

LifeCycleStatus

コンプライアンス標準のライフサイクル・ステータス(「開発」または「本番」)

IsSystem

コンプライアンス標準が即時利用可能として提供されている場合はTrue。それ以外の場合はFalseです。

Description

コンプライアンス標準の説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

IsAutoEnable

Trueに設定されている場合、コンプライアンス標準は定義されたターゲット・タイプのすべての既存のターゲットに関連付けられます。(TargetTypeを使用して定義)

KeywordList

コンプライアンス標準に適用できるキーワードのリスト

Keyword

コンプライアンス標準に適用できるキーワード

ReferenceURL

コンプライアンス標準の参照URL

FrontMatter

前付けメッセージ。メッセージの翻訳をサポートするためのnlsid属性を提供します。

RearMatter

後付けメッセージ。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Notice

通知メッセージ。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Body

コンプライアンス標準の本文。次にリストする要素の1つ以上を使用できます。

RuleFolder

ルール・フォルダを定義します。RuleFolderは次のものを持つことができます。

RuleFolder

RuleReference

Include Standard Reference

- DisplayName: ルール・フォルダの表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

- Description: ルール・フォルダの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。
注意: nlsid属性は、メタデータ・プラグインには適用されません。

- ReferenceURL: ルール・フォルダの参照URL

- Importance: ルール・フォルダの重要性(低/標準/高)

Include

含めるコンプライアンス標準に別のコンプライアンス標準参照を含めます。

RuleReference

コンプライアンス標準にルール参照を含めます。

例: コンプライアンス標準のサンプル1

<Standard xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_cs1">
<DisplayName nlsid="SAMPLE_CS_1_NAME">Sample Compliance Standard 1</DisplayName>
<TargetType>oracle_database</TargetType>
<TargetPropertyFilter>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>8.1.6+</Value>
</ValueList>
</PropertyItem>
</TargetPropertyFilter>
<Author>SYSTEM</Author>
<Version>1</Version>
<LifeCycleStatus>Production</LifeCycleStatus>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_CS_1_DESC">Sample Description</Description>
<KeywordList>
<Keyword nlsid="CONFIGURATION">Configuration</Keyword>
</KeywordList>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<Body>
<RuleFolder name="sample_RF_1">
<DisplayName nlsid="SAMPLE_RF_1_NAME">Sample Rulefolder</DisplayName>
<Description nlsid="SAMPLE_RF_1_DESC">This includes rules that checks for use of a single control file</Description>
<ReferenceURL>http://www.oracle.com/db_rf1</ReferenceURL>
<Importance>Normal</Importance>
<RuleReference>
<Name>sample_rule1</Name>
<TargetType>oracle_database</TargetType>
<Importance>Normal</Importance>
</RuleReference>
</RuleFolder>
</Body>
</Standard>

13.4 コンプライアンス・フレームワークの定義

注意:
コンプライアンス・フレームワークという用語はこのドキュメント全体で使用されていますが、XML APIではGroupまたはSubGroupという用語が使用されます。これは、Enterprise Manager UIでは公開されないXML構造に使用される内部的な名前です。

次の例では、コンプライアンス・フレームワークを定義する構文を示し、さらに例でコンプライアンス・フレームワークの定義例を示します。

注意:
完全なコンプライアンスXSDについては、次のJARファイルを参照してください。

$ORACLE_HOME/sysman/jlib/gccomplianceCommon.jar

関連項目:
他の例については、第13.10項「その他のコンプライアンス例」を参照してください。

例: コンプライアンス・フレームワーク定義の構文

<xsd:complexType name="StandardGroupT">
<xsd:sequence>
<xsd:element name="DisplayName" type="std:DisplayString128Def" minOccurs="0"/>
<xsd:element name="Author" type="std:Name256Def" default="ORACLE" minOccurs="0"/>
<xsd:element name="Version" type="xsd:nonNegativeInteger" default="1" minOccurs="0"/>
<xsd:element name="LifeCycleStatus" default="Development"minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Development"/>
<xsd:enumeration value="Production"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Description" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="KeywordList" type="std:KeywordListT" minOccurs="0"/>
<xsd:element name="ReferenceURL" type="std:String4000Def" minOccurs="0"/>
<xsd:element name="FrontMatter" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="RearMatter" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="Notice" type="std:DisplayString800Def" minOccurs="0"/>
<xsd:element name="IsHidden" type="std:BooleanDef" minOccurs="0"default="false"/>
<xsd:element name="IsSystem" type="std:BooleanDef" minOccurs="0"default="false"/>
<xsd:element name="GroupBody" type="std:GroupBodyT" minOccurs="0"/>
<xsd:element name="ExtraInfo" type="xsd:string" minOccurs="0"maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="std:NameDef" use="required"/>
<xsd:attribute name="oms_version" type="std:Name32Def" use="required"/>
</xsd:complexType>

表13-6では、コンプライアンス・フレームワークの定義に使用するタグについて説明します。

表13-6 コンプライアンス・フレームワークの定義に使用する主要なタグ

タグ

サブタグ

説明

DisplayName

コンプライアンス・フレームワークの表示名。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Author

コンプライアンス・フレームワークの作成者

Version

コンプライアンス・フレームワークのバージョン

LifeCycleStatus

コンプライアンス・フレームワークのライフサイクル・ステータス(「開発」または「本番」)

IsSystem

コンプライアンス・フレームワークが即時利用可能として提供されている場合はTrue。それ以外の場合はFalseです。

Description

コンプライアンス・フレームワークの説明。メッセージの翻訳をサポートするためのnlsid属性を提供します。

注意: nlsid属性は、メタデータ・プラグインには適用されません。

KeywordList

コンプライアンス・フレームワークに適用できるキーワードのリスト

Keyword

コンプライアンス標準に適用できるキーワード

ReferenceURL

コンプライアンス・フレームワークの参照URL

FrontMatter

前付けメッセージ。メッセージの翻訳をサポートするためのnlsid属性を提供します。

RearMatter

後付けメッセージ。メッセージの翻訳をサポートするためのnlsid属性を提供します。

Notice

通知メッセージ。メッセージの翻訳をサポートするためのnlsid属性を提供します。

ExtraInfo

コンプライアンス・フレームワークに関する追加情報。

GroupBody

コンプライアンス・フレームワークの本体を定義します。次の要素の1つ以上を使用できます。

SubGroup

子フレームワーク要素を定義します。子フレームワーク要素には次のものを含めることができます。

子フレームワーク

標準参照を含みます。

- DisplayName: 子フレームワークの表示名

- Description: 子フレームワークの説明。

- ReferenceURL: 子フレームワークの参照URL

- Importance: 子フレームワークの重要性(「低」、「標準」または「高」)

StandardReference

コンプライアンス・フレームワークにコンプライアンス標準参照を含めます。

例: コンプライアンス・フレームワークのサンプル

<StandardGroup xmlns="http://www.oracle.com/DataCenter/ConfigStd" name="sample_csg" oms_version="12.1.0.1.0">
<DisplayName nlsid="SAMPLE_CSG_NAME">Sample Compliance Framework</DisplayName>
<Author>SYSTEM</Author>
<Version>1</Version>
<LifeCycleStatus>Production</LifeCycleStatus>
<Description nlsid="SAMPLE_CSG_DESC">Sample Description</Description>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<IsHidden>false</IsHidden>
<IsSystem>true</IsSystem>
<GroupBody>
<SubGroup name="SampleSubgroup">
<DisplayName nlsid="SAMPLE_CSG_SUBGROUP_NAME">Sample Child Framework</DisplayName>
<Description nlsid="SAMPLE_CSG_SUBGROUP_DESC">Sample Child framework Description</Description>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<Importance>Normal</Importance>
<StandardReference>
<Name>sample_cs3</Name>
<Author>SYSTEM</Author>
<Version>1</Version>
<Importance>Normal</Importance>
</StandardReference>
</SubGroup>
</GroupBody>
</StandardGroup>

13.5 コンプライアンス・コンテンツの定義

次の例では、コンプライアンス・コンテンツを定義する構文を示し、「XMLコンプライアンス・メタデータのサンプル」の例ではXMLコンプライアンス・メタデータの例を示します。

関連項目:
他の例については、第13.10項「その他のコンプライアンス例」を参照してください。

例: コンプライアンス・コンテンツ定義の構文

<xsd:complexType name="ComplianceContentT">
<xsd:sequence>

<!-- Cummulative change since the first release.-->
<xsd:element ref="std:ChangeList" minOccurs="0" maxOccurs="1"/>
<!-- End Cummulative change since the first release -->

<!-- Current state of entities -->
<xsd:element ref="std:Facet" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="std:Rule" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="std:Standard" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="std:StandardGroup" minOccurs="0" maxOccurs="unbounded"/>
<!-- Current state of entities -->
</xsd:sequence>
<xsd:attribute name="oms_version" type="std:Name32Def" use="required"/>
<xsd:attribute name="name" type="std:Name64Def" use="required"/>
<!-- content_version of compliance content should be equal to version of last change tag if any. -->
<xsd:attribute name="content_version" type="std:Name64Def" use="optional" default = "12.1.0.0.0"/>
<xsd:attribute name="IsCompareEnabled" type="std:BooleanDef" use="optional" default = "true"/>
</xsd:complexType>

<xsd:element name="ComplianceContent" type="std:ComplianceContentT"/>

表13-7で、コンプライアンス・コンテンツの定義に使用する属性の一部について説明します。

表13-7 コンプライアンス・コンテンツ属性

属性

説明

oms_version

Oracle Management Service (OMS)のバージョン

name

コンプライアンス・コンテンツの名前

content_version

コンプライアンス・コンテンツのバージョン

IsCompareEnabled

ルールまたはコンプライアンス標準が増分的に更新されるか、ルールまたはコンプライアンス標準全体が再生成されるかを指定します。

使用可能な値:

- True: 各ルールおよび標準タグについて、ソフトウェアは増分変更を自動的に探し、エンティティを増分的に更新します。たとえば、コンプライアンス標準で1つのルールのみが更新された場合は、そのルールがコンプライアンス標準で更新されてから、更新されたルールが、ルールの更新時にコンプライアンス標準に関連付けられているすべてのターゲットに対して再評価されます(ルールがリポジトリ・ルールの場合)。

- False: ユーザーは、<ChangeList><Change..>....</ChangeList></Change>タグ内に<UpdateRule>を指定する必要があります。これにより、ルール(つまり、すべての属性と定義)が上書きされます。
同様に、コンプライアンス標準が更新された場合は、それによって標準が完全にオーバーライドされ、結果が再生成されます(リポジトリ・チェックベースの標準の場合)。

注意: isCompareEnabled = falseを設定した場合は、コンプライアンス・コンテンツが作成された後で各バージョンで累積的に行われたすべての変更を提供する必要があります。これは、メタデータの一貫性を保つために非常に重要です。

isCompareEnabled属性がtrueに設定されている場合でも、各バージョンの変更を常に要約することをお薦めします。後でisCompareEnabled= true (デフォルト)からisCompareEnabled=falseに切り替える必要がある場合に、コンプライアンス・コンテンツの異なるバージョン間ですべての履歴変更が使用可能になるためです。

例: XMLコンプライアンス・メタデータのサンプル

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE ComplianceContent [
<!ENTITY rule SYSTEM "SampleRuleThresholdCondition.xml">
<!ENTITY standard SYSTEM "SampleComplianceStandard.xml">
<!ENTITY standardgroup SYSTEM "SampleComplianceStandardGroup.xml">
]>
<ComplianceContent xmlns="http://www.oracle.com/DataCenter/ConfigStd" name="Sample Compliance Framework" oms_version="11.2.0.1.0">
<ChangeList>
<Change version="12.2.0.0.0">
<UpdateRule>
<RuleName>sample_rule</RuleName>
<TargetType>oracle_database</TargetType>
</UpdateRule>
<UpdateStandardGroup>
<StandardGroupName>sample_csg</StandardGroupName>
<StandardGroupAuthor>SYSTEM</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
</UpdateStandardGroup>
</Change>
</ChangeList>
&rule;
&standard;
&standardgroup;
</ComplianceContent>

13.6 コンプライアンス・コンテンツの削除

コンプライアンス・コンテンツを削除するには、次のコマンドを入力します。

emctl deregister oms metadata -sysman_pwd sysman -core -service gccompliance -file DeleteComplianceContent.xml

前のコマンドで、DeleteComplianceContent.xmlはコンプライアンス・コンテンツの削除XMLファイルの名前を表します。

次の例ではコンプライアンス・コンテンツの削除を定義する構文と、コンプライアンス・コンテンツの削除XMLファイルの例を示します。

例: コンプライアンス・コンテンツの削除の構文

<!-- delete compliance metadata corresponding to the compliance content name provided. -->
<xsd:complexType name="DeleteComplianceContentT">
<xsd:attribute name="name" type="std:Name64Def" use="required"/>
</xsd:complexType>
<xsd:element name="DeleteComplianceContent" type="std:DeleteComplianceContentT"/>

例: DeleteComplianceContent XML

<DeleteComplianceContent xmlns="http://www.oracle.com/DataCenter/ConfigStd" name="Sample Compliance Framework" />

13.7 翻訳のサポート

注意:
翻訳は、Oracle Fusion Middlewareプラグインに対してのみサポートされます。

XMLサンプルの各nlsid属性について、データ・ロード形式(DLF)マップ・エントリを指定する必要があります。DLFファイルには、定義された各nlsid属性の英語の文字列が含まれます。これらの文字列は翻訳に使用できます。

例: DLFファイルのサンプル

<?xml version="1.0" encoding="UTF-8"?>
<table xml:lang="en" name="MGMT_MESSAGES">

<!-- lookup-key indicates which columns are used by
TransX to recognize a row as a duplicate -->
<lookup-key>
<column name="MESSAGE_ID"/>
<column name="SUBSYSTEM"/>
<column name="LANGUAGE_CODE"/>
<column name="COUNTRY_CODE"/>
</lookup-key>

<!-- columns field indicates which columns will be loaded as
part of processing the dataset and which should be
translated by the Translation Group -->
<columns>
<column name="MESSAGE_ID" type="string" maxsize="64"/>
<column name="SUBSYSTEM" type="string" maxsize="64"/>
<column name="LANGUAGE_CODE" type="string" language="%l"/>
<column name="COUNTRY_CODE" type="string" language="%Cs"/>
<column name="MESSAGE" type="string" maxsize="1000" translate="yes"/>
</columns>

<!-- dataset specifies the data to be loaded into the repository -->
<dataset>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_NAME</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Rule</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_DESC</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Checks for use of a single control file</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_IMPACT</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">The control file is one of the most important files in an
Oracle database. It maintains many physical characteristics and important
recovery information about the database. If you lose the only copy of the control
file due to a media error, there will be unnecessary down time and other risks.</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_RECO</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Use at least two control files that are multiplexed on different disks.</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_COL_1</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">FILE_LIST</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_COL_2</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">CONTROL_FILE_COUNT</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_VIOL_MSG</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">The database has an insufficient number of control files.</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RULE_VIOL_CLEAR_MSG</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">The database has sufficient number of control files.</col>
</row>

<!-- Standard NLSID Mappings -->

<row>
<col name="MESSAGE_ID">SAMPLE_CS_NAME</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Compliance Standard</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_CS_DESC</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Description</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RF_NAME</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Rulefolder</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_RF_DESC</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">This includes rules that checks for use of a single control file.</col>
</row>

<!-- Standard Group NLSID Mappings -->

<row>
<col name="MESSAGE_ID">SAMPLE_CSG_NAME</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Compliance Framework</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_CSG_DESC</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Description</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_CSG_SUBGROUP_NAME</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Child Framework</col>
</row>

<row>
<col name="MESSAGE_ID">SAMPLE_CSG_SUBGROUP_DESC</col>
<col name="SUBSYSTEM">POLICY</col>
<col name="MESSAGE">Sample Child Framework Description</col>
</row>

</dataset>
</table>

注意:
DLFエントリがリアルタイム監視ファセットまたはパターンに対するものである場合、サブシステムはGCCOMPLIANCE_CCCです。他のすべてのルールでは、サブシステムはPOLICYです。

13.8 コンプライアンスXMLのパッケージ

ここでは、XMLおよびDLFファイルの場所を示します。

- XMLファイル
すべてのXMLファイルを次のディレクトリに格納します。

plugin_stage/oms/metadata/gccompliance/

前のディレクトリ・パスで、plugin_stageはプラグイン・ステージング・ディレクトリです。

プラグイン・ステージング・ディレクトリの詳細は、第14.2項「プラグインのステージング」を参照してください。

- DLFファイル
すべてのDLFファイルを次のディレクトリに格納します。

plugin_stage/oms/rsc/area/gccompliance

前のディレクトリ・パスで、plugin_stageはプラグイン・ステージング・ディレクトリであり、areaは、データベースを表すdbや構成管理を表すecmなど、サブコンポーネントを表します。

13.9 コンプライアンス標準およびルールの設定とテスト

コンプライアンス標準またはルールをテストするには、次のことを行います。

- コンプライアンス・コンテンツのインストール

- コンプライアンス標準のテスト

13.9.1 コンプライアンス・コンテンツのインストール

コンプライアンス・コンテンツのインストールの手順:

1. 次のコマンドを使用して、コンプライアンス・コンテンツをインストールします。

emctl register oms metadata -sysman_pwd password -core -service gccompliance -file ComplianceContent.xml

2. バックエンド処理に対して次のジョブを送信します。

begin em_compliance_util.trigger_rule_dependency_job;end;

13.9.2 コンプライアンス標準のテスト

コンプライアンス標準のテストの手順:

1. Cloud Controlコンソールにログインします。

2. 「エンタープライズ」メニューから「コンプライアンス」を選択し、「ライブラリ」を選択します。
「コンプライアンス・ライブラリ」ページが表示されます。

3. 「コンプライアンス標準」をクリックします。

4. 必要なコンプライアンス標準を選択し、「ターゲットの関連付け」をクリックします。
「コンプライアンス標準へのターゲット・アソシエーション: Compliance Standard Name」ページが表示されます(Compliance Standard Nameは選択したコンプライアンス標準の名前です)。

5. 「追加」をクリックします。
「検索と選択: ターゲット」ウィンドウが表示されます。

6. 評価するターゲットを選択し、「選択」をクリックします。

7. 「コンプライアンス標準へのターゲット・アソシエーション: Compliance Standard Name」ページで、「OK」をクリックします。

8. 「アソシエーションの保存」メッセージに対して「はい」をクリックします。
「コンプライアンス標準」ページが表示されます。

前の手順で、バックグラウンド・ジョブとして行われる評価がトリガーされます。

9. 数分後に、「エンタープライズ」メニューから「コンプライアンス」を選択し、「結果」を選択します。
「コンプライアンス基準評価結果」ページが表示されます。

10. コンプライアンス標準を選択し、「詳細を表示」をクリックします。
「コンプライアンス標準結果詳細」ページが表示されます。

11. ページの左側から、「コンプライアンス標準名」を展開してノードを表示し、ノードをクリックしてそのノードの結果を表示します。

図13-1 コンプライアンス標準結果詳細

13.9.3 テストの制約

コンプライアンス標準またはルールをテストする際には、次の制約に注意してください。

- MGMT_VIEWユーザーには、問合せで使用したビューに対するSELECT権限が必要です。

- target_guidは、問合せのSELECT属性の1つである必要があります。

- 別名またはselect句は64文字未満である必要があります。

- コンプライアンス標準からの標準参照を最初にインポートします。コンプライアンス・コンテンツ・リストでは標準参照を最初に配置します。

- SQLソースのSELECT句の少なくとも1つの列が、違反コンテキスト定義およびメトリック定義で非キー列としてマークされている必要があります。

- target_guid列は、違反コンテキスト列またはメトリック定義に対して指定しないでください。

- 問合せが包含プラグインの外部のビューを参照する場合、ビューはEDKによってプラグインに(プラグインEDKレベルで)公開する必要があります。

- リポジトリ・ルールのSQLソース問合せがPLSQL関数を参照する場合、グローバルPLSQL関数のみ参照し、パッケージ関数を参照しないこと(つまり、これらのPLSQL関数が、更新するとルール評価がトリガーされる表に依存するかどうか)を確認します。これは、ルール評価の結果が依存する表のリストを正しく生成するために必要です。mgmt_viewユーザーに、この関数に対する実行権限を付与する必要があります。

- コンプライアンス標準に含まれるルールのターゲット・タイプは、直接の親標準のターゲット・タイプと同じである必要があります。

- STRING型のキー列には、64文字未満が含まれている必要があります。

13.10 その他のコンプライアンス例

ここでは、コンプライアンス・コンテンツ、ルール、コンプライアンス標準およびコンプライアンス・フレームワークのその他の例を示します。

注意:
この章の例は、Enterprise Manager 12cおよびEnterprise Manager 13cの両方に適用されます。

次の例では、コンプライアンス・コンテンツ・バージョン1の例を示し、さらにその次の例でコンプライアンス・コンテンツ・バージョン2の例を示します。バージョン1はコンプライアンス・コンテンツの初期バージョンです。コンテンツ・バージョン番号は12.1.0.1.0ですが、「コンプライアンス・コンテンツ・バージョン2」の例のコンテンツ・バージョンは12.1.0.2.0であることに注意してください。

コンプライアンス・コンテンツにはChangeList要素が含まれます。ChangeList要素は、更新されたルール、標準など、コンプライアンス・コンテンツの最初のバージョン以降に発生した変更を記述します。

例: コンプライアンス・コンテンツ・バージョン1

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE ComplianceContent [
<!ENTITY rule1 SYSTEM "SampleRule1.xml">
<!ENTITY rule2 SYSTEM "SampleRule2.xml">
<!ENTITY rule3 SYSTEM "SampleRule3.xml">
<!ENTITY rule4 SYSTEM "SampleRule4.xml">
<!ENTITY rule5 SYSTEM "SampleRule5.xml">
<!ENTITY rule6 SYSTEM "SampleRule6.xml">
<!ENTITY standard1 SYSTEM "SampleComplianceStandard1.xml">
<!ENTITY standard2 SYSTEM "SampleComplianceStandard2.xml">
<!ENTITY standard3 SYSTEM "SampleComplianceStandard3.xml">
<!ENTITY standardgroup SYSTEM "SampleComplianceFramework.xml">]
]>
<ComplianceContent xmlns="http://www.oracle.com/DataCenter/ConfigStd" name="SampleComplianceContent" oms_version="12.1.0.1.0" content_version="12.1.0.1.0">
<ChangeList>
<!-- ChangeList tag process each of the Change Tag with respect to the version of the ComplianceContent installed in repository. -->
<Change version="12.1.0.1.0">
<!-- AddSubGroupWithinStandardGroup will introduce a subgroup within an existing  compliance framework/standard group in repository. -->
<!-- AddStandardReferenceToStandardGroup will introduce a reference to a standard within an existing  compliance framework/standard group in repository. -->
<AddSubGroupWithinStandardGroup order="2">
<StandardGroupName>oracle_pci</StandardGroupName>
<StandardGroupAuthor>ORACLE</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
<SubGroup name="sampleSubgroup1">
<DisplayName>sub1</DisplayName>
<ReferenceURL>http://sampleAddedSubgroup.com</ReferenceURL>
<Importance>High</Importance>
</SubGroup>
</AddSubGroupWithinStandardGroup>
<AddStandardReferenceToStandardGroup>
<StandardGroupName>oracle_pci</StandardGroupName>
<StandardGroupAuthor>ORACLE</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
<SubGroupListInfo>
<SubGroupElem>oracle_pci_ctrlobj_a</SubGroupElem>
</SubGroupListInfo>
<StandardReference>
<Name>sample_cs1</Name>
<Author>SYSTEM</Author>
<Version>1</Version>
</StandardReference>
</AddStandardReferenceToStandardGroup>
</Change>
</ChangeList>
<!--List of compliance standard rules -->
&rule1;
&rule2;
&rule3;
&rule4;
&rule5;
&rule6;
<!--List of compliance standards -->
&standard1;
&standard2;
&standard3;
<!--List of compliance standard groups/frameworks-->
&standardgroup;
</ComplianceContent>

次に、単一のコントロール・ファイルの使用をチェックするコンプライアンス・ルールの例を示します

例: サンプル・ルール1

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule1">
<DisplayName nlsid="SAMPLE_RULE_1_NAME">Sample Rule 1</DisplayName>
<TargetType>oracle_database</TargetType>
<IsSystem>true</IsSystem>
<TargetPropertyFilter>
<PropertyItem>
<PropertyName>orcl_gtp_operating_system</PropertyName>
<ValueList>
<Value>Windows</Value>
</ValueList>
</PropertyItem>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>8.1.6+</Value>
</ValueList>
</PropertyItem>
</TargetPropertyFilter>
<Description nlsid="SAMPLE_RULE_1_DESC">Checks for use of a single control file</Description>
<Impact nlsid="SAMPLE_RULE_1_IMPACT">The control file is one of the most
important files in an Oracle database. It maintains many physical characteristics
and important recovery information about the database. If you lose the only copy
of the control file due to a media error, there will be unnecessary down time and
other risks.</Impact>
<Recommendation nlsid="SAMPLE_RULE_1_RECO">Use at least two control files that are multiplexed on different disks.</Recommendation>
<ViolationContextList>
<Column type="String" name="FILE_LIST">
<DisplayLabel nlsid="SAMPLE_RULE_1_COL_1">FILE_LIST</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
<Column type="Number" name="CONTROL_FILE_COUNT">
<DisplayLabel nlsid="SAMPLE_RULE_1_COL_2">CONTROL_FILE_COUNT</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>oracle_database</TargetType>
<MetricName>sample_rule1</MetricName>
<SourceType>SQL</SourceType>
<Source>select CONTROL_FILE_COUNT, FILE_LIST, TARGET_GUID from MGMT$CS_DB_CONTROL_FILE_COUNT</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>FILE_LIST</ColumnName>
<ColumnType>String</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_1_COL_1">FILE_LIST</ColumnLabel>
</MetricColumnInfo>
<MetricColumnInfo>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_1_COL_2">CONTROL_FILE_COUNT</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<MinorWarnThreshold>1</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<ThresholdCriteria>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<TestOperator>EQ</TestOperator>
<ThresholdValue>1</ThresholdValue>
<ThresholdType>Number</ThresholdType>
</ThresholdCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>MinorWarning</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="CONFIGURATION">Configuration</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_1_VIOL_MSG">The database has an insufficient number of control files.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_1_VIOL_CLEAR_MSG">The database has sufficient number of control files.</ClearViolationMessage>
<Author>SYSMAN</Author>
</Rule>

次に、単一のコントロール・ファイルの使用をチェックするサンプル・コンプライアンス・ルールの例を示します。

例: サンプル・ルール2

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule2">
<DisplayName nlsid="SAMPLE_RULE_2_NAME">Sample Rule 2</DisplayName>
<TargetType>oracle_database</TargetType>
<IsSystem>true</IsSystem>
<TargetPropertyFilter>
<PropertyItem>
<PropertyName>orcl_gtp_operating_system</PropertyName>
<ValueList>
<Value>Windows</Value>
</ValueList>
</PropertyItem>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>8.1.6+</Value>
</ValueList>
</PropertyItem>
</TargetPropertyFilter>
<Description nlsid="SAMPLE_RULE_2_DESC">Checks for use of a single control file</Description>
<Impact nlsid="SAMPLE_RULE_2_IMPACT">The control file is one of the most important files in an Oracle database.
It maintains many physical characteristics and important recovery information
about the database. If you lose the only copy of the control file due to a media
error, there will be unnecessary down time and other risks.</Impact>
<Recommendation nlsid="SAMPLE_RULE_2_RECO">Use at least two control files that are multiplexed on different disks.</Recommendation>
<ViolationContextList>
<Column type="String" name="FILE_LIST">
<DisplayLabel nlsid="SAMPLE_RULE_2_COL_1">FILE_LIST</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
<Column type="Number" name="CONTROL_FILE_COUNT">
<DisplayLabel nlsid="SAMPLE_RULE_2_COL_2">CONTROL_FILE_COUNT</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>oracle_database</TargetType>
<MetricName>sample_rule2</MetricName>
<SourceType>SQL</SourceType>
<Source>select CONTROL_FILE_COUNT, FILE_LIST, TARGET_GUID from MGMT$CS_DB_CONTROL_FILE_COUNT</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>FILE_LIST</ColumnName>
<ColumnType>String</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_2_COL_1">FILE_LIST</ColumnLabel>
</MetricColumnInfo>
<MetricColumnInfo>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_2_COL_2">CONTROL_FILE_COUNT</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<MinorWarnThreshold>1</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<ThresholdCriteria>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<TestOperator>EQ</TestOperator>
<ThresholdValue>1</ThresholdValue>
<ThresholdType>Number</ThresholdType>
</ThresholdCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>MinorWarning</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="CONFIGURATION">Configuration</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_2_VIOL_MSG">The database has an insufficient number of control files.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_2_VIOL_CLEAR_MSG">The database has sufficient number of control files.</ClearViolationMessage>
<Author>SYSMAN</Author>
</Rule>

次に、単一のコントロール・ファイルの使用をチェックするコンプライアンス・ルールの例を示します。

例: サンプル・ルール3

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule3">
<DisplayName nlsid="SAMPLE_RULE_3_NAME">Sample Rule 3</DisplayName>
<TargetType>oracle_database</TargetType>
<IsSystem>true</IsSystem>
<TargetPropertyFilter>
<PropertyItem>
<PropertyName>orcl_gtp_operating_system</PropertyName>
<ValueList>
<Value>Windows</Value>
</ValueList>
</PropertyItem>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>8.1.6+</Value>
</ValueList>
</PropertyItem>
</TargetPropertyFilter>
<Description nlsid="SAMPLE_RULE_3_DESC">Checks for use of a single control file</Description>
<Impact nlsid="SAMPLE_RULE_3_IMPACT">The control file is one of the most important files in an Oracle database.
It maintains many physical characteristics and important recovery information
about the database. If you lose the only copy of the control file due to a media
error, there will be unnecessary down time and other risks.</Impact>
<Recommendation nlsid="SAMPLE_RULE_3_RECO">Use at least two control files that are multiplexed on different disks.</Recommendation>
<ViolationContextList>
<Column type="String" name="FILE_LIST">
<DisplayLabel nlsid="SAMPLE_RULE_3_COL_1">FILE_LIST</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
<Column type="Number" name="CONTROL_FILE_COUNT">
<DisplayLabel nlsid="SAMPLE_RULE_3_COL_2">CONTROL_FILE_COUNT</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>false</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>oracle_database</TargetType>
<MetricName>sample_rule3</MetricName>
<SourceType>SQL</SourceType>
<Source>select CONTROL_FILE_COUNT, FILE_LIST, TARGET_GUID from MGMT$CS_DB_CONTROL_FILE_COUNT</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>FILE_LIST</ColumnName>
<ColumnType>String</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_3_COL_1">FILE_LIST</ColumnLabel>
</MetricColumnInfo>
<MetricColumnInfo>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>false</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_3_COL_2">CONTROL_FILE_COUNT</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>CONTROL_FILE_COUNT</ParamName>
<MinorWarnThreshold>1</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<ThresholdCriteria>
<ColumnName>CONTROL_FILE_COUNT</ColumnName>
<TestOperator>EQ</TestOperator>
<ThresholdValue>1</ThresholdValue>
<ThresholdType>Number</ThresholdType>
</ThresholdCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>MinorWarning</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="CONFIGURATION">Configuration</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_3_VIOL_MSG">The database has an insufficient number of control files.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_3_VIOL_CLEAR_MSG">The database has sufficient number of control files.</ClearViolationMessage>
<Author>SYSMAN</Author>
</Rule>

次に、意図しないポートが開いたままになっていないことをチェックするコンプライアンス・ルールの例を示します。

例: サンプル・ルール4

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule4">
<DisplayName nlsid="SAMPLE_RULE_4_NAME">Sample Rule 4</DisplayName>
<TargetType>host</TargetType>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_RULE_4_DESC">Ensure that no unintended ports are left open</Description>
<Impact nlsid="SAMPLE_RULE_4_IMPACT">Open ports may allow a malicious user to take over the host.</Impact>
<Recommendation nlsid="SAMPLE_RULE_4_RECOMM">Do not open insecure ports.</Recommendation>
<ViolationContextList>
<Column type="Number" name="port">
<DisplayLabel nlsid="SAMPLE_RULE_4_PORT_COL">Port Number</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>true</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>host</TargetType>
<MetricName>sample_rule4</MetricName>
<SourceType>SQL</SourceType>
<Source>SELECT target_guid, port as port, port as dummy FROM MGMT$ESM_PORTS_LATEST</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>port</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>true</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_4_LABEL">Port Number</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName nlsid="SAMPLE_RULE_4_DFLT_PORT_PNAME">DFLT_PORT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>DFLT_PORT</ParamName>
<MinorWarnThreshold>655</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<SqlWhereClauseCriteria>
<WhereClause>:port &lt; :DFLT_PORT</WhereClause>
</SqlWhereClauseCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>Critical</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_4_MESG">The host is in an insecure state. Port %port% is open.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_4_CLR_MESG">Port %port% is not open.</ClearViolationMessage>
<Author>ORACLE</Author>
<LastUpdatedBy>&lt;SYSTEM&gt;</LastUpdatedBy>
</Rule>

次に、意図しないポートが開いたままになっていないことをチェックするコンプライアンス・ルールの例を示します。

例: サンプル・ルール5

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule5">
<DisplayName nlsid="SAMPLE_RULE_5_NAME">Sample Rule 5</DisplayName>
<TargetType>host</TargetType>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_RULE_5_DESC">Ensure that no unintended ports are left open</Description>
<Impact nlsid="SAMPLE_RULE_5_IMPACT">Open ports may allow a malicious user to take over the host.</Impact>
<Recommendation nlsid="SAMPLE_RULE_5_RECOMM">Do not open insecure ports.</Recommendation>
<ViolationContextList>
<Column type="Number" name="port">
<DisplayLabel nlsid="SAMPLE_RULE_5_PORT_COL">Port Number</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>true</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>host</TargetType>
<MetricName>sample_rule5</MetricName>
<SourceType>SQL</SourceType>
<Source>SELECT target_guid, port as port, port as dummy FROM MGMT$ESM_PORTS_LATEST</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>port</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>true</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_5_LABEL">Port Number</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName nlsid="SAMPLE_RULE_5_DFLT_PORT_PNAME">DFLT_PORT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>DFLT_PORT</ParamName>
<MinorWarnThreshold>655</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<SqlWhereClauseCriteria>
<WhereClause>:port &lt; :DFLT_PORT</WhereClause>
</SqlWhereClauseCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>Critical</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_5_MESG">The host is in an insecure state. Port %port% is open.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_5_CLR_MESG">Port %port% is not open.</ClearViolationMessage>
<Author>ORACLE</Author>
<LastUpdatedBy>&lt;SYSTEM&gt;</LastUpdatedBy>
</Rule>

次に、意図しないポートが開いたままになっていないことをチェックするコンプライアンス・ルールの例を示します。

例: サンプル・ルール6

<Rule xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_rule6">
<DisplayName nlsid="SAMPLE_RULE_6_NAME">Sample Rule 6</DisplayName>
<TargetType>host</TargetType>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_RULE_6_DESC">Ensure that no unintended ports are left open</Description>
<Impact nlsid="SAMPLE_RULE_6_IMPACT">Open ports may allow a malicious user to take over the host.</Impact>
<Recommendation nlsid="SAMPLE_RULE_6_RECOMM">Do not open insecure ports.</Recommendation>
<ViolationContextList>
<Column type="Number" name="port">
<DisplayLabel nlsid="SAMPLE_RULE_6_PORT_COL">Port Number</DisplayLabel>
<IsHidden>false</IsHidden>
<IsKey>true</IsKey>
</Column>
</ViolationContextList>
<CheckSource>
<RepositoryCheckDefinition>
<Metric>
<TargetType>host</TargetType>
<MetricName>sample_rule6</MetricName>
<SourceType>SQL</SourceType>
<Source>SELECT target_guid, port as port, port as dummy FROM MGMT$ESM_PORTS_LATEST</Source>
<MetricColumnList>
<MetricColumnInfo>
<ColumnName>port</ColumnName>
<ColumnType>Number</ColumnType>
<isKey>true</isKey>
<ColumnLabel nlsid="SAMPLE_RULE_6_LABEL">Port Number</ColumnLabel>
</MetricColumnInfo>
</MetricColumnList>
</Metric>
<ParameterList>
<RuleParameter>
<ParamName nlsid="SAMPLE_RULE_6_DFLT_PORT_PNAME">DFLT_PORT</ParamName>
<ParamType>Number</ParamType>
</RuleParameter>
</ParameterList>
<ParameterDefaultSettings>
<ParamValue>
<ParamName>DFLT_PORT</ParamName>
<MinorWarnThreshold>655</MinorWarnThreshold>
</ParamValue>
</ParameterDefaultSettings>
<TestCondition>
<SqlWhereClauseCriteria>
<WhereClause>:port &lt; :DFLT_PORT</WhereClause>
</SqlWhereClauseCriteria>
</TestCondition>
</RepositoryCheckDefinition>
</CheckSource>
<Severity>Critical</Severity>
<LifeCycleStatus>Production</LifeCycleStatus>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ViolationMessage nlsid="SAMPLE_RULE_6_MESG">The host is in an insecure state. Port %port% is open.</ViolationMessage>
<ClearViolationMessage nlsid="SAMPLE_RULE_6_CLR_MESG">Port %port% is not open.</ClearViolationMessage>
<Author>ORACLE</Author>
<LastUpdatedBy>&lt;SYSTEM&gt;</LastUpdatedBy>
</Rule>

次に、単一のコントロール・ファイルの使用をチェックするルールを含むコンプライアンス標準の例を示します。

例: コンプライアンス標準のサンプル1

<Standard xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_cs1">
<DisplayName nlsid="SAMPLE_CS_1_NAME">Sample Compliance Standard 1</DisplayName>
<TargetType>oracle_database</TargetType>
<TargetPropertyFilter>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>Windows</Value>
</ValueList>
</PropertyItem>
<PropertyItem>
<PropertyName>orcl_gtp_target_version</PropertyName>
<ValueList>
<Value>8.1.6+</Value>
</ValueList>
</PropertyItem>
</TargetPropertyFilter>
<Author>SYSTEM</Author>
<Version>1</Version>
<LifeCycleStatus>Production</LifeCycleStatus>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_CS_1_DESC">Sample Description</Description>
<KeywordList>
<Keyword nlsid="CONFIGURATION">Configuration</Keyword>
</KeywordList>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<Body>
<RuleFolder name="sample_RF_1">
<DisplayName nlsid="SAMPLE_RF_1_NAME">Sample Rulefolder</DisplayName>
<Description nlsid="SAMPLE_RF_1_DESC">This includes rules that checks for use of a single control file</Description>
<ReferenceURL>http://www.oracle.com/db_rf1</ReferenceURL>
<Importance>Normal</Importance>
<RuleReference>
<Name>sample_rule1</Name>
<TargetType>oracle_database</TargetType>
<Importance>Normal</Importance>
</RuleReference>
</RuleFolder>
</Body>
</Standard>

次に、開いたセキュアでないポートをチェックするルールを含むコンプライアンス標準の例を示します。

例: コンプライアンス標準のサンプル2

<Standard xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_cs2">
<DisplayName nlsid="SAMPLE_CS_2_NAME">Sample Compliance Standard 2</DisplayName>
<TargetType>host</TargetType>
<Author>SYSTEM</Author>
<Version>1</Version>
<LifeCycleStatus>Production</LifeCycleStatus>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_CS_2_DESC">Sample Description</Description>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<Body>
<RuleFolder name="sample_RF_2">
<DisplayName nlsid="SAMPLE_RF_2_NAME">Sample Rulefolder</DisplayName>
<Description nlsid="SAMPLE_RF_2_DESC">This includes rules that checks for open insecure ports.</Description>
<ReferenceURL>http://www.oracle.com/db_rf1</ReferenceURL>
<Importance>Normal</Importance>
<RuleReference>
<Name>sample_rule4</Name>
<TargetType>host</TargetType>
<Importance>Normal</Importance>
</RuleReference>
</RuleFolder>
</Body>
</Standard>

次に、開いたセキュアでないポートをチェックするルールを含むコンプライアンス標準の例を示します。

例: コンプライアンス標準のサンプル3

<Standard xmlns="http://www.oracle.com/DataCenter/ConfigStd" oms_version="12.1.0.1.0" name="sample_cs3">
<DisplayName nlsid="SAMPLE_CS_3_NAME">Sample Compliance Standard 3</DisplayName>
<TargetType>host</TargetType>
<Author>SYSTEM</Author>
<Version>1</Version>
<LifeCycleStatus>Production</LifeCycleStatus>
<IsSystem>true</IsSystem>
<Description nlsid="SAMPLE_CS_3_DESC">Sample Description</Description>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<Body>
<RuleFolder name="sample_RF_3">
<DisplayName nlsid="SAMPLE_RF_3_NAME">Sample Rulefolder</DisplayName>
<Description nlsid="SAMPLE_RF_3_DESC">This includes rules that checks for open insecure ports.</Description>
<ReferenceURL>http://www.oracle.com/db_rf1</ReferenceURL>
<Importance>Normal</Importance>
<RuleReference>
<Name>sample_rule5</Name>
<TargetType>host</TargetType>
<Importance>Normal</Importance>
</RuleReference>
</RuleFolder>
</Body>
</Standard>
]]

次に、コンプライアンス・フレームワークの例を示します。

例: コンプライアンス・フレームワークのサンプル

<StandardGroup xmlns="http://www.oracle.com/DataCenter/ConfigStd" name="sample_csg" oms_version="12.1.0.1.0">
<DisplayName nlsid="SAMPLE_CSG_NAME">Sample Compliance Framework</DisplayName>
<Author>SYSTEM</Author>
<Version>1</Version>
<LifeCycleStatus>Production</LifeCycleStatus>
<Description nlsid="SAMPLE_CSG_DESC">Sample Description</Description>
<KeywordList>
<Keyword nlsid="SECURITY">Security</Keyword>
</KeywordList>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<IsHidden>false</IsHidden>
<IsSystem>true</IsSystem>
<GroupBody>
<SubGroup name="SampleSubgroup">
<DisplayName nlsid="SAMPLE_CSG_SUBGROUP_NAME">Sample Child Framework</DisplayName>
<Description nlsid="SAMPLE_CSG_SUBGROUP_DESC">Sample Child framework Description</Description>
<ReferenceURL>http://sampleurl.com</ReferenceURL>
<Importance>Normal</Importance>
<StandardReference>
<Name>sample_cs3</Name>
<Author>SYSTEM</Author>
<Version>1</Version>
<Importance>Normal</Importance>
</StandardReference>
</SubGroup>
</GroupBody>
</StandardGroup>

次に、コンプライアンス・コンテンツの例を示します。

例: コンプライアンス・コンテンツ・バージョン2

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE ComplianceContent [
<!ENTITY rule1 SYSTEM "SampleRule1.xml">
<!ENTITY rule2 SYSTEM "SampleRule2.xml">
<!ENTITY rule3 SYSTEM "SampleRule3.xml">
<!ENTITY rule5 SYSTEM "SampleRule5.xml">
<!ENTITY rule6 SYSTEM "SampleRule6.xml">
<!ENTITY standard1 SYSTEM "SampleComplianceStandard1.xml">
<!ENTITY standard3 SYSTEM "SampleComplianceStandard3.xml">
<!ENTITY standardgroup SYSTEM "SampleComplianceFramework.xml">
]>
<ComplianceContent xmlns="http://www.oracle.com/DataCenter/ConfigStd" name="SampleComplianceContent" oms_version="12.1.0.1.0" content_version="12.1.0.2.0">
<ChangeList>
<!-- ChangeList tag process each of the Change Tag with respect to the version of the ComplianceContent installed in repository. -->

<Change version="12.1.0.1.0">

<!-- AddSubGroupWithinStandardGroup/AddStandardReferenceToStandardGroup tags will modify StandardGroup definition. -->
<!-- AddSubGroupWithinStandardGroup will introduce a subgroup within an existing  compliance framework/standard group in repository. -->
<!-- AddStandardReferenceToStandardGroup will introduce a reference to a standard within an existing  compliance framework/standard group in repository. -->

<AddSubGroupWithinStandardGroup order="2">
<StandardGroupName>oracle_pci</StandardGroupName>
<StandardGroupAuthor>ORACLE</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
<SubGroup name="sampleSubgroup1">
<DisplayName>sub1</DisplayName>
<ReferenceURL>http://sampleAddedSubgroup.com</ReferenceURL>
<Importance>High</Importance>
</SubGroup>
</AddSubGroupWithinStandardGroup>
<AddStandardReferenceToStandardGroup>
<StandardGroupName>oracle_pci</StandardGroupName>
<StandardGroupAuthor>ORACLE</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
<SubGroupListInfo>
<SubGroupElem>oracle_pci_ctrlobj_a</SubGroupElem>
</SubGroupListInfo>
<StandardReference>
<Name>sample_cs1</Name>
<Author>SYSTEM</Author>
<Version>1</Version>
</StandardReference>
</AddStandardReferenceToStandardGroup>
</Change>

<Change version="12.1.0.2.0">

<!-- Delete will be remove rule/standard from repository if present, else it will be noop. -->

<DeleteStandard>
<StandardName>sample_cs2</StandardName>
<StandardAuthor>SYSTEM</StandardAuthor>
<StandardVersion>1</StandardVersion>
</DeleteStandard>

<DeleteRule>
<RuleName>sample_rule4</RuleName>
<TargetType>host</TargetType>
</DeleteRule>

<!-- Entities with Update tag will override definitions if they exist in the repository. -->
<!-- Please note that if standard/rule is updated then old results are
replaced by new results based on standard/rule definition after update.  -->

<UpdateRule>
<RuleName>sample_rule5</RuleName>
<TargetType>host</TargetType>
</UpdateRule>
<UpdateStandard>
<StandardName>sample_cs3</StandardName>
<StandardAuthor>SYSTEM</StandardAuthor>
<StandardVersion>1</StandardVersion>
</UpdateStandard>

<UpdateStandardGroup>
<StandardGroupName>sample_csg</StandardGroupName>
<StandardGroupAuthor>SYSTEM</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
</UpdateStandardGroup>

<!-- AddSubGroupWithinStandardGroup will introduce a subgroup within an existing  compliance framework/standard group in repository. -->
<!-- AddStandardReferenceToStandardGroup will introduce a reference to a standard within an existing  compliance framework/standard group in repository. -->

<AddSubGroupWithinStandardGroup order="2">
<StandardGroupName>oracle_pci</StandardGroupName>
<StandardGroupAuthor>ORACLE</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
<SubGroup name="sampleSubgroup2">
<DisplayName>sub2</DisplayName>
<ReferenceURL>http://sampleAddedSubgroup.com</ReferenceURL>
<Importance>High</Importance>
</SubGroup>
</AddSubGroupWithinStandardGroup>
<AddStandardReferenceToStandardGroup>
<StandardGroupName>oracle_pci</StandardGroupName>
<StandardGroupAuthor>ORACLE</StandardGroupAuthor>
<StandardGroupVersion>1</StandardGroupVersion>
<SubGroupListInfo>
<SubGroupElem>oracle_pci_ctrlobj_a</SubGroupElem>
</SubGroupListInfo>
<StandardReference>
<Name>sample_cs3</Name>
<Author>SYSTEM</Author>
<Version>1</Version>
</StandardReference>
</AddStandardReferenceToStandardGroup>
</Change>

</ChangeList>
<!--List of compliance standard rules -->
&rule1;
&rule2;
&rule3;
&rule5;
&rule6;
<!--List of compliance standards -->
&standard1;
&standard3;
<!--List of compliance standard groups/frameworks -->
&standardgroup;
</ComplianceContent>

13.11 自己更新を使用したコンプライアンス・コンテンツの公開

プラグインをデプロイせずにコンプライアンス・コンテンツを公開するには、自己更新コンソールを使用します。

自己更新コンソールからコンプライアンス・コンテンツを公開および適用する手順:

1. 次のコマンドを使用して、XMLコンテンツからコンプライアンス・コンテンツJARファイルを作成します。

-jar cvfM compliancecontent.jar compliance_content_files

注意:
同様に、複数のDLFファイルをJARファイルで結合できます。

2. マニフェスト・ファイルを作成して、コンプライアンス・コンテンツの名前、ラベルおよび公開するコンプライアンス・コンテンツのバージョンを指定します。このマニフェスト・ファイルでは、compliancecontent.jarとcompliancedlf.jarをそれぞれ順番に指定します。
例: マニフェスト・ファイルのサンプル

<?xml version="1.0" encoding="utf-8"?>
<tns:EntityInstance xmlns:tns="http://www.oracle.com/EnterpriseGridControl/SelfUpdateManifest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EntityType="param" EntityTypeVersion="12.1.0.1.0" Vendor="Oracle" Maturity="TEST">

<tns:Description><![CDATA[<param>]]></tns:Description>

<tns:AttributeList>
<tns:Version>12.1.0.1.0</tns:Version>
<tns:Attribute Name="name" Value="<param>" Label="display_name"/>
</tns:AttributeList>
<tns:Readme><![CDATA[ <param>]]>
</tns:Readme>
<tns:CustomParamList/>
<tns:DependsOn/>
<tns:ArchiveList>
<tns:Archive Filename="param"/>
<tns:Archive Filename="param"/>
</tns:ArchiveList>
<tns:CustomData/>
</tns:EntityInstance>

3. 次のコマンドを使用して、マニフェスト・ファイル、compliancecontent.jarおよびcompliancedlf.jarからSAR (自己更新アーカイブ)ファイルを作成します。

edkutil prepare_update -manifest manifest_file_name -archivedir directory_containing_compliancecontent.jar_and_compliancedlf.jar -out sar_file_name

注意:
SARファイルをEnterprise Managerにインポートする前に、ソフトウェア・ライブラリが構成されていることを確認します。
詳細は、第14.5.1.1項「ソフトウェア・ライブラリの設定」を参照してください。

4. 次のコマンドを使用して、SARファイルをEnterprise Managerにインポートします。

emcli import_update -omslocal -file=complete_path_to_sar_file

注意:
-omslocalフラグの使用は、ファイルをOracle Management Server (OMS)ファイル・システムに置く必要があることを意味します。

5. Enterprise Managerにログインします。「設定」メニューで、「拡張性」、「自己更新」の順に選択します。
「自己更新」ページが表示されます。

6. 「ステータス」領域で、「コンプライアンス・コンテンツ」の「ダウンロードされた更新」が1に設定されていることを確認します。

7. 「タイプ」列で、「コンプライアンス・コンテンツ」をクリックします。
「自己更新: コンプライアンス・コンテンツ」ページが表示されます。

8. 「ステータス」列が「ダウンロード」の行を選択し、「適用」をクリックします。表示されるウィザードのステップに従います。

9. 「アクション」リストで、「適用」」を選択し、「ステータス」列が「成功」であることを確認します。

10. 「コンプライアンス・ライブラリ」から、インポートされたコンプライアンス・コンテンツを確認します。「コンプライアンス・ライブラリ」を表示するには、「エンタープライズ」メニューで、「コンプライアンス」、「ライブラリ」の順に選択します。

14 プラグインの検証、パッケージ化およびデプロイ

この章の内容は次のとおりです。

- プラグインの検証、パッケージ化およびデプロイの概要

- プラグインのステージング

- プラグインの検証

- プラグイン・アーカイブの作成

- Enterprise Managerへのプラグイン・アーカイブのインポートおよびデプロイ

- ターゲット・インスタンスの追加

- メタデータ登録サービス(MRS)を使用したデプロイ済メタデータ・ファイルの更新

14.1 プラグインの検証、パッケージ化およびデプロイの概要

プラグイン開発者は、検証、パッケージ化およびデプロイ・プロセスにおいて、次の手順に従う必要があります。

1. ステージング・ディレクトリ(plugin_stage)を作成します。
ステージング・ディレクトリの構造は、ファイルがOracle Management Serviceおよび管理エージェントにデプロイされる際のファイルの場所を定義します。

詳細は、第14.2項「プラグインのステージング」を参照してください。

2. プラグインを検証します。
プラグインを設計し開発したら、empdk validate_pluginコマンドを使用して、その内容を検証します。このコマンドは、XMLメタデータ・ファイルが標準に準拠しているかどうかを検証します。

詳細は、第14.3項「プラグインの検証」を参照してください。

3. Oracleプラグイン・アーカイブ(OPAR)・ファイルを作成します。
プラグイン・アーカイブは、Enterprise Manager Cloud Controlの様々なインストールにプラグインをインポートしデプロイするための、プラグインの標準的な配布方法です。

詳細は、第14.4項「プラグイン・アーカイブの作成」を参照してください。

4. OPARをEnterprise Managerにインポートします。
emcli import_updateコマンドを使用して、Enterprise Managerにプラグインをインポートします。

詳細は、第14.5項「Enterprise Managerへのプラグイン・アーカイブのインポートおよびデプロイ」を参照してください。

5. プラグインをデプロイします。
プラグインをターゲットの監視に使用するには、まずプラグインをOracle Management Serviceにデプロイする必要があります。

詳細は、第14.5.3項「Oracle Management Service (OMS)へのプラグインのデプロイ」を参照してください。

6. デプロイされたプラグインによって監視されるターゲット・インスタンスを追加します。
詳細は、第14.6項「ターゲット・インスタンスの追加」を参照してください。

7. メタデータ登録サービス(MRS)を使用して、更新されたメタデータ・ファイルをデプロイします。
MRSを使用すると、1つ以上の更新されたメタデータ・ファイルを、プラグインがデプロイされているOracle Management Serviceおよび管理エージェントにアップロードできます。MRSは、更新されたメタデータ・ファイルをEnterprise Managerに登録し、その更新内容で既存のメタデータを上書きします。

詳細は、14.7項「メタデータ登録サービス(MRS)を使用してデプロイされたメタデータ・ファイルの更新」を参照してください。

14.2 プラグインのステージング

プラグイン・ファイルを作成したら、次の手順としてプラグインをステージングし、検証およびパッケージ化の準備をします。ステージング・ディレクトリの構造は、ファイルがOracle Management Serviceおよび管理エージェントにデプロイされる際のファイルの場所を定義します。

次の例はステージング・ディレクトリ構造の例を示し、表14-1はアーカイブ・ディレクトリ構造について説明しています。ファイルは、Oracle Management Service、管理エージェントまたは両方にデプロイされるのかに応じてアーカイブに配置されます。プラグインがOMSインスタンスまたは管理エージェントにデプロイされると、必要なファイルがそれぞれのディレクトリの場所にコピーされます。

例: プラグインのディレクトリ構造

plugin_stage/
|
plugin.xml
agent/
|
plugin_registry.xml
default_collection/
|
target_type.xml
metadata/
|
target_type.xml
scripts/
|
scripts
oms/
|
metadata/
|
default_collection/
|
target_type.xml
derivedAssoc/
|
derivedAssoc_rule.xml
discovery/
|
discovery.xml
gccompliance/
|
ComplianceContent_name.xml
jobTypes/
|
job_type.xml
mpcui/
|
mpcui.xml
reports/
|
report.xml
snapshotlive/
|
target-type_ecmdef.xml
targetType/
|
target_type.xml
discovery/
|
discovery scripts

注意:
アーカイブ内で指定されているサブディレクトリ名の使用は必須ではありませんが、この名前の使用をお薦めします。

表14-1 プラグイン・アーカイブ構造におけるファイルの場所

ファイル

ディレクトリ

注意

plugin.xml

plugin_stage/

必須。このファイルは、Oracle Management Serviceにデプロイされる汎用的なプラグイン・メタデータを定義します。アーカイブ構造内のルート・レベルに配置します。詳細は、第2.3.1項「plugin.xml Fileの作成」を参照してください。

plugin_registry.xml

plugin_stage/agent/

必須。このファイルは、管理エージェントによって使用されるプラグインを記述するメタデータを定義します。/agentディレクトリの最上位レベルに配置する必要があります。詳細は、第2.3.2項「plugin_registry.xmlファイルの作成」を参照してください。

target_type.xml

plugin_stage/oms/metadata/targetType/

plugin_stage/agent/metadata/

必須。このファイルは、ターゲット・タイプについて収集または計算するメトリックを定義します。

このファイルの同一のコピーを/omsディレクトリと/agentディレクトリの両方に配置する必要があります。詳細は、項3.3「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

default_collections.xml

plugin_stage/oms/metadata/default_collection/

plugin_stage/agent/default_collection/

必須。このファイルは、メトリック・データ収集頻度やデフォルトのメトリック・アラートしきい値などのメトリック収集パラメータを定義します。

このファイルの同一のコピーを/omsディレクトリと/agentディレクトリの両方に配置する必要があります。詳細は、項3.5「デフォルトの収集ファイルの作成」を参照してください。

注意: デフォルト収集メタデータ・ファイルには、ターゲット・タイプのメタデータ・ファイルと同じファイル名を指定することをお薦めします。

target-type_ecmdef.xml

plugin_stage/oms/metadata/snapshotlive/

オプション。構成データ収集を定義します。詳細は、項7.3.1「構成収集表の定義」を参照してください。

job_type.xml

plugin_stage/oms/metadata/jobTypes/

オプション。すべてのジョブ・タイプ定義ファイルを/jobTypesディレクトリに配置します。詳細は、第8章「ジョブ・タイプの追加」を参照してください。

report.xml

plugin_stage/oms/metadata/reports/

オプション。レポート定義ファイルを/reportsディレクトリに配置します。

derivedAssoc_rule.xml

plugin_stage/oms/metadata/derivedAssoc/

オプション。アソシエーションの導出ルール(またはルール・セット)を定義するメタデータ・ファイルをこのディレクトリに配置します。詳細は、第11章「導出されたアソシエーションの使用」を参照してください。

ComplianceContent_name.xml

plugin_stage/oms/metadata/gccompliance/

オプション。ComplianceContent_name.xmlには、コンプライアンスの標準、ルールおよびフレームワークへの参照が含まれます。このディレクトリには、コンプライアンス・ルール、コンプライアンス標準およびコンプライアンス・フレームワークXMLファイルを含められます。詳細は、第13.8項「コンプライアンスXMLのパッケージ」を参照してください。

compliance.dlf

plugin_stage/oms/rsc/area/gccompliance/

オプション。コンプライアンスのルールまたは標準定義に関連付けられたすべてのデータ・ロード形式(DLF)マップ・エントリ・ファイルをこのディレクトリに配置します。

mpcui.xml

plugin_stage/oms/metadata/mpcui/

オプション。すべての管理ユーザー・インタフェースのメタデータ・ファイルをこのディレクトリに配置します。詳細は、第9章「管理ユーザー・インターフェースの定義」を参照してください。

discovery.xml

plugin_stage/oms/metadata/discovery/

オプション。検出メタデータ・ファイルをこの場所に配置します。詳細は、第12.4項「検出XMLおよび検出コンテンツのパッケージ化」を参照してください。

検出スクリプト・ファイル

plugin_stage/discovery/

オプション。自動検出を実行するために必要なPerlスクリプトおよびJARファイル(存在する場合)を、この場所に配置します。詳細は、第12.4項「検出XMLおよび検出コンテンツのパッケージ化」を参照してください。

スクリプト・ファイル

plugin_stage/agent/scripts/

オプション。fetchletによって起動されるメトリック収集スクリプトなど、管理エージェントにデプロイされるスクリプトをこの場所に配置します。

/scriptsディレクトリでは、target-type.xmlファイルおよびジョブ・タイプ・コマンド・リファレンスで定義されたメトリック問合せ記述子の%scriptsDir%トークンの使用が可能であるため、このディレクトリの使用は必須ではありませんが、推奨されています。

14.2.1 プラグイン・ディレクトリ内のファイル権限の変更

プラグイン・ディレクトリにあるパッケージ化されたスクリプトのカスタマイズ済ファイル権限を指定するには、次の手順を実行します。

1. 関連するディレクトリ(oms、agentまたはdiscovery)に次のテキスト・ファイルを作成します。

plugin_stage/oms/file_permissions.txt
plugin_stage/agent/file_permissions.txt
plugin_stage/discovery/file_permissions.txt

2. 複数のファイルの権限を1行に1つずつ指定します。テキスト・ファイルの形式は次のとおりです。
file_name:file_permission_number

または

file_pattern:file_permission_number

これらの形式の詳細は次のとおりです。

- file_nameは、権限が変更されるファイルの名前を表します

- file_patternは、特定のファイル・タイプやあるパターンを含むすべてのファイル名など、スクリプトで検索するパターンを表します。これで、一致したすべてのファイルの権限が変更されます。

- file_permission_numberは、ファイルのUNIX権限の記述を表します。これが、一致したファイルの新しい権限の値になります。

たとえば、plugin_stage/omsディレクトリ内にあるすべてのexample1.shの権限を655に変更するには、plugin_stage/oms/file_permissions.txtファイルに次のエントリを追加します。

example1.sh:655

plugin_stage/discoveryディレクトリ内にある(ファイル・タイプ*.shの)すべてのスクリプト・ファイルの権限を655に変更するには、plugin_stage/discovery/file_permissions.txtファイルに次のエントリを追加します。

*.sh:655

たとえば、plugin_stage/agentディレクトリ内にあるabcで始まるすべてのファイルの権限を655に変更するには、plugin_stage/agent/file_permissions.txtファイルに次のエントリを追加します。

abc*:655

3. file_permissions.txtファイルを保存して閉じます。これらの権限は、OPARでのプラグイン作成時に読み取られて保持され、その後のプラグイン・ソフトウェア・インストール時に使用されます。プラグイン作成の詳細は、第14.4項「プラグイン・アーカイブの作成」を参照してください。

14.3 プラグインの検証

プラグインの検証は、開発サイクル全体を通して行い、パッケージ化する前にも行います。プラグインを設計し開発したら、empdk validate_pluginコマンドを使用してプラグインのコンテンツを検証し、XMLメタデータ・ファイルが標準に準拠していることを確認します。ツールは、指定されたプラグインのステージング・ディレクトリに対して実行され、検出された違反についてレポートを生成します。-formatオプションを使用して生成されたレポートの形式を指定します。

次の例では、コマンドの使用方法を示します。

例: empdk validate_pluginコマンドの使用方法

empdk validate_plugin -stage_dir staging directory
[-tmp_dir temporary working location]
[-out_dir output directory]
[-format (html|text|xml)]
[-conn_desc] - not used by external developers
[-repos_user Enterprise Manager repository owner]
[-debug [file to output debug information to]]

次の例は、指定されたステージング・ディレクトリにあるプラグイン・ソース・ファイルを検証し、検証レポートを現在の作業ディレクトリにテキスト・ファイルとして生成します。

edk\bin>empdk validate_plugin -stage_dir C:\plugin_staging -format text

表14-2は、プラグインの検証に使用できるオプションを示しています。

表14-2 プラグインの検証オプション

オプション

説明

-tmp_dir

プラグイン・ファイルの抽出先となる一時的な場所を指定します。指定しない場合は、デフォルトで現在のディレクトリが使用されます。

-out_dir

検証レポート・ファイルの生成先となるディレクトリ。指定しない場合、レポート・ファイルは現在の作業ディレクトリに生成されます。

-debug

デバッグ情報を格納するファイルの名前を指定します。指定しない場合、デフォルト・ログ・ファイル(validateplugin.logtime)がoutディレクトリに作成され、警告およびエラー・メッセージのみを格納します。指定した場合、すべてのデバッグ情報がそのログ・ファイルに格納されます。

-format

検証レポートの生成に使用される形式。指定しない場合、レポートは、テキスト・ファイルとして生成されます。

14.4 プラグイン・アーカイブの作成

プラグインのステージング・ディレクトリを作成しプラグインを検証したら、次の手順として、Oracleプラグイン・アーカイブ(OPAR)・ファイルを作成します。OPARファイルは、プラグインのライフサイクルの様々な段階で重要な役割を果たします。次のように使用されます。

- プラグイン・アーカイブは、Enterprise Manager Cloud Controlの様々なインストールにプラグインをインポートしデプロイするための、プラグインの標準的な配布方法です。

- 開発中のプラグインをEnterprise Manager Cloud Controlインストールでテストする必要があります。

プラグインは、前述したファイルをEnterprise Manager拡張開発キット(EDK)を使用してOPARに追加することで作成します。EDKの詳細は、『Oracle Enterprise Manager Cloud Control拡張プログラマーズ・ガイド』を参照してください。

OPARコマンドを作成するには、コマンド・プロンプトでempdk create_pluginコマンドを入力します。create_plugin動詞の詳細は、コマンドライン・ヘルプを参照してください

empdk create_pluginコマンドの構文は次のとおりです。

empdk create_plugin -stage_dir staging dir -conn_desc repository_connection_string -repos_user username [-repos_password repos_password]
-out_dir output_directory [-debug] [-force]

例:

edk\bin>empdk create_plugin -stage_dir C:\pluginstagdir -conn_desc myhost.us.example.com:25055:$ORACLE_SID -repos_user sysman -out_dir /tmp/plugins

表14-3は、OPARの作成に使用できるオプションを示しています。

表14-3 OPARの作成オプション

オプション

説明

-tmp_dir

このオプションにより、コマンドの実行中に一時ディレクトリが作成されます。オプションの後に値を指定して、これに使用するパスを指定できます。既存のディレクトリを指定する必要があり、それ以外はエラーが返されます。指定しない場合、outディレクトリが一時的な場所に使用されます。outディレクトリが指定されていない場合、現在のディレクトリがデフォルトとなります。

-out_dir

プラグイン・アーカイブ(*.opar)・ファイルが作成されるディレクトリ。指定しない場合、プラグイン・アーカイブは現在のディレクトリに作成されます。

-debug

デバッグ情報を格納するファイルの名前を指定します。指定しない場合、デフォルト・ログ・ファイル(createplugin.logtime)がoutディレクトリに作成され、警告およびエラー・メッセージのみを格納します。指定した場合、すべてのデバッグ情報がそのログ・ファイルに格納されます。このデバッグ情報は、プラグインの作成中に発生する可能性のある問題の特定に使用できます。プラグインの作成に関連する問題についてサポート・リクエストを報告する際に、作成されたログを追加できます。

-force

outディレクトリに、同じ名前のOPARが含まれている場合、既存のOPARを上書きするかどうかを指定するプロンプトが表示されます。このオプションを指定した場合、既存のOPARは自動的に上書きされます。デフォルトでは、出力が無効化されます。

-conn_desc

プラグインがEnterprise Managerにインポートされるときにプラグイン・メタデータが書き込まれる管理リポジトリに接続する接続記述子。

構文: host:port:sidを使用して接続記述子を指定します。

例:

myhost.us.example.com:25055:$ORACLE_SID

-repos_user

管理リポジトリに接続されるユーザー。

コマンドの実行が成功すると、plugin_version.plugin_id.oparアーカイブがこのコマンドを実行したディレクトリに作成されます。

コマンドが失敗すると、対応するエラー・メッセージが表示されます。コマンドに渡されるパラメータは、ユーザーごと、およびプラグインが作成されるシステムごとに異なります。

プラグイン・アーカイブを作成する際の一般的なミスの例を次に示します。

- ステージング・ディレクトリへのパスを誤って入力した場合、ファイルが見つからない、または入力が見つからないという例外が発生します。

- 現在のディレクトリを、展開されたEDKディレクトリに変更していない場合、empdkコマンドが見つからないという例外が表示されます。

- OPARを作成しようとしているディスクのメモリーが不十分な場合、入力/出力関連の例外が発生することがあります。

14.5 Enterprise Managerへのプラグイン・アーカイブのインポートおよびデプロイ

ユーザーの*.oparファイルでプラグイン・アーカイブを準備したら、プラグインをEnterprise Managerにインポートする必要があります。インポートすると、作成しパッケージ化したプラグインの内容がEnterprise Managerで使用できるようになります。

注意:
プラグインをEnterprise Managerにデプロイするには、まずプラグインをインポートする必要があります。

14.5.1 プラグインをインポートするための前提条件

プラグインをインポートする前に、次の前提条件を満たす必要があります。

14.5.1.1 ソフトウェア・ライブラリの設定

1. Enterprise Managerがインストールされているシステムにフォルダを作成します。たとえば、/net/hostname/scratch/aime/swlib1のようになります。

2. コンソールから、「Enterprise」、「プロビジョニングとパッチ適用」、「ソフトウェア・ライブラリ」の順に選択します。

3. 「アクション」、「管理」の順に選択します。

4. 「追加」をクリックします。

5. ポップ・アップ・ウィンドウで、名前および場所を入力します。たとえば、swlib1および/net/hostname/scratch/aime/swlib1のようになります。これはステップ1で作成したフォルダにする必要があります。

6. 処理が終了するまで待ちます。

14.5.1.2 EM CLIユーティリティの設定

Enterprise Managerへのデプロイ用のプラグイン・アーカイブをインポートするには、Enterprise Managerコマンドライン・ユーティリティ、つまりEM CLIを使用します。

- Cloud ControlコンソールにEM CLIの設定手順を示すページが表示されます。次のURLのページにアクセスします。

https://em_host:em_port/em/console/emcli/download

例:

https://emserver.test.com:7799/em/console/emcli/download

- EM CLIを設定した後、EM CLIクライアントとOracle Management Service (OMS)を同期化します。

emcli sync

同期化した後、このOMSで使用可能なすべての動詞および関連付けられたコマンドライン・ヘルプが、EM CLIクライアントで使用可能になります。

14.5.2 プラグイン・アーカイブのインポート

パッケージ化した後、emcli import_updateコマンドを使用して、プラグインをEnterprise Manager Cloud Controlにインポートする必要があります。EM CLIがインストールされている場所に応じて、2つのオプションがあります。

- EM CLIがプラグイン・アーカイブ(*.oparファイル)を作成したシステムと同じシステム上にある場合は、次のコマンドを実行します。

emcli import_update
-file=”<path to *.opar file you created>”
-omslocal

-omslocalフラグは、プラグイン・アーカイブがこのコマンドを実行中の同じシステム上にあることと、パスがこのシステムに存在することを示しています。

例:

emcli import_update -file=/tmp/sample_plugin.opar -omslocal

- プラグイン・アーカイブ(*.oparファイル)を作成したシステムと異なるシステム上でEM CLIを実行している場合は、次のコマンドを実行します。

emcli import_update
-file=”path to the .opar file”
-host="host name of plug-in host"
-credential_name="credential for plug-in host"
-credential_owner="credential owner on the plug-in host"

詳細は次のとおりです。

- -file: アーカイブを作成したシステム上の*.oparファイルへの絶対パス。

- -host: ファイルが使用可能なホスト・ターゲットのホスト名。

- -credential_name: 接続先のリモート・システムにある資格証明の名前。

- -credential_owner: 接続先のホスト・システムにある資格証明の所有者。

例:

emcli import_update -file=/tmp/sample_plugin.opar -host="host1.test.com" -credential_name="myOracleCred" -credential_owner="mypassword"

- 前述の手順の代替方法として、次のコマンドを実行することもできます。

emcli import_update
-file=”path to *.opar file you created”
-host="hostname"
-credential_set_name="setname"

-credential_set_name: ホスト・ターゲットに対する管理リポジトリに格納されている優先資格証明のセット名。次のいずれかになります。

- HostCredsNormal: デフォルトの権限のない資格証明セット。

- HostCredsPriv: 権限付きの資格証明セット。

14.5.3 Oracle Management Service (OMS)へのプラグインのデプロイ

プラグインをターゲットの監視に使用できるようにするには、最初にプラグインをOracle Management Service (OMS)にデプロイする必要があります。Enterprise Manager Cloud Controlでプラグインをデプロイするには、次の手順を実行します。

注意:
管理エージェントにデプロイする前に、Oracle Management Serviceにプラグインをデプロイする必要があります。
特定のターゲット・タイプ用のプラグインは、それらのターゲット・タイプを監視する管理エージェントに自動的にデプロイされます。詳細は、第14.6項「ターゲット・インスタンスの追加」を参照してください。

Oracle Management Serverにプラグインをデプロイする手順:

1. 「設定」メニューから「拡張性」、「プラグイン」の順に選択します。
ダウンロード済でプラグイン・ページにデプロイできるプラグインのリストが表示されます。

2. プラグイン・ページで、デプロイする特定のプラグインを選択します。

3. 「デプロイ先」をクリックし、「管理サーバー」を選択します。
依存プラグインがデプロイされていることと、すべての既存の管理エージェントが指定されたプラグインのバージョンと互換性があることを確認します。管理エージェントが使用できない場合、資格証明の入力が求められます。

4. 「プラグインのデプロイ」ウィンドウで、必要な詳細を指定します。デプロイ・プロセスの完了には、管理リポジトリのSYSユーザー・パスワードが必要になるので注意してください。
バージョン・リストから、プラグインのバージョンを選択します。ターゲット・タイプ情報が表に表示されます。リポジトリSYSパスワードを入力して、「続行」をクリックします。

5. 「プラグインのデプロイ」ウィンドウの手順に進みます。

6. 「デプロイ」をクリックして、選択したプラグインをすべてのEnterprise Managerサーバーにデプロイします。
デプロイ・ステータスを監視できるページが表示されます。選択したプラグインがすべてのEnterprise Managerサーバーにデプロイされます。

デプロイ・ステータスを監視することもできます。これを行うにはEnterprise Manager Cloud Controlコンソールに移動し、ステップ1のようにプラグイン・ページに移動します。続いてプラグインを選択し、選択したプラグインのページ最下部で「最近のデプロイメント・アクティビティ」タブを選択します。この最下部セクションには、プラグインの詳細(プラグインID、バージョン、ベンダーなど)も表示されます。

プラグインのデプロイ中にいずれかのステップが失敗した場合、ログ・ファイルは$ORACLE_HOME/cfgtoollogs/pluginca/*で入手できます。プラグインのデプロイ時の失敗に対するサポート・リクエストを記録する際は、これらのファイルも追加してください。また、このログは問題のデバッグに使用することもできます。

14.5.4 プラグインのデプロイに関する重要事項

- 同じプラグインの複数のバージョンをインポートできます。デプロイするバージョンは、プラグインのデプロイにCloud Controlを使用する場合はリストから選択でき、EM CLIを使用する場合はコマンドラインで指定できます。

- どの場合でも、Oracle Management Service (OMS)にデプロイできるのは1つのバージョンのみです。より最新のバージョンがすでにデプロイされている場合、以前のバージョンにダウングレードすることはできません。

- プラグインを新規バージョンに更新しても、インポートされている以前のプラグインの内容は削除されません。

- 管理エージェントは、OMSにデプロイされているプラグインと同じバージョンまたは以前のバージョンを保有できます。OMS上のバージョンよりも後のバージョンは、管理エージェント・ホストで使用できません。

- OMS上および管理エージェント上のプラグインは、OMS上のバージョンが最新バージョンである限り、それぞれ個別に更新できます。

- 使用可能な更新はプラグイン・ページに表示されます。これらは、Enterprise Managerストアからダウンロードするか、第14.5.2項「プラグイン・アーカイブのインポート」で説明しているように、EM CLIを使用してインポートできます。

14.6 ターゲット・インスタンスの追加

プラグインがOMSにデプロイされると、ターゲット・インスタンスを監視する準備が完了します。

注意:
現在のCloud Controlリリースでは、ターゲットを監視する管理エージェントへのプラグインのデプロイはもう必要ありません。かわりに、特定のターゲット・タイプに対するプラグインが、そのタイプのターゲットを監視する管理エージェントとともに自動的にデプロイされます。
これは、前のリリースから大きく変更された点であり、以前は、まずプラグインを管理エージェントに手動でデプロイする必要がありました。次に、ターゲット・インスタンスを管理エージェントに手動で追加する必要がありました。

プラグインがEnterprise Manager Cloud Controlから監視するターゲットを追加するには、「設定」メニューから「ターゲットの追加」を選択します。ターゲットを追加するプロセス、すなわちCloud Controlの用語におけるターゲット昇格は、選択するオプションによって異なります。

EM CLIユーティリティを使用して、ターゲット・インスタンスを追加することもできます。コマンド・プロンプトを開き、次のコマンドを実行します。

emcli add_target
-name="name"
-type="type"
-host="hostname"
[-properties="pname1:pval1;pname2:pval2;..."]...
[-separator=properties="sep_string"]
[-subseparator=properties="subsep_string"]
[-credentials="userpropname:username;pwdpropname:password;..."]
[-input_file="parameter_tag:file_path"]
[-display_name="display name"]
[-groups="groupname1:grouptype1;groupname2:grouptype2;..."]...
[-timezone_region="gmt offset"]
[-monitor_mode="monitor mode"]
[-instances="rac database instance target name1:target type1;..."
]

例:

emcli add_target
-name="cluster_database"
-type="rac_database"
-host="myhost.us.example.com"
-monitor_mode="1"
-properties="ServiceName:service.us.example.com;ClusterName:newdb_cluster"
-instances="database_inst1:oracle_database;database_inst2:oracle_database"

emcli help add_targetヘルプ・コマンドを使用すると、ターゲット・インスタンスを追加する際のその他のオプションを表示できます。

ターゲットが以前に追加されている場合、それらは、プラグインがデプロイされた後にそのプラグインによって昇格および監視されます。

14.7 メタデータ登録サービス(MRS)を使用したデプロイ済メタデータ・ファイルの更新

プラグイン開発プロセスの一環として、プラグインをアーカイブとしてパッケージ化し、Enterprise Manager Cloud Controlインストールにデプロイしてテストします。ただし、様々なメタデータ・ファイルに変更を加えるたびに、プラグインを再デプロイすることは避けたいのが一般的です。

注意:
メタデータ・ファイルを更新するたびに、メタデータのバージョンを更新する必要があります。

メタデータ登録サービス(MRS)を使用すると、1つ以上の更新されたメタデータ・ファイルを、プラグインがデプロイされているOracle Management Serviceおよび管理エージェントにアップロードできます。更新されたメタデータ・ファイルはEnterprise Managerに登録され、その更新内容で既存のメタデータを上書きします。

注意:
ターゲット・タイプおよびデフォルト収集については、MRSの使用に追加の手順が必要です。第14.7.1項「ターゲット・タイプおよびデフォルトの収集」を参照してください。

このサービスは、emctl register oms metadataコマンドを使用して起動します。構文は、次のとおりです。

emctl register oms metadata -service Metadata Service Id (-file metadata file to register | -file_list file containing list of files to register)
[-core | -pluginId Plugin Id] [-sysman_pwd "sysman password"]

たとえば、次のコマンドは、ターゲット・タイプのメタデータ・ファイルへの変更を登録します。

emctl register oms metadata -service targetType -file /staging/demo_hostsample.xml -pluginId test.demo.xyz -sysman_pwd myempassword

表14-4は、コマンドの使用方法を説明しています。

表14-4 emctlコマンドの使用方法

オプション

必須Y/N

説明

-service

Y

登録するメタデータの種類を指定します。値は次のとおりです。

- targetType: ターゲット・タイプ・メタデータに指定します。

- default_collection: デフォルト収集メタデータに指定します。

- LiveSnapshotRegistration: 構成メタデータ登録に指定します

- CredStoreMetadata: 指定します

- jobTypes: 指定します

- report: レポート・メタデータ登録に指定します

- bipublisherreport: BI Publisherのレポート・メタデータに指定します。

- discovery: 検出メタデータに指定します。

- derivedAssocs: アソシエーション・メタデータに指定します。

- gccompliance: コンプライアンス・ルール、コンプライアンス標準およびコンプライアンス・フレームワークのメタデータに指定します。

- mpcui: 管理ユーザー・インタフェース・メタデータに指定します。

-file

N

アップロードおよび登録対象の単一メタデータ・ファイルのパスおよびファイル名。-fileまたは-file_listのいずれかを指定できます。

-file_list

N

メタデータ・ファイルのパス・リストを含むファイル(各行に1つ)のパスおよびファイル名。

-core

N

プラグイン開発では無効です。

-pluginId

N

更新対象のデプロイ済プラグインに付与される、3つの部分から構成される一意の識別子。詳細は、第2.2.1項「プラグインIDの定義」を参照してください。

-sysman_pwd

Y

Enterprise Managerユーザーのパスワード。

14.7.1 ターゲット・タイプおよびデフォルト収集

ターゲット・タイプおよびデフォルト収集については、このターゲット・タイプの既存のターゲットが存在する場合、MRSの使用に追加の手順が必要です。

既存のターゲットがあり、プラグインの開発プロセス中にメタデータ・ファイルを更新する場合、次の手順に従ってください。

1. emctl register oms metadataコマンドを使用して、新しいメタデータ・ファイルを登録します。

emctl register oms metadata -service targetType -file full path/TargetTypeMetadata.xml -pluginId Plugin Id -sysman_pwd sysman

emctl register oms metadata -service storeTargetType -file full path/TargetTypeMetadata.xml -pluginId Plugin Id -sysman_pwd sysman

emctl register oms metadata-service default_collection -file full path/TargetTypeCollection.xml -pluginId Plugin Id -sysman_pwd sysman

emctl register oms metadata-service systemStencil -file full path/TargetTypeStencil.xml -pluginId Plugin Id -sysman_pwd sysman

2. 次に示すように、管理エージェント内のプラグイン・ホーム・ディレクトリ(PLUGIN_AGENT_HOME)の正しいディレクトリにメタデータXMLファイルを配置します。PLUGIN_AGENT_HOMEディレクトリは、プラグインが管理エージェントにデプロイされる際に作成されます。デフォルトの場所は、AGENT_BASE_DIR/pluginsです。

$PLUGIN_AGENT_HOME/metadata/
$PLUGIN_AGENT_HOME/default_collection

3. 管理エージェントを再起動します。

AGENT_HOME/agent/bin/emctl stop agent
AGENT_HOME/agent/bin/emctl start agent

前のコマンドで、AGENT_HOME は管理エージェントのホーム・ディレクトリを表します。

15 ソフトウェア・ライブラリ・メタデータの定義

この章では、ソフトウェア・ライブラリ・フレームワークについて紹介し、拡張機能および即時利用可能なエンティティを含めるソフトウェア・ライブラリを拡張するために、プラグイン・インテグレータによって使用されるメタデータを定義および登録する方法について説明します。カスタム拡張機能を登録したら、ソフトウェア・ライブラリ・コンソール、EM CLI、アクション・スクリプトAPIなどのインタフェースを使用して、ソフトウェア・ライブラリ・エンティティの作成、管理およびアクセスができます。この章の項目は、次のとおりです。

- ソフトウェア・ライブラリ・フレームワークの概要

- ソフトウェア・ライブラリ・メタデータの定義

- ソフトウェア・ライブラリ・メタデータ・ファイルの編成

- Enterprise Managerへのソフトウェア・ライブラリ・メタデータの追加

- ソフトウェア・ライブラリ・エンティティの使用

注意:
この章で説明する項目の概念の詳細は、『Oracle Enterprise Manager Cloud Control拡張プログラマーズ・ガイド』を参照してください。

15.1 ソフトウェア・ライブラリ・フレームワークの概要

新しいメタデータを定義および登録したら、ソフトウェア・ライブラリ・フレームワークを拡張すると、新しいタイプのソフトウェア、スクリプトまたは構成を認識できます。ジョブ・タイプまたはデプロイメント・プロシージャで表される既存またはカスタムの自動化ロジックでこれらのエンティティを使用できます。

プラグイン開発者として、次のソフトウェア・ライブラリ・メタデータを定義できます。

- フォルダ
ソフトウェア・ライブラリを使用すると、効率良く管理するために、様々なユーザー定義または即時利用可能なエンティティを論理フォルダに編成できます。

詳細は、15.2.1項を参照してください。

- タイプおよびサブタイプ
タイプとサブタイプはともに、共通で検索可能なメタデータ/構成プロパティ、そのデフォルト値、ファイルの関連付け要件などの面で、タイプとサブタイプで表されるエンティティの共通の特徴を定義します。ソフトウェア・ライブラリのすべてのエンティティは、関連付けられたタイプおよびサブタイプを持っています。

詳細は、第15.2.2項および第15.2.3項を参照してください。

- エンティティ
エンティティとは、ソフトウェア・ライブラリに格納されている主要なアーティファクトです。エンティティは、作成されたときのタイプ/サブタイプによって、また存在しているフォルダによって識別されます。

詳細は、15.2.4項を参照してください。

15.2 ソフトウェア・ライブラリ・メタデータの定義

この項には次のトピックが含まれます:

- フォルダの定義

- タイプの定義

- サブタイプの定義

- エンティティの定義

重要:
ソフトウェア・ライブラリ・アーティファクトの使用方法を説明した例を表示するには、次の手順を実行します。

1. Cloud Controlで、「設定」メニューから「拡張性」を選択し、「開発キット」をクリックします。

2. 「拡張開発キット」ページの「はじめに」セクションでは、サンプル・ディレクトリに5つのサンプルが表示されます。サンプル・ホスト・プラグイン2 (サンプルII)は、ソフトウェア・ライブラリ・アーティファクトに関する情報を記述したプラグイン・サンプルです。

EDKキットをローカル・システムにダウンロードしたら、/samples/plugins/ディレクトリにあるoracle.samples.xsh2サンプルを選択します。さらに/samples/plugins/oracle.samples.xsh2/plugin_dist/oms/metadataディレクトリにまでドリルダウンすると、必要な例が含まれたswlibフォルダが表示されます。

注意:
この項で説明するすべてのソフトウェア・ライブラリ・メタデータは、第15.3項で説明するように、XMLファイルに含まれている必要があります。次に、これらは、第15.4項の情報を使用して登録する必要があります。

15.2.1 フォルダの定義

次の例では、MPFolder1とMPFolder2という2つの上位レベルのフォルダを作成し、それぞれのフォルダの下にSubfolderというサブフォルダを作成する方法を説明しています。

<Folders>
<Folder name="MPFolder1">
</Folder>
<Folder name="MPFolder2">
</Folder>
<Folder name="MPFolder1/subfolder">
</Folder>
<Folder name="MPFolder2/subfolder">
</Folder>
</Folders>

フォルダの定義および登録後、プラグインがデプロイされたら、これらのフォルダはロック記号とともにソフトウェア・ライブラリ・コンソールに表示されます。つまり、フォルダはOracle所有であり、編集できないことを意味しています。ソフトウェア・ライブラリにある類似作成機能を使用すると、フォルダをカスタマイズできます。ユーザーがEnterprise Managerコンソールを使用して作成する他のすべてのフォルダは、ロック記号なしで表示され、フォルダへの必要なアクセス権を付与されている者はだれでもフォルダを編集できます。

15.2.2 タイプの定義

次の例では、MPType1とMPType2という2つのタイプ・アーティファクトの作成方法について説明しています。

<Types>
<EntityType internalName="MPType1"/>
<EntityType internalName="MPType2"/>
</Types>

15.2.3 サブタイプの定義

次の例では、タイプMPType1のサブタイプMPSubtype1を作成する方法について説明しています。

<EntitySubtype internalName="MPSubtype1" type="MPType1">
<EntityProperties filename="MPSubtype-entPropDict.xml"/>
<GenericUISpecification>
<Create>
<ContentDescriptor>
<DisplayName default="Describe"/>
<Description default="Describe"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-describe-task-flow.xml#sdkcore-regions-swlib-describe-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
<ContentDescriptor>
<DisplayName default="Select Files"/>
<Description default="Select Files"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-upload-task-flow.xml#sdkcore-regions-swlib-upload-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
<ContentDescriptor>
<DisplayName default="Review"/>
<Description default="Review"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-review-task-flow.xml#sdkcore-regions-swlib-review-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
</Create>
<Edit>
<ContentDescriptor>
<DisplayName default="Describe"/>
<Description default="Describe"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-describe-task-flow.xml#sdkcore-regions-swlib-describe-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
<ContentDescriptor>
<DisplayName default="Select Files"/>
<Description default="Select Files"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-upload-task-flow.xml#sdkcore-regions-swlib-upload-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
</Edit>
<View>
<ContentDescriptor>
<DisplayName default="Describe"/>
<Description default="Describe"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-describe-task-flow.xml#sdkcore-regions-swlib-describe-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
<ContentDescriptor>
<DisplayName default="Select Files"/>
<Description default="Select Files"/>
<Content contentId="/WEB-INF/sdk/core/regions/swlib/sdkcore-regions-swlib-upload-task-flow.xml#sdkcore-regions-swlib-upload-task-flow" contentType="ADFRegion"/>
</ContentDescriptor>
</View>
</GenericUISpecification>
</EntitySubtype>

定義したサブタイプを登録したら、ソフトウェア・ライブラリ・コンソールを使用して、このサブタイプのエンティティを作成できます(作成が禁止されていない場合)。そのためには、Enterpriseのメニューから「プロビジョニングとパッチ適用」を選択し、「ソフトウェア・ライブラリ」をクリックします。「ソフトウェア・ライブラリ」ページで、ユーザー所有のフォルダを選択します。「アクション」メニューから「作成」を選択し、「タイプ」を選択し、「サブタイプ」を選択します。選択したタイプに属するすべてのサブタイプが表示されます。詳細は、次の図ファイルを参照してください。

論理的には、このリストの一部として作成したサブタイプが表示されるはずですが、そうでない場合は、登録に問題があります。サブタイプの登録の詳細は、第15.4項を参照してください。

15.2.3.1 エンティティ・プロパティ・ファイル

エンティティ・プロパティ・ファイルMPSubtype-entPropDict.xmlは、次のとおりです。

<?xml version="1.0"?>
<Dictionary xmlns="http://www.oracle.com/sysman/emgc/Properties">
<TypeDefinitions>
<DictionaryItem refID="MPAttr1" purpose="PURPOSE_TopLevel">
<PropType typeCode="TYPE_String">
<SimpleType className="java.lang.String" uiHintReadOnly="false" uiHintHidden="false" secret="false" guid="false">
<Constraints/>
</SimpleType>
</PropType>
</DictionaryItem>

<DictionaryItem refID="MPAttr2" purpose="PURPOSE_TopLevel">
<PropType typeCode="TYPE_String">
<SimpleType className="java.lang.String" uiHintReadOnly="false" uiHintHidden="false" secret="false" guid="false">
<Constraints/>
</SimpleType>
</PropType>
</DictionaryItem>

<DictionaryItem refID="MPAttr3" purpose="PURPOSE_TopLevel">
<PropType typeCode="TYPE_String">
<SimpleType className="java.lang.String" uiHintReadOnly="false" uiHintHidden="false" secret="false" guid="false">
<Constraints/>
</SimpleType>
</PropType>
</DictionaryItem>
</TypeDefinitions>
<DynamicTypes/>
</Dictionary>

このファイルを使用するには、次の変更を行ってください。

- MPAttr1、MPAttr2およびMPAttr3はエンティティ・プロパティの名前であり、不要なプロパティは削除し、適切に保持するプロパティの名前は変更します。
前述のサンプルからDictionaryItemセクションをコピーし、さらにエンティティ・プロパティを作成します。エンティティ・プロパティの名前を更新できるのみで、その他の面は変更できません。

- このサブタイプのエンティティ・プロパティは、ソフトウェア・ライブラリ・コンソールにOther Attributesとして表示されます。エンティティ・プロパティ定義を備えたサブタイプ・メタデータを登録した後でのみ、エンティティを作成または編集しているときに、エンティティ・プロパティの値を指定できます。ただし、新しいエンティティ・プロパティの定義はできません。

15.2.4 エンティティの定義

次の例では、フォルダMPFolder1内のタイプMPTypeとサブタイプMPSubtypeのエンティティを作成する方法について説明しています。

<Entity name="MPTSEntity">
<Type>MPType</Type>
<Directory>/MPFolder1</Directory>
<Subtype>MPSubtype</Subtype>
<Fileset>
<FileEntry>
<path>payload.zip</path>
<sourcePath>payloadSrc.zip</sourcePath>
</FileEntry>
</Fileset>
<ExternalID>0.1</ExternalID>
</Entity>

FileSet: ファイルpayloadSrc.zipは、このXMLと同じディレクトリに存在している必要があります。エンティティは、ファイル・エントリpayload.zipを持ちます。

ExternalID : xxxxxxxx.xという形式の10進数浮動小数点数です。つまり、小数点の前に最大8桁が、小数点の後に1桁が使用できるという意味です。たとえば、0.6、23.9などです。メタデータを再び登録する場合、エンティティの外部IDが比較されます。現在登録されている最新リビジョンのExternalIDとExternalIDが一致するエンティティは、再び登録されることはありません。

次に例を示します。

- MPFolder1内のエンティティMPTSEntityがExternalID 0.1で登録されている場合、リビジョン0.1のエンティティが作成されます。ExternalIDが指定されていない場合、デフォルト値は0.1です。

- ExternalIDを変更しないでXMLを更新して再び登録した場合、このエンティティは登録されず、警告が記録されます。エンティティは引き続き0.1リビジョンを持ちます。

- ExternalIDを0.2に変更して再び登録した場合、登録は適用され、すでに登録されている0.1リビジョンに加えてリビジョン0.2が作成されます。したがって、開発およびテスト・フェーズ中に登録されるようにするために、ExternalIDに対して複数の増分の実行が必要になることがあります。ただし、リリース前に、正しい値にリセットして適切に追跡してください。

15.3 ソフトウェア・ライブラリ・メタデータ・ファイルの編成

ソフトウェア・ライブラリ・メタデータ・ファイルを編成するには、次の手順を実行します。

1. タイプ、サブタイプ、フォルダおよびエンティティを定義するXMLの準備ができたら、次の場所に移動します。

$OMS_PLUGIN/metadata/swlib

2. 次の場所に機能領域用のディレクトリ(たとえば、functionalArea)を作成します。

$OMS_PLUGIN/metadata/swlib/functionalArea

3. ドライビング・ファイル(swlib.xml)を作成します

4. $OMS_PLUGIN/meadataにあるorder.xmlファイルを編集して、新しく作成されたfunctionalArea/swlib.xmlファイルのエントリを追加します。

ディレクトリ構造の例は次のようになります。

swlib/
order.xml
functionalArea/swlib.xml
functionalArea1/swlib.xml

order.xmlファイルの内容の例は、次のとおりです。

<order>
<name>functionalArea/swlib.xml</name>
<name>functionalArea1/swlib.xml</name>
</order>

注意:
プラグインの機能領域ごとに、例に示されているように、order.xmlファイルにエントリを追加する必要があります。

15.4 Enterprise Managerへのソフトウェア・ライブラリ・メタデータの追加

Enterprise Managerへのソフトウェア・ライブラリ・メタデータの追加は、この項で説明しているように2つの手順のプロセスです。

- 手順1: メタデータXMLの検証

- 手順2: OPARへのメタデータXMLの追加

15.4.1 手順1: メタデータXMLの検証

テストのために、次のようにemctlを使用してメタデータを登録します。

emctl register oms metadata -service swlib -file <Metadata Instance file> -pluginId <Plugin Id> [-sysman_pwd "sysman password"]
Where:
Metadata Instance file is the path to the folder containing order.xml. For example, $OMS_PLUGIN/metadata/swlib.

注意:
ソフトウェア・ライブラリの場所を追加していない場合、emctl registerコマンドは機能しません。かわりに、次のようなエラー・メッセージが表示されます。

EM-04040: Metadata operation is skipped. Reason: Software Library OMS shared storage is not configured, skipping metadata registration. Check /u01/inst/em/EMGC_OMS1/sysman/log/emctl.log for more details.

また、エンティティに対してメタデータXMLファイルを繰り返し登録する場合、そのたびに外部ID要素が増分されることを確認する必要があります。たとえば、XMLに11のエンティティが定義されており、このうち4つが同じExternalIDを持ち、7つが更新済のExternalIDを持っている場合、次のメッセージが表示されます。

Total 0 errors, 4 warnings. 7 entities imported.
Metadata registration successful

注意:
登録を有効にするにはOMSを再起動する必要があります。この場合、emctlを使用して登録されているメタデータはタイプまたはサブタイプを含んでいます。ただし、タイプおよびサブタイプの登録の場合にはOMSを再起動する必要はありません。この場合、プラグインに定義されているソフトウェア・ライブラリ・メタデータは、タイプまたはサブタイプを含んでおり、デプロイされます。
なんらかの警告がある可能性があるため、登録が成功した場合でもログを確認することをお薦めします。外部IDが変更されていない場合にこれらの警告が主に発生し、この結果、エンティティの登録は失敗します。ログを表示するには、次の場所に移動します。

$INSTANCE_HOME/sysman/log/emctl.log

15.4.2 手順2: OPARへのメタデータXMLの追加

前述のように編成されたソフトウェア・ライブラリ・メタデータを含むプラグインOPARがデプロイされている場合、システム上でソフトウェア・ライブラリが構成されると、ソフトウェア・ライブラリ・メタデータは登録されます。他のメタデータのようにソフトウェア・ライブラリ・メタデータXMLはOPARに含まれます。詳細は、第13章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

注意1: プラグインのデプロイメント時にソフトウェア・ライブラリが構成されない場合、プラグインのデプロイメント後に初めてソフトウェア・ライブラリを構成するときに、プラグインのソフトウェア・ライブラリ・メタデータは登録されます。

15.5 ソフトウェア・ライブラリ・エンティティの使用

プラグインによって作成されるソフトウェア・ライブラリ・エンティティは、パッチ/スクリプト/構成、またはプラグインに関連した他のソフトウェアを表すことがあります。前の項で説明したオプションを使用して作成された後にこれらのエンティティを使用するには、次のいずれかの方法を検討してください。

- ジョブ・タイプの使用

- EMCLI動詞の使用

注意:
プラグイン・グラフィカル・ユーザー・インタフェースがソフトウェア・ライブラリ検索サービスを使用する方法の詳細は、第9.11.9項を参照してください。
カスタム・デプロイメント・アクティビティを自動化するためにユーザー定義デプロイメント・プロシージャのコンポーネント・ステップおよびディレクティブ・ステップを使用する方法の詳細は、『Oracle Enterprise Managerライフサイクル管理者ガイド』を参照してください。

15.5.1 ジョブ・タイプの使用

ソフトウェア・ライブラリは、次のジョブ・タイプを使用します。

- SwlibStageEntities: ソフトウェア・ライブラリ・エンティティに関連付けられたファイルを宛先ホスト・ターゲットに転送します。

- SwlibUploadFiles: ソフトウェア・ライブラリ・エンティティに関連付けられるファイルを指定された適切なソフトウェア・ライブラリ・ストレージの場所に更新します。

独自のジョブ・タイプを作成することができ、その結果、これらのジョブ・タイプを含みます。たとえば、次のようなSwlibStageEntitiesジョブ・タイプを含むジョブ・タイプXMLを作成できます。

<?xml version="1.0"?>
<jobType name="StageWrap" version="1.0" singleTarget="true" targetTypes="host" editable="true">
<credentials>
<credential usage="destHostCreds" authTargetType="host" defaultCredentialSet="HostCredsNormal">
</credential>
<credential usage="destNfsHostCreds" authTargetType="host" defaultCredentialSet="HostCredsPriv">
</credential>
</credentials>
<paramInfo>
<paramSource sourceType="user" paramNames="stageLocation, entityURN"
required="true" evaluateAtSubmission="true" />
<paramSource sourceType="user" paramNames="stageFileEntryPaths, operMode, autoRetry" required="false"/>
<paramSource sourceType="inline" paramNames="operMode">
<sourceParam name="paramValues" value="mount"/>
<sourceParam name="overwriteExistingFiles" value="yes"/>
</paramSource>
</paramInfo>
<stepset ID="main" type="serial">
<step ID="preStage" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="destHostCreds"/>
</credList>
<paramList>
<param name="remoteCommand">%job_default_shell%</param>
<param name="args">ls, -R, %stageLocation%</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
</paramList>
</step>
<job ID="stage" type="SwlibStageEntities">
<credList>
<cred usage="destHostCreds" reference="destHostCreds"/>
<cred usage="destNfsHostCreds" reference="destNfsHostCreds"/>
</credList>
<paramList>
<param name="entityURN">%entityURN%</param>
<param name="stageFileEntryPaths" valueOf="stageFileEntryPaths"/>
<param name="stageLocation">%stageLocation%</param>
<param name="operMode">%operMode%</param>
<param name="autoRetry">%autoRetry%</param>
<param name="overwriteExistingFiles">%overwriteExistingFiles%</param>
</paramList>
<targetList allTargets="true" />
</job>
<step ID="postStage" command="remoteOp">
<credList>
<cred usage="defaultHostCred" reference="destHostCreds"/>
</credList>
<paramList>
<param name="remoteCommand">%job_default_shell%</param>
<param name="args">ls, -R, %stageLocation%</param>
<param name="targetName">%job_target_names%[1]</param>
<param name="targetType">%job_target_types%[1]</param>
</paramList>
</step>
</stepset>
<displayInfo
useDefaultCreateUI="true"
showParams="true">

<jobTypeDisplayInfo>
<nlsValue>Stage Wrap</nlsValue>
</jobTypeDisplayInfo>
<parameterDisplayInfo name="stageLocation" showInResults="true" showInCreate="true">
<parameterLabel>
<nlsValue>Stage Location</nlsValue>
</parameterLabel>
<parameterHint>
<nlsValue>Directory location on target where the files from the entity will be transferred.</nlsValue>             </parameterHint>
<parameterTextBox lines="1" />
</parameterDisplayInfo>
<parameterDisplayInfo name="entityURN" showInResults="true" showInCreate="true">
<parameterLabel>
<nlsValue>Entity URN</nlsValue>
</parameterLabel>
<parameterHint>
<nlsValue>Internal identifier of the entity</nlsValue>
</parameterHint>
<parameterTextBox lines="1" />
</parameterDisplayInfo>
</displayInfo>
</jobType>

ジョブ・タイプSwlibStageEntitiesのジョブは、次のような入力を必要とします。

- ステージ場所: エンティティのファイルが転送されるディレクトリ・パス。

- エンティティURN: これはエンティティの内部識別子です。次のどの方法を使用しても取得できます。

- Enterprise Manager Cloud Controlで、「エンタープライズ」メニューから「プロビジョニングとパッチ適用」を選択し、「ソフトウェア・ライブラリ」をクリックします。「ソフトウェア・ライブラリ」ホームページで、「表示」メニューから「内部ID」を選択してこれを有効にします。使用可能な内部ID値を、このパラメータの値としてジョブにコピーして指定します。

- emcli動詞list_swlib_entitiesとパラメータ-show_entity_rev_idを使用すると、内部IDを取得できます。使用可能な内部ID値を、このパラメータの値としてジョブにコピーして指定します。

15.5.2 EMCLI動詞の使用

ソフトウェア・ライブラリに用意されているEMCLI動詞を使用すると、ソフトウェア・ライブラリの格納場所の追加、フォルダの作成、エンティティの作成、エンティティ用のファイルのアップロード、エンティティの変更などができます。EMCLI動詞の詳細は、『Oracle Enterprise Managerコマンドライン・インタフェース』およびOracle Enterprise Managerライフサイクル管理者ガイドを参照してください。

16 資格証明の定義

ターゲット・タイプの定義の一部として、プラグイン・ターゲット・タイプに固有の資格証明のタイプを定義できます。たとえば、メトリック・データを収集したり、特定のEnterprise Managerジョブを起動したりするターゲット・インスタンスに接続するプラグインで必要なユーザー名とパスワードを定義できます。

Enterprise Managerの資格証明サブシステムによって、Enterprise Manager管理者は、プリファレンスまたは操作の資格証明として、セキュアな方法で資格証明を格納できます。資格証明を使用すると、リアルタイム・モニタリング、パッチ適用、プロビジョニングおよび他のターゲット管理操作など、様々なシステム管理アクティビティを実行できます。

このリリースで、資格証明サブシステムは、優先資格証明としての、ユーザー名やパスワードに基づいた固定数の資格証明の格納、アクセス、変更をサポートしており、他のEnterprise Managerサブシステムが自動解決を構築するために、この資格証明にアクセスします。資格証明サブシステムは、sudoまたはPowerBrokerベースの偽装もサポートしています。

この章の内容は次のとおりです。

- セキュリティの概念の概要

- 資格証明メタデータの定義

16.1 セキュリティの概念の概要

次の項では、資格証明サービス統合に関連する概念について説明します。

- 資格証明タイプ
資格証明タイプは、ターゲット・タイプでサポートされる認証タイプです。ネイティブ・エージェント認証およびSSHなどの、様々な認証スキームがサポートされています。詳細は、第16.1.1項「資格証明タイプの理解」を参照してください。

- 名前付き資格証明
名前付き資格証明は、システム上のユーザーの認証情報を含んでおり、ユーザー名/パスワード、公開鍵と秘密鍵のペアまたはX509v3証明書を使用できます。詳細は、第16.1.2項「名前付き資格証明について」を参照してください。

- 認証ターゲット・タイプ
認証ターゲット・タイプは、資格証明が認証できるターゲット・タイプです。詳細は、第16.1.3項「ターゲット・タイプの認証」を参照してください。

- 資格証明セット
資格証明セットは、資格証明のプレースホルダで、資格証明を使用するシステムから、資格証明を切り離すために使用できます。詳細は、第16.1.4項「資格証明セットの概要」を参照してください。

- 資格証明ストア
資格証明ストアは、Enterprise Managerにおける、Enterprise Manager管理者のすべての名前付き資格証明の論理ストアです。詳細は、第16.1.5項「資格証明ストアの使用」を参照してください。

- 資格証明リファレンス
資格証明参照は、資格証明を参照します。詳細は、第16.1.6項「資格証明参照」を参照してください。

16.1.1 資格証明タイプの理解

資格証明タイプは、ターゲット・タイプでサポートされる認証タイプです。たとえば、ホストはユーザー名およびパスワードに基づいた認証、公開鍵認証またはKerberos認証をサポートできます。ネイティブ・エージェント認証およびSSHなどの、様々な認証スキームがサポートされています。

ネイティブ・エージェント認証スキームではユーザー名およびパスワード構造を採用していますが、SSH鍵認証スキームではユーザー名/秘密鍵/公開鍵構造を使用しています。

16.1.2 名前付き資格証明について

名前付き資格証明は、システム上のユーザーの認証情報です。名前付き資格証明にはユーザー名およびパスワード、公開鍵と秘密鍵のペア、またはX509v3証明書を使用できます。Enterprise Manager管理者は、これらの資格証明をEnterprise Managerで名前付きエンティティとして格納し、ジョブの実行、パッチ適用および他のシステム管理タスクなどの操作を実行する際に使用できます。たとえば、MyPatchingCredsとしてパッチを適用するために使用するユーザー名およびパスワードを格納できます。その後、MyPatchingCredsを使用するパッチ適用ジョブを発行して、本番環境のデータベースにパッチを適用できます。

名前付き資格証明は、Enterprise Manager 12cで資格証明タイプ用に作成できます。以降の項では、ホストおよびデータベースのターゲット・タイプ用に最もよく使用される資格証明タイプについて説明します。

名前付き資格証明の詳細は、『Oracle Enterprise Manager Cloud Controlセキュリティ・ガイド』のターゲット資格証明の構成および使用に関する項を参照してください。

16.1.3 認証ターゲット・タイプ

認証ターゲット・タイプは、資格証明が認証対象にできるターゲット・タイプです。たとえば、SQLScriptジョブには、データベース・ホストに対して認証するために使用する、ホスト資格証明DBHostCredsがあります。したがって、DBHostCredsのターゲット・タイプはデータベース・インスタンスで、認証ターゲット・タイプはホストです。

16.1.4 資格証明セットの概要

資格証明セットは、資格証明のプレースホルダです。資格証明セットは、資格証明を使用するシステムから、資格証明を切り離すために使用できます。たとえば、パッチ適用ジョブは、実行中に、資格証明セット「通常ホスト資格証明」を使用するために発行されます。

「通常ホスト資格証明」資格証明セットは、実際の名前付き資格証明に設定することもできます。ターゲットの名前付き資格証明マッピングに設定された資格証明は、資格証明を使用するシステムを編集することなく、変更できます。

16.1.5 資格証明ストアの使用

資格証明ストアは、Enterprise Managerにおける、Enterprise Manager管理者のすべての名前付き資格証明の論理ストアです。Enterprise Manager管理者のユーザー名には、プライベート論理資格証明ストアがあります。個々の資格証明は、資格証明名で識別できます。Enterprise Manager管理者は、資格証明ストア内の名前付き資格証明の追加、編集および削除を行うことができます。

16.1.6 資格証明参照について

資格証明参照は、資格証明の参照方法です。資格証明を参照するには、次の3つの方法があります。

- 資格証明名
資格証明は、資格証明ストアの資格証明の名前を使用して、参照されます。

- 資格証明セット
資格証明は、資格証明セット名とターゲット名を使用して、参照されます。参照は、資格証明セット名とターゲット名に関連付けられた資格証明を取得します。

- 直接
資格証明は、属性の値で指定されます。この参照では、資格証明ストアの資格証明を参照しません。

16.2 資格証明メタデータの定義

資格証明メタデータは、ターゲット・タイプ・メタデータ・ファイル内で定義されます。このファイルの詳細は、第3章「ターゲット・メタデータ・ファイルの作成」を参照してください。

ターゲット・タイプのすべての資格証明メタデータは、CredentialInfo要素内で定義されます。この要素には、次のサブ要素が含まれます。

- ターゲット・インスタンスにアクセスするために使用する資格証明のタイプを定義するCredentialType要素

- CredentialTypeのインスタンスをインスタンス化するCredentialSet要素

次の例では、ターゲットのインスタンスを実行するホストで認証する必要のある資格証明のユーザー名とパスワードを定義します。

例: 資格証明メタデータ

<TargetMetadata>

...
<CredentialInfo>
<!-- The types of credentials: target host username/password -->
<CredentialType NAME="HostCreds">
<Display>
<Label NLSID="CREDS_HOST_HOSTCREDS">Host Credentials</Label>
</Display>
<CredentialTypeColumn NAME="HostUserName" IS_KEY="TRUE">
<Display>
<Label NLSID="CREDS_HOST_USERNAME">UserName</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="HostPassword">
<Display>
<Label NLSID="CREDS_HOST_Password">Password</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<!-- The CredentialSet that creates an instance of CredentialType -->
<CredentialSet NAME="HostCredsNormal" CREDENTIAL_TYPE="HostCreds"
USAGE="PREFERRED_CRED">
<Display>
<Label NLSID="CREDS_HOST_HOSTCREDS_NORMAL">Normal Host Credentials</Label>
</Display>
<CredentialSetColumn TYPE_COLUMN="HostUserName" SET_COLUMN="username">
<Display>
<Label NLSID="CREDS_NORMAL_USER">Normal Username</Label>
</Display>
</CredentialSetColumn>
<CredentialSetColumn TYPE_COLUMN="HostPassword" SET_COLUMN="password">
<Display>
<Label NLSID="CREDS_NORMAL_PASSWORD">Normal Password</Label>
</Display>
</CredentialSetColumn>
</CredentialSet>
<CredentialInfo>
...
</TargetMetadata>

16.2.1 資格証明要素の概要

次の表に、資格証明を定義するキー要素を説明します。

表16-1 plugin.xmlファイル内のキー要素

要素

必須(Y/N)

説明

CredentialInfo

Y

資格証明の定義のためのルート要素。CredentialTypeおよびCredentialSet要素が含まれています。

CredentialType

Y

1つ以上のCredentialTypeColumn要素が含まれており、それぞれが、TargetUsernameまたはTargetPasswordなどの資格証明を定義します。ターゲット・インスタンスへのアクセスに使用します。

CredentialSet

Y

CredentialTypeで定義された資格証明セットのインスタンスをインスタンス化します。次の属性があります。

- CREDENTIAL_TYPE
このCredentialSetが作成されたCredentialTypeを識別します。

- USAGE
値はMONITORING (デフォルト)で、ターゲットPREFERRED_CRED (ユーザーの優先資格証明)またはSYSTEM (パッチ適用やクローニングなどの特別なアプリケーションで使用)に直接接続するために使用されます。

CredentialSetColumn

Y

CredentialTypeのサブ要素。1つの資格証明を定義し、その資格証明をCredentialTypeの対応する列にマップします。次の属性があります。

- TYPE_COLUMN
このCredentialSetColumnがマップされるCredentialTypeColumnを指定します。

- SET_COLUM
CredentialSetの列定義を識別します。

17 チャージバック・エンティティ・タイプの定義

チャージバックは、リソース(Enterprise Managerではエンティティとして知られている)の使用を計測しチャージする方法を提供します。通常、これらのエンティティは、そのタイプがホスト、データベース、WebLogic Serverの管理対象のエンティティで、固有のメトリックを収集してチャージできます。管理者はこれらのメトリックにレートおよびその他の使用要素を割り当てて、ターゲット・インスタンスに割り当てられるチャージ・プランと呼ばれるものの中のチャージ・アイテムにします。毎日のチャージバック・ジョブで、リソースの使用に対してメトリックを収集しチャージを計算します。

Enterprise Managerは数百のエンティティ・タイプを認識していますが、デフォルトでチャージバックが有効になっているものは比較的少数です。プラグイン開発者としては、拡張機能を使用することで、拡張メタデータ・サービス(MDS)を活用してプラグイン内で定義されたエンティティ・タイプのチャージバックを有効にできます。MDSを利用するには、Enterprise Managerの管理対象エンティティ(ME)上で新しいチャージバック・エンティティ・タイプをモデル化したXMLファイルを作成し、Enterprise Managerのメトリックおよび構成に基づいてチャージ・アイテムを定義します。

この章では、チャージバックに追加する新しいエンティティ・タイプを定義する方法について説明します。この章は次の項で構成されています。

- チャージバック拡張ツールキット

- 新しいチャージバック・エンティティ・タイプを開発およびテストする手順

- チャージバック・モデル

- サンプル・チャージバックMDS XMLファイル

- チャージバックMDSの登録

- エンティティ・タイプ・プラグインのテスト

17.1 チャージバック拡張ツールキット

チャージバック拡張フレームワークの内部実装に加え、プラグイン開発者は次のツールキットを使用できます。

- チャージバック・メタデータ・サービス(MDS)登録XMLスキーマ
emSDK\emMrsXsds\oracle\sysman\emSDK\chargeback\ChargebackMetadata.xsd

- チャージバックのコールバック・シグネチャおよび組込み実装(組込みコールバックにより、プラグイン開発者は新しいエンティティ・タイプのチャージバック・メタデータ・ファイルにコールバックを登録できます)
PL/SQLパッケージGC$CHARGEBACKに含まれます。

PL/SQLコールバックには次のシグネチャがあります。

PROCEDURE add_entity_callback_name(
p_em_entity_guid IN RAW,
p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
p_entity OUT GC$CBA_ENTITY);

これらのツールを使用すると、チャージバック・メタデータを定義して管理対象のEnterprise Managerターゲット・タイプの新しいエンティティ・タイプでのチャージバックが可能になり、またチャージバック・ユーザー・インタフェースを使用してエンティティ・インスタンスをチャージバックに追加し、毎日のジョブ・スケジュールに含まれるように組込みコールバックを登録できます。

17.2 新しいチャージバック・エンティティ・タイプを開発およびテストする手順

新しいチャージバック・エンティティ・タイプを開発およびテストする手順の基本フローには、次のタスクが含まれます。

1. エンティティおよびチャージ・アイテムにチャージバック・メタデータを定義します。適切なコールバックをインクルードして、チャージバック・ユーザー・インタフェースと連携するようにします。

2. チャージバック・メタデータ・ファイルを登録します。別の方法では、プラグインにXMLファイルを含めて、プラグインをデプロイします。

3. メタデータで定義されたチャージ・アイテムを含むチャージバックにチャージ・プランを作成します。

4. エンティティの追加ウィザードを使用して、新しいエンティティ・タイプをチャージバックに追加します。

5. 作成したチャージ・プランを追加したエンティティ・タイプに割り当てます。

6. 毎日のデータ収集ジョブをトリガーして、表に移入します。

7. 新しいエンティティ・タイプのチャージバックでレポートを実行し、チャージおよびメトリックを表示します。

17.3 チャージバック・モデル

この項では、チャージバック・メタデータ・ファイル内のプライマリ要素に関連する基本概念を説明します。

Enterprise Managerエンティティ・タイプ

Enterprise Managerエンティティ・タイプは、定義されるチャージバック・エンティティ・タイプのモデルとして機能します。通常、これは管理可能なエンティティ(ME)として認識されたEnterprise Managerターゲット・タイプです。

チャージバック・エンティティ・タイプ

チャージバック・エンティティ・タイプは、そのコンテナEnterprise Managerエンティティ・タイプをモデルにしています。チャージバック・エンティティ・タイプは、使用モード、つまり、その計測方法で特徴付けられます。使用モードには、他のチャージバック・エンティティ・タイプとの親子関係を含めることができます。通常、直接計測されるチャージバック・エンティティ・タイプは、定義された一連のチャージ・アイテムを持ちます。

1つ以上のチャージバック・エンティティ・タイプは、Enterprise Managerエンティティ・タイプをモデルにできますが、指定されたリリースでアクティブにできるのは、1つのチャージバック・エンティティ・タイプのみです。

使用モード

使用モードはチャージバック・エンティティ・タイプの計測方法(直接またはメンバー・エンティティ・タイプを介した計測)を定義します。また、計測するチャージ・アイテムを表示できます。チャージバック・エンティティ・タイプには、様々な状況に合わせた異なる使用モードがありますが、デフォルトに設定できるモードは1つのみです。

チャージ・テンプレート

チャージ・テンプレートは、チャージバック・エンティティ・タイプを計測するチャージ・アイテムを示します。1つのチャージ・テンプレートを直接計測に関連する各使用モードに対して使用できます。複合または親チャージバック・エンティティ・タイプは、チャージ・アイテムを直接持たないため、チャージ・テンプレートは必要ありません。

チャージ・アイテム

チャージバック・メタデータ・ファイル内のChargeItem要素はチャージ・アイテム・タイプの定義に似ています。収集するデータのタイプと収集方法を定義します。

チャージ・アイテムはME構成、メトリックまたはプロパティに基づきます。また、チャージ・アイテムは、固定量にもできます。

エンティティ・コールバック

各チャージバック・エンティティ・タイプに登録できるエンティティ・インスタンス・レベルのコールバックは2つあります。

- 管理者がチャージバックに追加するエンティティを選択する際のチャージバック・エンティティの追加ウィザードでコールされるエンティティ・コールバックを追加します。プラグイン開発者を対象とした組込み実装が2つあります。

gc$chargeback.add_em_entity_cb(
p_em_entity_guid IN RAW,
p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
p_entity OUT GC$CBA_ENTITY);

gc$chargeback.add_em_entity_and_members_cb(
p_em_entity_guid IN RAW,
p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
p_entity_arr OUT GC$CBA_ENTITY_ARR);

- 管理者がチャージバックに追加するエンティティを選択する際のチャージバック・エンティティの追加ウィザードと、複合エンティティに追加された可能性のあるメンバーを検出するチャージバック・データ収集ジョブの両方でコールされるメンバー・コールバックを追加します。プラグイン開発者を対象とした、1つの組込み実装があります。

gc$chargeback.add_entity_members_cb(
p_em_entity_guid IN RAW,
p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
p_entity_arr OUT GC$CBA_ENTITY_ARR);

gc$chargeback.add_em_entity_and_members_cbおよびgc$chargeback.add_entity_members_cbの両方は、chargeback_parentアソシエーションに基づいて実装されます。

組込みコールバックは、チャージバック・エンティティ・タイプに自動的には適用されません。チャージバック・エンティティ・インスタンスは、チャージバック・メタデータ・ファイルに適用可能なコールバックを登録しないかぎり、エンティティの追加ウィザードに表示されません。これらのコールバックは上書きできません。

17.4 サンプル・チャージバックMDS XMLファイル

サンプル・チャージバック・メタデータ・ファイルは、EDKに含まれるホスト・サンプルを補完します。サンプル・チャージバック・メタデータ・ファイルは、ホスト・インスタンスで使用されるストレージおよびメモリーに対して各ギガバイト単位でチャージする率に加え、各ホスト・インスタンスに固定ベース・チャージを含むようホスト・サンプルをサポートするチャージバックを追加することを示しています。

<?xml version="1.0" encoding="UTF-8" ?>
<ChargebackMetadata name="demo_hostsample_cba" description="Chargeback meta data for demo_hostsample" version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ChargebackEntityType name="demo_hostsample" displayLabel="Demo Plugin Sample Host" labelNlsId="name" description="Chargeback entity type for sample target type demo_hostsample"
descriptionNlsId="" mappingEmEntityType="demo_hostsample"
resourceBundle="oracle.sysman.eml.rsc.chargeback.demo_hostsample_cbaMsg" defaultUsageMode="metered">
<ChargeItems>
<!-- fixed item -->
<ChargeItem name="BaseCharge" displayLabel="Base Charge" labelNlsId="em_ct_base_chg" type="fixed"
dataType="number" category="instance" aggregationType="sum" description="Base charge for a demo_hostsample instance">
<QueryExpression type="internal"></QueryExpression>
</ChargeItem>
<!-- config -->
<!-- usage -->
<ChargeItem name="memUsageMB" displayLabel="Memory Usage" labelNlsId="em_ct_mem_usg" type="metric"
dataType="number" unit="GB" unitNlsId="em_ct_u_GB" category="memory"
aggregationType="avg" description="Memory used (GB)">
<QueryExpression type="internal" valueColumn="value/(1024*1024)"
emEntityGuidColumn="entity_guid"
metricGroup="MemoryPerf" metricColumn="MemTotal"
utcCollectionDateColumn="collection_time_utc">
</QueryExpression>
</ChargeItem>
<ChargeItem name="diskUsageGB" displayLabel="Disk Space Usage" labelNlsId="em_ct_disk_usg" type="metric"
dataType="number" unit="GB" unitNlsId="em_ct_u_GB" category="storage"
aggregationType="avg" description="Disk storage used (GB)">
<QueryExpression type="internal" valueColumn="value/(1024*1024)"
emEntityGuidColumn="entity_guid"
metricGroup="FilesystemPerf" metricColumn="UsedKB"
utcCollectionDateColumn="collection_time_utc">
</QueryExpression>
</ChargeItem>
</ChargeItems>
<ChargeTemplates>
<ChargeTemplate name="demo_hostsampleMetered" displayLabel="Charge template for metering demo_hostsample"
labelNlsId="http_dedicated" description="Charegeback charge template for metering Http demo_hostsample"
descriptionNlsId="demo_hostsample_desc" usageMode="metered" isMaster="yes"></ChargeTemplate>
</ChargeTemplates>
<UsageModes>
<UsageMode name="metered" displayLabel="Metered" labelNlsId="metered" type="dedicated" isChargeable="yes"
isNavigational="no" defaultChargeTemplate="demo_hostsampleMetered" description="The usage is metered in demo_hostsample level."></UsageMode>
</UsageModes>
</ChargebackEntityType>
<EntityCallbacks>
<EntityCallback callbackProc="GC$CHARGEBACK.add_em_entity_cb" type="addEmEntity" entityType="demo_hostsample"/>
</EntityCallbacks>
</ChargebackMetadata>

表17-1に、新しいチャージバック・エンティティ・タイプの定義に使用するチャージバックMDS XMLファイルのキー要素を示します。使用可能なすべての要素と属性の完全なセットの詳細は、ChargebackMetadata.xsdを参照してください。

表17-1 新しいチャージバック・エンティティ・タイプを定義するキー要素

要素

属性

説明

ChargebackMetadata

name

(必須)チャージバック・エンティティ・セットの一意の名前。

ChargebackEntityType

name

(必須)チャージバック・エンティティ・タイプの一意の名前。

displayLabel

(必須)チャージバック・エンティティ・タイプの表示ラベル。

mappingEmEntityType

Enterprise Managerのチャージバック・エンティティ・タイプの管理可能なエンティティ・タイプ(該当する場合)。

defaultUsageMode

チャージバック・エンティティ・タイプに適用するデフォルトの使用モード。エンティティ・タイプには、複数の使用モードがありますが、デフォルトに設定できるモードは1つのみです。

ChargeItem

name

(必須)チャージ・アイテムの一意の名前。

displayLabel

(必須)チャージ・アイテムの表示ラベル。

type

(必須)チャージ・アイテムのデータソース。metric、config、propertyまたはfixedになります。

dataType

(必須)チャージ・アイテムのデータ・タイプ。stringまたはnumberになります。

aggregationType

毎時収集したデータを日次合計に集計する方法。許容値はsum (毎時の数値の合計)またはavg (毎時の数値の平均)です。デフォルト値はavgです。

isChargeable

チャージ・プランを作成する際、チャージ・アイテムに管理者がレートを直接設定できるよう規定します。デフォルト値はyesです。

canBeChargeSetCond

インスタンスにチャージ・アイテムのプラン条件値と同じ値がある場合のみ、チャージ・プラン構成に定義されたチャージ・プラン・レートのセットをチャージバック・エンティティ・インスタンスに適用するよう規定します。デフォルト値はnoです。

canBeChargeRateCond

管理者がチャージ・アイテムに条件レートを設定し、アイテムに特定の値を持つチャージバック・エンティティのみに適用できるよう規定します。デフォルト値はyesです。

category

チャージ・アイテムのロジカル・リソース・カテゴリ。activity、cpu、instance、memory、storage、network、service、software、uptimeまたはunclassifiedになります。デフォルト値はunclassifiedです。

Key

name

(必須)チャージ・アイテムのキー列の名前。

displayLabel

(必須)チャージ・アイテム・キーの表示ラベル。

QueryExpression

type

(必須)問合せ式のタイプ。チャージ・アイテム・データの収集方法を定義します。この説明では、internalは期待値です。つまり、MEタイプのメトリック、構成およびプロパティが、それぞれメトリック・グループと列名、構成ビューと列名またはプロパティ名に基づいてチャージバックにプルされるということです。

entityNameColumn

emEntityTypeColumn

emEntityNameColumn

emEntityGuidColumn

utcCollectionDateColumn

collectionDateColumn

keyColumn

これらの属性はすべてのチャージ・アイテムに共通のものです。Enterprise Managerリポジトリから抽出されるデータをエンティティ・タイプに定義します。

metricGroup

metricColumn

これらの属性はメトリックに基づいたチャージ・アイテムに固有のものです。

viewName

valueColumn

これらの属性は構成に基づいたチャージ・アイテムに固有のものです。

propertyName

valueColumn

これらの属性はターゲット・プロパティに基づいたチャージ・アイテムに固有のものです。

ChargeTemplate

name

(必須)チャージバック・エンティティ・タイプに使用するチャージ・テンプレートの一意の名前。

displayLabel

(必須)チャージ・テンプレートの表示ラベル。

usageMode

(必須)チャージ・テンプレートに関連付けられた使用モード名。

isMaster

このチャージ・テンプレートがチャージバック・エンティティ・タイプ用のマスターテンプレートであることを規定します。

マスター・チャージ・テンプレートには、チャージバック・エンティティ・タイプに定義されたすべてのチャージ・アイテムが含まれているため、chargeTemplate要素の一部としてアイテム・リストを含める必要はありません。ただし、マスター・チャージ・テンプレートがない場合、要素にはチャージバック・メタデータ・ファイル内のチャージ・アイテムのリストを含める必要があります。

許容値はyesまたはnoです。デフォルト値はnoです。

UsageMode

name

(必須)チャージバック・エンティティ・タイプの使用モードの一意の名前。

displayLabel

(必須)使用モードの表示ラベル。

type

使用モード・タイプ。許容値はdedicated (例: エンティティ・タイプがインスタンスにより計測される場合)またはshared (例: エンティティ・タイプがサービスにより計測される場合)です。デフォルト値はdedicatedです。

defaultChargeTemplate

現在の使用モードのデフォルトとして利用可能なチャージバック・エンティティ・タイプのチャージ・テンプレート。

isChargeable

この使用モードを使用するエンティティがチャージ可能であることを規定します。

許容値はyesまたはnoです。デフォルト値はyesです。

isNavigational

この使用モードを使用するエンティティがナビゲーション可能、つまり子を持つことを規定します。

許容値はyesまたはnoです。デフォルト値はnoです。

EntityCallback

entityType

(必須)適用するエンティティ・タイプの名前。

type

エンティティ・コールバックのタイプ。許容値はaddEmEntityまたはaddMembersです。

callbackProc

(必須)エンティティ・コールバック・プロシージャを識別します。

NLS IDについて

NLS IDはXMLファイルで多くの場合オプションです。ファイルに明示的に定義されていない場合、それらは式に基づいて内部的に生成されます。次に例を示します。

- エンティティ・タイプの表示名nls idはe_entity_type_nameになります。

- エンティティ・タイプの説明nls idはe_entity_type_name_descになります。

- 同様に、使用モードの表示名nls idはu_usage_mode_nameになります。

- 同様に、使用モードの説明名nls idはu_usage_mode_name_descになります。

この自動生成されたものはResourceBundleファイルの要件を満たします。

17.5 チャージバックMDSの登録

次のようにコマンドを実行することでプラグインを登録するための登録サービスを手動で実行します。

emctl register oms metadata
-service chargeback -core -sysman_pwd <sysmanPWD>
-file <directory> demo_hostsample_cba.xml

ここで、directoryはチャージバック・メタデータ・ファイルの場所です。登録が成功したら続いてテストします。

プラグインを登録する別の方法として、プラグインにXMLファイルを含めて、プラグインをデプロイできます。Oracleプラグイン・アーカイブ(OPAR)ファイルのoms/metadata/chargebackフォルダ内にXMLファイルが表示されます。管理者およびプラグイン開発者がこのメソッドを使用できます。

17.6 エンティティ・タイプ・プラグインのテスト

プラグインを定義して登録したら、次のタスクを実行して設定が適切なことを確認します。ここではタスクの概要を説明します。詳細は、『Cloud管理ガイド』の「チャージバック管理者」の章またはチャージバック・オンラインヘルプを参照してください。すべてのタスクはEnterprise Manager Cloud Controlにログインし、チャージバックを操作していることを想定しています(「Enterprise」メニューから「チャージバック」を選択)。

チャージ・プランの作成

チャージバック・メタデータ・ファイルで定義されたチャージ・アイテムを含むデモ・プラグインのサンプル・ホストにチャージ・プランを作成します。

1. 「チャージ・プラン」タブの、「作成」メニューで「プラン」を選択します。

2. プランに名前を付け(デモ・ホスト・プラン)、「追加」をクリックして、デモ・プラグインのサンプル・ホストのエンティティ・タイプを選択します。

3. 「アイテムの追加」をクリックして、チャージバック・メタデータ・ファイルに定義したベース・チャージ・アイテムを選択します。「OK」をクリックします。
チャージバック・メタデータ・ファイルに定義した他のアイテム(ディスク領域使用量およびメモリー使用量)に対して、この操作を繰り返します。

4. 3つのチャージ・アイテムにレートを設定します。ベース・チャージは期間ごとに定率です。他の2つのアイテムは、それぞれGBごと/期間ごとのチャージです。

5. 「保存」をクリックして計画の作成を完了します。

新しいタイプのエンティティの追加

新しいタイプのエンティティをチャージバックに追加して、チャージおよび計測データを追跡します。

1. 「エンティティ」タブで、「エンティティの追加」ボタンをクリックします。

2. ウィザードで、「追加」をクリックします。

3. デモ・プラグイン・サンプル・ホストのエンティティを検索して、選択したエンティティをチャージバックに追加します。デフォルトの使用モード(計測済)のままにします。「次へ」をクリックします。

4. 追加したエンティティの行を選択して、「プランの割当て」ボタンをクリックします。

5. リストでプラン(サンプル・ホスト・プラン)を選択して、「OK」をクリックします。「次へ」をクリックします。

6. 選択内容を確認し、「発行」をクリックします。チャージバックによりエンティティが追加されたことが確認されます。エンティティがそのチャージ・プラン割当てとともに表に表示されます。

チャージバック・データの確認

チャージバック・データの収集は、24時間周期で発生しますが、オンデマンドで実行するようにできます。「エンティティ」タブの「アクション」メニューから「オンデマンド・データ収集」を選択します。直近のデータを反映するために表が更新されます。

デモ・プラグイン・サンプル・ホストのエンティティ・タイプのチャージ・データおよび計測データの表示

1. チャージバックで「レポート」タブを選択します。

2. 「エンティティ」でデモ・プラグイン・サンプル・ホストを検索します。

3. 表示するメトリックを選択します。

4. 「レポートの表示」ボタンをクリックして選択項目に基づいて再計算します。サマリー・グラフが再描画されチャージの割合が表示されます。

5. 下部ペインに詳細を表示します。オプションを変更して表示を再構成します。

18 WebサービスおよびJMXを使用した監視

Enterprise Managerを拡張して、クリティカル・イベント、パフォーマンスの問題、エラー状態および統計について、WebサービスおよびJMXインスツルメント処理されたアプリケーションを監視できます。

WSDLおよびJMX対応のターゲットを監視するEnterprise Managerの機能により、監視操作と管理操作を統合できます。Enterprise Managerフレームワークに追加された場合、通知、ジョブ、レポート作成などのEnterprise Manager機能がこれらのターゲットに自動的に拡張されます。

この章の内容は次のとおりです。

- 概要

- Enterprise ManagerでのWebサービスを使用した監視

- Enterprise ManagerでのWS-Management使用の監視

- JMXインスツルメント処理されたスタンドアロンのJavaアプリケーションまたはJVMターゲットの監視

- Oracle WebLogic Application ServerにデプロイされたJMXアプリケーションの監視

- 管理エージェントへのターゲットの追加

- 資格証明設定の監視

- 監視対象メトリックの表示

- JMXメトリック拡張の作成

- スタンドアロンのJVMまたはOracle Coherenceのメトリックの公開

18.1 概要

Enterprise Managerを使用して、Webサービス管理インタフェース、JMXインスツルメント処理されたアプリケーションおよびサーバーを公開するターゲット、そしてスタンドアロンJava仮想マシン(JVM)ターゲットを監視すると、メタデータ・プラグインを介して新しいターゲット・タイプを定義することになります。

メタデータ・プラグインの作成は、4つの基本手順から構成されます。

1. プラグインに追加するターゲット・メタデータ・ファイルおよびデフォルトの収集ファイルを生成します。

2. 1つ以上のプラグインのターゲット定義ファイルを含むOracleプラグイン・アーカイブを作成します。単一のアーカイブに複数のプラグインが含まれる場合があります。

3. Enterprise Managerにプラグインをインポートします。

4. 適切な管理エージェントにプラグインをデプロイします。
これらの各手順の詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

ターゲット監視の手順は、次の各項で説明しています。

- 第18.2項では、標準メッセージング・プロトコルを使用してネットワーク上で通信する外部インタフェースを公開するソフトウェア・コンポーネントについて説明します。

- 第18.4項では、JMX MBeanを使用してインスツルメント処理された、J2SE5.0以上で稼働するスタンドアロンのJavaアプリケーションについて説明します。

- 第18.5項では、Oracle WebLogicアプリケーション・サーバー9.x 以上で稼働するJMXアプリケーションについて説明します。

第18.4項では、データの収集に関連するMBeanを紹介し、Enterprise ManagerでMBeanをメトリックとして定義する場合に役立つ情報を提供することにより、JMX対応カスタム・アプリケーションのメタデータ・ファイルとデフォルトの収集ファイルの生成方法について説明します。スタンドアロンのJavaアプリケーションがJMXを介してインスツルメント処理されていない場合でも、第18.6.3項で定義するように組込みJVMターゲット・インスタンスを直接作成することにより、そのアプリケーションが稼働しているJVMもモニターできます。

メタデータ・ファイルおよびデフォルトの収集ファイルを作成したら、通常のメタデータ・プラグイン・メカニズムに従ってプラグインをデプロイし、Javaアプリケーション・ターゲット・タイプのターゲット・インスタンスを作成できます。

18.2 Enterprise ManagerでのWebサービスを使用した監視

Webサービスは、疎結合されたソフトウェア・コンポーネントであり、Webサービス定義言語(WSDL)を介して外部インタフェースを公開します。これらのコンポーネントは、Simple Object Access Protocol(SOAP)と呼ばれる標準メッセージング・プロトコルを使用してネットワーク上で通信します。管理エージェントのWebサービスFetchlet(ID WSFを含む)によってSOAP通信がサポートされます。

注意:
Webサービス標準の詳細は、World Wide Web Consortium(W3C)のWebサイトを参照してください。

http://www.w3.org

前提条件

- そのホストに管理エージェント・バージョン12.1.0.0.0以降がインストールされていること。

- Oracle Management Server(OMS)バージョン12.1.0.0.0以降が管理エージェントと通信していること。

18.2.1 メタデータ・ファイルおよびデフォルトの収集ファイルの作成

Webサービス・インタフェースを介して監視するターゲット・タイプを定義すると、WSDLインタフェースをサポートするリソースからメトリックを収集するのに必要なターゲット定義ファイルを作成することになります。

- ターゲット・メタデータ

- デフォルト収集

Enterprise Managerでは、使いやすいWebサービス・コマンドライン・ツールが提供されており、これらの必要なファイルを自動的に生成することにより、プラグインの作成が容易になります。情報は、管理エージェントに統合されたWebサービスfetchletで取得されます。

コマンドライン・ツールは、すべての操作について指定されたWSDLファイルを解析することで動作し、起動する1つ以上の操作を選択できるようにします。WSDLファイルに複数のポート・タイプが指定されている場合、ツールにはいずれか1つのポート・タイプの選択を求めるプロンプトが表示されます。操作は、パラメータとともにリストされます。Webサービスの操作は、次の4つのタイプのいずれかです。

- 一方向

- リクエスト・レスポンス

- 請求レスポンス

- 通知

リクエスト・レスポンス操作タイプは、特に役立ちます。選択された操作には、プリミティブまたは複雑なパラメータや結果が含まれます。Webサービスの呼出し結果が表に表示されます(ツールにより、表の列のラベルの入力を求めるプロンプトが表示されます)。XPath式を指定することで、結果の属性をフィルタ処理することもできます(「CalculatorServiceのターゲット・メタデータ・ファイル」の例の、生成されたターゲット・メタデータのRowTypeプロパティを参照)。フィルタ属性は、関連する属性がわずかしかない場合の複雑な戻り型に役立ちます。

Webサービス・コマンドライン・ツールでは、次のバインディングおよびエンコーディング・スタイルのWebサービスがサポートされます。

- DOC/リテラル

- DOC/ラップ

- RPC/エンコーディング

18.2.1.1 WebサービスCLIコマンドライン・ツールの構文

WebサービスCLIコマンドライン・ツールの構文は次のとおりです。

emctl wscli [-metadata | -help] [-options]

コマンドは、次のオプションを受け入れます。

- -wsdl=file | URL: WSDLファイルまたはURL(必須)

- -username=user ID: WSDLが保護される場合のユーザー名

コマンドライン・ツールには、WebサービスのWSDLを特定するためにWSDLファイル名またはURLが必要です。たとえば、CalculatorサービスのWebサービスのWSDL URLは次のようになります。

http://localhost:44861/CalWS/CalculatorPort?WSDL

コマンド・ツール・スクリプトでは、実行するEnterprise Managerホーム・ディレクトリ(EM_HOME)にアクセスする必要があります。ツールは、デフォルトでORACLE_HOMEに設定されます(この環境変数は、ツールを使用する前に適切に設定しておきます)。

ツールは、すべてのポート・タイプおよびバインディング(HTTP get/post、SOAPなどのサポートされているプロトコル)に対して指定されたWSDLを解析して、すべての操作をリストします。WSDLに複数のポート・タイプがある場合は、最初にポート・タイプを選択するプロンプトが表示されます。

18.2.1.2 Webサービス・コマンドライン・ツールのセキュリティ

コマンドライン・ツールでは、Enterprise Managerで必要なメタデータがターゲット監視の目的でWSDLファイルから生成されます。このツールを実行する場合、WSDLファイルまたはURLに対する読取り権限および生成されるファイルを適切なディレクトリに保存する権限のみが必要です。

18.2.1.3 ファイルの生成

次の例に、ターゲットのメタデータ・ファイルおよび収集ファイルを生成するためにコマンドライン・ツールに渡されるサンプルWSDLファイルを示します。

例: サンプルWSDLファイルCalculatorService.wsdl

<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5. -->
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://tests.jaxws.oracle.com/"
xmlns:ns0="http://www.oracle.com/jaxws/tests"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" name="CalculatorService" targetNamespace="http://tests.jaxws.oracle.com/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://www.oracle.com/jaxws/tests/types">
<xs:complexType name="calculatorFaultInfo">
<xs:sequence>
<xs:element name="number" type="xs:int"/>
<xs:element name="reason" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns:ns1="http://www.oracle.com/jaxws/tests/types" xmlns:tns="http://www.oracle.com/jaxws/tests" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://www.oracle.com/jaxws/tests">
<xs:import namespace="http://www.oracle.com/jaxws/tests/types"/>
<xs:element name="CalculatorException" nillable="true" type="tns:CalculatorException"/>
<xs:element name="CalculatorWrapperException" nillable="true" type="ns1:calculatorFaultInfo"/>
<xs:complexType name="CalculatorException">
<xs:sequence>
<xs:element name="Message" type="xs:string"/>
<xs:element name="Number" type="xs:int"/>
<xs:element name="Reason" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tests.jaxws.oracle.com/" targetNamespace="http://tests.jaxws.oracle.com/">
<xsd:complexType name="add">
<xsd:sequence>
<xsd:element name="arg0" type="xsd:int"/>
<xsd:element name="arg1" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="add" type="tns:add"/>
<xsd:complexType name="addResponse">
<xsd:sequence>
<xsd:element name="return" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="addResponse" type="tns:addResponse"/>
<xsd:complexType name="square">
<xsd:sequence>
<xsd:element name="arg0" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="square" type="tns:square"/>
<xsd:complexType name="squareResponse">
<xsd:sequence>
<xsd:element name="arg0" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="squareResponse" type="tns:squareResponse"/>
<xsd:complexType name="checkNumber">
<xsd:sequence>
<xsd:element name="arg0" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="checkNumber" type="tns:checkNumber"/>
<xsd:complexType name="checkNumberResponse">
<xsd:sequence>
<xsd:element name="return" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="checkNumberResponse" type="tns:checkNumberResponse"/>
</schema>
</wsdl:types>
<wsdl:message name="addInput">
<wsdl:part name="parameters" element="tns:add"/>
</wsdl:message>
<wsdl:message name="addOutput">
<wsdl:part name="parameters" element="tns:addResponse"/>
</wsdl:message>
<wsdl:message name="squareInput">
<wsdl:part name="parameters" element="tns:square"/>
</wsdl:message>
<wsdl:message name="squareOutput">
<wsdl:part name="parameters" element="tns:squareResponse"/>
</wsdl:message>
<wsdl:message name="checkNumberInput">
<wsdl:part name="parameters" element="tns:checkNumber"/>
</wsdl:message>
<wsdl:message name="checkNumberOutput">
<wsdl:part name="parameters" element="tns:checkNumberResponse"/>
</wsdl:message>
<wsdl:message name="CalculatorWrapperException">
<wsdl:part name="CalculatorWrapperException" element="ns0:CalculatorWrapperException"/>
</wsdl:message>
<wsdl:message name="CalculatorException">
<wsdl:part name="CalculatorException" element="ns0:CalculatorException"/>
</wsdl:message>
<wsdl:portType name="Calculator">
<wsdl:operation name="add">
<wsdl:input xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl" message="tns:addInput" ns1:Action=""/>
<wsdl:output xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl" message="tns:addOutput" ns1:Action=""/>
</wsdl:operation>
<wsdl:operation name="square">
<wsdl:input xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl" message="tns:squareInput" ns1:Action=""/>
<wsdl:output xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl" message="tns:squareOutput" ns1:Action=""/>
</wsdl:operation>
<wsdl:operation name="checkNumber">
<wsdl:input xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl" message="tns:checkNumberInput" ns1:Action=""/>
<wsdl:output xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl" message="tns:checkNumberOutput" ns1:Action=""/>
<wsdl:fault name="CalculatorWrapperException" message="tns:CalculatorWrapperException"/>
<wsdl:fault name="CalculatorException" message="tns:CalculatorException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CalculatorSoapHttp" type="tns:Calculator">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="add">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="square">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="checkNumber">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CalculatorWrapperException">
<soap:fault name="CalculatorWrapperException" use="literal" encodingStyle=""/>
</wsdl:fault>
<wsdl:fault name="CalculatorException">
<soap:fault name="CalculatorException" use="literal" encodingStyle=""/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CalculatorService">
<wsdl:port name="CalculatorPort" binding="tns:CalculatorSoapHttp">
<soap:address location="http://localhost:8888/CalWSBA/CalculatorPort"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

次の例では、前述の例で示したWSDLファイルを使用します。最初にツールは、すべてのポート・タイプおよびバインディング(HTTP get/post、SOAPなどのサポートされているプロトコル)に対してWSDLを解析して、すべての操作をリストします。WSDLに複数のポート・タイプがある場合は、最初にポート・タイプを選択するプロンプトが表示されます。

コマンドライン・ツールを開始するには、次のようにします。

1. $AGENT_HOME/binディレクトリに移動します。

2. 次のコマンドを実行します。

$ emctl wscli -metadata -wsdl=/tmp/CalculatorWS.wsdl

起動後に、コマンドライン・ツールは、次の例に示すように必要な情報を求めるプロンプトを自動的に表示します。コマンドライン・ツール・セッションを終了する必要がある場合は、任意の時点で[Ctrl]+[C]を押して終了できます。セッション情報は保存されません。

例: サンプルWebサービス・コマンドライン・ツール・セッション

Oracle Enterprise Manager 12c Release 1 Cloud Control 12.1.0.1.0
Copyright (c) 1996, 2011 Oracle Corporation.  All rights reserved.

OracleHome : /oracle/oms/agent
EMDROOT    : /oracle/oms/agent

Generate Metric Metadata for Web Service Monitoring

Reading WSDL Document at /tmp/CalculatorWS.wsdl...done.

==> Enter the metadata file name [/tmp/target/metadata/CalculatorService.xml] :

* Selected Service: CalculatorService

* Selected Port: CalculatorPort

All operations for the selected Port "CalculatorPort":
[1]   squareResponse square(int arg0)
[2]   checkNumberResponse checkNumber(int arg0)
[3]   addResponse add(int arg0, int arg1)

==> Enter the index [1-3] of operation to select: 1
* Selected Operation:
squareResponse square(int arg0)

Define new metric group:
==> Enter the name for this metric group [square]:

Return value(s) for the selected operation:
[1]   //ns0:squareResponse/arg0 <int>

==> Enter the index [1-1] of metric to display: 1
==> Enter the name for this metric [arg0]: SquareResult
==> Enter the label for this metric [SquareResult]:
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for this item <y/n>? [n] :

Setup operation Argument: square.arg0 <type:int>
==>   Enter value [%square.arg00001%] :

==> Do you want to use jps-config-jse.xml <y/n>? [n] :

==> Do you want to add User/Password Credential <y/n>? [n] : y
==> Enter the name for User/Password credential set [UserCredentialSet01] :

==> Do you want to add SSL TrustStore Credential <y/n>? [n] :

==> Do you want to add SSL KeyStore Credential <y/n>? [n] :

==> Do you want to add KeyStore Credential <y/n>? [n] :

==> Do you want to add Encryption Key Credential <y/n>? [n] :

==> Do you want to add Signature Key Credential <y/n>? [n] :

==> Is this metric group for periodic collection <y/n>? [y] :
The following units are for collection frequency:
[1]   Min
[2]   Hr
[3]   Day

==> Enter the index [1-3] of unit for this collection: 1
==> Enter the frequency of collection in Min: 30

==> Do you want to add another metric group <y/n>? [n] :

Files Generated:
- Target Metadata file: /tmp/target/metadata/CalculatorService.xml
- Target Collection file: /tmp/target/metadata/CalculatorServiceCollection.xml

コマンドライン・ツールは、次の例に示すように、CalculatorServiceターゲット・タイプの監視に必要なメタデータを生成します。

例: CalculatorServiceのターゲット・メタデータ・ファイル

<!DOCTYPE TargetMetadata SYSTEM "../dtds/TargetMetadata.dtd">
<TargetMetadata META_VER="1.0" TYPE="CalculatorService">
<Display>
<Label NLSID="NLSID_CALCULATOR_SERVICE">CalculatorService</Label>
<ShortName NLSID="NLSID_CALCULATOR_SERVICE">CalculatorService</ShortName>
<Description NLSID="NLSID_CALCULATOR_SERVICE">CalculatorService</Description>
</Display>
<Metric NAME="square" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_SQUARE">square</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="SquareResult" TYPE="STRING">
<Display>
<Label NLSID="COL_SQUARE_RESULT">SquareResult</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="WSF">
<Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property>
<Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property>
<Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">square.SecurityPolicy</Property>
<Property NAME="ServiceEndpoint" SCOPE="INSTANCE" OPTIONAL="FALSE">square.ServiceEndpoint</Property>
<Property NAME="ServiceName" SCOPE="GLOBAL" OPTIONAL="FALSE">ns0:CalculatorService</Property>
<Property NAME="PortName" SCOPE="GLOBAL" OPTIONAL="FALSE">ns0:CalculatorPort</Property>
<Property NAME="OperationName" SCOPE="GLOBAL" OPTIONAL="FALSE">square</Property>      <Property NAME="MessageType" SCOPE="GLOBAL" OPTIONAL="FALSE">SOAP</Property>
<Property NAME="SOAPBindingStyle" SCOPE="GLOBAL" OPTIONAL="FALSE">DOCUMENT</Property>
<Property NAME="SOAPBindingUse" SCOPE="GLOBAL" OPTIONAL="FALSE">LITERAL</Property>
<Property NAME="ParameterStyle" SCOPE="GLOBAL" OPTIONAL="FALSE">WRAPPED</Property>
<Property NAME="SOAPVersion" SCOPE="GLOBAL" OPTIONAL="FALSE">SOAP_1_1</Property>
<Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="http://tests.jaxws.oracle.com/"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">//ns0:squareResponse/arg0</Property>
<Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">SquareResult:STRING</Property>
<Property NAME="Payload" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://tests.jaxws.oracle.com/">
<ns1:square>
<arg0>%square.arg00001%</arg0>
</ns1:square>
</soap:Body>
</soap:Envelope>]]></Property>
<Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet01</Property>
<CredentialRef NAME="UserCredentialSet01">UserCredentialSet01</CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="CSFKeyCredential">
<Display>
<Label NLSID="CRED_TYPE">CSF-Key Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="CSFKey">
<Display>
<Label NLSID="CRED_C_S_F_KEY">Alias CSF Key</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialType NAME="AliasCredential">
<Display>
<Label NLSID="CRED_TYPE">Alias Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="Alias">
<Display>
<Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="Password">
<Display>
<Label NLSID="CRED_PASSWORD">Password for the alias</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="UserCredentialSet01" USAGE="MONITORING">
<AllowedCredType TYPE="CSFKeyCredential"/>
<AllowedCredType TYPE="AliasCredential"/>
</CredentialSet>
</CredentialInfo>
<InstanceProperties>
<InstanceProperty NAME="ProxyHost" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_PROXY_HOST">Proxy Server Name</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="ProxyPort" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_PROXY_PORT">Proxy Server Port</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="square.SecurityPolicy" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_SQUARE_SECURITY_POLICY">[square] Authentication/Web Service Policy</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="square.ServiceEndpoint" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_SQUARE_SERVICE_ENDPOINT">[square] Web Service Endpoint URL</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="square.arg00001" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_SQUARE_ARG00001">[square] square.arg0</Label>
</Display>    </InstanceProperty>  </InstanceProperties></TargetMetadata>

コマンドライン・ツールは、次の例に示すように、必要な収集ファイルも生成します。

例: CalculatorServiceのデフォルトの収集ファイル

<!DOCTYPE TargetCollection SYSTEM "../dtds/TargetCollection.dtd">
<TargetCollection TYPE="CalculatorService">
<CollectionItem NAME="square">
<Schedule>
<IntervalSchedule TIME_UNIT="Min" INTERVAL="30"/>
</Schedule>
</CollectionItem>
</TargetCollection>

ツールによってターゲット・メタデータ・ファイルおよび収集ファイルが生成されたら、Oracleプラグイン・アーカイブを作成できます。詳細は、第14.4項「プラグイン・アーカイブの作成」を参照してください。

18.3 Enterprise ManagerでのWS-Management使用の監視

Enterprise Manager 12c以降では、WS-Management(WS-MAN)準拠リソースは、fetchlet WSManagementFetchletを使用してモニターできます。

fetchletは、WS-Transferプロトコルを使用してWS-MANリソースと通信します。このプロトコルは、管理対象リソースがサポートする必要がある多くの管理操作を定義します。ただし、現在のリリースでfetchletがサポートするのは、WS-Transfer GET操作のみです。

注意:
WS-Managementの監視の規格については、DMTFのWebサイト『Web Services Management』を参照してください。

http://www.dmtf.org/standards/wsman

前提条件

- そのホストに管理エージェント・バージョン12.1.0.0.0以上がインストールされていること。

- Oracle Management Server(OMS)バージョン12.1.0.0.0以上が管理エージェントと通信していること。

18.3.1 メタデータ・ファイルおよびデフォルトの収集ファイルの作成

Enterprise Managerでは、使いやすいWS-Management CLIコマンドライン・ツールが提供されており、必要なターゲットのメタデータ・ファイルやデフォルトの収集ファイルを自動的に生成することにより、新しい管理プラグインの作成が容易になります。情報は、管理エージェントに統合されたWSManagementFetchletで取得されます。

WS-Managementインタフェースをサポートするリソースでは、XML Schema Definition(XSD)表現を使用してそのモデルに固有の要素を記述し、WSDLのように、Webサービスにアクセス可能な公共のリンクとしてXSDを公開する必要があります。

コマンドライン・ツールは、管理対象のWS-MANリソースの指定のXSDファイルを解析することで機能し、関連のリソース・プロパティを選択して監視メトリックを構築するプロンプトを表示します。

18.3.1.1 WS-Management CLIコマンドライン・ツールの構文

WS-Management CLIコマンドライン・ツールの構文は次のとおりです。

Usage: emctl wsmancli [-metadata | -help] [-options]

コマンドは、次のオプションを受け入れます。

- -schema=file | URL: リソースのXSDファイルまたはURL [必須]

- -username=user ID : スキーマが保護される場合のユーザー名

コマンドライン・ツールには、リソース・スキーマを特定するためにXSDファイル名またはURLが必要です。たとえば、Traffic Light WS-ManagementサービスのXSD URLは次のようになります。

http://localhost:8888/TrafficLight?xsd

コマンド・ツール・スクリプトでは、実行するEnterprise Managerホーム・ディレクトリ(EM_HOME)にアクセスする必要があります。ツールは、デフォルトでORACLE_HOMEに設定されます(この環境変数は、ツールを使用する前に適切に設定しておきます)。

18.3.1.2 コマンドライン・ツールのセキュリティ

コマンドライン・ツールでは、Enterprise Managerで必要なメタデータがターゲット監視の目的でリソースXSDから生成されます。このツールを実行する場合、XSDファイルまたはURLに対する読取り権限および生成されるファイルを適切なディレクトリに保存する権限のみが必要です。

18.3.1.3 ターゲットのメタデータ・ファイルおよび収集ファイルの生成

次の例に、ターゲットのメタデータ・ファイルおよび収集ファイルを生成するためにコマンドライン・ツールに渡されるサンプルXSDファイルを示します。

例: サンプルXSDファイルTrafficLight.xsd

<?xml version="1.0" encoding="UTF-8"?><xs:schema targetNamespace="http://schemas.wiseman.dev.java.net/traffic/1/light.xsd" elementFormDefault="qualified" blockDefault="#all" xmlns:tl="http://schemas.wiseman.dev.java.net/traffic/1/light.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="TrafficLightType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="color" type="xs:string"/>
<xs:element name="x" type="xs:int"/>
<xs:element name="y" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:element name="trafficlight" type="tl:TrafficLightType"/>
</xs:schema>

コマンドライン・ツールを開始するには、次のようにします。

1. $AGENT_HOME/binディレクトリに移動します。

2. 次のコマンドを実行します。

$ emctl wsmancli -metadata -schema= http://localhost:8080/Traffic?xsd

起動後に、コマンドライン・ツールは、次の例に示すように必要な情報を求めるプロンプトを自動的に表示します。コマンドライン・ツール・セッションを終了する必要がある場合は、任意の時点で[Ctrl]+[C]を押して終了できます。セッション情報は保存されません。

例: サンプルWS-Management CLIコマンドライン・ツール・セッション

Oracle Enterprise Manager 12c Release 1 Cloud Control 12.1.0.0.0
Copyright (c) 1996, 2011 Oracle Corporation.  All rights reserved.

OracleHome : /oracle/oms/agent
EMDROOT    : /oracle/oms/agent

Generate Metric Metadata for WS-Management Resource Monitoring

Reading Resource XSD Document at http://localhost:8080/Traffic?xsd...done.

==> Enter the name for this target type: TrafficLight

==> Enter the metadata file name [/tmp/target/metadata/TrafficLight.xml] :

Define new metric group name:
==> Enter the name for this metric group: trafficLight

WS-Addressing namespaces:
[1]   http://www.w3.org/2005/08/addressing
[2]   http://schemas.xmlsoap.org/ws/2004/08/addressing

==> Enter the index [1-2] to select: 1

SOAP Envelope namespaces:
[1]   http://www.w3.org/2003/05/soap-envelope
[2]   http://schemas.xmlsoap.org/soap/envelope/

==> Enter the index [1-2] to select: 1

Resource properties:
[1]   trafficlight:color
[2]   trafficlight:name
[3]   trafficlight:x
[4]   trafficlight:y

==> Enter the index [1-4] of property to display: 2
==> Enter the name for this metric [name]:
==> Enter the label for this metric [name]:
==> Is this a key metric <y/n>? [n] : y
==> Do you want to add another metric <y/n>? [n] : y

Resource properties:
[1]   trafficlight:color
[2]   trafficlight:x
[3]   trafficlight:y

==> Enter the index [1-3] of property to display: 1
==> Enter the name for this metric [color]:
==> Enter the label for this metric [color]:
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for this item <y/n>? [n] :
==> Do you want to add another metric <y/n>? [n] : y

Resource properties:
[1]   trafficlight:x
[2]   trafficlight:y

==> Enter the index [1-2] of property to display: 1
==> Enter the name for this metric [x]:
==> Enter the label for this metric [x]:
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for this item <y/n>? [n] :
==> Do you want to add another metric <y/n>? [n] : y

Resource properties:
[1]   trafficlight:y

==> Enter the index [1-1] of property to display: 1
==> Enter the name for this metric [y]:
==> Enter the label for this metric [y]:
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for this item <y/n>? [n] :

==> Enter comma-separated list of Selector elements: name

==> Do you want to add User/Password Credential <y/n>? [n] : y
==> Enter the name for User/Password credential set [UserCredentialSet01] :

==> Is this metric group for periodic collection <y/n>? [y] :
The following units are for collection frequency:
[1]   Min
[2]   Hr
[3]   Day

==> Enter the index [1-3] of unit for this collection: 1
==> Enter the frequency of collection in Min: 30

==> Do you want to add another metric group <y/n>? [n] :

Files Generated:
- Target Metadata file: /tmp/target/metadata/TrafficLight.xml
- Target Collection file: /tmp/target/metadata/TrafficLightCollection.xml

コマンドライン・ツールは、次の例に示すように、ターゲット・タイプTrafficLightの監視に必要なメタデータを生成します。

例: TrafficLightターゲットのメタデータ・ファイル

<!DOCTYPE TargetMetadata SYSTEM "../dtds/TargetMetadata.dtd">
<TargetMetadata META_VER="1.0" TYPE="TrafficLight">
<Display>
<Label NLSID="NLSID_TRAFFIC_LIGHT">TrafficLight</Label>
<ShortName NLSID="NLSID_TRAFFIC_LIGHT">TrafficLight</ShortName>
<Description NLSID="NLSID_TRAFFIC_LIGHT">TrafficLight</Description>
</Display>
<Metric NAME="trafficLight" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_TRAFFIC_LIGHT">trafficLight</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING">
<Display>
<Label NLSID="COL_NAME">name</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="color" TYPE="STRING">
<Display>
<Label NLSID="COL_COLOR">color</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="x" TYPE="STRING">
<Display>
<Label NLSID="COL_X">x</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="y" TYPE="STRING">
<Display>
<Label NLSID="COL_Y">y</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="WSManagementFetchlet">
<Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property>
<Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property>
<Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="TRUE">trafficLight.SecurityPolicy</Property>
<Property NAME="ResourceURL" SCOPE="INSTANCE" OPTIONAL="FALSE">trafficLight.ResourceURL</Property>
<Property NAME="To" SCOPE="INSTANCE" OPTIONAL="FALSE">trafficLight.To</Property>
<Property NAME="OptionSet" SCOPE="INSTANCE" OPTIONAL="TRUE">trafficLight.OptionSet</Property>
<Property NAME="Locale" SCOPE="INSTANCE" OPTIONAL="TRUE">trafficLight.Locale</Property>
<Property NAME="MaxEnvelopeSize" SCOPE="INSTANCE" OPTIONAL="TRUE">trafficLight.MaxEnvelopeSize</Property>
<Property NAME="OperationTimeout" SCOPE="INSTANCE" OPTIONAL="TRUE">trafficLight.OperationTimeout</Property>
<Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns1="http://schemas.wiseman.dev.java.net/traffic/1/light.xsd"][ns0="http://www.w3.org/2001/XMLSchema"][wsa="http://www.w3.org/2005/08/addressing"][env="http://www.w3.org/2003/05/soap-envelope"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">
//ns1:trafficlight/ns1:name,//ns1:trafficlight/ns1:color,//ns1:trafficlight/ns1:x,//ns1:trafficlight/ns1:y</Property>
<Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,color:STRING,x:STRING,y:STRING</Property>
<Property NAME="ReplyTo" SCOPE="GLOBAL" OPTIONAL="FALSE">http://www.w3.org/2005/08/addressing/role/anonymous</Property>
<Property NAME="Action" SCOPE="GLOBAL" OPTIONAL="FALSE">http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</Property>
<Property NAME="TransferOperation" SCOPE="GLOBAL" OPTIONAL="FALSE">GET</Property>
<Property NAME="SelectorSet" SCOPE="GLOBAL" OPTIONAL="FALSE">[name,%trafficLight.name%]</Property>
<Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet01</Property>
<CredentialRef NAME="UserCredentialSet01">UserCredentialSet01</CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="CSFKeyCredential">
<Display>
<Label NLSID="CRED_TYPE">CSF-Key Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="CSFKey">
<Display>
<Label NLSID="CRED_C_S_F_KEY">Alias CSF Key</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialType NAME="AliasCredential">
<Display>
<Label NLSID="CRED_TYPE">Alias Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="Alias">
<Display>
<Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="Password">
<Display>
<Label NLSID="CRED_PASSWORD">Password for the alias</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="UserCredentialSet01" USAGE="MONITORING">
<AllowedCredType TYPE="CSFKeyCredential"/>
<AllowedCredType TYPE="AliasCredential"/>
</CredentialSet>
</CredentialInfo>
<InstanceProperties>
<InstanceProperty NAME="ProxyHost" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_PROXY_HOST">Proxy Server Name</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="ProxyPort" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_PROXY_PORT">Proxy Server Port</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.SecurityPolicy"
CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_SECURITY_POLICY">[trafficLight] Authentication/Web Service Policy</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.ResourceURL" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_RESOURCE_U_R_L">[trafficLight] Resource URL (wsman:ResourceURL)</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.To" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_TO">[trafficLight] Network Address of the service (wsa:To)</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.OptionSet" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_OPTION_SET">[trafficLight] Set of wsman:Option. Format: [&lt;OptionName1&gt;, value:&lt;value1&gt;, type:&lt;type1&gt;, mustComply:&lt;true|false&gt;][&lt;OptionName2&gt;, value:&lt;value2&gt;, type:&lt;type&gt;, mustComply:&lt;true|false&gt;][...]</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.Locale" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_LOCALE">[trafficLight] wsman:Locale (RFC 3066 language code). Format: e.g. en-US</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.MaxEnvelopeSize"
CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_MAX_ENVELOPE_SIZE">[trafficLight] wsman:MaxEnvelopeSize in Octets. Format: e.g. 8192</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.OperationTimeout"
CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_OPERATION_TIMEOUT">[trafficLight] wsman:OperationTimeout. Format: e.g. PT30S</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="trafficLight.name" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_TRAFFIC_LIGHT_NAME">[trafficLight] Value for the Selector "name"</Label>
</Display>
</InstanceProperty>
</InstanceProperties>
</TargetMetadata>

コマンドライン・ツールは、次の例に示すように、必要な収集ファイルも生成します。

例: TrafficLightのデフォルトの収集ファイル

<!DOCTYPE TargetCollection SYSTEM "../dtds/TargetCollection.dtd">
<TargetCollection TYPE="TrafficLight">
<CollectionItem NAME="trafficLight">
<Schedule>
<IntervalSchedule TIME_UNIT="Min" INTERVAL="30"/>
</Schedule>
</CollectionItem>
</TargetCollection>

コマンドライン・ツールによってターゲットのメタデータ・ファイルおよび収集ファイルが生成されたら、メタデータ・プラグイン・アーカイブを作成できます。第14.4項「プラグイン・アーカイブの作成」を参照してください。

18.4 JMXインスツルメント処理されたスタンドアロンのJavaアプリケーションまたはJVMターゲットの監視

注意:
JMXインスツルメント処理されていないJavaアプリケーションが稼働するJ2SE 1.5以上のJVMを監視する場合は、直接第18.6.3項「スタンドアロンJavaアプリケーションまたはJVMターゲットの構成」に移動してタイプJVMのターゲット・インスタンスを作成してください。これにより、Enterprise Manager(できれば、JVMと同じホストにインストールされたEnterprise Managerエージェント)で、これらのJVMを監視できるようになります。ただし、後述する前提条件および既知の制限事項が適用されます。

Enterprise Managerには、即時利用可能なJVMターゲット・タイプが用意されています。これを使用することで、Enterprise Managerバージョン10.2.0.3以降でリモート管理に使用できるスタンドアロンJ2SE1.5 JVMのメトリックを追加および構成できます。

Oracle Container for J2EEにデプロイされたJ2EEアプリケーションに関して、使用するスタンドアロンJavaアプリケーションではJMX MBeanを介してデータが公開される場合は、JMXコマンドライン・ツールを使用して、このようなアプリケーションをEnterprise Managerターゲット・タイプとして定義し、このターゲット・タイプのメタデータ・ファイルおよびデフォルトの収集ファイルを生成できます。Enterprise Managerエージェント(JVMと同じホストにインストールすることを推奨)からスタンドアロン・アプリケーション・ターゲットを監視できます。そのホストで実行されている複数のJVMを、同じEnterprise Managerエージェントで監視できます。

J2SE1.5以上のスタンドアロンJVMでユーザー定義のMBeanからメトリックを収集し、JMX fetchletを使用してEnterprise Manager内に配置できます。fetchletは、引数および戻り値としてJMX OpenTypeを使用するユーザー定義のMBeanを含む、スタンドアロンのSun J2SE1.5以上のJVM用に設計されています。

前提条件

- 特定のホスト上で稼働するJava仮想マシンJ2SE 1.5以上のインスタンス。このJVMは、Enterprise Managerでターゲットとして監視する必要があるMBeanを介してメトリックを公開する、JMX対応アプリケーションで実行できます。アプリケーションによってMBeanが公開されない場合は、Enterprise Managerで提供される組込みJVMターゲット・タイプを使用して、JVM自体を監視できます。詳細は、第18.6.3項「スタンドアロンJavaアプリケーションまたはJVMターゲットの構成」を参照してください。

- 有効なリモート・システムからの監視および管理。JVMの起動時に、このシステム・プロパティを設定してください。
com.sun.management.jmxremote.port=portNum

リモート管理用にJVMを有効化する処理の詳細は、次のドキュメントを参照してください。

http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html

- そのホストに管理エージェント・バージョン10.2.0.3以降がインストールされていること。

- Oracle Management Server(OMS)バージョン10.2.0.3以上が管理エージェントと通信していること。

既知の制限事項

現在、jmxcliツールでは、ターゲットJVMインスタンス上のデフォルトのプラットフォームMBeanserverで使用可能な(プラットフォームおよびアプリケーションで定義された)MBeanの参照および監視のみ行うことができます。ターゲットJVMインスタンス上のカスタムMBeanServerの監視はサポートされていません。jmxcliツールは基本的に、属性と、OpenType(SimpleType、CompositeType、TabularTypeおよびSimpleTypeの配列など)である操作のパラメータおよび戻り値を処理します。

18.4.1 メタデータ・ファイルおよびデフォルトの収集ファイルの生成

Webサービスの場合と同様に、コマンドライン・ツール(jmxcli)では、JMXインスツルメント処理されたスタンドアロンのJavaアプリケーションの必要なターゲット定義ファイル(メタデータ・ファイルとデフォルトの収集ファイル)の作成が容易になります。ツールは、J2SE1.5以上のJVMのMBeanServerとユーザーをつなぐオフライン構成ユーティリティであり、使用可能なMBeanを参照できます。また、以降のツールの呼出しで既存のファイル・セットにメトリックを追加することもできます。

コマンドライン・ツール・セッション中に、特定のMBeanを選択し、続いてEnterprise Managerがこれらの値を収集するためにこれらのMBeanに対して定期的に取得または起動する必要のある目的の属性/統計値または操作を選択します。ツールは、1つ以上のEnterprise Managerメトリック(列あり)としてのこれらの収集された値のパッケージ化の定義を支援し、またメトリック収集間隔を指定できるようにします。

18.4.1.1 JMXコマンドライン・ツールの構文

JMXコマンドライン・ツールの構文は次のとおりです。

cd Agent Instance dir/bin
emctl jmxcli -t JVM
[  -l JMXServiceURL
-h hostname
-p port
-u username
-c credential/password
-w work directory
-e true/false
[-m MBeanName | -d jmx_domain | -s mBeanPattern]
]

jmxcliコマンドは、次のオプションを受け入れます。

- -t JVM: MBeanServerがスタンドアロンのJVM上にあることを示します。

- -l: ターゲットJVMのJMXServiceURL。

- -h: JVMのホスト名。デフォルト: localhost(-lオプションが指定されていない場合)。

- -p: JVMのRMI/RMISポート。デフォルト: 23791(-lオプションが指定されていない場合)。アプリケーション・サーバー10.1.3.0以上のインスタンスのORACLE_HOME/opmn/binディレクトリからopmnctl status -1を実行し、MBeanのデプロイ対象となったOC4JのRMIポートを突き止めます。

- -u: JVMの有効なユーザー名。デフォルト: なし。

- -c: 前述のユーザーのパスワード。デフォルト: なし。このパスワードはデータの取得のみに使用されるもので、どこにも格納されません。

- -w: メタデータ・ファイルおよびデフォルトの収集ファイルが作成される作業ディレクトリ。デフォルト: 現在のディレクトリ。コマンドライン・ツールを起動する場合は、サブディレクトリを作成してファイルを追加するために、このディレクトリに対する書込み権限が必要です。メタデータ・ファイルおよびデフォルトの収集ファイルがそのディレクトリにすでに存在する場合は、元のファイルに追加するか元のファイルを上書きするかを選択できます。

- -e: JVMへのSSL接続を有効にする場合はtrueに設定します。デフォルト: false。

3つのパラメータ(-m、-dまたは-s)のいずれかを指定して、MBeanServerで使用可能なMBeanのサブセットを取得することもできます。デフォルトでは、これらの3つのパラメータのいずれも指定されていない場合は、MBeanServer上のすべてのMBeanが表示され、そこから選択できます。

- -m: 取得して検証する必要のある必須のMBeanのMBean ObjectName。これが複数のMBeanと一致するObjectNameパターンの場合は、パターンと一致するすべてのMBeanのリストが表示され、処理するMBeanを一度に1つずつ選択できます。

- -d: MBeanを取得して検証する必要のある必須アプリケーションのMBeanドメイン。たとえば、アプリケーション(myApp)のすべてのMBeanを参照するとします。このアプリケーションのMBeanは、JMXドメインmyAppで使用できます。

- -s: メトリックの定義の基にするMBeanのセットと一致するMBeanパターン。-sパラメータを使用すると、類似するタイプの複数のMbeanからJMX属性/統計を一括して取得することができます。
-sパラメータを指定した場合、このjmxcliセッション時に作成されるメトリックは、Enterprise Managerコンソールに複数行の表で表示されます。この表の1行は、指定したパターンと一致する各MBeanを表し、MBean ObjectNameがキー列になります。たとえば、-s 'oc4j:j2eeType=Servlet,*'と指定した場合、作成されるメトリックの行は複数になり、1行がObjectNameパターンに一致する各サーブレットを表します。MBean ObjectName列に加えて、jmxcliセッション時に選択された、操作の戻りオブジェクトの属性またはフィールドになる列があります。

18.4.1.2 ファイルの生成

次の手順は、JMXコマンドライン・ツールでファイルを生成するための準備およびツールの使用方法を説明しています。

1. MBeanがあるスタンドアロンJVMインスタンスを起動します。次の例はJVMの起動を示しています。

JDK15/bin/java com.sun.management.jmxremote
com.sun.management.jmxremote.port=6789
com.sun.management.jmxremote
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false MyJMXEnabledApp $*

jmxcliツールは、このポート番号にJSR-160クライアントとして接続します。

2. バージョン10.2.0.3以降のEnterprise Managerエージェントの$ORACLE_HOME/binディレクトリに移動します。

3. 環境変数を次のように設定します。

setenv USER_JARS /myAppHome/myJar1.jar;/myAppHome/myJar2.jar

ターゲットMBeanServerに登録されているいずれかのMBeanの属性または操作、もしくはその両方でカスタム・クラスが戻される場合は、この手順を行う必要があります。Enterprise Managerエージェント(fetchlet)では、JMX OpenTypeを返す属性または操作(あるいはその両方)のみを効率的に監視できます。

注意:
アプリケーション定義のMBeanによってカスタム・クラスが戻される場合は、さらに、このアプリケーションを監視するEnterprise ManagerエージェントのCLASSPATHで、対応するユーザーのjarファイルを設定する必要があります。これを行うには、このjarファイルの場所を$ORACLE_HOME/sysman/config/classpath.lstファイルに手動で挿入します。

4. 次のコマンドを実行します。

./emctl jmxcli -t JVM -h localhost -p 6789 u user -c password

詳細は次のとおりです。

- -t JVM: MBeanServerが標準のJVM上で稼働していることを示します。

- -h: JVMが稼働するホストの名前。

- -p: JSR-160リモート・アクセス用にJVMを有効化するポート番号。

-h hostおよび-p portの各オプションのかわりに-l JMXServiceURLオプションを指定することもできます。

-w work directoryオプションを使用してjmxcliを起動し、指定された作業ディレクトリにメタデータ・ファイルおよびデフォルトの収集ファイルを作成できます。jmxcliの起動時に-wを指定しない場合は、デフォルトで現在のディレクトリ(jmxcliを起動するディレクトリ)が使用されます。

起動後に、コマンドライン・インタフェースは、「JMXCLIセッションのサンプル」の例に示すように必要な情報を求めるプロンプトを自動的に表示します。ほとんどのプロンプトでは、デフォルトを使用するために[Enter]キーを押すだけで構いません。JMXコマンドライン・ツール・セッションを終了する必要がある場合は、任意の時点で[Ctrl]+[C]を押して終了できます。セッション情報は保存されません。

終了後にセッションが終わると、その結果がmetadata/myJ2EEApp.xmlのようなmyJ2EEApp.xmlファイル(または指定したターゲット・タイプ)になり、
定期的な収集を指定した場合はdefault_collection/myJ2EEApp.xmlファイルになります。

JMXCLI起動のサンプル

次のサンプルは、リモートMBeanServerのすべてのMBeanを参照できるようにします。

./emctl jmxcli -t JVM -p 6789 (the host defaults to "localhost")

次のサンプルは、コマンドライン・インタフェースを起動し、-mオプションの引数として指定されたMBeanPatternに基づいてMBeanをフィルタ処理します。

./emctl jmxcli -t JVM -p 6789 -m "java.lang:*"

例: JMXCLIセッションのサンプル

oracleHome=/ade/sparmesw_emas_ml/oracle
userJars=

Connecting to server: localhost:6789
Connecting without authentication. For specifying username and password use
the -u and -c options.

Obtained 14 MBeans matching pattern java.lang:*.

Enter the target type for this metric: [myJ2EEApp] myJavaApp

Enter the target version: [1.0]

Enter the target metadata file: [./metadata/myJavaApp.xml]

Enter the default collections file: [./default_collection/myJavaApp.xml]

Enter a label for this target type: [myJavaApp]

Enter a description for this target type: [myJavaApp]
The available targets are:
0: sun.management.CompilationImpl
(java.lang:type=Compilation)

1: sun.management.MemoryManagerImpl        (java.lang:name=CodeCacheManager,type=MemoryManager)

2: sun.management.GarbageCollectorImpl        (java.lang:name=Copy,type=GarbageCollector)

3: sun.management.MemoryPoolImpl        (java.lang:name=Eden Space,type=MemoryPool)

4: sun.management.RuntimeImpl        (java.lang:type=Runtime)

5: sun.management.ClassLoadingImpl        (java.lang:type=ClassLoading)

6: sun.management.MemoryPoolImpl        (java.lang:name=Survivor Space,type=MemoryPool)

7: sun.management.ThreadImpl        (java.lang:type=Threading)

8: sun.management.GarbageCollectorImpl        (java.lang:name=MarkSweepCompact,type=GarbageCollector)

9: com.sun.management.UnixOperatingSystem        (java.lang:type=OperatingSystem)

10: sun.management.MemoryImpl        (java.lang:type=Memory)

11: sun.management.MemoryPoolImpl        (java.lang:name=Code Cache,type=MemoryPool)

12: sun.management.MemoryPoolImpl        (java.lang:name=Tenured Gen,type=MemoryPool)

13: sun.management.MemoryPoolImpl        (java.lang:name=Perm Gen,type=MemoryPool)

Enter the index of target/MBean you wish to monitor or press <Ctrl-C> to quit: 4

Following metric source types are available for selected target(s):
0: JMX Attributes

Enter the index of your choice or press <Ctrl-C> to quit: 0

Attributes are:

0: BootClassPath         Return Value: java.lang.String
1: BootClassPathSupported        Return Value: boolean
2: ClassPath     Return Value: java.lang.String
3: InputArguments        Return Value: [Ljava.lang.String;
4: LibraryPath   Return Value: java.lang.String
5: ManagementSpecVersion         Return Value: java.lang.String
6: Name  Return Value: java.lang.String
7: SpecName      Return Value: java.lang.String
8: SpecVendor    Return Value: java.lang.String
9: SpecVersion   Return Value: java.lang.String
10: StartTime    Return Value: long
11: SystemProperties     Return Value:
javax.management.openmbean.TabularData
12: Uptime       Return Value: long
13: VmName       Return Value: java.lang.String
14: VmVendor     Return Value: java.lang.String
15: VmVersion    Return Value: java.lang.String
Select one or more items as comma-separated indices: 6,7,8

Number of possible columns in the resultant metric are 3.

Enter the name for this metric column at index=0 : [Name]
Is this column a KEY Column <y/n>? [n] y
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [Name]
Enter the NLSID for column: [Name]
Enter the UNIT for column "Name": [millisec, kb etc.. ]

Enter the name for this metric column at index=1 : [SpecName]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [SpecName]
Enter the NLSID for column: [SpecName]
Enter the UNIT for column "SpecName": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]

Enter the name for this metric column at index=2 : [SpecVendor]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [SpecVendor]
Enter the NLSID for column: [SpecVendor]
Enter the UNIT for column "SpecVendor": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]

Enter the name of this metric: RuntimeMetric
Enter the label for this metric: [RuntimeMetric]

Do you want periodic collection for this metric <y/n>? [n] y
Enter the collection interval in seconds: 300
Periodic collection interval is: 300 seconds.

Do you want to create another metric <y/n>? [n]
Written the metadata xml file: ./metadata/myJavaApp.xml.
Creating new file: ./default_collection/myJavaApp.xml.
Updated the default collection file for myJavaApp at location
./default_collection/myJavaApp.xml.
Exiting...

18.4.2 メタデータ・ファイルおよびデフォルトの収集ファイルの使用方法

currentDir/metadataディレクトリおよびcurrentDir/default_collectionディレクトリで(先に指定したターゲット・タイプの)myTarget.xmlファイルを探します。

これらのファイルは、次のように使用できます。

- ファイルをOracle プラグイン・アーカイブ(OPAR)に変換して、OMSからエージェントおよびOMSから作成されたターゲット・インスタンスへプッシュします。第14章「プラグインの検証、パッケージ化およびデプロイ」および第18.6.3項「スタンドアロンJavaアプリケーションまたはJVMターゲットの構成」を参照してください。

- ファイルを編集し、メトリック定義およびQueryDescriptorsを抽出して他のメタデータ・ファイルおよびデフォルトの収集ファイルへ移し、必要に応じてExecutionDescriptorsを作成して後処理を行います。

ターゲットのステータス情報をEnterprise Managerコンソールに正しく表示するには、レスポンス・メトリックを定義する必要があります。詳細は、第18.5.1.3項「ターゲット・ステータス情報の表示」を参照してください。

18.5 Oracle WebLogic Application ServerにデプロイされたJMXアプリケーションの監視

11.1管理エージェントに付属のJMX fetchletを使用すると、Oracle WebLogic Application Server 9.x以降にデプロイされたJMXインスツルメント処理アプリケーションのキー・メトリックを監視できます。Enterprise ManagerでJMXインスツルメント処理アプリケーションを監視する場合、Enterprise Managerが監視できる新しいターゲット・タイプを管理プラグインから定義する必要があります。Webサービスのwscliコマンドライン・ツールと同様に(Oracle Application Server(OC4J)で可能なように)、Enterprise Managerには、WebLogicサーバー上のカスタムJMXインスツルメント処理アプリケーションのターゲットのメタデータ・ファイルおよび収集ファイルの生成を自動化するためのjmxcliコマンドライン・ツールが用意されています。

前提条件

- JMX対応のアプリケーションがデプロイされた特定のホスト上で、Enterprise Managerでターゲットとして監視する必要のあるOracle WebLogic Server 9.x以上のインスタンスが稼働していること。

- そのホストに管理エージェント・バージョン11.1以上がインストールされていること(推奨)。

- Oracle Management Server(OMS)バージョン10.2.0.4以上が管理エージェントと通信していること。

- jmxcliツールは基本的に、属性と、OpenTypeである操作のパラメータおよび戻り値を処理します。たとえば、SimpleType、CompositeType、TabularType、およびSimpleTypeの配列などです。

18.5.1 jmxcliを使用したメタデータ・ファイルおよびデフォルトの収集ファイルの作成

Webサービスの場合と同様に、JMXコマンドライン・ツール(jmxcli)では、必要なターゲット定義ファイル(メタデータとデフォルトの収集ファイル)の作成が容易になります。ツールは、MBeanServerとユーザーをつなぐオフライン構成ユーティリティであり、使用可能なMBeanを参照できます。ツールの以降の呼出しで既存のファイルにメトリックを追加することもできます。コマンドライン・ツールのセッション中に、特定のMBeanを選択し、続いてEnterprise Managerで取得する必要がある目的のJMX属性/統計値、またはこれらの値を収集するために選択したMBeanに対して定期的に起動する必要のあるJMX操作を選択します。ツールは、1つ以上のEnterprise Managerメトリック(列あり)としてのこれらの収集された値のパッケージ化の定義を支援し、また列のメトリック収集間隔やしきい値を指定できるようにします。

18.5.1.1 JMXコマンドライン・ツールの構文

Oracle Weblogic Application Server上にあるJMX対応ターゲットのJMXコマンドライン・ツールの構文は次のとおりです。

./emctl jmxcli -t WebLogic [help|options]
where options are:           [  -l JMX ServiceURL
-u username
-c credential/password
-w work directory
[-m MBeanName | -d jmx_domain | -s mBeanPattern]
]

jmxcliコマンドは、次のオプションを受け入れます。

- l : カスタムMBeanをフォームでホスティングするWeblogic管理対象サーバーへのJMXServiceURL

service:jmx:t3://host:t3port/jndi/weblogic.management.mbeanservers.runtime

- u: WebLogicドメインの有効なユーザー名。デフォルト: weblogic

- c: -uオプションで指定されたユーザーに関連付けられているパスワード。デフォルト: なし。パスワードを指定しない場合、パスワードの入力を求められます。

- w: JMXコマンドライン・ツールで作成されたメタデータ・ファイルおよびデフォルトの収集ファイルが置かれるディレクトリ。デフォルト: 現在のディレクトリ。
コマンドライン・ツールを起動する場合は、サブディレクトリを作成してファイルを追加するために、このディレクトリに対する書込み権限が必要です。メタデータ・ファイルおよびデフォルトの収集ファイルがそのディレクトリにすでに存在する場合は、元のファイルに追加するか元のファイルを上書きするかを選択できます。

3つのパラメータ(-m、-dまたは-s)のいずれかを指定して、MBeanServerで使用可能なMBeanのサブセットを取得することもできます。デフォルトでは、これらの3つのパラメータのいずれも指定されていない場合は、MBeanServer上のすべてのMBeanが表示され、そこから選択できます。

- m: 取得して検証する必要のある必須のMBeanのMBean ObjectName。これが複数のMBeanと一致するObjectNameパターンの場合は、パターンと一致するすべてのMBeanのリストが表示され、処理するMBeanを一度に1つずつ選択できます。

- d: MBeanを取得して検証する必要のある必須アプリケーションのMBeanドメイン。たとえば、アプリケーション(myApp)のすべてのMBeanを参照するとします。このアプリケーションのMBeanは、JMXドメインmyAppで使用できます。

- s: メトリックの定義の基にするMBeanの既存のセットと一致するMBeanパターン。-sパラメータを使用すると、類似するタイプの複数のMBeanからJMX属性/統計を1つのメトリック内に取得することができます。
-sパラメータを指定した場合、このjmxcliセッション時に作成されるメトリックは、Enterprise Managerコンソールに複数行の表で表示されます。この表の1行は、指定したパターンに一致する各MBeanを表し、他にキー列が定義されない場合、MBean ObjectNameがキー列になります。たとえば、-s 'com.bea:Type=ServletRuntime,*'と指定した場合、作成されるメトリックの行は複数になり、1行がObjectNameパターンに一致する各サーブレットを表します。MBean ObjectNameキー列に加えて、jmxcliセッション時に選択された、操作の戻りオブジェクトの属性またはフィールドになる列があります。

18.5.1.2 ファイルの生成

JMXコマンドライン・ツールを開始するには、次のようにします。

1. $AGENT_HOME/binディレクトリに移動します。

2. 次のコマンドを実行します。
./emctl jmxcli -t WebLogic [オプション]

起動後に、コマンドライン・インタフェースは、次の例に示すように必要な情報を求めるプロンプトを自動的に表示します。JMXコマンドライン・ツール・セッションを終了する必要がある場合は、任意の時点で[Ctrl]+[C]を押して終了できます。セッション情報は保存されません。

次の例は、jmxcliセッションのサンプルです。

例: jmxcliセッション

$ ./emctl jmxcli -t WebLogic -l "service:jmx:t3://host:22048/jndi/weblogic.management.mbeanservers.runtime" -u weblogic -c welcome1 -s "*:type=soainfra_bpel_requests,*"

注意1: 前述の-sオプションでは、エージェントでメトリックが収集されるたびに、指定されたObjectNameパターンに一致するMBeansの数と同じ行数を持つメトリックが生成されます。常に特定のMBeanから収集する必要がある場合は、-m <ObjectName>オプションを、前述の例で使用されている-s <Mbeanパターン>のかわりに使用してください。

注意2: t3sを使用してweblogicサーバーに接続する必要がある場合は次の環境変数を、jmxcliを起動する前に設定します。

setenv USER_JAVA_PROPS=-Dweblogic.security.TrustKeyStore=CustomTrust
-Dweblogic.security.CustomTrustKeyStoreFileName=$ORACLE_HOME/sysman/config/montrust/AgentTrust.jks
-Dweblogic.security.SSL.enforceConstraints=off
-Dweblogic.security.SSL.ignoreHostnameVerification=true
-Djavax.net.ssl.trustStore=$ORACLE_HOME/sysman/config/montrust/AgentTrust.jks  (or set USER_JAVA_PROP= … equivalent on win32)
setenv USER_JARS  <; separated list of jars needed in classpath if custom authentication modules are involved in SSL connection>

セミコロンがjarファイルのリストのデリミタとして使用されます。

例: setenv USER_JARS "jar1;jar2;jar3"

MBeanがカスタムWeblogicオブジェクトをMBeanInfoで返すようなケースでは、jmxcliを起動する前に、weblogic.jarを前述の環境変数に設定することが必要な場合があります。

例: setenv USER_JARS $BEA_HOME/server/lib/weblogic.jar

oracleHome=/ade/sparmesw_egcli/oracle/work/middleware/oms
userJars=
Connecting to server:
service:jmx:t3://host1:22048/jndi/weblogic.management.mbeanservers.runtime
Connecting as user: weblogic
Obtained 3 MBeans matching pattern *:type=soainfra_bpel_requests,*.

Enter the target type for this metric: [myJ2EEApp] myCustomWLApp
Enter the target version: [1.0]
Enter the target metadata file: [./metadata/myCustomWLApp.xml]
Enter the default collections file: [./default_collection/myCustomWLApp.xml]
Enter a label for this target type: [myCustomWLApp]
Enter a description for this target type: [myCustomWLApp]
The available targets are:
0: DMS metric mbean
(oracle.dms:name=/soainfra/engines/bpel/requests/engine,type=soainfra_bpel_requests)
1: DMS metric mbean
(oracle.dms:name=/soainfra/engines/bpel/requests/system,type=soainfra_bpel_requests)
2: DMS metric mbean
(oracle.dms:name=/soainfra/engines/bpel/requests/invoke,type=soainfra_bpel_requests)
Following metric source types are available for selected target(s):
0: JMX Attributes
Enter the index of your choice or press <Ctrl-C> to quit: 0
Attributes are:
0: active_count  Return Value: java.lang.Integer
1: active_maxValue       Return Value: java.lang.Integer
2: active_minValue       Return Value: java.lang.Integer
3: active_value  Return Value: java.lang.Integer
4: Name  Return Value: java.lang.String
5: Parent        Return Value: java.lang.String
6: scheduled_count       Return Value: java.lang.Integer
7: scheduled_maxValue    Return Value: java.lang.Integer
8: scheduled_minValue    Return Value: java.lang.Integer
9: scheduled_value       Return Value: java.lang.Integer
10: threadCount_count    Return Value: java.lang.Integer
11: threadCount_maxValue         Return Value: java.lang.Integer
12: threadCount_minValue         Return Value: java.lang.Integer
13: threadCount_value    Return Value: java.lang.Integer

Select one or more items as comma separated indices: 4,0,1,2
Number of possible columns in the resultant metric are 4.

Enter the name for this metric column at index=0 : [Name]
Is this column a KEY Column <y/n>? [n] y

"y"を指定すると、複数の行が返されるような場合にこの列の値が一意であることが示されます。

Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [Name]
Enter the NLSID for column: [Name]
Enter the UNIT for column "Name": [millisec, kb etc.. ]

Enter the name for this metric column at index=1 : [active_count]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [active_count]
Enter the NLSID for column: [active_count]
Enter the UNIT for column "active_count": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n] y
Creating threshold!!
Following operators are available for creating thresholds:
0: GT
1: EQ
2: LT
3: LE
4: GE
5: CONTAINS
6: NE
7: MATCH

Enter the index of your choice or press <Ctrl-C> to quit: 0
Enter the CRITICAL threshold: [NotDefined] 50
Enter the WARNING threshold: [NotDefined] 45
Enter the number of occurrences that trigger threshold: [6] 3
Enter the message to be used when threshold is triggered: [active_count is %value% and has crossed warning (%warning_threshold%) or critical (%critical_threshold%) threshold.]
Enter NLSID for the message used when threshold is triggered: [active_count_cond] Enter the name for this metric column at index=2 : [active_maxValue]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [active_maxValue]
Enter the NLSID for column: [active_maxValue]
Enter the UNIT for column "active_maxValue": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]

Enter the name for this metric column at index=3 : [active_minValue]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [active_minValue]
Enter the NLSID for column: [active_minValue]
Enter the UNIT for column "active_minValue": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]

Enter the name of this metric: bpel_requests
Enter the label for this metric: [bpel_requests]

Do you want periodic collection for this metric <y/n>? [n] y
Enter the collection interval in seconds: 300
Periodic collection interval is: 300 seconds.

Do you want to create another metric <y/n>? [n]
Written the metadata xml file: ./metadata/myCustomWLApp.xml.
Creating new file: ./default_collection/myCustomWLApp.xml.
Updated the default collection file for myCustomWLApp at location ./default_collection/myCustomWLApp.xml.
Exiting...

例: jmxcli起動のサンプル(-mを使用し、複数のMBeanの複数のメトリックを1つのjmxcliセッションで定義)

$ ./emctl jmxcli -t WebLogic -l "service:jmx:t3://host1:22048/jndi/weblogic.management.mbeanservers.runtime" -u weblogic -c welcome1 -m "com.bea:ApplicationRuntime=soa-infra,WebAppComponentRuntime=soa_server1_/b2b,*"

oracleHome=/ade/sparmesw_egcli/oracle/work/middleware/oms
userJars=
Connecting to server: service:jmx:t3://host1:22048/jndi/weblogic.management.mbeanservers.runtime
Connecting as user: weblogic
Obtained 8 MBeans matching pattern com.bea:ApplicationRuntime=soa-infra,WebAppComponentRuntime=soa_server1_/b2b,*.

Enter the target type for this metric: [myJ2EEApp] myCustomWLApp

Enter the target version: [1.0]

Enter the target metadata file: [./metadata/myCustomWLApp.xml]

Enter the default collections file: [./default_collection/myCustomWLApp.xml]
The file ./metadata/myCustomWLApp.xml already exists.

Do you want to overwrite the existing file, append to it, or quit <o/a/q>? [a]

注意: ファイルがすでに存在するため、これは追加されます。

Appending to existing file: ./metadata/myCustomWLApp.xml.
The available targets are:
0: (com.bea:ApplicationRuntime=soa-infra,Name=JspServlet,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
1: (com.bea:ApplicationRuntime=soa-infra,Name=transportServlet,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
2: (com.bea:ApplicationRuntime=soa-infra,Name=transportServletV,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
3: (com.bea:ApplicationRuntime=soa-infra,Name=b2b_starter_wls,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
4: (com.bea:ApplicationRuntime=soa-infra,Name=soa_server1_soa_server1_/b2b,ServerRuntime=soa_server1,Type=PageFlowsRuntime,WebAppComponentRuntime=soa_server1_/b2b)
5 (com.bea:ApplicationRuntime=soa-infra,Name=WebServiceServlet,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
6: (com.bea:ApplicationRuntime=soa-infra,Name=RedirectUIServlet,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
7: (com.bea:ApplicationRuntime=soa-infra,Name=FileServlet,ServerRuntime=soa_server1,Type=ServletRuntime,WebAppComponentRuntime=soa_server1_/b2b)
Enter the index of target/MBean you wish to monitor or press <Ctrl-C> to quit: 4
Following metric source types are available for selected target(s):
0: JMX Attributes
1: JMX Operations
Enter the index of your choice or press <Ctrl-C> to quit: 0

Attributes are:
0: AppName       Return Value: java.lang.String
1: ContextPath   Return Value: java.lang.String
2: HttpServerName        Return Value: java.lang.String
3: Name  Return Value: java.lang.String
4: PageFlows     Return Value: [Ljavax.management.ObjectName;
5: Parent        Return Value: javax.management.ObjectName
6: ServerName    Return Value: java.lang.String
7: Type  Return Value: java.lang.String

Select one or more items as comma separated indices: 3,0,1

Number of possible columns in the resultant metric are 3.
Enter the name for this metric column at index=0 : [Name]
Is this column a KEY Column <y/n>? [n] y
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [Name]
Enter the NLSID for column: [Name]
Enter the UNIT for column "Name": [millisec, kb etc.. ]

Enter the name for this metric column at index=1 : [AppName]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [AppName]
Enter the NLSID for column: [AppName]
Enter the UNIT for column "AppName": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]

Enter the name for this metric column at index=2 : [ContextPath]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [ContextPath]
Enter the NLSID for column: [ContextPath]
Enter the UNIT for column "ContextPath": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]
Enter the name of this metric: PageFlowsRuntime
Enter the label for this metric: [PageFlowsRuntime]

Do you want periodic collection for this metric <y/n>? [n] y
Enter the collection interval in seconds: 3600
Periodic collection interval is: 3600 seconds.

Do you want to create another metric <y/n>? [n] y

これは、このjmxcliセッションでさらにメトリックを作成する必要があることを示しています。このプロセスは、ユーザーが質問に"n"と答えるまで繰り返されます。

Do you want to create another metric <y/n>? [n] Written the metadata xml file: ./metadata/myCustomWLApp.xml.Updated the default collection file for myCustomWLApp at location ./default_collection/myCustomWLApp.xml.Exiting...

JMXコマンドライン・ツールによってターゲット・メタデータ・ファイルおよび収集ファイルが生成されたら、Oracleプラグイン・アーカイブ(OPAR)を作成できます。

18.5.1.3 ターゲット・ステータス情報の表示

ターゲットのステータス情報がEnterprise Managerコンソールに正しく表示されるためには、クリティカルしきい値が設定された「ステータス」という名前の列を持つ 「レスポンス」というメトリックを定義する必要があります。メトリック値がクリティカルしきい値を下回っている場合、このタイプのターゲット・インスタンスのステータスはコンソールに「稼働中」(使用可能)として表示されます。しきい値を超えている場合、ターゲット・ステータスはコンソールに「停止中」として表示されます。

「レスポンス」メトリックは別のjmxcliセッションで作成できます(以前のセッションで作成されたメタデータ・ファイルおよび収集ファイルにメトリックを追加します)。

例: レスポンス・メトリックの追加

setenv USER_JARS $T_WORK/middleware/wlserver_10.3/server/lib/weblogic.jar

これは、JMXクライアント(jmxcli)がそのクラスパス内で必要とするWeblogic固有クラスを、MBeanが返す場合に必要になります。

$ ./emctl jmxcli -t WebLogic -l "service:jmx:t3://host1:22048/jndi/weblogic.management.mbeanservers.runtime" -u weblogic -c welcome1 -m com.bea:Type=ApplicationRuntime,Name=soa-infra,*"

WeblogicにデプロイされたJ2EEアプリケーションに対して、アプリケーションのデプロイに対応するApplicationRuntime MBeanのActiveVersionState JMX属性を、Status列として作成することが適切な場合があります。ただし、アプリケーションに関連するその他のMBeanのその他すべての属性も使用される可能性があります。

oracleHome=/ade/sparmesw_egcli/oracle/work/middleware/oms
userJars=
Connecting to server: service:jmx:t3://host1:22048/jndi/weblogic.management.mbeanservers.runtime
Connecting as user: weblogic
Obtained 1 MBeans matching pattern
com.bea:Type=ApplicationRuntime,Name=soa-infra,*.
Enter the target type for this metric: [myJ2EEApp] myCustomWLApp
Enter the target version: [1.0]
Enter the target metadata file: [./metadata/myCustomWLApp.xml]
Enter the default collections file: [./default_collection/myCustomWLApp.xml]
The file ./metadata/myCustomWLApp.xml already exists.

Do you want to overwrite the existing file, append to it, or quit <o/a/q>? [a]
Appending to existing file: ./metadata/myCustomWLApp.xml.
The available targets are:
0: (com.bea:Name=soa-infra,ServerRuntime=soa_server1,Type=ApplicationRuntime)
Enter the index of target/MBean you wish to monitor or press <Ctrl-C> to quit: 0
Following metric source types are available for selected target(s):
0: JMX Attributes
1: JMX Operations
Enter the index of your choice or press <Ctrl-C> to quit: 0
Attributes are:
0: ActiveVersionState    Return Value: java.lang.Integer
1: ApplicationName       Return Value: java.lang.String
2: ApplicationVersion    Return Value: java.lang.String
3: ClassRedefinitionRuntime      Return Value: javax.management.ObjectName
4: ComponentRuntimes     Return Value: [Ljavax.management.ObjectName;
5: EAR   Return Value: java.lang.Boolean
6: HealthState   Return Value: weblogic.health.HealthState
7: KodoPersistenceUnitRuntimes   Return Value: [Ljavax.management.ObjectName;
8: LibraryRuntimes       Return Value: [Ljavax.management.ObjectName;
9: MaxThreadsConstraintRuntimes  Return Value: [Ljavax.management.ObjectName;
10: MinThreadsConstraintRuntimes         Return Value: [Ljavax.management.ObjectName;
11: Name         Return Value: java.lang.String
12: OptionalPackageRuntimes      Return Value: [Ljavax.management.ObjectName;
13: Parent       Return Value: javax.management.ObjectName
14: QueryCacheRuntimes   Return Value: [Ljavax.management.ObjectName;
15: RequestClassRuntimes         Return Value: [Ljavax.management.ObjectName;
16: Type         Return Value: java.lang.String
17: WorkManagerRuntimes  Return Value: [Ljavax.management.ObjectName;
18: WseeRuntimes         Return Value: [Ljavax.management.ObjectName;

Select one or more items as comma separated indices: 0

Number of possible columns in the resultant metric are 1.

Enter the name for this metric column at index=0 : [ActiveVersionState] Status

注意: 列名は"Status"にしてください。

この場合は、Enterprise Managerターゲットがアプリケーションであるため、コンテナが停止している場合、つまりJMX接続を確立できない場合でも、ターゲットを停止中としてマークする必要があります。これ(サーバーも停止中である場合にアプリケーションを停止中として示す)を行うには、次のQueryDescriptorプロパティを、メタデータ・ファイルに生成されるレスポンス・メトリックに追加します。

<Property NAME="valueWhenDown" SCOPE="GLOBAL">0</Property>

ここで、0は、サーバーとのJMX接続を確立できない(サーバー自体が停止している)場合にStatus列に返される値です。

Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [Status]
Enter the NLSID for column: [Status]
Enter the UNIT for column "Status": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n] y
Creating threshold!!
Following operators are available for creating thresholds:
0: GT
1: EQ
2: LT
3: LE
4: GE
5: CONTAINS
6: NE
7: MATCH

Enter the index of your choice or press <Ctrl-C> to quit: 6
Enter the CRITICAL threshold: [NotDefined] 2

レスポンス・メトリックのStatus列でCRITICAL THRESHOLDがトリガーされると、ターゲットのステータスが停止中としてマークされます。この場合、if value != ACTIVATED(!= 2など)になります。

Enter the WARNING threshold: [NotDefined]
Enter the number of occurrences that trigger threshold: [6] 1
Enter the message to be used when threshold is triggered: [Status is %value% and has crossed warning (%warning_threshold%) or critical (%critical_threshold%) threshold.]
Enter NLSID for the message used when threshold is triggered: [Status_cond]

Enter the name of this metric: Response

注意: メトリック名は"Response"にしてください。

Enter the label for this metric: [Response]

Do you want periodic collection for this metric <y/n>? [n] y
Enter the collection interval in seconds: 30
Periodic collection interval is: 30 seconds.

Do you want to create another metric <y/n>? [n]
Written the metadata xml file: ./metadata/myCustomWLApp.xml.
Updated the default collection file for myCustomWLApp at location ./default_collection/myCustomWLApp.xml.
Exiting...

18.5.2 メタデータ・ファイルおよびデフォルトの収集ファイルの使用方法

currentDir/metadataディレクトリおよびcurrentDir/default_collectionディレクトリで(先に指定したターゲット・タイプの)myTarget.xmlファイルを探します。

これらのファイルは、次のように使用できます。

- Oracleプラグイン・アーカイブ(OPAR)をアップロードするには、次のようにします。第14.4項「プラグイン・アーカイブの作成」を参照してください。

- OPARをOMSに移動します。第14.5項「Enterprise Managerのプラグイン・アーカイブのインポートおよびデプロイ」を参照してください。

- OPARをエージェントにプッシュします。第14.5項「Enterprise Managerのプラグイン・アーカイブのインポートおよびデプロイ」を参照してください。

- カスタム・ターゲット・インスタンスを作成します。第18.6.4項「Weblogic上のカスタムJ2EEアプリケーションのターゲット・インスタンスの追加」を参照してください。

ターゲットのステータス情報をEnterprise Managerコンソールに正しく表示するには、レスポンス・メトリックを定義する必要があります。詳細は、第18.5.1.3項「ターゲット・ステータス情報の表示」を参照してください。

18.6 管理エージェントへのターゲットの追加

プラグインがOMSにデプロイされると、メタデータ・プラグインで定義されたターゲットを別の監視管理エージェントに追加する準備ができます。

説明のために、次の手順では、サンプルのCalculatorServiceおよびTrafficLightをターゲットとして追加する方法を示します。

18.6.1 Webサービス・ターゲットの追加: CalculatorService

CalculatorServiceターゲットを追加するには、次の手順を実行します。

1. 「設定」メニューから、「ターゲットの追加」、「ターゲットの手動追加」の順に選択します。

2. 「ターゲット監視プロパティを指定して非ホスト・ターゲットを追加」を選択します。

3. 「ターゲット・タイプ」メニューからCalculatorServiceを選択します。

4. 「監視エージェント」メニューから、必要な監視管理エージェントを選択します。

5. 「手動追加」をクリックして続けます。

6. 監視するターゲットのプロパティ値を入力します。

7. 「OK」をクリックして、プロセスを完了します。確認ウィンドウに、新しく追加されたターゲットの情報が表示されます。

18.6.2 WS-Managementターゲットの追加: TrafficLight

TrafficLightターゲットを追加するには、次の手順を実行します。

1. 「設定」メニューから、「ターゲットの追加」、「ターゲットの手動追加」の順に選択します。

2. 「ターゲット監視プロパティを指定して非ホスト・ターゲットを追加」を選択します。

3. 「ターゲット・タイプ」ドロップダウン・メニューで、TrafficLightを選択します。

4. 「監視エージェント」ドロップダウン・メニューで、目的のエージェントを選択します。

5. 「手動追加」をクリックして続けます。

6. 監視するターゲットのプロパティ値を入力します。

7. 「OK」をクリックして、プロセスを完了します。確認ウィンドウに、新しく追加されたターゲットの情報が表示されます。

18.6.3 スタンドアロンJavaアプリケーションまたはJVMターゲットの構成

スタンドアロンJavaアプリケーションを定義するプラグインをデプロイした場合や、組込みJVMターゲット・タイプを使用する場合は、これらのターゲットのメトリックをEnterprise Manager Grid Controlで収集できるように、JVMまたはJMX対応のJavaアプリケーション・ターゲットの構成を開始できます。

JVMを実行するシステムに、バージョン10.2.0.3以降のEnterprise Managerエージェントをインストールします。これは推奨される手順ですが、JVMおよびスタンドアロンJavaアプリケーションのターゲットに必要な手順ではありません。監視エージェントがターゲットJVMに対してローカルである必要はありません。

JVMターゲット・インスタンスを追加するには、次の手順を実行します。

1. Enterprise Managerコンソールの「設定」メニュー(右上)から、「ターゲットの追加」、「ターゲットの手動追加」の順に選択します。

2. 「ターゲット監視プロパティを指定して非ホスト・ターゲットを追加」を選択します。

3. 「ターゲット・タイプ」メニューから「JVM」を選択します。

4. 「監視エージェント」リストから、必要な管理エージェント(できれば、監視するJVMにローカルの管理エージェント)を選択します。

5. このJVMまたは管理エージェントで監視する必要のあるJavaアプリケーション・インスタンスのインスタンス・プロパティを入力して、「OK」をクリックします。

表18-1に、インスタンス・プロパティの定義を示します。

表18-1 JVMインスタンス・プロパティ

プロパティ

定義

名前

このJVMインスタンスのターゲット名。

MachineName

このJVMが稼働するホストの名前。

管理ポート番号

JSR-160クライアントがJVMへの接続に使用できるポート番号(リモート・オプションを使用する場合のjconsoleなど)。(これは、リモート管理を有効化するためにJVMが起動されたときに-Dcom.sun.management.jmxremote.portプロパティに対して指定されたポート番号です。)

ユーザー名

パスワードおよびアクセス・ファイルを使用し、Dcom.sun.management.jmxremote.authenticate=true
の設定を使用してJVMを起動した場合は必須です。

JVM Adminユーザー・パスワード

前述のユーザー名プロパティを参照してください。

通信プロトコル

ターゲットJVM上のMBeanServerへの接続を確立します。これは、ターゲットMBeanServerへのJMX接続を確立するのに必要なJMXサービスURLのプロパティに対応します。デフォルト値であるrmiを保持してください。

サービス名

ターゲットJVM上のMBeanServerへの接続を確立します。これは、ターゲットMBeanServerへのJMX接続を確立するのに必要なJMXサービスURLのプロパティに対応します。デフォルト値であるjmxrmiを保持してください。

SSLTrustストア

SSL Trustストアの場所。ターゲットJVMの起動時にcom.sun.management.jmxremote.ssl=trueの設定を使用してSSLが有効化されている場合に必要です。

SSLTrustストアのパスワード

SSL Trustストアのパスにアクセスするためのパスワード。

カスタムのルックアップ・プロバイダ・クラス

Enterprise Managerクライアントに統合し、LDAPまたは他のルックアップ・プロトコルを介してMBeanServerのカスタム・ルックアップを実行するのに使用できる、ユーザー実装Javaルックアップ・クラスの完全なパッケージ名。

6. 追加したJVM(Javaアプリケーション)ターゲットの「すべてのメトリック」ページにナビゲートして、JVM(Javaアプリケーション)からEnterprise Managerに収集されたメトリックを確認します。これらのメトリックは、JDK1.5以上で使用できるプラットフォームMBeanによって公開されるか、Javaアプリケーションのアプリケーション定義のMBeanから公開されます。
「ターゲット」メニューからJVMターゲットのホームページにナビゲートするには、「すべてのターゲット」を選択してから、JVMターゲット・インスタンスを選択します。

「すべてのメトリック」ページにナビゲートするには、「ターゲット」メニューから「監視」を選択して、JVMターゲットのホームページのメニューから「すべてのメトリック」を選択します。

次の画像は、収集されたメトリックの詳細を示しています。

表18-2 Fetchletが使用するプロパティ

プロパティ

デフォルト

説明

MachineName

localhost

MBeanサーバーのホスト・マシンの名前。

Port

8888

MBeanサーバーが接続をリスニングするポート。

Username

NULL

ユーザー名(接続に必要な場合)。

Password

NULL

パスワード(接続に必要な場合)。

Protocol

rmi

接続に使用するプロトコル。

Service

jmxrmi

接続に使用するサービス。

SSLTrustStore

NULL

SSLTrustストアへのパス。

SSLTrustStorePassword

NULL

SSLTrustストアのパスにアクセスするためのパスワード。

18.6.4 Weblogic上のカスタムJ2EEアプリケーションのターゲット・インスタンスの追加

WebLogicにはカスタムJ2EEアプリケーションがあり、JMX MBeanで公開されるカスタム・メトリックをEnterprise Managerに収集する必要があります。カスタム・ターゲット・タイプを定義するプラグインを一度定義してデプロイすると、プラグインのデプロイ対象の様々な管理エージェントでJMX対応のJ2EEアプリケーション・ターゲット・インスタンスの構成を開始できます。これにより、これらのターゲット・インスタンスのメトリックをEnterprise Managerで収集できるようになります。

1. 「設定」メニューから、「ターゲットの追加」、「ターゲットの手動追加」の順に選択します。「ターゲット監視プロパティを指定して非ホスト・ターゲットを追加」オプションを選択します。

2. 以前に作成されてOMSにデプロイされたカスタム・ターゲット・タイプを選択します。

3. このターゲット・タイプのインスタンスを作成する監視管理エージェントを選択します(できれば、ターゲットにローカルなEMエージェントにします)。

4. 「手動追加」をクリックします。

5. 次の画像に示すように、必要なターゲット・プロパティを入力して、「OK」をクリックします。新規に追加したターゲットがエージェントの「すべてのターゲット」リストに表示されます。

注意:
jmxcliが-l <serviceURL>オプションで起動されている場合、次の画面でJMXServiceURLプロパティの入力を要求されます。これは次のように入力できます。

service:jmx:t3://<host>:<port>/jndi/weblogic.management.mbeanservers.runtime

「マシン名」、「管理ポート番号」および「サービス名」を3つの個別のターゲット・インスタンス・プロパティとして入力するかわりになります。

表18-3 ターゲット・プロパティ

プロパティ

定義

名前

このターゲット・インスタンスの一意の名前。

MachineName

バージョン9.x以降のOracle WebLogic Application Serverを実行しているシステムのホスト名/IPアドレス。

ユーザー名

WebLogicサーバーへのJMX接続の確立に使用されるユーザー名。これは管理者または監視ユーザーのいずれかになります。

JVM Adminユーザー・パスワード

前述のユーザーのパスワード。

通信プロトコル

t3(デフォルト)またはt3s。

サービス名

weblogic.management.mbeanservers.runtime(またはアプリケーションがそのMBeanを登録しているその他のMbeanServer)。

メトリック・ソース

WebLogic

作成されたメトリックは、ターゲット・インスタンスのホームページにナビゲートして、「すべてのメトリック」ページ(「ターゲット」メニューから「監視」、「すべてのメトリック」の順に選択)にナビゲートすることで表示できます。

18.7 資格証明設定の監視

一部のターゲット・タイプでは、ターゲット・インスタンスに設定される資格証明を監視する必要があります。デモ・プラグインでは、CalculatorServiceとTrafficLightのどちらも資格証明の監視が必要です。次の手順で、資格証明の設定方法を示します。

1. 「設定」メニューから、「セキュリティ」、「監視資格証明」の順に選択します。

2. CalculatorServiceを選択して、「監視資格証明の管理」をクリックします。

3. Calculator1を選択して、「資格証明の設定」をクリックします。

4. 「資格証明のタイプ」からAliasCredentialを選択します。「別名」と「パスワード」の値を入力します。

5. 「保存」をクリックして終了します。

6. ターゲットTrafficLight1に対して前述の手順を繰り返します。

18.8 監視対象メトリックの表示

監視のために管理エージェントにターゲット・インスタンスが追加されたため、ターゲット・タイプに対して定義されたメトリックを表示できます。前回と同様に、サンプル・ターゲットを使用して手順を示します。

1. 「すべてのターゲット」ページから、以前の手順で追加したターゲットをクリックします。Enterprise Managerにより、ターゲットのホームページが表示されます。

2. 「ターゲット」メニューから、「監視」、「すべてのメトリック」の順に選択します。「すべてのメトリック」ページが監視対象のターゲットに対して表示されます。各メトリックの展開可能なツリー・リストにより、次に示すようにドリルダウンして特定のメトリック・パラメータを表示できます。

18.9 JMXメトリック拡張の作成

Oracle Fusion Middlewareにデプロイされ、JMX属性によってEnterprise Managerに公開されたカスタムJ2EEアプリケーションからメトリックを収集する場合、Enterprise Managerコンソールまたはjmxcliコマンドライン・ツールのいずれかを使用できます。後者は、JMX操作のメトリック拡張の定義をサポートし、メトリック拡張アーカイブ(MEA)の作成をサポートします。メトリック拡張アーカイブは、コンソールからOMSにインポートしてテストを行い、カスタム・アプリケーションを表す目的のJ2EEアプリケーション・ターゲット・インスタンスにデプロイする必要があります。

注意:
Mbeanブラウザではオープン・タイプではない属性を選択できますが、JMXメトリック拡張UIでサポートされるのは、オープン・タイプの属性のみです。UIを使用する場合にオープン・タイプではない属性を選択してメトリックを作成すると、エラーが発生します。

18.9.1 Enterprise Managerコンソールの使用

1. 「エンタープライズ」メニューから、「監視」、「メトリック拡張」の順に選択します。「メトリック拡張」ページが表示されます。

2. 「作成」をクリックして、メトリック拡張を作成します。

3. 「アプリケーション・デプロイメント」ターゲット・タイプ(またはこのメトリックを定義する必要がある他の適切なEnterprise Managerターゲット)を選択して、メトリック拡張に意味のある名前を指定します。このアプリケーションと他のカスタム・アプリケーションの両方について、「アプリケーション・デプロイメント」ターゲット・タイプで追加のメトリック拡張の作成を最終的に終了することを念頭に置いてください。可能なかぎり、メトリック拡張名にはメトリック名とアプリケーション名の両方を取得することをお薦めします。
さらに、アダプタのJMXを選択します。

「一般プロパティ」セクションの下にある「収集スケジュール」に注意してください。ここでは、このメトリックの収集頻度や、このメトリックがリアルタイム専用であるかどうかを定義します(この場合、「無効」ボタンを選択する必要があります)。

「アラートおよび履歴の傾向」を選択する場合、「アップロード間隔」を選択することもできます。これは、履歴の傾向にどのサンプル(その頻度が「繰返し間隔」フィールドに指定される)がEnterprise Managerリポジトリにアップロードされるかを示します。たとえば、収集頻度を15分に指定して、「アップロード間隔」を3にした場合、サンプルが3つおきにリポジトリにアップロードされ(45分ごと)、履歴の傾向に利用できます。ただし、しきい値の違反が原因でトリガーされる可能性のある「アラート」は、収集のたびに(15分ごとに)利用できます。

4. 「次へ」をクリックして、JMXベースのメトリックに必要な必須プロパティを指定します。これらは、「基本プロパティ」セクションで定義され、次のようなプロパティになります。

- メトリック: Mbeanのオブジェクト名またはパターン

- 列の順序: 前述のMbeanのセミコロン区切りのJMX属性のリスト(JMX操作でメトリックを定義する必要がある場合、次の項に示すようにjmxcliを使用します)。

前述の定義されたMbeanオブジェクト名またはパターンに、サーバー固有のキー・プロパティは定義できないことに注意してください。これらのプロパティは、ワイルドカード(*)で置き換えることができます。

たとえば、Mbeanオブジェクト名がcom.bea:Type=foo,Location=Server1,Name=abcの場合、前述の「メトリック」プロパティでcom.bea:Type=foo,*と定義することが適しています。また、Mbeanオブジェクト名がパターンの場合、このメトリックを複数行の表にして複数のMbeanが返されます(各行は、ObjectNameパターンに一致するMbeanのJMX属性を表します)。この場合、各行が結果のメトリックで一意になるように、少なくとも1つ以上の列をキー列として定義する必要があります。

前述の手順では、「MBeanの参照」ボタンがあり、これら2つのプロパティの構成が容易になります。このボタンでは、MbeanServerを参照でき、メトリック拡張で定義される該当メトリックで表す必要があるMbeanとそのJMX属性を選択します。

「MBeanの参照」をクリックする場合、次の操作を順に行う必要があります。

- ターゲットの選択: このメトリックの定義に使用する必要があるターゲット・タイプのインスタンスを選択します。このターゲット・インスタンスは、メトリックの構成に役立ちます。メトリックが最終的に定義されるターゲット・インスタンスである必要はありません。

- MBeanパターンの入力: ここでは、監視に関連するMbeanのオブジェクト名とパターンを入力します。

- 「MBeanをリスト」をクリック: 「MBeanと属性の選択」の下の表に表示されます。Mbeanパターンに一致するMbean、またはテキスト「MBeanがリストされていないか、MBeanパターンと一致するMBeanがありません」(一致がない場合)が表示されます。前述の「MBeanパターンの入力」フィールドを繰り返し更新し、「MBeanをリスト」をクリックして、表示されるMbeanのリストを絞り込むことができます。

- 関連するMbeanの選択: 選択したMbeanのJMX属性を含む次の表が自動的に表示されます。

[Crtl]をクリックしながら複数の属性を選択できます。選択内容を受け入れるには、「選択」をクリックします。

5. JMXベースのメトリック拡張の定義に必要なパラメータ「メトリック」と「列の順序」を指定する必要があります。
前述のMBeanの参照ウィザードを使用してメトリック拡張を構成する際に選択または使用されたサーバーの他に複数のサーバーにこのメトリック拡張を適用できる場合、「メトリック」フィールドに表示されるMbean名のキー・プロパティにインスタンス固有の情報を含めないようにしてください(Location=Server1やServerName=fooなど)。これを有効なMbean ObjectNameパターンにするには、これらのインスタンス固有のキー・プロパティをワイルドカード「*」で適宜置き換えることができます。

指定可能なプロパティの説明

必須プロパティ:

- metric: 属性を問い合せるMBean ObjectNameまたはObjectNameパターン。これはメトリックのメタデータとして指定されるため、インスタンスにとらわれないようにする必要があります。そのため、MBean ObjectNameのインスタンス固有のキー・プロパティ(servernameなど)がある場合は、そのプロパティをワイルドカードで置き換える必要があります。

- columnOrder : これは、メトリック内に存在する必要のある順序で並べられたJMX属性のセミコロン区切りリストです。

拡張プロパティ:

- identityCol: JMX属性として使用可能でない場合に列として公開する必要のあるMBeanキー・プロパティ。例: com.myCompany:Name=myName,Dept=deptName, prop1=prop1Val, prop2=prop2Val。この例では、identityColをName;Dept(セパレータはセミコロン)として設定すると、columnOrderプロパティで指定したJMX属性を表す列の他にNameとDeptを表す2つの追加キー列が生成されます。

- autoRowId: メトリック・プロパティで指定されたMBean ObjectNameパターンが複数のMBeanに一致し、columnOrderで指定されたJMX属性のいずれもそれぞれ一意でない場合は、行が自動的に生成されます。この場合に使用される接頭辞です。ここで指定した autoRowId は、作成される追加のキー列の接頭辞として使用されます。たとえば、メトリックがcom.myCompany:Type=CustomerOrder,*と定義される場合、columnOrderはCustomerName;OrderNumber;DateShippedになります(注文が2つに分けて出荷された場合、customerName;OrderNumber;DateShippedは一意ではないと仮定します)。
autoRowIdを「ShipItem-」に設定すると、各行のメトリックの追加キー列にShipItem-0、ShipItem-1が表示されます。

- MetricService: True/Falseで、MetricServiceがターゲットのWeblogicドメインで有効になっているかどうかを示します。Oracle DMS MBeanを介して公開されるメトリックを収集する必要がある場合を除き、このプロパティは、ユーザー定義のメトリックに対してほとんどの場合にfalse(選択解除)になります。trueに設定されている場合、前述の基本プロパティ「metric」はMetricService表の名前になり、基本プロパティ「columnOrder」は前述のMetricService表の列名のセミコロン区切りリストになります。

6. このメトリックの列を指定します(以前に「MBeanの参照」手順を使用している場合、これらの列は自動的にインポートされます)。キー列である列を指定するには、MBeanの参照ウィザードで、これらのあらかじめ作成されている列を編集する必要があります。これは、「メトリック」プロパティの以前の手順でMbeanパターンが指定された場合に行います。このメトリック拡張が適用されるターゲット・インスタンスでは、複数のMbeanがこのMbeanパターンに一致する可能性があります。
(「上に移動」と「下に移動」ボタンを使用して)列の順序を変更する場合、以前の手順の「列の順序」プロパティのセミコロン区切り列の対応する順序も適宜更新する必要があります(「戻る」を使用)。

次の図に示すように、必要に応じて、これらをキー列にするように列を編集します。

列にラベルを付けて編集したら、「次へ」をクリックします。これで、メトリック拡張をテストする準備ができました。

7. 「追加」をクリックして、このメトリック拡張をテストするターゲット・インスタンスを選択します。これは、できればメトリック拡張の定義に使用されたものとは別のターゲット・インスタンスにします(以前にメトリック拡張の定義に「MBeanの参照」ボタンを使用した場合)。

「ターゲットのテスト」表でターゲット・インスタンスを選択して、この表の上にある「テストの実行」をクリックします。

「テストの実行」表にメトリック値が表示されます(エラーがある場合はエラーも表示されます)。

エラーがある場合は、「戻る」をクリックしてエラーを修正し、テストを再実行します。

8. テストが成功したら、「次へ」をクリックしてメトリック拡張のサマリーを表示し、「終了」をクリックしてメトリック拡張を定義します。

9. 選択したターゲット・インスタンスにメトリック拡張をデプロイする前に、「デプロイ可能な下書き」にメトリック拡張を保存する必要があります。これにより、メトリック拡張のデザイナは、選択したターゲット・インスタンスにメトリック拡張をデプロイして、メトリック収集を検証できます。ただし、メトリック拡張がテストされてデザイナが満足する結果になるまで他の管理者がこのメトリック拡張をデプロイすることはできません。

10. 作成されてデプロイ可能な下書きに保存されたメトリック拡張を選択します。「アクション」メニューから、「ターゲットにデプロイ」を選択します。

11. このメトリック拡張をテストする必要があるターゲット・インスタンスを選択して、「発行」をクリックします。たとえば、メトリック拡張が「アプリケーション・デプロイメント」ターゲット・タイプで定義され、カスタムJ2EEアプリケーションで登録されるカスタムMbeanのメトリックを表す場合、そのカスタム・アプリケーションのインスタンスを選択できます。これにより、選択したターゲットを監視する管理エージェントにメトリック拡張を非同期にデプロイするジョブがスケジュールされます。

12. このページを定期的にリフレッシュすることで、選択したターゲットへのメトリック拡張のデプロイが保留になっている操作のステータスを監視し、デプロイメントで発生する可能性のあるエラーについて「ステータス」列と「失敗したデプロイ操作」表を監視します。

13. 「エンタープライズ」メニューから、「監視」、「メトリック拡張」の順に選択します。「メトリック拡張」ホームページには、メトリック拡張が表の行として表示されます。この表の「デプロイされたターゲット」列は、このメトリック拡張がデプロイされるターゲットの数を表します。
「アクション」メニューで、目的のメトリック拡張の選択後に表から「ターゲット・デプロイメントの管理」を選択します。これにより、このメトリック拡張がデプロイされるターゲット・インスタンスが表示されます。

14. メトリック拡張を検証するターゲット・インスタンスの「ターゲット名」列で値をクリックします。ターゲットのホームページに移動します。

15. ミドルウェア・ターゲットの場合、「ターゲット・タイプ」→「監視」→「パフォーマンス・サマリー」(または、一般的に「ターゲット・タイプ」→「監視」→「すべてのメトリック」)ページにナビゲートします。

16. 「パフォーマンス・サマリー」ページでは、新しく作成されたメトリックが「メトリック・パレット」に表示され、このページでそのメトリックを選択してチャート化できます。

17. 1つ以上のターゲット・インスタンスでメトリック拡張のテストが成功すると、「メトリック拡張」ページ(「アクション」メニューで「メトリック拡張の公開」を選択)からメトリック拡張を公開して、残りのターゲット・インスタンスにデプロイできます。

18.9.2 JMXCLIを使用したメトリック拡張アーカイブの作成

Enterprise Managerコンソールを使用しない場合(またはJMX操作から公開されたEnterprise Managerメトリックを公開しない場合)、コマンドライン・ツールJMXCLIを使用して、メトリック拡張アーカイブを作成できます。メトリック拡張アーカイブは、OMSにインポートして、編集、テスト、公開してから、そのアーカイブが定義されるターゲット・タイプの必要なインスタンスにデプロイできます。次に、JMXCLIを使用したメトリック拡張アーカイブの作成について示します。

1. cd Agent_Instance_Home/bin

2. setenv USER_JARS $T_WORK/middleware/wlserver_10.3/server/lib/weblogic.jar(使用するMbeanがJMXオープン・タイプを返し、カスタム・クラスを返さない場合は不要)。

3. emctl jmxcli -t WebLogic -MEXT -l "service:jmx:t3://host1:7018/jndi/weblogic.management.mbeanservers.runtime" -u weblogic -c welcome1 -m "*:Type=ThreadPoolRuntime,*" -w /scratch/TEMP/
オプション:

-l : WebLogicサーバーに接続するJMX serviceURL。前述のhost:portを、使用するインスタンスに適したものに置き換えます。

-u : 必要なMBeanへのアクセス権を持つWebLogicユーザー

-c : WebLogicユーザーのパスワード

-m : Mbean ObjectNameまたはパターン。

-w : メトリック拡張アーカイブ(後からOMSコンソールにインポート可能)が作成される一時作業ディレクトリ。

Oracle Enterprise Manager 12c Release 1 Cloud Control 12.1.0.0.0
Copyright (c) 1996, 2011 Oracle Corporation.  All rights reserved.
Using Plugin Root /ade/sparmesw_egc802/oracle/emagent/gcagent/plugins/oracle.sysman.emas.agent.plugin_12.1.0.0.0
Connecting to server: service:jmx:t3://host1:7018/jndi/weblogic.management.mbeanservers.runtimeConnecting as user: weblogic
Obtained 1 MBeans matching pattern *:Type=ThreadPoolRuntime,*.
Enter an existing target type for this Metric Extension: [j2ee_application]
Enter the name of the Metric Extension: [myMEXT] myAppME_1
Enter the Metric Extension version: [1.0]
Enter the Metric Extension metadata file location: [./metadata/ME#24#myAppME_1.xml]
Enter the Metric Extension collection file location: [./collection/ME#24#myAppME_1.xml]
Enter a label for this Metric Extension: [myAppME_1]
Enter a description for this Metric Extension: [myAppME_1]
The available targets are:
0: This bean is used to monitor the self-tuning queue  <h3 class="TypeSafeDeprecation">Deprecation of MBeanHome and Type-Safe Interfaces</h3>
<p class="TypeSafeDeprecation">This is a type-safe interface for a WebLogic Server MBean,
which you can import into your client classes and access through <code>weblogic.management.MBeanHome</code>.
As of 9.0, the <code>MBeanHome</code> interface and all type-safe interfaces for WebLogic Server MBeans are deprecated.
Instead, client classes that interact with WebLogic Server MBeans should use standard JMX design patterns in which clients use the
<code>javax.management.MBeanServerConnection</code> interface to discover MBeans, attributes, and attribute types at runtime.
For more  information, see "Developing Manageable Applications with JMX" on <a href="http://www.oracle.com/technology/products/weblogic/index.html" shape="rect">http://www.oracle.com/technology/products/weblogic/index.html</a>.</p>
(com.bea:Name=ThreadPoolRuntime,ServerRuntime=EMGC_ADMINSERVER,Type=ThreadPoolRuntime)
Enter the index of target/MBean you wish to monitor or press <Ctrl-C> to quit: 0
Following metric source types are available for selected target(s):
0: JMX Attributes
1: JMX Operations
Enter the index of your choice or press <Ctrl-C> to quit: 0
Attributes are:
0: CompletedRequestCount         Return Value: java.lang.Long
1: ExecuteThreadIdleCount        Return Value: java.lang.Integer
2: ExecuteThreads        Return Value: [Lweblogic.management.runtime.ExecuteThread;
3: ExecuteThreadTotalCount       Return Value: java.lang.Integer
4: HealthState   Return Value: weblogic.health.HealthState
5: HoggingThreadCount    Return Value: java.lang.Integer
6: MinThreadsConstraintsCompleted        Return Value: java.lang.Long
7: MinThreadsConstraintsPending  Return Value: java.lang.Integer
8: Name  Return Value: java.lang.String
9: Parent        Return Value: javax.management.ObjectName
10: PendingUserRequestCount      Return Value: java.lang.Integer
11: QueueLength  Return Value: java.lang.Integer
12: SharedCapacityForWorkManagers        Return Value: java.lang.Integer
13: StandbyThreadCount   Return Value: java.lang.Integer
14: Suspended    Return Value: java.lang.Boolean
15: Throughput   Return Value: java.lang.Double
16: Type         Return Value: java.lang.String
Select one or more items as comma separated indices: 5,13
Number of possible columns in the resultant metric are 2.
Enter the name for this metric column at index=0 : [HoggingThreadCount]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [HoggingThreadCount]
Enter the NLSID for column: [HoggingThreadCount]
Enter the UNIT for column "HoggingThreadCount": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]
Enter the name for this metric column at index=1 : [StandbyThreadCount]
Is this column a KEY Column <y/n>? [n]
Is this column for SUMMARY_UI <y/n>? [n]
Enter the label for column: [StandbyThreadCount]
Enter the NLSID for column: [StandbyThreadCount]
Enter the UNIT for column "StandbyThreadCount": [millisec, kb etc.. ]
Do you want to create a threshold for this column <y/n>? [n]
Do you want periodic collection for this metric <y/n>? [n] y
Enter the collection interval in seconds: 300
Periodic collection interval is: 300 seconds.
Written the metadata xml file: ./metadata/ME#24#myAppME_1.xml.
Creating new file: ./collection/ME#24#myAppME_1.xml.
Updated the default collection file for j2ee_application at location ./collection/ME#24#myA
ppME_1.xml.
createMextArchive: Adding metadata
createMextArchive: Adding collection file
createMextArchive: Adding mea.xml file

Creating Metric Extension zip archive: ./MEA_ME$myAppME_1.zip
Please import this into Enterprise Manager Cloud Control using the console.
Exiting...

前述のセッションでは、jmxcliを起動すると、-wオプションで指定されたディレクトリ(または-wオプションを指定しない場合は現在のディレクトリ)にZipファイルMEA_ME$myAppME_1.zipが作成されます。

次に示すように、これをEnterprise Managerコンソールにインポートします。「エンタープライズ」メニューから、「監視」→「メトリック拡張」を選択して「メトリック拡張」ホームページにアクセスします。

前述の例のようにメトリック拡張アーカイブをインポートすると、そのアーカイブを編集(および修正)、テスト、公開およびデプロイできます。

18.10 スタンドアロンのJVMまたはOracle Coherenceのメトリックの公開

ユーザーは、前の項で概要を示したメカニズムを使用して、Oracle CoherenceやJVMターゲットで設定なしではすぐに使用できない追加メトリック、およびJMX Mbean属性から使用可能なデータを作成することもできます。

18.10.1 Enterprise Managerコンソールの使用

手順は、j2eeアプリケーション・ターゲット・タイプでメトリックを拡張する場合に前項で行われた手順と似ています。ただし、JVMまたはOracle Coherenceターゲット・タイプでメトリック拡張を定義する場合に手順3でターゲット・タイプ「JVM」または「Oracle Coherence xxx」を選択する必要があります。

18.10.2 JMXCLIの使用

手順は、JMXCLIを使用してカスタムJ2EEアプリケーションのメトリック拡張アーカイブを定義する場合と似ています。ただし、jmxcliを起動する場合の起動引数は次のようになります。

emctl jmxcli -t JVM -MEXT  -h adc2180736 -p 6789 -m "*:*"  -w /scratch/TEMP/

メトリック拡張が、(デフォルトのj2ee_applicationではなく)JVMまたはoracle_coherenceになるように定義されるターゲット・タイプを適宜指定する必要があります。

18.11 RESTfulサービスの使用の監視

REST準拠のWebリソースの監視は、REST fetchletを使用して実行します。REST fetchletの詳細は、第20章「REST fetchlet」を参照してください。

19 Receiveletの使用

この章の内容は次のとおりです。

- Receiveletについて

- SNMP Receivelet

19.1 Receiveletについて

Receiveletは、サード・パーティのネットワーク要素から送信された外部の通知をEnterprise Managerが受信できるようにするライブラリです。このような通知は、管理エージェントからのリクエストなしで非同期に送信されます。

通常、管理エージェントのデータ取得のメカニズムは、ポーリング・モデル、すなわちfetchletと呼ばれるモジュラー・ライブラリに基づきます。fetchletは、管理対象ターゲットから定期的に様々なメトリックの値を収集します。その後、収集されたデータが管理エージェントによってユーザー定義のしきい値と比較され、しきい値に達している場合はイベントが生成されます。

Receiveletを使用すると、これらのメトリックをより効率的に処理できます。管理対象ターゲットの機能に依存して独自のイベントの状態を検出し、イベントが発生したときにのみEnterprise Managerと通信します。この通信が発生した場合、管理エージェントはreceiveletを使用して情報を受信します。

receiveletを使用すると、最終的にfetchletを介して収集されるデータのアラートをより早く取得することができます。また、アラートとデータの両方を送信したり、実際のデータのグラフがアラートに関連付けられていない場合にアラートのみを送信する手段として、receiveletを使用できます。

fetchletのかわりには使用できませんが、receiveletはデータ収集のもう1つの手段です。fetchletによる定期的なポーリングと比較すると、receiveletの方が通知の即時性が高くなります。このため、データをフェッチできる場合は、fetchletを使用してデータを取得してください。ただし、サーバーがイベントやデータをfetchletよりも低コストで送信できる場合は、receiveletを使用してください。

receiveletは、特定のタイプの管理対象ターゲットと密接に結合している場合や、幅広い潜在的ターゲットに役立つ場合があります。

次の項で説明するように、Enterprise ManagerではSNMP receiveletが提供されています。

19.2 SNMP Receivelet

SNMP receiveletを使用すると、サード・パーティのネットワーク要素からSNMPトラップの通知を受信し、Oracle Management Service (OMS)と互換性のある形式に変換できます。

管理対象環境でサード・パーティのエンティティを監視している間に、サード・パーティ・エンティティがEnterprise Managerに通知を送信する場合、サード・パーティ・エンティティのSNMPエージェントは通知を管理エージェントに送信します。これらの通知はSNMPトラップの形式であり、この形式は、管理エージェントからの要求なしに非同期的にトリガーされます。

これらのトラップはSNMPに基づいているため、管理エージェントは、SNMP receiveletを使用して、これらのSNMPトラップを受信し、OMSと互換性のある形式に変換します。

SNMPトラップを受信すると、SNMP receiveletは、ターゲット・タイプのメタデータ・ファイルの<PushDescriptor>セクションで定義されているオブジェクトID(OID)に関連する情報のみを抽出します。ターゲット・タイプのメタデータ・ファイルの詳細は、第3.3項「ターゲット・タイプ・メタデータ・ファイルの作成」を参照してください。

SNMP receiveletを使用してネットワーク要素を管理する場合は、担当する管理エージェントのSNMP receiveletにトラップを送信するように、要素のSNMPエージェントを構成する必要があります。このようなトラップを受信すると、SNMP receiveletはこれらをEnterprise Manager形式(push descriptor情報に基づくイベントやデータ・ポイントなど)に変換し、その情報をアップロード・ディレクトリに(XMLファイルで)格納します。Upload Managerは、アップロード・ディレクトリにあるこのような新しいファイルをチェックし、OMSにアップロードします。その後、Enterprise ManagerはOMSにアクセスして、収集された情報を抽出してユーザーに表示します。

SNMPトラップの受信

SNMPトラップを受信するには、管理エージェント側およびSNMPターゲット・エージェント側で、いくつかの構成設定を行う必要があります。

この設定により、SNMPターゲットは、SNMP receiveletにSNMPトラップを送信できるようになります。SNMPトラップを受信すると、SNMP receiveletはMatchAgentAddrやMatchEnterpriseなどのPush Descriptorプロパティを使用して、トラップが属するターゲットおよびメトリックを識別します。次に、SNMP receiveletはEventmetric-columnまたはEventmetric-columnOID、SeverityCodeなどのPush Descriptorプロパティを使用して、トラップをイベントに変換します。この変換が行われると、変換されたイベントがSNMP receiveletによって管理リポジトリにアップロードされ、Cloud Controlコンソールで使用できるようになります。

管理エージェント側で必要な構成設定

デフォルトでは、SNMP receiveletは管理エージェントと同じポートのUDPでリスニングします。ただし、SNMP receiveletに異なるリスニング・ポートを使用する場合は、emd.propertiesファイル内でSnmpRecvletListenNIC(=8002)エントリを追加してください。

SNMPターゲット・エージェント側で必要な構成設定

SNMPターゲット・エージェントを、トラップをSNMPターゲット・エージェントのホスト名とポートに送信するように構成します。

入力パラメータ

表19-1 SNMP receiveletの入力パラメータ

パラメータ

型

説明

使用

MatchEnterprise

String

注意: SNMPv1トラップのみと一致するPush Descriptor用。

送信するトラップを定義するためのOID。

注意: MatchEnterpriseが存在する場合、MatchGenericTrapとMatchSpecificTrapも含める必要があります。

必須(SNMPv1)

MatchGenericTrap

String

汎用SNMPトラップのコード。

必須(SNMPv1)

MatchSpecificTrap

String

(汎用トラップのいずれでもない)MIBで定義されたトラップ、そのMIBで割り当てられたID。

必須(SNMPv1)

MatchTrapOID

String

注意: SNMPv2またはSNMPv3トラップと一致するPush Descriptor用。

SNMPv2またはSNMPv3トラップの場合、これはトラップのMIB定義でNOTIFICATION-TYPEに割り当てられているOIDです。

必須(SNMPv2、SNMPv3)

MatchAgentAddr

String

生成するSNMPエージェントの、トラップで送信される際のIPアドレス。

必須

MatchVarBind

String

このパラメータが存在する場合、その値はOIDです。他のMatch*パラメータと一致するトラップを受信した場合も、受信したvarbindリストにこのOIDがある必要があります。そうでない場合、Enterprise Managerイベントまたはデータ・ポイントは生成されません。

オプション

UseCredential

String

資格証明の使用を指定します。TRUEに設定されている場合、receiveletは、receiveletにCredentialRefとして送信された一連のターゲットSNMPv3Credsを使用してSNMPv3トラップを受け入れます。また、UseCredentialが設定されている場合、文字列プロパティ"hostname"と数値プロパティ"PORT"が指定されている必要があります。その値は、エンジンIDの検出に使用されます。

オプション

Eventmetric-column

String

このトラップの受信時に、receiveletによってこのメトリック列で重大度が生成されるように指定します。metric-columnの値は、このパラメータの値である必要があります。(Enterprise Managerメトリックに必要な値がトリガーするSNMP変数と同じでない場合に便利です。)

必須(イベントの生成が必要な場合)。ただし、Eventmetric-columnOIDが指定されている場合は必須ではありません。

Eventmetric-columnOID

String

このトラップの受信時に、receiveletによってこのメトリック列で重大度が生成されるように指定します。メトリック列の値は、このパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があります。

必須(イベントの生成が必要な場合)。ただし、Eventmetric-columnが指定されている場合は必須ではありません。

SeverityCode

String

重大度が生成されるレベルを指定します。このパラメータの値は、CRITICAL、WARNINGまたはCLEARにする必要があります。

注意: トラップの受信時にイベントが生成されるようにする場合は、SeverityCodeまたはSeverityCodeOIDが存在する必要があります。ただし、Push Descriptorがメトリック・データ・ポイントを生成(および1つ以上のDatametric-columnOIDプロパティを指定)する場合は、SeverityCodeまたはSeverityCodeOIDプロパティは設定できません。

必須。ただし、SeverityCodeOIDが指定されている場合、またはPush Descriptorがメトリック・データ・ポイントを生成している場合は必須ではありません。

SeverityCodeOID

String

重大度が生成されるレベルを指定します。このパラメータの値と等しいOIDを使用するトラップのvarbindが文字列CRITICAL、WARNINGまたはCLEARのいずれかである場合、そのレベルで重大度が生成されます。いずれでもない場合、重大度は生成されません。（このパラメータは、Enterprise Manager専用にトラップを設計する場合のみ使用されますが、この場合は役に立ちます。）

注意: トラップの受信時にイベントが生成されるようにする場合は、SeverityCodeまたはSeverityCodeOIDが存在する必要があります。ただし、Push Descriptorがメトリック・データ・ポイントを生成(および1つ以上のDatametric-columnOIDプロパティを指定)する場合は、SeverityCodeまたはSeverityCodeOIDプロパティは設定できません。

必須。ただし、SeverityCodeが指定されている場合、またはPushDescriptorがメトリック・データ・ポイントを生成している場合は必須ではありません。

Datametric-columnOID

String

このトラップの受信時に、メトリック列の値をこのパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があるメトリックで、receiveletがデータ・ポイントを生成するように指定します。(SNMP Push Descriptorには多数のData*パラメータがある可能性があります。その場合は、指定されたすべての列がトラップの適切なvarbindから移入されて、単一の行が戻されます。SNMP PushDescriptorには、Data*パラメータとSeverity*パラメータの両方がない場合や、複数のSeverity*パラメータがない場合があります。）

必須(データ・ポイントの生成が必要な場合)。

Keymetric-columnOID

String

このPush Descriptorによって生成された重大度またはデータ・ポイントには、このメトリック列のキー値が含まれている必要があります。キー値は、このパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があります。メトリック定義に含まれるそれぞれのキー列に対して、Push DescriptorにKey*パラメータが必要です。

オプション

Contextmetric-columnOID

String

Push Descriptorによって重大度が生成される場合、重大度のイベント・コンテキストにこのメトリック列の値が含まれている必要があります。値は、このパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があります。Push Descriptorによってデータ・ポイントが生成される場合、このパラメータは無視されます。

オプション。これは重大度にのみ使用できます。

例

次の例に、ベンダー固有のルーターからのトラップを示します。

例: ベンダー固有のルーターからのトラップ

ascendLinkDown    TRAP-TYPE
ENTERPRISE     ascend
VARIABLES     { ifIndex, ifAdminStatus, ifOperStatus, ifType,
ifName }
DESCRIPTION    "This trap is in addition to the generic linkDown
trap defined in RFC1215.  This trap provides
additional information such as ifAdminStatus,
ifOerStatus, ifName, slotIfSlotIndex, slotIfItemIndex.
This is an Alarm class trap and it can
be enabled/disabled via alarmEnabled and/or
ascendLinkDownTrapEnabled in trap profile.
This trap is sent only if rfc1215 linkDown trap is generated."
::= 50

次の例は、管理エージェントによるこのトラップの受信方法を示しています。この例の<x>は、問題のある特定のインタフェースを識別するifIndexの値です。

例: 管理エージェントによって受信されるトラップ

Message:
version: 0
community: 'public'
Trap-PDU:
enterprise: enterprises.ascend (1.3.6.1.4.1.529)
agent-addr: 138.2.204.10
generic-trap: 6
specific-trap: 50
time-stamp: <timestamp from router's sysUptime>
variable-bindings:
Name: ifIndex.<x> (1.3.6.1.2.1.2.2.1.1.<x>)
Type: INTEGER
Value: <x>

Name: ifAdminStatus.<x> (1.3.6.1.2.1.2.2.1.7.<x>)
Type: INTEGER
Value: up (1)

Name: ifOperStatus.<x> (1.3.6.1.2.1.2.2.1.8.<x>)
Type: INTEGER
Value: down (2)

Name: ifType.<x> (1.3.6.1.2.1.2.2.1.3.<x>)
Type: INTEGER
Value: iso88023-csmacd (7)

Name: ifName.<x> (1.3.6.1.2.1.2.2.1.31.<x>)
Type: DisplayString
Value: 'eth0'

次の例は、ターゲット・タイプのメタデータ・ファイルでメトリックを定義する方法を示しています。

例: ターゲット・タイプのメタデータ・ファイルで定義されたメトリック

<Metric NAME="interfaces" TYPE="TABLE">
<TableDescriptor>
<ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE"/>
<ColumnDescriptor NAME="type" TYPE="NUMBER" IS_KEY="FALSE"/>
<ColumnDescriptor NAME="status" TYPE="NUMBER" IS_KEY="FALSE"/>
<ColumnDescriptor NAME="configured_status" TYPE="NUMBER" IS_KEY="FALSE"/>
</TableDescriptor>
</Metric>

SNMPV1トラップを受信するには

次の例は、重大度をトリガーするためにターゲット・タイプのメタデータ・ファイルでpush descriptorを定義する方法を示しています。

例: 重大度をトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor

<PushDescriptor RECVLET_ID="SNMPTrap">
<Property NAME="MatchEnterprise" SCOPE="GLOBAL">1.3.6.1.4.1.529</Property>
<Property NAME="MatchGenericTrap" SCOPE="GLOBAL">6</Property>
<Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
<Property NAME="SeverityStatusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
<Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
<Property NAME="ContextTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
<Property NAME="ContextConfigured_statusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
<Property NAME="SeverityCode" SCOPE="GLOBAL">CRITICAL</Property>
<CredentialRef NAME="monCreds">monCredentials</CredentialRef>
</PushDescriptor>

次の例は、ifNameをキー列および他の3つをデータ列として使用して、同じトラップでのデータのレポートを指定するデータ・ポイントをトリガーするために、ターゲット・タイプのメタデータ・ファイルでpush descriptorを定義する方法を示しています。

例: データ・ポイントをトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor

<PushDescriptor RECVLET_ID="SNMPTrap">
<Property NAME="MatchEnterprise" SCOPE="GLOBAL">1.3.6.1.4.1.529</Property>
<Property NAME="MatchGenericTrap" SCOPE="GLOBAL">6</Property>
<Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
<Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
<Property NAME="DataStatusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
<Property NAME="DataTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
<Property NAME="DataConfigured_statusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
<CredentialRef NAME="monCreds">monCredentials</CredentialRef>
</PushDescriptor>

SNMPV2通知を受信するには

次の例は、重大度をトリガーするためにターゲット・タイプのメタデータ・ファイルでpush descriptorを定義する方法を示しています。

例: 重大度をトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor

<PushDescriptor RECVLET_ID="SNMPTrap">
<Property NAME="MatchTrapOID" SCOPE="GLOBAL">1.3.6.1.4.1.529.50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
<Property NAME="SeverityStatusOID"
SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
<Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
<Property NAME="ContextTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
<Property NAME="ContextConfigured_statusOID"
SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
<Property NAME="SeverityCode" SCOPE="GLOBAL">CRITICAL</Property>
<CredentialRef NAME="monCreds">monCredentials</CredentialRef>
</PushDescriptor>

次の例は、ifNameをキー列および他の3つをデータ列として使用して、同じトラップでのデータのレポートを指定するデータ・ポイントをトリガーするために、ターゲット・タイプのメタデータ・ファイルでpush descriptorを定義する方法を示しています。

例: データ・ポイントをトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor

<PushDescriptor RECVLET_ID="SNMPTrap">
<Property NAME="MatchEnterprise" SCOPE="GLOBAL">1.3.6.1.4.1.529</Property>
<Property NAME="MatchGenericTrap" SCOPE="GLOBAL">6</Property>
<Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
<Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
<Property NAME="DataStatusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
<Property NAME="DataTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
<Property NAME="DataConfigured_statusOID"
SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
<CredentialRef NAME="monCreds">monCredentials</CredentialRef>
</PushDescriptor>

SNMPV3通知を受信するには

次の例は、重大度をトリガーするためにターゲット・タイプのメタデータ・ファイルでpush descriptorを定義する方法を示しています。

例: 重大度をトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor

<PushDescriptor RECVLET_ID="SNMPTrap">
<Property NAME="MatchTrapOID" SCOPE="GLOBAL">1.3.6.1.4.1.529.50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
<Property NAME="SeverityStatusOID"
SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
<Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
<Property NAME="ContextTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
<Property NAME="ContextConfigured_statusOID"
SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
<Property NAME="SeverityCode" SCOPE="GLOBAL">CRITICAL</Property>
<Property NAME="hostname" SCOPE="INSTANCE">snmpHost</Property>
<Property NAME="PORT" SCOPE="INSTANCE">snmpPort</Property>
<CredentialRef NAME="monCreds">monCredentials</CredentialRef>
</PushDescriptor>

次の例は、ifNameをキー列および他の3つをデータ列として使用して、同じトラップでのデータのレポートを指定するデータ・ポイントをトリガーするために、ターゲット・タイプのメタデータ・ファイルでpush descriptorを定義する方法を示しています。

例: データ・ポイントをトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor

<PushDescriptor RECVLET_ID="SNMPTrap">
<Property NAME="MatchEnterprise" SCOPE="GLOBAL">1.3.6.1.4.1.529</Property>
<Property NAME="MatchGenericTrap" SCOPE="GLOBAL">6</Property>
<Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
<Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
<Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
<Property NAME="DataStatusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
<Property NAME="DataTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
<Property NAME="DataConfigured_statusOID"
SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
<Property NAME="hostname" SCOPE="INSTANCE">snmpHost</Property>
<Property NAME="PORT" SCOPE="INSTANCE">snmpPort</Property>
<CredentialRef NAME="monCreds">monCredentials</CredentialRef>
</PushDescriptor>

次の例は、ターゲット・タイプのメタデータ・ファイルでmonCredentialsを定義する方法を示しています

例: ターゲット・タイプのメタデータ・ファイルのmonCredentials

<CredentialInfo>
<CredentialSet NAME="monCredentials" USAGE="MONITORING">
<AllowedCredType TYPE="SNMPV1Creds" />
<AllowedCredType TYPE="SNMPV3Creds" />
</CredentialSet>
</CredentialInfo>

各ターゲットのSNMPV1CredsまたはSNMPV3Creds値は、Cloud Controlコンソールで「設定」、「セキュリティ」、「監視資格証明」の順に選択して設定します。

SNMPV1トラップまたはSNMPV2通知を受信するには、SNMPV1Credsを選択する必要があります。SNMPV1Credsを選択すると、コミュニティ文字列パラメータ値が求められます。ユーザーは適切なコミュニティ文字列値を設定する必要があります。

SNMPV3通知を受信するには、SNMPV3Credsを選択する必要があります。SNMPV3Credsを選択すると、ユーザー名、認証パスワード、認証プロトコル、プライバシ・パスワードの各パラメータ値が求められます。ユーザーは使用するsecLevelに応じて、必要な値を設定する必要があります。

例: 管理エージェントによって受信されるSNMV1トラップ

Message:
version: 0
community: 'public'
Trap-PDU:
enterprise: enterprises.ascend (1.3.6.1.4.1.529)
agent-addr: 138.2.204.10
generic-trap: 6
specific-trap: 50
time-stamp: <timestamp from router's sysUptime>
variable-bindings:
Name: ifIndex.<x> (1.3.6.1.2.1.2.2.1.1.<x>)
Type: INTEGER
Value: <x>
Name: ifAdminStatus.<x> (1.3.6.1.2.1.2.2.1.7.<x>)
Type: INTEGER
Value: up (1)
Name: ifOperStatus.<x> (1.3.6.1.2.1.2.2.1.8.<x>)
Type: INTEGER
Value: down (2)
Name: ifType.<x> (1.3.6.1.2.1.2.2.1.3.<x>)
Type: INTEGER
Value: iso88023-csmacd (7)
Name: ifName.<x> (1.3.6.1.2.1.2.2.1.31.<x>)
Type: DisplayString
Value: 'eth0'

例: 管理エージェントによって受信されるSNMV2/SNMPV3通知

Message: Recevied from address 138.2.204.10 (ip address from UDP layer)
version: 1 (or 3 i.e 1 for snmpv2 and 3 for snmpv3 notification)
Security params : (community if SNMPV2, SNMPV3 security params if SNMPV3)
Trap-PDU:
variable-bindings:
Name: sysUpTime.0 (.1.3.6.1.2.1.1.3.0)
Type: INTEGER
Value: 43053404
Name: snmpTrapOID.0 (1.3.6.1.6.3.1.1.4.1.0)
Type: Object Identifier
Value: 1.3.6.1.4.1.529.50
Name: ifAdminStatus.<x> (1.3.6.1.2.1.2.2.1.7.<x>)
Type: INTEGER
Value: up (1)
Name: ifOperStatus.<x> (1.3.6.1.2.1.2.2.1.8.<x>)
Type: INTEGER
Value: down (2)
Name: ifType.<x> (1.3.6.1.2.1.2.2.1.3.<x>)
Type: INTEGER
Value: iso88023-csmacd (7)
Name: ifName.<x> (1.3.6.1.2.1.2.2.1.31.<x>)
Type: DisplayString
Value: 'eth0'

注意

- ターゲット・タイプのメタデータ・ファイルにはpush descriptor定義のある複数のメトリックを含めることができます。また、1つのメトリックに複数のpush descriptorを添付することができます。

- イベント形式の場合、表19-1で説明されているとおりに、push descriptorが1つのメトリック列を示す1つのEvent*パラメータのみを定義していることを確認します。イベントpush descriptorは、AlertContextの一部として送信する追加のメトリック列値を示す、1つ以上のContext*パラメータを持つことができます。

- データ・ポイント形式の場合、表19-1に説明され、この章の「データ・ポイントをトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor」の例および「データ・ポイントをトリガーするためのターゲット・タイプのメタデータ・ファイルのPush Descriptor」の例に示されているとおりに、push descriptorが1つ以上のData*プロパティを定義していることを確認します。

20 fetchletの使用

この章の内容は次のとおりです。

- fetchletの概要

- OSコマンドfetchlet

- SQL fetchlet

- SNMP fetchlet

- HTTPデータfetchlet

- URLXML fetchlet

- URLタイミングfetchlet

- ダイナミック・モニタリング・サービス(DMS)fetchlet

- JDBC fetchlet

- WBEM fetchlet

- JMX fetchlet

- Webサービスfetchlet

- WS-Management fetchlet

- REST fetchlet

20.1 fetchletの概要

Enterprise Managerのデータ取得は、事前定義済のfetchletを通じて処理されます。fetchletは、入力として引数(たとえば、スクリプト、SQL文、ターゲット・インスタンスのプロパティ)を受け取り、書式設定されたデータを返すパラメータ化されたデータ・アクセス・メカニズムです。各fetchletは、特定のタイプのデータ・アクセスを処理します。Enterprise Managerに付属のfetchletは、SQL、SNMP(Simple Network Management Protocol)、HTTP、DMS(ダイナミック・モニタリング・サービス)などの最も一般的なデータ・アクセス方法に対してデータ取得機能を提供します。より複雑なデータ・アクセス要件を処理するために、Enterprise Managerには、開発者がカスタム・メトリック収集メソッドを実装できるようにするOSコマンドfetchletも用意されています。

次の項では、Enterprise Managerに付属のfetchletについて説明します。

20.2 OSコマンドfetchlet

オペレーティング・システム(OS)コマンドfetchletでは、標準出力(stdout)データ・ストリームを返すOSコマンドを(個別に、またはスクリプトから)実行することにより、メトリック・データを取得できます。

次の3つのOSコマンドfetchletを使用できます。

- OS fetchlet(RAW)

- OS行fetchlet(行に分割)

- OS行トークンfetchlet(トークン化された行)

20.2.1 OS fetchlet

OS fetchletは、与えられたOSコマンドを実行し、コマンドの出力を単一セル表に返します。

入力パラメータ

表20-1 OS fetchletの入力パラメータ

パラメータ

型

説明

使用

command

string

実行するオペレーティング・システム・コマンド。

必須

ENVname

string

ENVで始まるOSFetchletパラメータは、コマンドの実行環境でname環境変数になります。

0以上

errStartsWith

String

定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。

オプション

script

string

commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。scriptは、実行する特定のPerlスクリプトの指定に使用されます。

スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

args

string

commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。

引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

separateErrorStream

boolean

commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。

オプション。(TRUE/FALSE)

em_metric_timeout

integer

メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。

タイムアウト期間がない場合は-1を指定します。

オプション

例

メトリック・データを取得するには、UNIXのechoコマンドを実行します。

シェル環境からコマンドを実行するには、次のように入力します。

echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end

echoコマンドにより、次の標準出力が生成されます。

Line 1|some more|even more
Line 2

Line 4|a little more|
|Line 5
|Line 6|
|Line 7|again|
Line 8|the|end

例で示されたコマンドとともにOS fetchletを使用します。

fetchletは次の1x1表を返します。

図20-1 OS fetchletにより返される表

OSコマンドのRAW出力が返されます。標準エラー出力が標準出力に追加されます。

エラー処理

commandの起動で生じる問題(commandプログラムが見つからないなど)が発生すると、java.io.IOExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionが発生します。ゼロ以外の終了値でコマンドが終了した場合、fetchletはoracle.sysmand.emd.fetchlets.CommandFailedExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionをスローします。

注意

コマンドは、シェルで実行されている場合と同様には実行されません。したがって、パイプ、出力リダイレクションおよびバックグラウンド処理を含む共通シェル・シンボルは動作しません。

コマンドを標準入力から読み取ることはできません。

fetchletは中断し、コマンドの終了を待機します。

20.2.2 OS行fetchlet(行に分割)

OS行fetchletは、与えられたOSコマンドを実行し、OSコマンドの出力をトークン化します。出力は行ごとにトークン化されます。fetchletは、単一列表にトークンを返します。表のn番目の行は、OSコマンドの出力のn番目の行を表します。

OSコマンドのトークン化されていないRAW出力を取得するには、OS fetchletを使用します。行ごとにトークン化され、各行が特定のデリミタでトークン化されたOSコマンドの出力を取得するには、「OS行トークンfetchlet」を参照してください。

入力パラメータ

表20-2 OS行fetchletの入力パラメータ

パラメータ

型

説明

使用

command

string

実行するオペレーティング・システム・コマンド。

必須

startsWith

string

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

ENVname

string

ENVで始まるパラメータは、コマンドの実行環境でname環境変数になります。

0以上

errStartsWith

string

定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。

オプション

script

string

commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。scriptは、実行する特定のPerlスクリプトの指定に使用されます。

スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

args

string

commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。

引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

separateErrorStream

boolean

commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。

オプション。(TRUE/FALSE)

em_metric_timeout

integer

メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。

タイムアウト期間がない場合は-1を指定します。

オプション

例

次のUNIXコマンドを例にとります。

echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end

これによって、次の出力が生成されます。

Line 1|some more|even more
Line 2

Line 4|a little more|
|Line 5
|Line 6|
|Line 7|again|
Line 8|the|end

例で示したコマンドとともにOS行fetchletを実行すると、次の単一列表が生成されます。

図20-2 OS行fetchletにより返される表

内容がない場合は、\nにより、行2と行4の間に空白行が挿入されます。

注意:
コマンドは、シェルで実行されている場合と同様には実行されません。したがって、パイプ、出力リダイレクションおよびバックグラウンド処理を含む共通シェル・シンボルは動作しません。
コマンドを標準入力から読み取ることはできません。

fetchletは中断し、コマンドの終了を待機します。

コマンドの標準出力が取得され、標準エラーが取得されて標準出力に追加されます。

行は\nを使用してトークン化されます。

20.2.3 OS行トークンfetchlet(トークン化された行)

OS行トークンfetchletは、与えられたOSコマンドを実行し、OSコマンドの出力をトークン化します。出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。fetchletは、トークンを表に返します。表のn番目の行は、OSコマンドの出力のn番目の行を表します。表のn番目の列は、指定のデリミタ・セットにより決定された、行のn番目のトークンを表します。

OSコマンドのトークン化されていないRAW出力を取得するには、20.2.1項「OS fetchlet」を参照してください。

入力パラメータ

表20-3 OS行トークンfetchletの入力パラメータ

パラメータ

型

説明

使用

command

String

実行するオペレーティング・システム・コマンド。

必須

delimiter

String

行をトークン化するためのデリミタとして機能する文字のセット。

オプションであり、デフォルトは""(出力を行に分割)

startsWith

String

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

ENVname

String

ENVで始まるパラメータは、コマンドの実行環境でname環境変数になります。

0以上

errStartsWith

String

定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。

オプション

script

String

commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。その場合、scriptは実行する特定のperlスクリプトの指定に使用されます。

スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

args

String

commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。

引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

separateErrorStream

Boolean

commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。

オプション。(TRUE/FALSE)

em_metric_timeout

Integer

メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。

タイムアウト期間がない場合は-1を指定します。

オプション

例

次のUNIXコマンドを例にとります。

echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end

これによって、次の出力が生成されます。

Line 1|some more|even more
Line 2

Line 4|a little more|
|Line 5
|Line 6|
|Line 7|again|
Line 8|the|end

例で示されたコマンドとともにOS行トークンfetchletを実行すると、デリミタを表す単一文字"|"により次の表が生成されます。

図20-3 OS行トークンfetchletにより返される表

エラー処理

コマンドの起動に関する問題(コマンド・プログラムが見つからない)が発生すると、java.io.IOExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionが発生します。

ゼロ以外の終了値でコマンドが終了した場合、fetchletはoracle.sysmand.emd.fetchlets.CommandFailedExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionをスローします。

注意

コマンドは、シェルで実行されている場合と同様には実行されません。したがって、パイプ、出力リダイレクションおよびバックグラウンド処理を含む共通シェル・シンボルは動作しません。

fetchletは実行中のコマンドに対する入力ストリームを即時に閉じます。

fetchletは中断し、コマンドの終了を待機します。

行は\nを使用してトークン化されます。

デリミタは、1文字または複数文字の組合せになります。たとえば、行をパイプ、プラスおよびアンダースコアで分割する必要がある場合は「|+_」となります。2つ以上のデリミタを出力テキストで組み合せる場合(「||」や「+|+」など)、そのデリミタとデリミタの間には空の文字列トークンがあるかのようになります。これらの空の文字列は、結果表の列を取得します。行を開始するデリミタの前、または行を終了するデリミタの後に空の文字列があることは考慮されません。

印刷不能文字(タブなど)をXMLのデリミタ・セットで表現するには、&#xHH;を使用します。Hは、文字の16進数識別子です。

20.2.4 メトリック収集用の特定ユーザーとしてのOS fetchletの起動

要件に応じて、プラグインはOS fetchletを使用して、特定ユーザー、つまりデフォルトのoracleユーザー以外のユーザーとして特定メトリックのデータを収集するためにターゲットを監視する管理エージェントで既存のスクリプトを起動する必要があることがあります。

Enterprise Managerは、特定ユーザーとしてメトリック収集を起動するために、権限委任プロバイダ(sudoおよびpowerbroker)の使用をサポートしています。プラグイン用のPDPを有効にするには、監視対象のターゲットがデプロイされているプラグインとホストの両方で資格証明を設定する必要があります。

プラグインでは、ターゲット・メタデータ・ファイルにあるメトリック定義の資格証明参照を設定する必要があります。例では、例のCredentialref行にyour_credがあります。この値は監視資格証明セット名を参照しています。

例: ターゲット・メタデータでの資格証明参照

<TargetMetadata TYPE="my_type" NAME="my_target_name">
...
<Metric NAME="my_special_metric" TYPE="TABLE">
<TableDescriptor>
<ColumnDescriptor NAME="test" TYPE="STRING"/>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OS">
<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>
<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/your_
script.pl</Property>
<CredentialRef NAME="OSCreds">your_cred</CredentialRef>
</QueryDescriptor>
</Metric>
...
</TargetMetadata>

ターゲットを監視している管理エージェントでは、host:HostCredsを指している参照先資格証明タイプを作成する必要があり、監視資格証明セットを、追加する新しいタイプにします。Enterprise Manager Cloud Controlを使用した権限委任設定の詳細は、『Enterprise Manager Cloud Control管理者ガイド』のSudoおよびPowerBrokerのサポートに関する説明を参照してください。

資格証明データは、ターゲットを監視する管理エージェント用のターゲット・メタデータ・ファイル(target.xml)に永続化されます。

次の例は、target.xml内で参照先資格証明タイプMyHostCredsを定義しています。これは、host:HostCredsという資格証明タイプです。

例: 管理エージェント内の資格証明タイプの定義

<Target TYPE="<removed>" NAME="<removed>" DISPLAY_NAME="<removed>" ON_HOST="" EMD_URL="https://<removed>/emd/main/" TIMEZONE_REGION="" IDENTIFIER="TARGET_GUID=<removed>">
...
<CredentialType NAME="MyHostCreds"><CredentialTypeRef REF_NAME="HostRef" REF_TYPE="HostCreds" REF_TARGETTYPE="host" ASSOCIATION="host"><CredentialTypeRefColumn NAME="HostUserName" REF_TYPECOLUMN="HostUserName"/><CredentialTypeRefColumn NAME="HostPassword" REF_TYPECOLUMN="HostPassword"/></CredentialTypeRef></CredentialType>
...
</Target>

Cloud Controlで監視資格証明が更新されると(「設定」→「セキュリティ」→「監視資格証明」)、前述のデータは管理エージェント上で自動的に更新されます。

次の例では、HostMonCredSet監視資格証明セットを定義します。これはタイプMyHostCreds (したがってタイプhost:HostCreds)です。

<CredentialSet NAME="HostMonCredSet" CREDENTIAL_TYPE="MyHostCreds" USAGE="MONITORING"><AllowedCredType TYPE="MyHostCreds"/>
</CredentialSet>

20.3 SQL fetchlet

SQL fetchletは、特定のデータベース上の特定のSQL文を特定のユーザーとして実行し、表結果を返します。

入力パラメータ

表20-4 SQL fetchletの入力パラメータ

パラメータ

型

説明

使用

接続情報

MachineName

String

データベース・ホスト

必須

Port

Integer

データベース・ポート

必須

SID

String

データベースSID。

ServiceNameが指定されていないかぎり必須。

ServiceName

String

データベースServiceName。

SIDが指定されていないかぎり必須。

OracleHome

String

データベースのOracle Home(OidRepSchemaNameとともに使用します)。

OidRepSchemaNameが使用されている場合は必須。

資格証明情報

UserName

String

ユーザー名。

必須

password

String

ユーザー・パスワード。

オプションであり、デフォルトは""。

Role

String

データベースへの接続時に使用されるロール(SYSDBAなど)。

オプションであり、選択肢はSYSDBA、SYSOPERおよびNORMAL(デフォルト)

一般

STATEMENT

String

SQL文またはPL/SQLブロック。

FILENAMEが指定されていないかぎり必須。

FILENAME

String

SQL文またはPL/SQLブロックを含むファイルのフルパス。

STATEMENTが指定されていないかぎり必須。

NUMROWS

Integer

出力する行の最大数。

必須

バインド・パラメータ

SQLINPARAM<位置>

String

位置<position>にある入力パラメータの値。

ゼロ以上で、入力パラメータごとに1つ。

SQLOUTPARAMPOS

Integer

出力パラメータの位置(存在する場合)。

存在する場合は、必ず1つの出力パラメータが存在できます。

SQLOUTPARAMTYPE

String

出力パラメータのタイプ(存在する場合)。

存在する場合は、必ず1つの出力パラメータ・タイプが存在できます。

transpose

TRUE/FALSE

TRUEの場合は、結果が入れ替えられます。行が列に、列が行に入れ替えられます。

注意

SQL文またはPL/SQLブロックは、STATEMENTプロパティを通じて、または名前がFILENAMEプロパティで指定されているファイルを介して指定できます。

SQL fetchletでは、入力パラメータがサポートされます。入力および出力パラメータは、:<number>を使用することにより、通常の方法でSQL/PLSQLテキストで指定されます。入力パラメータを使用して、SQL問合せとPL/SQLブロックの両方に値をバインドできます。

入力パラメータの値は、SQLINPARAM<位置>形式のプロパティとして指定されます。任意の数の入力パラメータが可能です。入力パラメータはスカラーである必要があります。タイプARRAYおよびSTRUCTの入力パラメータはサポートされません。

SQL fetchletは、データを取得する匿名のPL/SQLブロック(他の機能やプロシージャを呼び出す)の実行をサポートします。PL/SQLのブロックを実行すると、データはOUTパラメータによってfetchletに返されます。正確には1つのOUTパラメータになります。タイプはSQL_CURSOR(PL/SQL REF CURSOR)、またはオブジェクトの配列を表す指定のタイプである必要があります。後者の場合、オブジェクトの各フィールドは、表の一列を表します。配列の各オブジェクト・インスタンスは、表の完全な一行を表します。OUTパラメータの位置とタイプは、プロパティSQLOUTPARAMPOSおよびSQLOUTPARAMTYPEによって指定されます。OUTパラメータを指定する場合、fetchletはPL/SQLを実行し、STATEMENTプロパティを匿名のPL/SQLブロックとして処理することが前提になります。

注意:
ARRAY型のSQLOUTPARAMTYPEを使用している場合は、配列を次のように識別する必要があります。

- 配列名を囲む二重引用符を使用せずに、SQLOUTPARAMTYPEで指定された配列型をSQL*Plusまたは任意のユーティリティから作成する場合、このプロパティの配列名は、ターゲット・メタデータ・ファイルですべて大文字を使用して指定する必要があります。その理由は、RDBMSが配列名を自動的にすべて大文字に変更するためです。

- 二重引用符を使用して配列名を囲んで、SQLOUTPARAMTYPEで指定された配列型をSQL*Plusまたは任意のユーティリティから作成する場合、RDBMSは、指定された大文字と小文字の区別を保持します。このため、ユーザーはターゲット・メタデータ・ファイルで使用したのと同じ大/小文字を使用して配列名を指定する必要があります。

OUTパラメータが指定されていない場合、fetchletはSQL問合せを実行していることを想定します。

SQL fetchletへのすべての入力パラメータは文字列であることに注意してください。したがって、他のすべてのデータ型は文字列に変換する必要があります。これは、数値などのデータ型では簡単ですが、日付やタイムスタンプでは簡単ではありません。(DateFormatクラスを使用して)値の文字表現を渡すことにより、絶対的な日付またはタイムスタンプを渡すことができます。現在、SYSDATEやSYSDATE+1などの日付関数を渡す方法はありません。このような場合は、たとえばSQLに日付引数を直接埋め込むことができます。

begin func1(:1, :2, SYSDATE); end;

その他の注意事項は、プロシージャにnull引数を渡す場合です。次のSQLについて考えます。

STATEMENT=begin func1(:1,:2); end;
SQLINPARAM1=null
SQLOUTPARAMPOS=2
SQLOUTPARAMTYPE=fooret

最初の引数をvarchar2にするとします。これをパラメータ化し、最初の引数としてnullを渡すことにより、実際にはnull値ではなく*string* nullを引数に渡すことになります。null値を渡す場合は、次の処理を行います。

STATEMENT=begin func1(null, :1); end;
SQLOUTPARAMPOS=1
SQLOUTPARAMTYPE=fooret

例

次のプロパティは、パラメータなしで問合せ(すべてのユーザーを取得)を実行します。

例1: パラメータを指定しない問合せ

MachineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=select * from all_users;
NUMROWS=30

次のプロパティは、入力パラメータを指定して問合せを実行します(指定したユーザーが所有している指定したタイプのオブジェクトのうち、最初のいくつかを取得します)。

例2: 入力パラメータを指定した問合せ

MachineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=select * from all_objects where owner=:1 and object_type=:2 and rownum<:3tt>
NUMROWS=30
SQLINPARAM1=SYSTEM
SQLINPARAM2=INDEX
SQLINPARAM3=10

次の例では、カーソルを返し、入力パラメータを受け取るPL/SQLプロシージャを実行します。

例3: 入力パラメータを指定したPL/SQLプロシージャ

achineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=begin :1 := skini_junk.func1(:2); end;
NUMROWS=30
SQLINPARAM2=SYSTEM
SQLOUTPARAMPOS=1
SQLOUTPARAMTYPE=sql_cursor

次の例では、文字列の配列を返すPL/SQLプロシージャを指定します。

例4: 文字列の配列を返すPL/SQLプロシージャ

MachineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=begin skini_junk.newproc(:1,:2); end;
NUMROWS=30
SQLINPARAM1=SYSTEM
SQLOUTPARAMPOS=2
SQLOUTPARAMTYPE=my_string_array

次の例では、構造体の配列を返すPL/SQLパッケージを指定します。

例5: 構造体の配列を返すPL/SQLパッケージ

MachineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=begin :1 := skini_junk.func2(:2,:3,:4,:5,:6); end;
NUMROWS=30
SQLINPARAM2=somename
SQLINPARAM3=someplace
SQLINPARAM4=someanimal
SQLINPARAM5=something
SQLINPARAM6=22
SQLOUTPARAMPOS=1
SQLOUTPARAMTYPE=my_struct_array

次の例では、前述の例で使用されるPL/SQLを参照として示します。

例6: 例で使用されるPL/SQL

create or replace type my_type as Object (
name varchar2(128),
place varchar2(128),
animal integer,
thing number,
thing2 number);
/
create or replace type my_struct_array as table of my_type;
/

create or replace type my_string_array as table of varchar2(3000);
/

create or replace type my_int_array as table of integer;
/

create or replace package skini_junk as

type Jcr is ref cursor;

function func1(username in varchar2) return Jcr;
function func2(name varchar2, place varchar2, animal integer,
thing number, thing2 number) return my_struct_array;
procedure newproc(name varchar2, outArray OUT my_string_array);
procedure newproc2(numrows in varchar2, outArray OUT my_int_array);

end skini_junk;
/

create or replace package body skini_junk as

function func1(username in varchar2) return Jcr is
cr Jcr;
begin
open cr for select object_name, object_type, status from all_objects where
owner=upper(username);

return cr;
end;

function func2(name varchar2, place varchar2, animal integer,
thing number, thing2 number) return my_struct_array IS
ret my_struct_array := my_struct_array();

begin
ret.extend(50);

for i in 1..50 loop
ret(i) := my_type(name || i,
place || i,
animal+i,
thing+i,
thing2+i);
end loop;
return ret;
end;

procedure newproc(name varchar2, outArray OUT my_string_array) IS
begin
outArray := my_string_array();
outArray.extend(100);

for i in 1..100 loop
outArray(i) := name || i;
end loop;
end;

procedure newproc2(numrows in varchar2, outArray OUT my_int_array) IS
begin
outArray := my_int_array();
outArray.extend(numrows);
for i in 1..numrows loop
outArray(i) := i;
end loop;
end;

end skini_junk;
/

20.4 SNMP fetchlet

オブジェクト識別子(OID)は、MIB変数インスタンスまたは複数インスタンスのMIB変数に相当します。OIDのリストを前提として、SNMP fetchletは、指定のホストで対応するインスタンスのSNMPエージェントをポーリングします。

入力パラメータ

表20-5 SNMP fetchletの入力パラメータ

パラメータ

型

説明

使用

hostname

String

SNMPエージェントのホスト名。

必須。デフォルトはlocalhostです。

次に例を示します。

bigip.host.example.com

"148.87.10.5"

PORT

String

SNMPエージェントのポート。

オプション。デフォルトは161。

COMMUNITY

String

SNMPコミュニティ文字列。

オプション。デフォルトはpublicです。

TIMEOUT

String

SNMPタイムアウト。

オプション。デフォルトは5秒です。

OIDS

String

デリミタで区切られた部分文字列のリスト。各部分文字列はOID(数値のドット表記法)で始まり、オプションで*PlacementOIDで終了できます。(詳細は、注意を参照してください。)

必須。

次に例を示します。

"1.3.6.1.2.1.2.1.1.1.0,1.3.6.1.2.1.2.1.1.3.0,1.3.6.1.2.1.2.1.1.5.0"

"1.3.6.1.2.1.2.1.2.2.1.2

1.3.6.1.2.1.2.1.2.2.1.10

1.3.6.1.2.1.2.1.2.2.1.16"

"1.3.6.1.2.1.2.2.1.3 1.3.6.1.2.1.2.2.1.5

1.3.6.1.2.1.4.20.1.1*1.3.6.1.2.1.4.20.1.2

1.3.6.1.2.1.4.20.1.3*1.3.6.1.2.1.4.20.1.2"

DELIM

String

OIDSの個々の部分文字列を区切るためのデリミタ。

オプションであり、デフォルトは空白文字。(ドット)、*(アスタリスク)および0から9まで(数字)はデリミタとして使用できません。

TABLE

String

このパラメータがTRUEに設定されている場合、OIDS内の各OIDは、複数インスタンスを持つ変数に対応します。FALSEに設定されている場合は、単一変数インスタンスに対応します。

オプション。デフォルトはFALSE。

PINGMODE

Boolean

PINGMODEレスポンス・メトリックの定義に使用されます。

TRUEに設定する場合、成功したGetResponseは、単一行で単一列の表(セルの値は1)を生成します。タイムアウトにより、単一行で単一列の表(値は0)が生成されます。

これは、SNMPベースのターゲットにレスポンス・メトリックを定義する場合に役立ちます。

オプション。デフォルトはFALSEです。

IGNORE_TIMEOUT_ERR_BOOLEAN

Boolean

レスポンスの待機中にPINGMODE以外の呼出しがタイムアウトした場合にエラーを生成するかどうかを指定します。

TRUEに設定すると、レスポンスの待機中にタイムアウトするPINGMODE以外の呼出しは、メトリック収集エラーを生成しません。これは、PINGMODEレスポンス・メトリックを定義するターゲットの合理的な動作です。SNMPエージェントが応答を停止したときにレスポンス・メトリックが可用性の重大度を生成する場合、レスポンス・メトリックで問題を特定する前に実行されるレスポンス以外のメトリックでメトリック・エラーを生成する必要はありません。

オプション。デフォルトはTRUEです。

MAX_NUM_ROWS_FETCH

Integer

TABLE呼出しによって返される最大行数。

構成プロパティSnmpTableMaxNumRowsFetchは、デフォルト値をオーバーライドできます。

オプション。デフォルトは1000です。

CONTEXT_NAME

String

CONTEXT_ENGINE_IDと同様に、これら2つのプロパティでは、SNMPv1およびSNMPv2cで使用されるコミュニティ文字列を置き換える一連のSNMPv3資格証明を指定します。

注意: これら2つのプロパティを指定する場合、COMMUNITYとVERSIONパラメータは無視され、送信されたリクエストはSNMPv3リクエストになります。

オプション。デフォルト値なし

CONTEXT_ENGINE_ID

String

このパラメータの詳細は、CONTEXT_NAMEの説明を参照してください。

オプション。デフォルト値なし

VERSION

String

SNMPのバージョンを指定します。

次のような場合、VERSIONは、SNMPv2cリクエストを示すv2cに設定されます。

- disallowV1RequestsをTRUEに設定するか、hasV2TypesをTRUEに設定する場合
および

- CONTEXT_NAMEとCONTEXT_ENGINE_IDを指定しない場合

前述の条件が適用されない場合、VERSIONは、SNMPv1リクエストを示すv1に設定されます。

オプション。デフォルトはv1です。

disallowV1Requests

Boolean

このパラメータにより、管理エージェントが特定のターゲットへのリクエストの送信時にのみSNMPv2cを使用するように指定できます。

オプション。デフォルトはFALSEです。

hasV2Types

Boolean

このパラメータは、タイプが64ビット整数値のMIB変数のOIDを含むSNMP QueryDescriptorのグローバル範囲のプロパティです。これらはSNMPv1では表現できません。同じターゲット・インスタンスの他のリクエストがSNMPv1を使用して送信される場合でも、ターゲットタイプの所有者は、このリクエストがSNMPv2cである必要があることを把握しています。

オプション。デフォルトはFALSEです。

USE_GET_NEXT_ONLY

Boolean

VERSIONに記載の条件に従い、SNMP QueryDescriptorがSNMPv2cで、TABLEがTRUEの場合、SNMP fetchletが返す複数行は、SNMPv1で使用されるGetNextリクエストではなくSNMPv2c GetBulkリクエストを使用してフェッチされます。

USE_GET_NEXT_ONLYをTRUEに設定すると、SNMP fetchletによって返される行は、GetNextリクエストを使用してフェッチされます。

オプション。デフォルトはFALSEです。

エラー処理

ホスト名またはOIDSのいずれかを指定しない場合、MissingParameterExceptionがスローされます。TABLEがTRUEとFALSEのどちらとも等しくない場合、エージェントとの間でのSNMPメッセージの送受信中にI/Oエラーが発生した場合、またはエージェントがSNMPエラーで応答した場合は、FetchletExceptionがスローされます。

注意

fetchletによって返される表には、OIDS内のOIDごとに列が含まれます。入力OIDが単一変数インスタンスに対応している場合、表にはこれらのインスタンスを持つ1行のみ含まれます。一方で、OIDが複数のインスタンスの変数に対応する場合、表の各列にはそのOIDのインスタンスが含まれ、各行は別のsubidentifierに対応します。(サブ識別子は、いくつかのMIB変数の特定の変数インスタンスを一意に識別するOID拡張です。)OIDSには、すべてサブ識別子を持つOID、またはすべてサブ識別子を持たないOIDが含まれている必要があります。

たとえば、3つのOID(sysDescr、sysUpTimeおよびsysName)の変数インスタンスを要求するには、OIDSを
1.3.6.1.2.1.2.1.1.1.0 1.3.6.1.2.1.2.1.1.3.0 1.3.6.1.2.1.2.1.1.5.0にする必要があります。この場合は、すべてのOIDにインスタンス・サブ識別子.0が含まれます。戻り表は、次のようになります(実際の値は異なる場合があります)。

図20-4 SNMP fetchlet

または、一部のMIBに、次の3列および4つのインスタンスが含まれているとします。

図20-5 SNMP fetchlet: 3列および4つのコンテンツ

ifDescr、ifInOctetsおよびifOutOctetsに対応する3つの列を持つ表を作成するには、OIDSを次のように定義します。

"1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.2.2.1.10 1.3.6.1.2.1.2.1.2.2.1.16"

fetchletは次の表を返します。

図20-6 SNMP fetchlet: ifDescr、ifInOctetsおよびifOutOctets OIDS

行は、それぞれサブ識別子1、2、3、4に対応します。

OIDSのどのOIDも別のplacement OIDで追加できます。配置OIDの変数インスタンスは、返される表には表示されません。かわりに、列内での元のOIDの変数インスタンスの場所を決定します。具体的には、元のOIDのインスタンスのセット内のサブ識別子Sを持つ変数インスタンスIすべてについて、(a)配置OIDに対応する、サブ識別子Sを持つ変数インスタンスXがインスタンスのセット内に存在する必要があり、(b)XはインスタンスIのサブ識別子として使用されます。

たとえば、MIBに、それぞれ4つの変数インスタンスを持つ次の3つの列が含まれているとします。

図20-7 SNMP fetchlet: 4つの変数インスタンスを持つMIBコンテンツ

ifDescrおよびipAdEntNetMaskを含む表を作成するには、ipAdEntIfIndexのOIDを配置OIDとして使用し、列を位置揃えする必要があります。このため、fetchletへのOIDS入力は、1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.4.20.1.3*1.3.6.1.2.1.2.1.4.20.1.2となります。fetchletの出力は次のようになります。

図20-8 SNMP fetchlet: ifDescrおよびipAdEntNetMaskを含む表

前の例でOIDSが1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.4.20.1.3だった場合、出力は次のようになります。

図20-9 SNMP fetchlet: 別のOID

20.5 HTTPデータfetchlet

HTTPデータfetchletは、URLのコンテンツを取得し、URLのコンテンツをデータとして返します。次の3つのfetchletを使用できます。

- URL fetchlet

- URL行

- URL行トークン

20.5.1 URL fetchlet(RAW)

URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツを単一セル表に返します。

行ごとにトークン化され、各行が特定のデリミタでトークン化されたURLの出力を取得するには、「URL行トークンfetchlet」を参照してください。

入力パラメータ

表20-6 URL fetchletの入力パラメータ

名前

説明

使用

url

コンテンツを取得するURL

必須

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション

例

次のURLを例にとります。

http://localhost/nhcities.txt

このコンテンツは次のとおりです。

行1: Nashua, Keene,

行2: Concord

行3: , Conway, Manchester, Milford, Brookline,

行4:

行5: Hollis, Meredith

ここで、指定したURLでURL fetchletを実行します。
fetchletは次の1x1表を返します。

図20-10 URL fetchletの出力

URLのRAWコンテンツが返されます。

エラー処理

URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。

20.5.2 URL行fetchlet(行に分割)

URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツをトークン化します。出力は行ごとにトークン化されます。fetchletは、単一列表にトークンを返します。表のn番目の行は、URLコンテンツのn番目の行を表します。

注意:
URLのトークン化されていないRAWコンテンツを取得するには、「URL fetchlet」を参照してください。行ごとにトークン化され、各行が特定のデリミタでトークン化されたURLのコンテンツを取得するには、「URL行トークンfetchlet」を参照してください。

表20-7 URL行fetchletの入力パラメータ

名前

説明

使用

url

コンテンツを取得するURL

必須

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション

startsWith

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

例

次のURLを例にとります。

http://localhost/nhcities.txt

このコンテンツは次のとおりです。

行1: Nashua, Keene,

行2: Concord

行3: , Conway, Manchester, Milford, Brookline,

行4:

行5: Hollis, Meredith

ここで、指定したURLでURL fetchletを実行します。

fetchletは次の表を返します。

図20-11 URL行fetchletの出力

エラー処理

URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。

URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。

注意

行は\nを使用してトークン化されます。

20.5.3 URL行トークンfetchlet(トークン化された行)

URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツをトークン化します。出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。fetchletは、トークンを表に返します。表のn番目の行は、URLコンテンツのn番目の行を表します。表のn番目の列は、指定のデリミタ・セットにより決定された、行のn番目のトークンを表します。

URLのトークン化されていないRAWコンテンツを取得するには、「URL fetchlet」を参照してください。

表20-8 URL行トークンfetchletの入力パラメータ

名前

説明

使用

url

コンテンツを取得するURL

必須

delimiter

行をトークン化するためのデリミタとして機能する文字のセット。

オプションであり、デフォルトは""(出力を行に分割)

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション

startsWith

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

例

次のURLを例にとります。

http://localhost/nhcities.txt

このコンテンツは次のとおりです。

行1: Nashua, Keene,

行2: Concord

行3: , Conway, Manchester, Milford, Brookline,

行4:

行5: Hollis, Meredith

ここで、指定したURLと、デリミタを表す単一文字","を使用して、URL fetchletを実行します。

fetchletは次の表を返します。

図20-12 URL行トークンの出力

エラー処理

URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。

URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。

注意

行は\nを使用してトークン化されます。

デリミタは、1文字または複数文字の組合せになります。たとえば、行をパイプ、プラスおよびアンダースコアで分割する必要がある場合は「|+_」となります。2つ以上のデリミタを出力テキストで組み合せる場合(「||」や「+|+」など)、そのデリミタとデリミタの間には空の文字列トークンがあるかのようになります。これらの空の文字列は、結果表の列を取得します。行を開始するデリミタの前、または行を終了するデリミタの後に空の文字列があることは考慮されません。

印刷不能文字(タブなど)をXMLのデリミタ・セットで表現するには、&#xHH;を使用します。Hは、文字の16進数識別子です。

20.6 URLXML fetchlet

URLXML fetchletは、与えられたURLのXMLコンテンツを取得し、特定のパターンに基づいて情報を抽出します。パターンは、照合するXMLのチャンクのリストです。戻り表では、パターンの各グラバ(*)が列に順番にリストされ、パターン・チャンクがXMLコンテンツと一致するたびに行が作成されます。

入力パラメータ

表20-9 URLXML fetchletの入力パラメータ

名前

説明

使用

url

コンテンツを取得するURL

必須。

pattern

XMLからの情報の抽出に使用されるパターン。URLのXMLコンテンツに対して比較されるXMLチャンクのリストになります。各チャンクでは、テキストにフラット化して抽出する内容を定義する要素のテキスト部分にグラバー(*)が1つ以上あります。

必須。

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション。

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション。

ignoreDtd

TRUEに設定されている場合は、コンテンツXMLにより参照されるDTDファイルを無視する必要があることを指定します。これは、DTDファイルにアクセスできない場合に役立ちます。

オプション。

generateKey

trueに設定されている場合は、行ごとに一意のキーが生成されます。キーは、結果の最初の列を占め、数値になります。

オプション。

throwConnException

TRUEに設定されている場合は、java.net.ConnectExceptionがスローされます。それ以外の場合は、捕捉されて空の結果セットが返されます。このプロパティをFALSEに設定すると、DMSFetchletと一貫性のある動作が行われます。

オプション。デフォルト値はTRUE。

例

次のURLを例にとります。

http://localhost/urlxmltestfile.xml

このコンテンツは次のとおりです。

<?xml version="1.0"?>
<testfile>
<test>Simple text</test>
<test><level>A little more complex</level></test>
<test></test>
<notatest></notatest>
<test>Yet more complexity<level>Even a little more complex</level>Will it ever stop?</test>
<test1>must match<level>extract me!</level></test1>
<test1>must match here<level>extract me, too!</level></test1>
</testfile>

与えられたURLおよびパターンでURLXML fetchletを実行します。

<testfile><test>*<level>*</level></test></testfile>

次の表が返されます。

図20-13 URLXML fetchletの出力

エラー処理

URLまたはパターン・パラメータが指定されていない場合は、MissingParameterExceptionが発生します。

次の場合は、FetchletExceptionが生成されます。

- URLの形式が不正な場合

- URLのコンテンツの取得でI/Oエラーが発生した場合

- URLコンテンツまたはパターンに無効なXMLが含まれている場合

注意

プロキシ・ホストまたはポート、あるいはその両方を設定すると、Java環境全体のjava.netパッケージに対してこれらの設定が変更され、プロキシ設定が変更された場合にスレッド・セーフになりません。

20.7 URLタイミングfetchlet

URLタイミングfetchletは、特定のURLタイミングのコンテンツを取得します。ベース・ページ・ソースのみでなく、ページ内のフレームまたはイメージも取得します。

入力パラメータ

表20-10 URLタイミングfetchletの入力パラメータ

パラメータ

説明

使用

url#

ダウンロードするURL。url0は必須ですが、url0、url1、url2、url3という表記に従って、url0以外にも任意の数のURLを指定できます。

必須。

proxy_host

URL接続を行うために使用するプロキシ・ホスト。

オプション。URLへのアクセスに使用するプロキシを指定します。proxy_host_override値が指定されている場合は、かわりにその値が使用されます。

proxy_port

URL接続を行うためにプロキシ・ホストで使用されるポート。

オプション。

dont_proxy_for

プロキシが使用されないドメイン。

オプション。.us.example.com、.uk.example.comのようになります。

use_proxy

プロキシ・オーバーライド入力パラメータとともに使用される場合、use_proxyでは、元のプロキシのかわりに使用するプロキシを指定します。プロキシ・オーバーライド・パラメータを設定しないでfalseに設定した場合は、プロキシが使用されません。

オプション。パラメータはtrueまたはfalseに設定できます。

proxy_host_override

URL接続を行うために使用する別のプロキシ・ホスト。

オプション。proxy_hostをオーバーライドします。

proxy_port_override

URL接続を行うために使用する別のプロキシ・ポート。

オプション。proxy_portをオーバーライドします。

dont_proxy_override

ドメインのプロキシを使用しません。

オプション。パラメータはtrueまたはfalseに設定できます。

internet_cert_loc

セキュア(HTTPS)URLへのアクセスに使用する証明書の場所を指すパス。

オプション。

auth_realm

Basic認証ログオンのレルム。レルムが認証に対して指定されていない場合、認証は行われず、ページのダウンロードは401レスポンス・コードで失敗します。

オプション。

auth_user

BASIC認証のユーザー名。

オプション。

auth_password

Basic認証のパスワード。

オプション。

retries

最初に失敗した場合にurlを再試行する回数。

オプション。デフォルトは1。

connection_timeout

サーバーへの接続の確立で許容される待機時間(ミリ秒単位)。この時間には、名前解決に必要な時間も含まれます。

オプション。デフォルトは60000ミリ秒(1分)。

read_timeout

読取りでサーバーの応答を待機するアイドル時間。たとえば、指定したタイムアウト期間中にサーバーからデータを受信しない場合、操作は失敗したとみなされます。

オプション。デフォルトは12000ミリ秒(2分)。

timeout

ページ・ダウンロードが失敗とみなされる経過ミリ秒数。サイトが機能していても極端に低速な場合は、これが検出されます。

オプション。デフォルトは300000ミリ秒(5分)。

status_comparator

行を組み合せて単一行を作成する場合、status_comparatorパラメータは、すべてのURLが成功した必要があるか(and)、またはいずれかのURLが成功した必要があるか(or)を示します。

オプション。デフォルトはand。

cache

URLにアクセスする際にキャッシュを使用するかどうかを示します。キャッシュを使用しないことを指定するには、パラメータをnに設定します。

オプション。デフォルトはyNoteです。キャッシュの範囲はリクエストごとになります。複数の取得メトリック・リクエスト間には永続キャッシュがありません。

output_format

使用する出力形式(summary、detailed、repeat_column)を指定します。出力形式の詳細は、メトリック列および出力モードを参照してください。

必須。summary: すべてのurlについてデフォルトのメトリック・セットを単一行に与えます。detailed: 各urlについてデフォルトのメトリック・セットを与えます。repeat_column: 各urlについてタイミングとともに単一のメトリック行を与えます。

metrics

返す必要のあるメトリック列を指定します。各出力形式について返されるメトリック列の詳細は、表20-12「URLTIMING fetchlet: メトリック列」を参照してください。

オプション。fetchletから何をどのような順序で返す必要があるかを指定できます。たとえば、status, status_description, total_response_timeのように指定します。

メトリック列および出力モード

情報の形式および返される特定のメトリック情報は、output_formatおよびmetrics入力パラメータによって収集されます。表20-11に、形式カテゴリおよびそれぞれで返されるメトリック(列)をリストします。使用可能なメトリック列の説明は、表20-12「URLタイミングfetchlet: メトリック列」を参照してください。

表20-11 URLタイミングfetchlet: 出力形式

出力形式

説明

メトリック列

summary

すべてのURLについてデフォルトのメトリック・セットを単一行に返します。

メトリック入力パラメータが指定されている場合は、指定された列のみ返されます。

computed_response_time、status、status_description、dns_time、connect_time、redirect_time、first_byte_time、html_time、content_time、total_response_time、rate、max_response_time、avg_response_time、avg_connect_time、avg_first_byte_time、broken_count、broken_content。

detailed

各urlについてデフォルトのメトリック・セットを返します。

メトリック入力パラメータが指定されている場合は、指定された列のみ返されます。

url、computed_response_time、status、status_description、dns_time、connect_time、redirect_time、first_byte_time、html_time、content_time、total_response_time、rate、redirect_count、html_bytes、content_bytes、total_bytes、avg_connect_time、avg_first_byte_time、broken_count、broken_details。

repeat_column

各URLについてタイミングとともに単一のメトリック行を返します。

メトリック入力パラメータが指定されている場合、各URLについてこれらの列が返され、その後に全体的なstatusとstatus_descriptionが続きます。(出力は常に単一行であることに注意してください。)

各URLについてtotal_response_timeが繰り返され、その後に全体的なstatusとstatus_descriptionが続きます。

メトリック列

表20-12に、URLタイミングfetchletから返されるメトリック列を示します。

表20-12 URLタイミングfetchlet: メトリック列

列名

説明

status

すべてのURLの全体的なステータス。デフォルトでは、ANDを使用して全体的なステータスを計算しますが、これはstatus_comparator入力パラメータを使用して変更できます。

connect_time

サーバーに接続してリクエストを送信するための時間。

first_byte_time

リクエストの送信からレスポンスの最初のバイトを読み取るまでの所要時間。

total_response_time

すべてのurlおよび関連するコンテンツ(gif、css、javascriptなど)のフェッチの所要時間。

max_response_time

最も遅いページ時間とも呼ばれます。これは、最も遅いURLの所要時間です。

avg_response_time

URLの平均レスポンス時間。合計レスポンス時間/ページ数(url数)として計算されます。

rate

KB/秒。これは、合計受信バイト数/その受信の合計所要時間で計算されます。

html_time

すべてのページのHTML部分のダウンロードの合計所要時間。この時間では、イメージおよびその他のコンテンツをフェッチするための時間は除外されます。(フレームHTMLをフェッチするための時間は含みます。)

content_time

ページ・コンテンツ(gif、JavaScript、cssなど)のダウンロードの所要時間。

redirect_time

指定されたurlのセットのフェッチ中に発生するすべてのリダイレクトの合計所要時間。

redirect_count

リダイレクト数。

total_bytes

合計バイト数。

html_bytes

HTMLの合計バイト数。(フレームHTMLのバイト数を含みます。)

content_bytes

コンテンツの合計バイト数。

status_description

これは、ステータスが停止中の場合にのみ存在します。HTTPステータスの説明に対応します。

request_count

行われたリクエスト数。(すべてのHTMLおよびコンテンツ・リクエストを含みます。)

broken_count

イメージまたはその他のコンテンツ要素のフェッチ時のエラー数。

broken_details

フェッチできなかったイメージまたはその他のコンテンツのリスト。これは、url[broken list], url[broken list...の形式です。

computed_response_time

この時間は、クライアント(ブラウザなど)がトランザクションのすべてのページのフェッチに要した時間の概算です。この数値は、すべてのページのコンテンツ(gifs、cssなど)が複数のスレッドを使用してフェッチされた場合と同様に計算されます。

avg_connect_time

合計connect_time/行われた収集の合計数。

avg_first_byte_time

最初のバイトの合計時間/行われたリクエスト数(HTMLまたはコンテンツをフェッチするため)。

dns_time

ホスト名の解決に要した時間(実装されておらず、常にゼロを返します)。

url

URLを返します。detailedのoutput_formatでのみ使用できます。

例

次のURLを例にとります。

url0=http://www.example.com/

入力パラメータoutput_format=summaryでは、fetchletは次の表(列のヘッダーを除く)を返します。

図20-14 サマリー出力形式

output_format = summaryおよびmetrics = timetotal_response_time, status, status_descriptionでは、fetchletは次の表(列のヘッダーを除く)を返します。

図20-15 指定したメトリック列でのサマリー出力形式

output_format = summaryおよびmetrics = total_response_time, status, status_descriptionでは、fetchletは次の表(列のヘッダーを除く)を返し、サーバーはエラーになります。

図20-16 指定したメトリック列でのサマリー出力形式および内部サーバー・エラー

次のURLを例にとります。

url0=http://www.example.com/
url1=http://nedc.us.example.com/

output_format=summaryでは、fetchletは次の表(列のヘッダーを除く)を返します。ここで、数値は両方のurlのフェッチの所要時間です。

図20-17 2つのURLに対するサマリー出力形式

output_format=detailedでは、fetchletは次の表(列のヘッダーを除く)を返します。

図20-18 2つのURLに対する詳細出力

output_format=repeat_columnでは、fetchletは次の表(列のヘッダーを除く)を返します。

図20-19 繰返し列の出力形式

エラー処理

URLパラメータがないか不正な場合、またはメトリックを計算できない場合は、メトリック・エラーになります。

注意

再試行の実行に必要な時間がページの合計時間に加算されます。たとえば、2回の再試行が実行され、成功した場合、合計ページ時間は、成功したページの時間に失敗した2回の再試行の所要時間を加算した時間になります。

推奨される使用方法:

- 基本監視の場合:
url0=<監視するURL> , output_mode=summaryを使用し、metrics=status, computed_response_time, status_descriptionを指定します。

- すべての列を取得する場合:
url0=<監視するurl> , output_mode=summaryを使用します。

20.8 ダイナミック・モニタリング・サービス(DMS)fetchlet

ダイナミック・モニタリング・サービス(DMS)fetchletは、Application Server(AS)にアクセスし、DMSから返されるメトリックを収集します。

DMSにより、アプリケーションおよびシステム開発者は、カスタマイズされたコンポーネント固有のパフォーマンス・メトリックを測定およびエクスポートできます。Oracle Management Agentにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをOracle Enterprise Manager Cloud Controlにインポートできます。

DMS fetchletはOracle Management Agentプラグイン・モジュールであり、DMSによりエクスポートされるパフォーマンス・データを管理エージェントがインポートできるようにします。DMS fetchletを使用すると、DMS APIコールを使用してインスツルメント処理されたコンポーネントは、そのパフォーマンス・データをEnterprise Manager Cloud Controlと共有できます。

20.8.1 Oracle Management Agent統合に対してDMSを使用する利点

DMSを使用する場合、コンポーネントは、それ自体を管理エージェントの操作の詳細から隔離できます。コンポーネントは、各自のfetchletをデプロイ(または維持)したり、既存のいずれかのfetchletに組み込むためのTclスクリプトやシェル・スクリプトをデプロイ(または維持)したりする必要はありません。コンポーネントは、パフォーマンス・メトリックを測定またはエクスポートする独自の新しい手段を工夫する必要はありません。パフォーマンス・メトリックは、コンポーネント間で一貫した方法で測定および報告できます。DMS fetchletは、シェル・スクリプトやTclスクリプトをフォークせずに、リモートDMSランタイムに直接接続します。最も重要な点として、DMSが長く複雑なメタデータ・ドキュメントを自動生成するため、面倒でエラーを起こしやすい手動による編集時間が大幅に短縮されます。

入力パラメータ

表20-13 DMS fetchletの入力パラメータ

名前

型

説明

使用

oraclehome

String

監視されるIASインスタンスがインストールされる最上位ディレクトリ。これは、ローカルIASプロセスの監視にのみ使用されます。リモートIASプロセスを監視する場合、ユーザーはこのパラメータに空の値を指定し、かわりにプロパティopmnremoteportまたはmachine(あるいはその両方)を指定する必要があります。

必須。

次に例を示します。

/private/oracle/ias

version

String

ターゲットのASバージョン番号。監視されるASインスタンスのバージョンの区別に使用されます。

オプション

次に例を示します。

"9.0.4"

opmnport

Integer

Oracle Process Monitoring and Notification(OPMN)のポート。これは、主にリモートASプロセスの監視に使用されます。プロパティmachineと一緒に指定する必要があります。これが存在するか有効な場合、プロパティoraclehomeおよびhttpportは無視されます。

オプション

次に例を示します。

"6200"

httpport

Integer

HTTPポートは、主にスタンドアロンのプロセスの監視に使用されます。プロパティmachineと一緒に指定する必要があります。プロパティopmnportがある場合は無視されます。これが存在するか有効な場合、プロパティoraclehomeは無視されます。

オプション

次に例を示します。

"7777"

machine

String

Internet Application Server(AS)インスタンスが実行するホスト名。プロパティopmnportと一緒に指定する必要があります。これが存在しない場合、ローカル・ホストが前提になります。

オプション

次に例を示します。

my-sun.us.example.com

metric

String

ターゲットタイプ・メトリックの名前。

必須

次に例を示します。

Servlets

columnOrder

String

;で区切られたメトリック列名のリスト。列名は、ターゲット・タイプ・メタデータ・ファイルへの出現順序と同じ順序で指定する必要があります。

name、host、processおよびfullname列は含めないでください。

必須

次に例を示します。

processTimes;totalRequest;requestRate

usecache

String

このメトリックをキャッシュするかどうか。有効値はtrue、falseおよびrefreshallであり、デフォルトはtrue。refreshallは、キャッシュ・データを削除してすべてのターゲットから最新データを取得するようDMSに指示します。

オプション。

例: false

usecacheをfalseに設定すると、DMSキャッシュがバイパスされます。

proxyHost

String

HTTP接続を行うために使用するプロキシ・ホスト。

オプション

次に例を示します。

proxy.us.example.com

proxyPort

Integer

HTTP接続を行うために使用するプロキシ・ポート。

オプション

次に例を示します。

"80"

dontProxyFor

String

プロキシが使用されないドメイン。

オプション

次に例を示します。

.us.example.comまたは18.219.0

useDefaultProxy

String

プロキシ・オーバーライド・パラメータとともに使用される場合、この変数では、元のプロキシ以外のプロキシを指定します。プロキシ・オーバーライド・パラメータを設定しないでfalseに設定した場合は、プロキシが使用されません。

オプション

次に例を示します。

trueまたはfalse

proxyHostOverride

String

HTTP接続を行うために使用するプロキシ・ホスト。

オプション

次に例を示します。

www-proxy.us.example.com

proxyPortOverride

Integer

HTTP接続を行うために使用するプロキシ・ポート。

オプション

次に例を示します。

"80"

authrealm

String

Basic認証ログオンのレルム。レルムが認証に対して指定されていない場合、認証は行われず、ページのダウンロードは401レスポンス・コードで失敗します。

オプション

次に例を示します。

Please input your flex account login:

authuser

String

Basic認証のユーザー名。

オプション

superuser

authpwd

String

Basic認証のパスワード。

オプション

次に例を示します。

welcome

エラー処理

oraclehome、metric、columnOrder、opmnportまたはhttpportのいずれかのプロパティが欠落した場合、DMS fetchletはMissingParameterExceptionをスローします。指定されたポートのいずれかが有効ではない場合、FetchletExceptionをスローします。

注意

返されるメトリック表の最初の4列は、常にname、fullname、hostおよびprocessです。したがって、columnOrder文字列にはこれらの列を含めないでください。machineプロパティは、opmnportまたはhttpportプロパティとともに指定する必要があります。この場合、oraclehomeプロパティは無視されます。

20.8.2 DMS fetchlet/Oracle Management Agent統合の方法

Oracle 9i Application Serverのインフラストラクチャのパフォーマンス監視を一貫して行うために、DMSは複数のコンポーネント(Apache、JServ、OSEおよびPortal)で使用されてきました。センサーは、簡単に使用でき、タイミング、カウントおよび分類に関連する詳細のほとんどを隠すため、パフォーマンス測定に関連する作業のほとんどを簡略化します。最後に、DMSは管理エージェントの詳細の多くをコンポーネント開発者および多くの管理エージェント統合作業から隠します。

20.8.2.1 DMSデータと管理エージェントの統合

前述のように、DMSにより、アプリケーションおよびシステム開発者は、カスタマイズされたコンポーネント固有のパフォーマンス・メトリックを測定およびエクスポートできます。Oracle Management Agentにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをEnterprise Manager Cloud Controlにインポートできます。この項では、DMSパフォーマンス・メトリックを管理エージェントと統合する方法について説明します。

手順1: ASのインストール

手順2: Enterprise Manager Cloud Controlのインストール

手順3: DMSでのコンポーネントのインスツルメント処理

Enterprise Manager Cloud Controlに対してDMSメトリックを有効にするには、2つの追加ルールに従う必要があります。

- ルール1: 管理エージェントにエクスポートされるすべてのナウンにはタイプが必要。
ナウンのタイプは、Noun.create()メソッドでtypeパラメータを指定するか、Noun.setType(String)メソッドを使用することで設定できます。概念は、すべてのナウンのタイプが管理リポジトリ表に自動的に変換されるということです。特定のタイプのすべてのナウンは、そのタイプの対応する管理リポジトリ表の1行になります。ナウンに含まれるメトリックは、管理リポジトリ表メトリックの列になります。タイプを持たないナウンは、管理エージェントにエクスポートされません。

- ルール2: 指定のタイプのすべてのナウンには一貫したセンサー名が必要。
ナウンによって含まれるメトリックは管理リポジトリ表の列になるため、指定のタイプのすべてのナウンに同じセンサーが含まれるようにする必要があります。これにより、対応する管理リポジトリ表の各行が同じ列セットを持つようになります。DMSでは、この制約はチェックされません。

たとえば、次のJavaコード断片は、一貫したセンサーのセットを含むタイプ指定されたナウンの作成方法を示します。DMSにより、これらがMyTypeという名前の管理リポジトリ表に自動的に変換されます。

/* first create the nouns*/
Noun n1 = Noun.create("/myExample/myComponent/noun1", "MyType");
Noun n2 = Noun.create("/myExample/myComponent/noun2", "MyType");

/* next, create the Sensors */
PhaseEvent pe1 = PhaseEvent.create(n1, "criticalPhase", "a critical interval");
PhaseEvent pe2 = PhaseEvent.create(n2, "criticalPhase", "a critical interval");
Event e1 = Event.create(n1, "importantEvt", "an important event");
Event e2 = Event.create(n2, "importantEvt", "an important event");

/* here is a third set that shows the use of Noun.setType(String) */
PhaseEvent pe3 = PhaseEvent.create(
"/myExample/myComponent/noun3/criticalPhase",
"a critical interval");
Event e3 = PhaseEvent.create(
"/myExample/myComponent/noun3/importantEvt",
"an important event");
Noun n3 = Noun.get("/myExample/myComponent/noun3");
n3.setType("MyType");

この例では、MyType表に3行と4列が含まれます。2つのセンサーに対応する列の他に、プロセス名を含むDMSパス名を格納するname列および"/myExample/myCom..."を格納するpath列があります。

これらのナウン/センサーがASサイト内の複数のサーブレット・エンジンで作成される場合、AggreSpyは、各サーブレット・エンジンを検索し、すべてのナウン/センサーを単一のMyType表に集計します。

手順4: ターゲット・メタデータ・ドキュメントの生成

ターゲット・メタデータ・ドキュメントはブラウザを使用して生成できます。ブラウザで次のURLを使用して、監視するASサイトにアクセスします。

http://YOUR_AS_HOST:YOUR_AS_PORT/YOUR_SERVLET_PATH/AggreSpy?format=targetmetadata

前述のURLでは、使用しているASインストール環境の実際のホスト、ポートおよびサーブレット・パスを使用する必要があります。通常、サーブレット・パスはデフォルトでservletになります。取得するXMLドキュメントは、ASサイトのターゲット・メタデータ・ドキュメントです。XMLドキュメントの最初のコメントは、ターゲット・メタデータ・ドキュメントを取得できる場所、およびこのドキュメントに対して実行する必要のある操作を説明します。

手順5: ターゲット・メタデータ・ドキュメントのインストール

XMLドキュメントの最初のコメントで説明されている手順に従います。XMLドキュメントを、Enterprise Managerインストール環境のmetadataディレクトリ(OMS_ORACLE_HOME/sysman/admin/metadata/)の下にあるoracle_dms.xmlというファイルに保存します。メトリックのサブセットを監視する場合、またはメトリックを既存のoracle_dms.xmlファイル内のメトリックとマージする場合は、この新しい定義をtarget_name.xmlという別のファイルに保存する必要があります。生成されたメタデータ・ドキュメント内でターゲット・タイプ・エントリを変更する必要もあります。

次に、Enterprise Managerインストール環境の最上位ディレクトリの下にあるtargets.xmlファイルに、ASサイトのターゲット・インスタンス情報を追加する必要があります。読み取ったコメントにXMLタグのブロックが見つかります。これらは次のようになります。

<Target Type='oracle_dms' NAME='DMS_YOUR-IAS-HOST_YOUR-IAS-PORT' VERSION='2.0'>
<Property NAME='host' VALUE='YOUR_IAS_HOST' />
<Property NAME='port' VALUE='YOUR_IAS_PORT' />
<Property NAME='dmsPath' VALUE='YOUR_SERVLET_PATH' />
</Target>

このブロックをコピーして、targets.xmlファイルの<targets>タグと</targets>タグの間に貼り付けます。

最後に、新しいターゲット・メタデータ・ファイルおよびターゲット・インスタンス情報をtargets.xmlファイルからEnterprise Manager Cloud Controlに追加するには、次のコマンドを実行する必要があります。

>$ORACLE_HOME/bin/emctl reload

手順6: メトリックの表示

Enterprise Managerのメトリック・ブラウザを使用してメトリックを表示する準備ができました。最初に、ASとコンポーネントがまだ稼働していることを確認します。次に、Oracle Management Agentを再起動します。最後に、ブラウザで次のURLを使用して管理エージェントのインストール環境にアクセスします。

http://YOUR_AGENT_HOST:YOUR_AGENT_PORT/emd/browser/main

管理エージェント・ポート情報は、$AGENT_HOME/sysman/config/emd.propertiesファイルのEMD_URL行にあります。

前述のURLでは、使用している管理エージェント・インストール環境の実際のホストおよびポートを使用する必要があります。ASサイトは、ターゲットDMS_YOUR-AS-HOST_YOUR-AS-PORTとしてリストされます。リンクをクリックすると、メトリックIDのリストが表示されます。それぞれのメトリックIDをクリックすることにより、メトリックを参照できます。

20.9 JDBC fetchlet

JDBCなどのコールレベル・インタフェースにより、SQLデータベース操作および更新コマンドへの外部アクセスが可能になります。Java Database Connectivity(JDBC)fetchletにより、共通JDBCコマンドを実行し、任意のタイプのデータベースのレスポンス時間を取得できます。

入力パラメータ

表20-14 JDBC fetchletの入力パラメータ

名前

説明

使用

Transaction Name

(標準)

必須。

Beacon Name

(標準)

必須。

Connect String

ユーザーが提供する接続文字列。接続文字列は、ユーザーが接続しようとしているデータベースのベンダーによって指定されたURL形式に従っている必要があります。

次に例を示します。

Oracleが要求している形式:

jdbc:oracle:thin:@hostname:port

MySQLが要求している形式:

jdbc:mysql://hostname:port

必須。

Class Name String

接続に使用するドライバ・クラス名。

次に例を示します。

oracle.jdbc.driver.OracleDriver

ドライバを含む.jarファイルを使用するようにエージェントを構成するオプションは2つあります。

1. .jarファイルを$JAVA_HOME/jre/lib/extに置きます。CLASSPATHを変更する必要はありません。

2. .jarファイルを任意の場所に置き、emd.propertiesファイルのCLASSPATHをjarへのパスで更新します。エージェントをバウンスします。これをスクリプト化し、ユーザーに対して透過的にする必要があります。

必須。

Username

データベースに接続するときに使用するユーザー名。

必須。

Password

データベースへの接続時に使用されるパスワード。

必須。

Role

ユーザー・ロール。

必須。

Statement

実行するSQL文。prepareCall() APIを使用することにより、PL/SQLを使用できます。

必須。

表20-15 収集されるメトリック列

列

説明

ステータス

テストのステータス。fetchletによって生成されたSQLExceptionがある場合、ステータスは「停止中」です。

合計時間

fetchletがテストの実行に要する時間。

接続時間

DriverManager.getConnection()の完了に要する時間。

準備時間

conn.prepareStatement()の完了に要する時間。

実行時間

stmt.executeQuery()の完了に要する時間。

フェッチ時間

while(rs.next()) { rs.getRow() }の完了に要する時間。

クローズ時間

結果セット、文、接続のクローズの完了に要する時間。

行数

フェッチされた行数。

行当たりの合計時間

行当たりのフェッチ時間

例: JDBC fetchletに渡されるプロパティ

次の例では、呼出し時にJDBC fetchletに渡されるプロパティを示します。

<QueryDescriptor FETCHLET_ID="JDBC">
<Property NAME="TxnName" SCOPE="GLOBAL">TxnName</Property>
<Property NAME="BeaconName" SCOPE="GLOBAL">BeaconName</Property>
<Property NAME="connstring" SCOPE="INSTANCE">connString</Property>
<Property NAME="username" SCOPE="INSTANCE">username</Property>
<Property NAME="password" SCOPE="INSTANCE">password</Property>
<Property NAME="statement" SCOPE="GLOBAL">select * from user_tables</Property>
<Property NAME="classstring" SCOPE="GLOBAL">oracle.jdbc.none</Property>
<Property NAME="role" SCOPE="GLOBAL" OPTIONAL="TRUE">DBA</Property>
<Property NAME="useconnpool" SCOPE="GLOBAL" OPTIONAL="TRUE">FALSE</Property>
<Property NAME="GetTimingData" SCOPE="GLOBAL">TRUE</Property>
</QueryDescriptor>

20.10 WBEM fetchlet

WBEM fetchletはCIMOMにアクセスし、指定したCIMクラスを使用して、要求された情報を取得します。CIMクラスは、管理リポジトリ表メトリックにマッピングされます。CIMクラスの名前は、返される表メトリックの名前であり、CIMクラスに対して定義されるプロパティは、メトリックの表の列の名前を付けるために使用されます。目的のプロパティは、メトリック定義中に指定する必要があります。

fetchletは、CIMクラスに対してインスタンス化されたインスタンスを管理リポジトリ表メトリックの行として返します。

入力パラメータ

表20-16 WBEM fetchletの入力パラメータ

名前

型

説明

使用

hostname

String

CIMOMのホスト名。

オプションであり、デフォルトはlocalhost。

port

Integer

CIMOMのポート。

オプションであり、デフォルトは5988。

namespace

String

CIMネームスペース。

オプションであり、デフォルトはroot/cimv2。

username

String

CIMOMが稼働しているホストでのCIMOM認可に使用するユーザー名

必須

password

String

CIMOMが稼働しているホストでのCIMOM認証に使用するパスワード。

必須

CIMclassname

String

インスタンスが返されるCIMクラスの名前。

STATUSを除くすべての操作に必須です。STATUS操作は、CIMOMが稼働しているかどうかのみチェックするため、クラス名は不要です。

operation

String

実行する操作。サポートされる操作には、クラス内のインスタンス数を返すCOUNT、クラスの各インスタンスの指定したプロパティの値を返すVALUES、またはCIMOMに関するステータス情報を提供するSTATUSが含まれます。

オプションであり、デフォルトはVALUES。

properties

String

収集に必要なCIMクラス定義からのプロパティ名。

VALUES操作に必要です。操作がVALUESの場合は、これらのうち1からNまでをセミコロンで区切って使用できます。操作がVALUESで、プロパティが提供されていない場合は、エラーが返されます。プロパティは、指定された順序でEMDに渡されます。

エラー処理

次のタイプのエラーがWBEM fetchletに対して識別されています。

次の場合にMissingParameterExceptionが発生します。

- 一致するCIM Classパラメータがない場合

次の場合にfetchlet例外が発生します。

- クラス名がCIMOMネームスペースに見つからない場合

- ネームスペースが見つからない場合

- CIMOMへの接続に有効な資格証明がない場合

- CIMOMが稼働していないため、CIMOMへの接続に失敗した場合

- CIMクラス・プロパティが存在しない場合

- サポートされていない操作が指定された場合

- プロパティが指定されていない場合

注意

ポート: 一部のCIMOMクライアント・インタフェースは、一部のクライアントがリスニングしていないときにCIMOMがリスニングしているポートを公開します。両方のケースを扱うために、ポートはデフォルトでポート5988となるオプションの入力パラメータとして公開されます。これは、デフォルトのPegasus CIMOMリスナー・ポートです。SunのWbem Servicesを介して提供されているJava APIは、CIMOMポートを公開しません。

プロトコル: ほとんどのCIMOMは、CIMOMとの通信にRMIまたはHTTPプロトコルをサポートします。行ったテストでは、HTTPプロトコルが安定せず、場合によってはCIMOMで完全には実装されていないことが示されました。このため、プロトコルは現在デフォルトでRMIになります。プロトコルのWBEMサービスCIMOMの実際のパラメータは、CIMClient.CIM_RMIまたはCIMClient.CIM_XMLです。

fetchlet操作: WBEM APIは、定義されているクラス階層とその関連をクライアントが横断できるという点で非常に柔軟性があります。現時点では、EMDからCIMデータへのアクセスに関するオプションは、カウント、クラスのプロパティの取得およびCIMOMステータスに限定されています。これらは、監視について実行する必要のある重要な操作です。追加の要件が発生した場合、オラクル社は必要に応じて新しい操作を追加し、これらをサポートできます。プロトタイプでは、カウント操作のみ実装されています。

認証: ほとんどのCIMOMには、ユーザー識別メカニズムを通じて認証をサポートするためのAPIが用意されています。CIMOMの大多数はAPIを実装していないため、この機能は実際にはno-opです。どの場合でも、オラクル社では、CIMOM実装が標準に遅れをとらないようにfetchletに機能を提供し、必要なサポートを行います。

例

Wbem fetchletでは、3つの基本操作がサポートされます。現時点では、fetchletは一度に1つの操作のみ処理するため、カウント、ステータスおよび値操作を1回のfetchletコールに混在させることはできません。例1では、COUNT操作のメタデータを書き込む方法を示しています。

例1: COUNT操作のメタデータ

<Metric NAME="Load" TYPE="TABLE">
<Display>
<Label NLSID="wbem_cimom_load">Load</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Active Clients" TYPE="NUMBER" IS_KEY="FALSE">
<Display>
<Label NLSID="wbem_cimom_active_clients">Active CIMOM Clients</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="Wbem">
<Property NAME="username" SCOPE="GLOBAL">guest</Property>
<Property NAME="password" SCOPE="GLOBAL">guest</Property>
<Property NAME="CIMClassname" SCOPE="GLOBAL">EX_SFLProvider</Property>
<Property NAME="operation" SCOPE="GLOBAL">COUNT</Property>
</QueryDescriptor>
</Metric>

FETCHLET_IDはWbemによって識別されます。必須パラメータusername、passwordおよびCIMClassnameの場合、プロパティ名はfetchletに渡されます。operationはCOUNTとして識別されます。

次の例に、CIMOMを実行するかどうかを判断するResponse Statusメトリックの実装方法を示します。CIMOMへの接続に成功した場合は値1を返し、それ以外は0を返します。

例2 レスポンス・ステータス・メトリック

<Metric NAME="Response" TYPE="TABLE">
<Display>
<Label NLSID="wbem_cimon_response">Response</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Status" TYPE="NUMBER" IS_KEY="FALSE">
<Display>
<Label NLSID="wbem_cimom_response_status">Status</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="Wbem">
<Property NAME="username" SCOPE="GLOBAL">guest</Property>
<Property NAME="password" SCOPE="GLOBAL">guest</Property>
<Property NAME="operation" SCOPE="GLOBAL">STATUS</Property>
</QueryDescriptor>
</Metric>

デフォルトの操作はVALUES操作です。CIMOMで定義されるクラスの値のフェッチに使用されます。

最後の例では、EX_Teacherクラスにアクセスし、名前列をフェッチします。名前はクラスおよび定義されている新規メトリックのキーであるため、IS_KEYプロパティがtrueに設定されています。CIMクラス・プロパティは、propertiesプロパティに指定されている順序でEnterprise Manager列にマッピングされます。この場合は、Nameという1つのプロパティのみあります。

例3: クラスについてフェッチされた単一プロパティ

<Metric NAME="EX_Teacher" TYPE="TABLE">
<Display>
<Label NLSID="wbem_EX_Teacher">EX_Teacher Class</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Name" TYPE="STRING" IS_KEY="TRUE">
<Display>
<Label NLSID="wbem_ex_teacher_name">Name</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="Wbem">
<Property NAME="username" SCOPE="GLOBAL">guest</Property>
<Property NAME="password" SCOPE="GLOBAL">guest</Property>
<Property NAME="CIMClassname" SCOPE="GLOBAL">EX_Teacher</Property>
<Property NAME="properties" SCOPE="GLOBAL">Name</Property>
</QueryDescriptor>
</Metric>

1つのクラスに対して複数のプロパティがフェッチされた場合は、セミコロンで区切る必要があります。プロパティは、メトリック表定義に対して列記述子が指定されている順序で提供する必要があります。

例4: クラスについてフェッチされた複数のプロパティ

<Metric NAME="EX_SFLProvider" TYPE="TABLE">
<Display>
<Label NLSID="wbem_EX_SFLProvider">EX_SFLProvider Class</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Name" TYPE="STRING" IS_KEY="TRUE">
<Display>
<Label NLSID="wbem_ex_sfl_name">Name</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="Win" TYPE="NUMBER" IS_KEY="FALSE">
<Display>
<Label NLSID="wbem_ex_sfl_win">Win</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor NAME="Lost" TYPE="NUMBER" IS_KEY="FALSE">
<Display>
<Label NLSID="wbem_ex_sfl_lost">Lost</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="Wbem">
<Property NAME="username" SCOPE="GLOBAL">guest</Property>
<Property NAME="password" SCOPE="GLOBAL">guest</Property>
<Property NAME="CIMClassname" SCOPE="GLOBAL">EX_SFLProvider</Property>
<Property NAME="properties" SCOPE="GLOBAL">Name;Win;Lost</Property>
</QueryDescriptor>
</Metric>

20.11 JMX fetchlet

JMX fetchletは、MBeanからJava Management Extensions(JMX)の属性を取得して(またはJMX操作を呼び出して)、結果を(表)メトリックとして返します。指定されたObjectNameがObjectNameパターンの場合、複数の行が返されます。各行は、指定したObjectNameパターンに一致するMBeanに対応します。

入力パラメータ

表20-17 JMX fetchletの主な入力パラメータ

名前

型

説明

使用

MachineName

String

MBeanサーバーのホスト名

オプション

Port

MBeanサーバーが新しい接続をリスニングするポート

オプション

UserName

String

JMX接続のユーザー名(必須の場合)

必須

password

String

JMX接続のパスワード(必須の場合)

必須

protocol

String

接続に使用されるプロトコル

オプション

service

String

接続に使用されるサービス

オプション

serviceURL

String

JMX接続に使用されるserviceURLこれは、前述のMachineName、Port、protocolおよびserviceプロパティのかわりです。

注意: ミドルウェア・ターゲットの場合、メトリックを管理サーバーまたは管理対象サーバーのどちらから収集する必要があるかに応じて、ファームまたは管理対象サーバーのいずれかのアソシエーションからserviceURLを取得できます。

必須(MachineNameとPortが指定されている場合を除く)

Metric

String

MBeanオブジェクト名(MetricService=trueの場合はDMS表名)

必須

columnOrder

String

メトリックのTableDescriptorの列定義に対応する、前述のMBeanのセミコロン区切りのJMX属性リスト。

必須

operation

String

呼び出されるJMX操作の名前。この場合、columnOrderは、メトリックに移入される戻りオブジェクトからの値を表します。(jmxcliを使用してこれを生成することをお薦めします)。

オプション

arguments

String

JMX操作の引数を表すXML。jmxcliを使用してこれを生成することをお薦めします。

オプション

MetricService

Boolean

MetricService=trueの場合、メトリックはOracleに固有のDMSメトリック・サービスで取得されることを示します。この場合、前述のcolumnOrderプロパティは列名のリストになり、'metric'プロパティは実際のDMS表名を示します。

オプション

identityCol

String

MBean ObjectNameから抽出されて結果メトリックのキー列として表面化されるMBeanオブジェクト名キー(またはセミコロン区切りのキーのリスト)。値'canonical'を指定する場合、完全なMBeanオブジェクト名の追加キー・メトリック列がfetchletによって返されます。このプロパティは、前述のメトリック・プロパティが、サーバー上の複数のMBeanと一致するObjectNameパターンの場合のみ機能します。

オプション

autoRowID

String

自動生成されたキー列の接頭辞。接尾辞は1で始まる連番になります。たとえば、autoRowIDがROW_に設定される場合、位置が0で値がROW_1、ROW_2など(最大で返される行数まで)のキー列が生成されます。これは、通常、それ以外のどの列(選択されたJMX属性)も一意ではなく、MBeanの一致とMBeanのパターンが複数あるときの結果として複数の行が返される場合になります。

オプション

useCache

Boolean

MetricService=trueの場合のみ該当し、メトリック・サービス・キャッシュを使用する必要があるかどうかを示します。

オプション

ServerNames

String

MetricService=trueの場合のみ該当し、DMSメトリックを取得する必要があるサーバー名のセミコロン区切りのリストになります。これは、すべての管理対象サーバーのメトリックがある管理サーバーからこれらのメトリックを収集する(serviceURLがファーム・アソシエーションからAdminServerを指し示す)場合のみ該当します。

オプション

valueWhenNoMBean

数値

通常はレスポンス・メトリックに使用されます。(前述のメトリック・プロパティで)指定のMBeanパターンに一致するMBeanが見つからない場合、単一行および列としてfetchletが返す値があります。

オプション

valueWhenDown

数値

通常はレスポンス・メトリックに使用されます。接続例外(サーバーの停止を示す)が原因でサーバーへの接続が失敗した場合に単一行および列としてfetchletが返す値があります。

オプション

admlMap

String

MetricService=trueの場合のみ該当します。admlパラメータをこのadml表に対して渡す必要があることを示すXMLスニペットになります(jmxcliを使用してこれを生成することをお薦めします)。

オプション

注意

1. JMX fetchletは、主にターゲットMBeanServerのMBeanからJMX属性を取得する場合に使用されます。また、同じ種類の複数のMBeanから属性を表形式で取得することもできます(複数の行があり、各行は一致するMBeanを表します)。
たとえば、MBean ObjectNameパターンでサーブレットを指定し(メトリック・プロパティの*:Type=ServletRuntime,*)、columnOrderでA1;A2;A3と指定する場合、結果のメトリックにはサーブレットごとに1つの行があります。

2. JMX操作を使用してメトリック・データを取得する必要がある場合(これはメトリックを収集する一般的な方法ではない)、QueryDescriptorプロパティ操作でJMX操作名を指定する必要があり、引数はJMX操作に渡されるパラメータのXML表現になります。
たとえば、次のQueryDescriptorは、引数が単一文字列でvalueがtotalのgetNumUserSessionsというJMX操作の呼出しを示します。

例: JMX操作名の指定

<Metric NAME="GetNumUserSessions" TYPE="TABLE" USAGE_TYPE="HIDDEN">
<Display>
<Label NLSID="GetNumUserSession">GetNumUserSession</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor NAME="Get Num User  Sessions" TYPE="STRING">
<Display>
<Label NLSID="Get Num User  Sessions">Get NumUser  Sessions</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="JMX">
<Property NAME="serviceURL" SCOPE="ASSOCTGT" ASSOCIATION_NAME="farm">serviceURL</Property>
<Property NAME="UserName" SCOPE="ASSOCTGT" OPTIONAL="TRUE" ASSOCIATION_NAME="farm">UserName</Property>
<Property NAME="password" SCOPE="ASSOCTGT" OPTIONAL="TRUE" ASSOCIATION_NAME="farm">password</Property>
<Property NAME="instName.parameter" SCOPE="INSTANCE">instName</Property>
<Property NAME="metric" SCOPE="GLOBAL">oracle.forms.FormsJ2EEapplication.%instName.parameter%:,type=Runtime,*</Property>
<Property NAME="operation" SCOPE="GLOBAL">getNumUserSessions</Property>
<Property NAME="columnOrder" SCOPE="GLOBAL">getNumUserSessions</Property>
<Property NAME="arguments" SCOPE="GLOBAL">            <![CDATA[<arguments>
<argument type="java.lang.String">
<value>total</value>
</argument>
</arguments>]]>
</Property>
</QueryDescriptor>
</Metric>

3. JMX fetchletのQueryDescriptorには、JMX接続情報が含まれます。通常は、serviceURLの形式になります。serviceURLプロパティがQueryDescriptorで利用できない場合、JMX fetchletとの接続情報を提供するように、MachineName、Port、protocolおよびserviceのプロパティの組合せがQueryDescriptorに存在する必要があります。

20.12 Webサービスfetchlet

Webサービス・コマンドライン・ツールで生成されるターゲット・メタデータ・ファイルの<QueryDescriptor>要素で、呼出し時にWebサービスfetchletに渡されるプロパティを指定します。

注意:
リリース13.1以降、Webサービスfetchletは、Enterprise Manager for Fusion AppsプラグインおよびEnterprise Manager for Fusion Middlewareプラグインから使用できます。
このfetchletを使用するには、Enterprise Manager for Fusion AppsプラグインおよびEnterprise Manager for Fusion MiddlewareプラグインがOMSと管理エージェントの両方にデプロイされている必要があります。

入力パラメータ

表20-18に、サポートされるプロパティを示します。

表20-18 Webサービスfetchletのプロパティ

名前

説明

使用

備考

ServiceName

Webサービス名

必須。

有効なネームスペースをサービス名の先頭にする必要があります。

参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。

PortName

Webサービスのポート名

必須。

有効なネームスペースをポート名の先頭にする必要があります。

参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。

OperationName

Webサービスの操作名

必須。

有効なネームスペースを操作名の先頭にする必要があります。

参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。

ServiceEndpoint

Webサービス・エンドポイント

必須。

有効なURL。

WsdlURL

WebサービスのWSDL URL

オプション。

有効なURL。

RPC/エンコードWebサービスの場合のみ必須

ParameterStyle

SOAPパラメータのマッピング・スタイル

オプション。

- BARE

- WRAPPED

RPC/エンコードWebサービスまたはREST-ful Webサービスの場合のみオプション

Payload

Webサービス操作のリクエスト・ペイロード

必須。

CDATAセクションを使用して指定する必要があります。

SOAPBindingStyle

SOAPバインディング・スタイル

オプション。

- DOCUMENT

- RPC

RPCまたはエンコードWebサービスの場合のみオプション

SOAPBindingUse

SOAPバインディング使用

オプション

- ENCODED

- LITERAL

RPCまたはエンコードWebサービスの場合のみオプション

SOAPVersion

SOAPバージョン

オプション

- SOAP_1_1

- SOAP_1_2

RPCまたはエンコードWebサービスの場合のみオプション

MessageType

Webサービスのメッセージ・タイプ

オプション

- SOAP

- REST

RPCまたはエンコードWebサービスの場合のみオプション

SecurityPolicy

セキュリティ・ポリシー

必須

- NONE

- BASIC_AUTHENTICATION

Namespace

参照するすべてのネームスペースのセット

オプション。メトリックで参照されるすべてのネームスペースが含まれます。

注釈[ns0="uri0"][ns1="uri1"]を使用して指定します。

例: [ns0="http://type.abc.com"]

[ns1="http://app.abc.com"]

ColType

収集結果列タイプ

必須

メトリック列タイプのリスト(カンマ区切り)

例: msgId:STRING,source:STRING,detail:STRING

RowType

収集結果行タイプ

必須

メトリック列に対応するXPath式のリスト(カンマ区切り)

例: //ns0:eventResponse/msgId,

//ns0:eventResponse/source,

SSLKeyStoreCredential

SSLキーストア資格証明セット名

オプション

<CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット

監視資格証明として定義する必要があります。

SSLTrustStoreCredential

SSLトラストストア資格証明セット名

オプション

<CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット

監視資格証明として定義する必要があります。

UserCredential

ユーザー・トークン資格証明セット名

オプション

<CredentialInfo>で定義されるエイリアス資格証明またはCSFキー資格証明タイプの有効な資格証明セット

監視資格証明として定義する必要があります。

ValueWhenDown

ターゲットがダウンしているときのデフォルト・レスポンス

必須(レスポンス・メトリックの場合のみ)。通常のメトリックには必要ありません。レスポンス・メトリックの場合、ターゲットがダウンしていると、この値(指定されている場合)が戻されます。

fetchletがConnectionExceptionをキャッチすると、ターゲットはダウンしているとみなされます。

例

例1に、Remote Procedure Call (RPC)またはエンコードWebサービスのメトリック定義の例を示し、例2に、ドキュメントまたはリテラルWebサービスのメトリック定義の例を示します。

例1: RPCまたはエンコードWebサービスのメトリック定義

<Metric NAME="getVacantRooms" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_GET_VACANT_ROOMS">getVacantRooms</Label>
</Display>

<TableDescriptor>
<ColumnDescriptor IS_KEY="TRUE" NAME="roomID" TYPE="STRING">
<Display>
<Label NLSID="COL_ROOM_ID">roomID</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="floor" TYPE="STRING">
<Display>
<Label NLSID="COL_FLOOR">floor</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="number" TYPE="STRING">
<Display>
<Label NLSID="COL_NUMBER">number</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="rate" TYPE="STRING">
<Display>
<Label NLSID="COL_RATE">rate</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="roomType" TYPE="STRING">
<Display>
<Label NLSID="COL_ROOM_TYPE">roomType</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="smoking" TYPE="STRING">
<Display>
<Label NLSID="COL_SMOKING">smoking</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="available" TYPE="STRING">
<Display>
<Label NLSID="COL_AVAILABLE">available</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OWSM_WSF">
<Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property>
<Property NAME="WsdlURL" SCOPE="INSTANCE">wsdlURL</Property>
<Property NAME="ServiceEndpoint" SCOPE="INSTANCE">serviceURL</Property>
<Property NAME="ServiceName" SCOPE="GLOBAL">ns0:SimpleHotelServiceRE</Property>
<Property NAME="PortName" SCOPE="GLOBAL">ns0:HotelService</Property>
<Property NAME="OperationName" SCOPE="GLOBAL">getVacantRooms</Property>
<Property NAME="MessageType" SCOPE="GLOBAL">SOAP</Property>
<Property NAME="SOAPBindingStyle" SCOPE="GLOBAL">RPC</Property>
<Property NAME="SOAPBindingUse" SCOPE="GLOBAL">ENCODED</Property>
<Property NAME="ParameterStyle" SCOPE="GLOBAL">BARE</Property>
<Property NAME="SOAPVersion" SCOPE="GLOBAL">SOAP_1_1</Property>
<Property NAME="Namespace" SCOPE="GLOBAL"><![CDATA[[ns1="http://hotel.apps.muws/"][ns0="http://hotel.apps.muws/rpc/"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL">//ns1:getVacantRoomsResponse/return/item/@roomID,//ns1:getVacantRoomsResponse/return/item/floor,
//ns1:getVacantRoomsResponse/return/item/number,//ns1:getVacantRoomsResponse/return/item/rate,//ns1:getVacantRoomsResponse/return/item/roomType,
//ns1:getVacantRoomsResponse/return/item/smoking,//ns1:getVacantRoomsResponse/return/item/available</Property>
<Property NAME="ColType" SCOPE="GLOBAL">roomID:STRING,floor:STRING,number:STRING,rate:STRING,roomType:STRING,smoking:STRING,available:STRING</Property>
<Property NAME="Payload" SCOPE="GLOBAL"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://hotel.apps.muws/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body soap:encodingStyle="">
<ns:getVacantRooms/>
</soap:Body>
</soap:Envelope>]]></Property>
</QueryDescriptor>
</Metric>

例2: ドキュメントまたはリテラルWebサービスのメトリック定義

<Metric NAME="square" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_SQUARE">square</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="arg0" TYPE="STRING">
<Display>
<Label NLSID="COL_ARG0">arg0</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="OWSM_WSF">
<Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property>
<Property NAME="ServiceEndpoint" SCOPE="INSTANCE">serviceURL</Property>
<Property NAME="ServiceName" SCOPE="GLOBAL">ns0:CalculatorService</Property>
<Property NAME="PortName" SCOPE="GLOBAL">ns0:CalculatorPort</Property>
<Property NAME="OperationName" SCOPE="GLOBAL">square</Property>
<Property NAME="MessageType" SCOPE="GLOBAL">SOAP</Property>
<Property NAME="SOAPBindingStyle" SCOPE="GLOBAL">DOCUMENT</Property>
<Property NAME="SOAPBindingUse" SCOPE="GLOBAL">LITERAL</Property>
<Property NAME="ParameterStyle" SCOPE="GLOBAL">WRAPPED</Property>
<Property NAME="SOAPVersion" SCOPE="GLOBAL">SOAP_1_1</Property>
<Property NAME="Namespace" SCOPE="GLOBAL"><![CDATA[[ns0="http://tests.jaxws.oracle.com/"]
[ns1="http://www.oracle.com/jaxws/tests"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL">//ns1:squareResponse/arg0</Property>
<Property NAME="ColType" SCOPE="GLOBAL">arg0:STRING</Property>
<Property NAME="Payload" SCOPE="GLOBAL"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://www.oracle.com/jaxws/tests">
<ns1:square>
<arg0>%square.arg00001%</arg0>
</ns1:square>
</soap:Body>
</soap:Envelope>]]></Property>
</QueryDescriptor>
</Metric>

20.12.1 認証に対する資格証明の使用

BASIC認証が必要な場合、メトリック定義で次のように構成または定義する必要があります。

1. SecurityPolicyプロパティをBASIC_AUTHENTICATIONに設定します。

<Property NAME="SecurityPolicy" SCOPE="INSTANCE">BASIC_AUTHENTICATION</Property>

2. 次のプロパティを<QueryDescriptor>要素に追加します。

<Property NAME="UserCredential" SCOPE="GLOBAL"> UserCredentialSet </Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>

3. <Metric>タグの後の資格証明タイプを定義します。

………
<Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet    </Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet </CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="AliasCredential">
<Display>
<Label NLSID="CRED_TYPE">Alias Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="Alias">
<Display>
<Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="Password">
<Display>
<Label NLSID="CRED_PASSWORD">Password for the alias</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="UserCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="AliasCredential"/>
</CredentialSet>
</CredentialInfo>

例: SSLのキーストアおよびトラストストアの使用

…………
<Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">SSLTrustStoreCredentialSet</Property>
<Property NAME="SSLKeyStoreCredential" SCOPE="GLOBAL">SSLKeyStoreCredentialSet</Property>
NAME="SSLTrustStoreCredentialSet">SSLTrustStoreCredentialSet</CredentialRef>
<CredentialRef NAME="SSLKeyStoreCredentialSet">SSLKeyStoreCredentialSet</CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="StoreCredential">
<Display>
<Label NLSID="CRED_TYPE">Store Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="StoreLocation">
<Display>
<Label NLSID="CRED_STORE_LOCATION">Store Location</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="StoreType">
<Display>
<Label NLSID="CRED_STORE_TYPE">Store Type</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="StorePassword">
<Display>
<Label NLSID="CRED_STORE_PASSWORD">Store Password</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="StoreCredential"/>
</CredentialSet>
<CredentialSet NAME="SSLKeyStoreCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="StoreCredential"/>
</CredentialSet>
</CredentialInfo>

20.13 WS-Management fetchlet

wsmancliコマンドライン・ツールで生成されるターゲット・メタデータ・ファイルの<QueryDescriptor>要素で、呼出し時にWS-Management fetchletに渡されるプロパティを指定します。

注意:
リリース13.1以降、WS-Management fetchletは、Enterprise Manager for Fusion Middlewareプラグインから使用できます。
このfetchletを使用するには、Enterprise Manager for Fusion MiddlewareプラグインがOMSと管理エージェントの両方にデプロイされている必要があります。

入力パラメータ

表20-19に、サポートされるプロパティの一覧を示します。

例20-19 WS-Management fetchletのプロパティ

名前

説明

使用

ResourceURI

リソース・クラス表現またはインスタンス表現のURI(wsman:ResourceURL)

必須

RFC 3986に従う有効なURI

To

サービスのトランスポート・アドレス(wsa:To)。

必須

有効なネットワーク・トランスポート・アドレス。

Action

wsa:Actionの場合、リソースに対してどの操作を実行するかを特定します。

必須

現在のリリースでサポートされるのは、http://schemas.xmlsoap.org/ws/2004/09/transfer/Getのみです。

TransferOperation

WS-Transfer操作の名前。

必須

現在のリリースでサポートされるのはGETのみです。

Locale

クライアントがリクエストする(場合によっては要求する)言語と翻訳先のレスポンス・テキストを指定します(wsman:Locale)。

オプション

標準XML属性xml:langの任意の有効な値

MaxEnvelopeSize

クライアントが、合計SOAPエンベロープが指定オクテット数を超えないレスポンスを予期することを示すサイズ(wsman:MaxEnvelopeSize)

オプション

値は8192より小さくできません。

OperationTimeout

クライアントが指定期間内のレスポンスまたはフォルトを予期することを示す値(wsman:OperationTimeout)。

オプション

xs:duration形式を使用して値を指定します(http://www.w3.org/2001/XMLSchema:durationを参照)。

OptionSet

リクエストの性質を変更または調整するサービスへの切替えセット(wsman:OptionSet)。

オプション

次の注釈を使用して値を指定します。

[<OptionName1>, value:<value1>, type:<type1>, mustComply:<true|false>][<OptionName2>, value:<value2>, type:<type>, mustComply:<true|false>][...]

ReplyTo

応答が必要な場合に、すべてのリクエスト・メッセージに表示されるヘッダー(wsa:ReplyTo)。

オプション

サービスでサポートされているトランスポートを使用する新規接続の有効なアドレス、またはURI http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymousである必要があります(WS-Addressingを参照)。

SelectorSet

アクセスするリソースのインスタンスを識別するセレクタのセット(wsman:SelectorSet)

必須

次の書式を使用して値を指定します。

[S1, V1][S2, V2]...[Sn, Vn]

内容は次のとおりです。

- S1、S2、...、Snはセレクタ名です。

- V1、V2、...、Vnはセレクタ値です。

SecurityPolicy

セキュリティ・ポリシー

必須

- NONE

- BASIC_AUTHENTICATION

Namespace

参照するすべてのネームスペースのセット

必須

注釈[ns0="uri0"][ns1="uri1"]を使用して指定します。

例: [ns0="http://type.abc.com"][ns1="http://app.abc.com"]

ColType

収集結果列タイプ

必須

メトリック列タイプのリスト(カンマ区切り)

例: msgId:STRING,source:STRING,detail:STRING

RowType

収集結果行タイプ

必須

メトリック列に対応するXPath式のリスト(カンマ区切り)

例: //ns0:eventResponse/msgId,//ns0:eventResponse/source

SSLKeyStoreCredential

SSLキーストア資格証明セット名

オプション

<CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット

SSLTrustStoreCredential

SSLトラストストア資格証明セット名

オプション

<CredentialInfo>タグで定義されるストア資格証明タイプの有効な資格証明セット

UserCredential

ユーザー・トークン資格証明セット名

オプション

<CredentialInfo>タグで定義されるエイリアス資格証明またはCSFキー資格証明タイプの有効な資格証明セット

ValueWhenDown

ターゲットがダウンしているときのデフォルト・レスポンス

必須(レスポンス・メトリックの場合のみ)。通常のメトリックには必要ありません。レスポンス・メトリックの場合、ターゲットがダウンしていると、この値(指定されている場合)が戻されます。

fetchletがConnectionExceptionをキャッチすると、ターゲットはダウンしているとみなされます

例: WS-Management fetchletを使用する場合のメトリック定義

次に、WS-Management fetchletを使用したメトリック定義の例を示します。

<Metric NAME="trafficLight" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_TRAFFIC_LIGHT">trafficLight</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor IS_KEY="YES" NAME="name" TYPE="STRING">
<Display>
<Label NLSID="COL_NAME">name</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="color" TYPE="STRING">
<Display>
<Label NLSID="COL_COLOR">color</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="x" TYPE="STRING">
<Display>
<Label NLSID="COL_X">x</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="y" TYPE="STRING">
<Display>
<Label NLSID="COL_Y">y</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="WSManagementFetchlet">
<Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property>
<Property NAME="ResourceURL" SCOPE="INSTANCE">resourceURL</Property>
<Property NAME="To" SCOPE="INSTANCE">To address</Property>
<Property NAME="OptionSet" SCOPE="INSTANCE">optionSet</Property>
<Property NAME="Locale" SCOPE="INSTANCE">locale</Property>
<Property NAME="MaxEnvelopeSize" SCOPE="INSTANCE">maxEnvelopeSize</Property>
<Property NAME="OperationTimeout" SCOPE="INSTANCE">operationTimeout</Property>
<Property NAME="Namespace" SCOPE="GLOBAL"> <![CDATA[[ns1="http://schemas.wiseman.dev.java.net/traffic/1/light.xsd"]
[ns0="http://www.w3.org/2001/XMLSchema"]
[wsa="http://www.w3.org/2005/08/addressing"]
[env="http://www.w3.org/2003/05/soap-envelope"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL">//ns1:trafficlight/ns1:name,//ns1:trafficlight/ns1:color,//ns1:
<Property NAME="ColType" SCOPE="GLOBAL">name:STRING,color:STRING,x:STRING,y:STRING</Property>
<Property NAME="ReplyTo" SCOPE="GLOBAL">http://www.w3.org/2005/08/addressing/role/anonymous</Property>
<Property NAME="Action" SCOPE="GLOBAL">http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</Property>
<Property NAME="TransferOperation" SCOPE="GLOBAL">GET</Property>
<Property NAME="SelectorSet" SCOPE="GLOBAL">[name,Light1]</Property>
</QueryDescriptor>
</Metric>

20.13.1 資格証明の使用

BASIC認証が必要な場合、メトリック定義で構成または定義します。

1. SecurityPolicyプロパティをBASIC_AUTHENTICATIONに設定します。

<Property NAME="SecurityPolicy" SCOPE="INSTANCE">BASIC_AUTHENTICATION</Property>

2. 次のプロパティを<QueryDescriptor>タグに追加します。

<Property NAME="UserCredential" SCOPE="GLOBAL"> UserCredentialSet </Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>

3. <Metric>タグの後の資格証明タイプを定義します。

………
<Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet </Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet </CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="AliasCredential">
<Display>
<Label NLSID="CRED_TYPE">Alias Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="Alias">
<Display>
<Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="Password">
<Display>
<Label NLSID="CRED_PASSWORD">Password for the alias</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="UserCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="AliasCredential"/>
</CredentialSet>
</CredentialInfo>

例: SSLのキーストアおよびトラストストアの使用

…………
<Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">SSLTrustStoreCredentialSet</Property>
<Property NAME="SSLKeyStoreCredential" SCOPE="GLOBAL">SSLKeyStoreCredentialSet</Property>
<CredentialRef NAME="SSLTrustStoreCredentialSet">SSLTrustStoreCredentialSet</CredentialRef>
<CredentialRef NAME="SSLKeyStoreCredentialSet">SSLKeyStoreCredentialSet</CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="StoreCredential">
<Display>
<Label NLSID="CRED_TYPE">Store Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="StoreLocation">
<Display>
<Label NLSID="CRED_STORE_LOCATION">Store Location</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="StoreType">
<Display>
<Label NLSID="CRED_STORE_TYPE">Store Type</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="StorePassword">
<Display>
<Label NLSID="CRED_STORE_PASSWORD">Store Password</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="StoreCredential"/>
</CredentialSet>
<CredentialSet NAME="SSLKeyStoreCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="StoreCredential"/>
</CredentialSet>
</CredentialInfo>

20.14 REST fetchlet

REST fetchletでは、RESTful Webリソースを監視するターゲットが提供されます。このfetchletは、入力プロパティに基づき、HTTP標準を使用して管理対象ターゲットと通信するためのリクエストを作成できます。これは、レスポンスから関連データを取得し、監視メトリックを構築して返すことができます。

このリリースでサポートされるのは、次のRESTful Webサービスのみです。

- HTTPメソッド

- GET: 悪影響はなく、ソースの読取りアクセスを定義します。リソースは、GETリクエストによって変更されることは決してありません。

- POST: 既存のリソースの更新やリソースの新規作成を行います。

- HEAD: 特定のパスが保守可能な場合はvCheckです。

- リクエストまたはレスポンス表現のメディア・タイプ

- application/xml(リクエストとレスポンスの両方)

- application/json(リクエストとレスポンスの両方)

- text/xml(レスポンスのみ)

- application/x-www-form-urlencoded(リクエストのみ)

- 認証スキーム
Basic認証をサポートします。

20.14.1 レスポンス処理

fetchletは、レスポンス・データに依存して監視メトリックを作成します。レスポンス・メディア・タイプはapplication/xml、application/jsonまたはtext/xmlになるため、様々なメカニズムがレスポンスの処理に適応されます。表20-20では、レスポンス・メディア・タイプごとに異なるメカニズムについて説明します。

表20-20 レスポンス処理のメカニズム

メディア・タイプ

メカニズム

application/xml

XPath問合せはXMLデータの処理に使用されます。

fetchletのプロパティRowTypeで、列データを取得するための、メトリック列に対応するXPath式のリスト(カンマ区切り)を指定します。

例:

<records>
<ns2:Record xmlns:ns2="urn:com.office.directory">
<name>Peter</name>
<phone>+1 (650) 555-0100</phone>
</ns2:Record>
<ns2:Record xmlns:ns2="urn:com.office.directory">
<name>John</name>
<phone>+1 (650) 555-0185</phone>
</ns2:Record>
</records>

監視メトリックには2つの列(名前と電話番号)があることが前提です。対応するXPath式は次のようになります。

- //records/ns.2:Record/name

- //records/ns.2:Record/phone

次に、抽出されたデータの例を示します。

Peter, +1 (650) 555-0100
John, +1 (650) 555-0185

application/json

JSONPathは、JavaScript Object Notation(JSON)データの処理に使用されます。JSONPath式は、XPath式がXMLドキュメントで使用される場合と同様にJSON構造を参照します。

例:

{
”Record”:
[
{
”name”:”Peter”
”phone”:”+1 (650) 555-0100”
},
{
”name”:”John”
”phone”:”+1 (650) 555-0185”
},
]
}

監視メトリックには2つの列(名前と電話番号)があることが前提です。対応するJSONPath式は次のようになります。

- $.Record.name

- $.Record.phone

次に、抽出されたデータの例を示します。

Peter, +1 (650) 555-0100
John, +1 (650) 555-0185

text/xml

テキストは非構造表現であるため、このテキストから特定のデータを抽出する方法はありません。かわりに、レスポンス全体が返されます。

入力パラメータ

表20-21に、サポートされるプロパティの一覧を示します。

表20-21 REST fetchletのプロパティ

名前

説明

オプション

BaseURI

RESTful WebサービスのベースURI

なし

RequestElementPayload

文字列形式のリクエスト要素ペイロード(XML/JSON)。XMLの場合、CDATAセクションを使用して指定する必要があります。

あり

RequestMetadata

XML形式のリクエスト・メタデータ

なし

SecurityPolicy

認証スキームを指定します。NONEまたはBASIC_AUTHENTICATIONのいずれか

なし

Namespace

メトリックで参照するすべてのネームスペースのセット。注釈[ns0="uri0"][ns1="uri1"]...を使用して指定します。

例:

[ns0="http://type.abc.com"][ns1="http://app.abc.com"]

なし

ColType

収集結果列タイプ。メトリック列タイプのリスト(カンマ区切り)。

例:

msgId:STRING,source:STRING,detail:STRING

なし

RowType

収集結果行タイプ。メトリック列に対応するパス(XPathまたはJsonPath)式のリスト(カンマ区切り)。

例:

//ns0:eventResponse/msgId,//ns0:eventResponse/source,//ns0:eventResponse/detail

なし

SSLKeyStoreCredential

SSLキーストア資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。

Location、Type、Password

あり

SSLTrustStoreCredential

SSLトラストストア資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。

Location、Type、Password

あり

UserCredential

ユーザー・トークン資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。

Alias、Password

あり

ProxyHost

URL接続を行うプロキシ・サーバーのホスト名

あり

ProxyPort

URL接続を行うプロキシ・サーバーのポート番号

あり

次に、ターゲット・メタデータ・ファイルからのfectchlet問合せ記述子の例を示します。ターゲット・メタデータ・ファイルの詳細は、第3章「ターゲット・メタデータ・ファイルの作成」を参照してください。

注意:
fetchletのIDはRESTFetchletになります。

例: fetchlet問合せ記述子

<QueryDescriptor FETCHLET_ID="RESTFetchlet">
<Property NAME="SecurityPolicy" SCOPE="INSTANCE">ListAll.SecurityPolicy</Property>
<Property NAME="BaseURI" SCOPE="INSTANCE">ListAll.BaseURI</Property>
<Property NAME="Namespace" SCOPE="GLOBAL">
<![CDATA[[ns0="urn:com.office.directory"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL">//ns0:Record/name,//ns0:Record/title,
//ns0:Record/phone,//ns0:Record/building,//ns0:Record/floor,
//ns0:Record/office</Property>
<Property NAME="ColType" SCOPE="GLOBAL">name:STRING,title:STRING,phone:STRING
,building:STRING,floor:STRING,office:STRING</Property>
<Property NAME="RequestMetadata" SCOPE="GLOBAL">
<![CDATA[<Resource path="/">
<Resource path="lookup/list">
<Method elementDefined="false"
accept="application/xml" name="GET"/>
</Resource>
</Resource>
</Property>]]>
<Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet</Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
</QueryDescriptor>

20.14.2 HTTPSおよび自己署名付き証明書の使用

REST fetchletの自己署名付きSSL証明書を持ったHTTPS URLを呼び出す場合、ターゲット・メタデータ・ファイルに資格証明セットを指定する必要があります。

<QueryDescriptor FETCHLET_ID="RESTFetchlet">
......
<Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">
SSLTrustStoreCredentialSet</Property>
<CredentialRef NAME="SSLTrustStoreCredentialSet">
SSLTrustStoreCredentialSet</CredentialRef></QueryDescriptor>
<CredentialInfo>
<CredentialType NAME="StoreCredential">
<Display>
<Label NLSID="CRED_TYPE">Store Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="StoreLocation" IS_SENSITIVE="FALSE">
<Display>
<Label NLSID="CRED_STORE_LOCATION">Store Location</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="StoreType" IS_SENSITIVE="FALSE">
<Display>
<Label NLSID="CRED_STORE_TYPE">Store Type</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="StorePassword">
<Display>
<Label NLSID="CRED_STORE_PASSWORD">Store Password</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING" CONTEXT_TYPE="TARGET">
<AllowedCredType TYPE="StoreCredential"/>
</CredentialSet>
</CredentialInfo>

Enterprise Manager Cloud Control 12c (12.1.0.3)では、fetchletの新しいプロパティ"SSLTrustServerCert"が追加されました。これを"TRUE"に設定すると、fetchletはサーバー証明書に非検証モードを使用するため、SSLトラスト・ストアを提供または指定する必要はありません。

<Property NAME="SSLTrustServerCert" SCOPE="GLOBAL">TRUE</Property>

20.14.3 REST CLIを使用したメタデータの生成

REST CLIは、ターゲット・メタデータとデフォルトの収集ファイルを生成するためのクライアント・コマンドライン・ツールです。このツールを使用すると、管理エージェントはREST fetchletを呼び出してRESTful Webリソースを監視できます。

次のemctlコマンドを使用してREST CLIを呼び出します。

emctl restcli

表20-22に、emctl restcliコマンドで使用可能なコマンドライン引数のリストを示します。

表20-22 REST CLIでサポートされるコマンドライン引数

引数

説明

例

metadata

ターゲット・メタデータを生成します。

-metadata

wadl

WADLの場所

-wadl=http://......

-wadl=file:///.....

wsdl

WSDLの場所

-wsdl=http://......

-wsdl=file:///.....

username

ホストにログインするユーザー名

-username=admin

proxyhost

プロキシ・サーバーのホスト名

-proxyhost=proxy.example.com

proxyport

プロキシ・サーバーのポート番号。

-proxyport=80

REST CLIを使用するには、次のようにします。

1. Web Application Description Language(WADL)の場所でREST CLIコマンドを実行します。例:

emctl restcli -wadl=http://host.us.example.com:17382/OfficeDirectoryBA/application.wadl

WADLの場所へのアクセスが保護される場合、ユーザー名とパスワードを入力します。

次の「REST CLIの実行」の例では、REST CLIツールを実行するユーザーの例を示します。

2. REST CLIによって、ターゲットのタイプと場所(出力ディレクトリに、生成されたターゲットと収集メタデータ・ファイルが含まれる場所)を入力するように求められます。

3. REST CLIでは、監視に使用可能なすべてのリソース・パスがリストされます。リソース・パスとそのいずれかのメソッドを選択して、該当リソースの監視メトリックを定義する必要があります。

4. さらに、REST CLIによって、収集スケジュールを定義するように求められます。
すべての情報をユーザーから集める場合、ツールによって、(この項の最後にある「REST CLIで生成されるターゲット・メタデータ」の例に示すメタデータのような)ターゲットとデフォルトの収集メタデータ・ファイルが指定の出力ディレクトリに生成されます。

例: REST CLIの実行

Generate Metric Metadata for REST Web Resource Monitoring

Enter password for "weblogic" :

Reading WADL Document at
http://host.us.example.com:17382/OfficeDirectoryBA/application.wadl...done.

==> Enter the name for this target type : OfficeDirectory

==> Enter metadata file name [/scratch/work/metadata/OfficeDirectory.xml] :

All resource paths available for monitoring :
[1]   /add
[2]   /lookup/list
[3]   /lookup/phone
[4]   /lookup/building/people
[5]   /db/count

==> Enter the index [1-5] to select : 2
* Selected Resource Path : /lookup/list

All methods available from the selected path :
[1]   application/xml[Record] GET()
[2]   application/json[Record] GET()

==> Enter the index [1-2] to select : 1
* Selected Resource Method: application/xml[Record] GET()

Define new metric group :
==> Enter the name for this metric group [GET] : ListGet_XML

Return value(s) for the selected method :
[1]   //ns0:Record/name <string>
[2]   //ns0:Record/title <string>
[3]   //ns0:Record/phone <string>
[4]   //ns0:Record/building <string>
[5]   //ns0:Record/floor <string>
[6]   //ns0:Record/office <string>

==> Enter the index [1-6] of metric to display : 1
==> Enter the name for this metric [name] :
==> Enter the label for this metric [name] :
==> Is this a key metric <y/n>? [n] : y
==> Do you want to add another metric <y/n>? [y] :

Return value(s) for the selected method :
[1]   //ns0:Record/title <string>
[2]   //ns0:Record/phone <string>
[3]   //ns0:Record/building <string>
[4]   //ns0:Record/floor <string>
[5]   //ns0:Record/office <string>

==> Enter the index [1-5] of metric to display : 1
==> Enter the name for this metric [title] :
==> Enter the label for this metric [title] :
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for it <y/n>? [n] :
==> Do you want to add another metric <y/n>? [y] :

Return value(s) for the selected method :
[1]   //ns0:Record/phone <string>
[2]   //ns0:Record/building <string>
[3]   //ns0:Record/floor <string>
[4]   //ns0:Record/office <string>

==> Enter the index [1-4] of metric to display : 1
==> Enter the name for this metric [phone] :
==> Enter the label for this metric [phone] :
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for it <y/n>? [n] :
==> Do you want to add another metric <y/n>? [y] :

Return value(s) for the selected method :
[1]   //ns0:Record/building <string>
[2]   //ns0:Record/floor <string>
[3]   //ns0:Record/office <string>

==> Enter the index [1-3] of metric to display : 1
==> Enter the name for this metric [building] :
==> Enter the label for this metric [building] :
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for it <y/n>? [n] :
==> Do you want to add another metric <y/n>? [y] :

Return value(s) for the selected method :
[1]   //ns0:Record/floor <string>
[2]   //ns0:Record/office <string>

==> Enter the index [1-2] of metric to display : 1
==> Enter the name for this metric [floor] :
==> Enter the label for this metric [floor] :
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for it <y/n>? [n] :
==> Do you want to add another metric <y/n>? [y] :

Return value(s) for the selected method :
[1]   //ns0:Record/office <string>

==> Enter the index [1-1] of metric to display : 1
==> Enter the name for this metric [office] :
==> Enter the label for this metric [office] :
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for it <y/n>? [n] :

Setup request parameters

==> Do you want to add User/Password Credential <y/n>? [n] : y

==> Do you want to add SSL TrustStore Credential <y/n>? [n] :

==> Do you want to add SSL KeyStore Credential <y/n>? [n] :

==> Is this metric group for periodic collection <y/n>? [y] :
The following units are for collection frequency:
[1]   Min
[2]   Hr
[3]   Day

==> Enter the index [1-3] of unit for this collection : 1
==> Enter the frequency of collection in Min : 5

==> Do you want to add another metric group <y/n>? [n] : y

All resource paths available for monitoring :
[1]   /add
[2]   /lookup/list
[3]   /lookup/phone
[4]   /lookup/building/people
[5]   /db/count

==> Enter the index [1-5] to select : 3
* Selected Resource Path : /lookup/phone

All methods available from the selected path :
[1]   application/json[PhoneInfo] GET(name)
[2]   application/xml[PhoneInfo] GET(name)

==> Enter the index [1-2] to select : 1
* Selected Resource Method: application/json[PhoneInfo] GET(name)

Define new metric group :
==> Enter the name for this metric group [GET] : LookupGet_JSON

Return value(s) for the selected method :
[1]   $..name <string>
[2]   $..phone <string>

==> Enter the index [1-2] of metric to display : 1
==> Enter the name for this metric [name] :
==> Enter the label for this metric [name] :
==> Is this a key metric <y/n>? [n] : y
==> Do you want to add another metric <y/n>? [y] :

Return value(s) for the selected method :
[1]   $..phone <string>

==> Enter the index [1-1] of metric to display : 1
==> Enter the name for this metric [phone] :
==> Enter the label for this metric [phone] :
==> Is this a key metric <y/n>? [n] :
==> Do you want to create threshold for it <y/n>? [n] :

Setup request parameters
==> Enter value for query parameter "name" [%LookupGet_JSON.name0000%] : Harry Smith

==> Do you want to add User/Password Credential <y/n>? [n] : y

==> Do you want to add SSL TrustStore Credential <y/n>? [n] :

==> Do you want to add SSL KeyStore Credential <y/n>? [n] :

==> Is this metric group for periodic collection <y/n>? [y] :
The following units are for collection frequency:
[1]   Min
[2]   Hr
[3]   Day

==> Enter the index [1-3] of unit for this collection : 1
==> Enter the frequency of collection in Min : 5

==> Do you want to add another metric group <y/n>? [n] :

Files Generated:
- Target Metadata file: /scratch/work/metadata/OfficeDirectory.xml
- Target Collection file: /scratch/work/metadata/OfficeDirectoryCollection.xml

例: REST CLIで生成されるターゲット・メタデータ

<TargetMetadata META_VER="1.0" TYPE="OfficeDirectory">
<Display>
<Label NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</Label>
<ShortName NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</ShortName>
<Description NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</Description>
</Display>
<Metric NAME="ListGet_XML" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_LIST_GET_XML">ListGet_XML</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING">
<Display>
<Label NLSID="COL_NAME">name</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="title" TYPE="STRING">
<Display>
<Label NLSID="COL_TITLE">title</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="phone" TYPE="STRING">
<Display>
<Label NLSID="COL_PHONE">phone</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="building" TYPE="STRING">
<Display>
<Label NLSID="COL_BUILDING">building</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="floor" TYPE="STRING">
<Display>
<Label NLSID="COL_FLOOR">floor</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="office" TYPE="STRING">
<Display>
<Label NLSID="COL_OFFICE">office</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="JAXRS_Fetchlet">
<Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property>
<Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property>
<Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">ListGet_XML.SecurityPolicy</Property>
<Property NAME="BaseURI" SCOPE="INSTANCE" OPTIONAL="FALSE">ListGet_XML.BaseURI</Property>
<Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="urn:com.office.directory"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">//ns0:Record/name,//ns0:Record/title,//ns0:Record/phone,//ns0:Record/building,//ns0:Record/floor,//ns0:Record/office</Property>
<Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,title:STRING,phone:STRING,building:STRING,
floor:STRING,office:STRING</Property>
<Property NAME="RequestMetadata" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[<Resource path="/">
<Resource path="lookup/list">
<Method elementDefined="false" accept="application/xml" name="GET"/>
</Resource>
</Resource>
]]></Property>
<Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet</Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
</QueryDescriptor>
</Metric>
<Metric NAME="LookupGet_JSON" TYPE="TABLE">
<Display>
<Label NLSID="NLSID_LOOKUP_GET_JSON">LookupGet_JSON</Label>
</Display>
<TableDescriptor>
<ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING">
<Display>
<Label NLSID="COL_NAME">name</Label>
</Display>
</ColumnDescriptor>
<ColumnDescriptor IS_KEY="FALSE" NAME="phone" TYPE="STRING">
<Display>
<Label NLSID="COL_PHONE">phone</Label>
</Display>
</ColumnDescriptor>
</TableDescriptor>
<QueryDescriptor FETCHLET_ID="JAXRS_Fetchlet">
<Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property>
<Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property>
<Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">LookupGet_JSON.SecurityPolicy</Property>
<Property NAME="BaseURI" SCOPE="INSTANCE" OPTIONAL="FALSE">LookupGet_JSON.BaseURI</Property>
<Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="urn:com.office.directory"]]]></Property>
<Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">$..name,$..phone</Property>
<Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,phone:STRING</Property>
<Property NAME="RequestMetadata" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[
<Resource path="/">
<Resource path="lookup/phone">
<Method elementDefined="false" accept="application/xml" name="GET">
<Parameter style="query" value="Harry Son" name="name"/>
</Method>
</Resource>
</Resource>
]]></Property>
<Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet</Property>
<CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
</QueryDescriptor>
</Metric>
<CredentialInfo>
<CredentialType NAME="CSFKeyCredential">
<Display>
<Label NLSID="CRED_TYPE">CSF-Key Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="CSFKey">
<Display>
<Label NLSID="CRED_CSFKEY">Alias CSF Key</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialType NAME="AliasCredential">
<Display>
<Label NLSID="CRED_TYPE">Alias Credential Type</Label>
</Display>
<CredentialTypeColumn NAME="Alias">
<Display>
<Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
</Display>
</CredentialTypeColumn>
<CredentialTypeColumn NAME="Password">
<Display>
<Label NLSID="CRED_PASSWORD">Password for the alias</Label>
</Display>
</CredentialTypeColumn>
</CredentialType>
<CredentialSet NAME="UserCredentialSet" USAGE="MONITORING">
<AllowedCredType TYPE="CSFKeyCredential"/>
<AllowedCredType TYPE="AliasCredential"/>
</CredentialSet>
</CredentialInfo>
<InstanceProperties>
<InstanceProperty NAME="ProxyHost" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_PROXY_HOST">Proxy Server Name</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="ProxyPort" CREDENTIAL="FALSE" OPTIONAL="TRUE">
<Display>
<Label NLSID="PROP_PROXY_PORT">Proxy Server Port</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="ListGet_XML.SecurityPolicy"
CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_LIST_GET_XML_SECURITY_POLICY">[ListGet_XML] Authentication/Web Service Policy</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="ListGet_XML.BaseURI" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_LIST_GET_XML_BASE_URI">[ListGet_XML] Resource Base URI</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="LookupGet_JSON.SecurityPolicy"
CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_LOOKUP_GET_JSON_SECURITY_POLICY">[LookupGet_JSON] Authentication/Web Service Policy</Label>
</Display>
</InstanceProperty>
<InstanceProperty NAME="LookupGet_JSON.BaseURI" CREDENTIAL="FALSE" OPTIONAL="FALSE">
<Display>
<Label NLSID="PROP_LOOKUP_GET_JSON_BASE_URI">[LookupGet_JSON] Resource Base URI</Label>
</Display>
</InstanceProperty>
</InstanceProperties>
</TargetMetadata>

21 Enterprise Manager DTD

DTDは、XMLファイルの文法を提供し、それぞれの関連XMLファイルに求められている内容を記述します。新規XMLファイルを作成する際には、DTDを慎重に調べて、そのファイル内に存在する必要のある内容を理解する必要があります。

この章では、Oracle Server Technology製品との統合を容易にするDTD要素の参照を提供します。

- 用語

- ターゲット・メタデータDTD要素

- ターゲット収集DTD要素

21.1 用語

この章では、Oracle Server Technology製品との統合を容易にするDTD要素の参照を提供します。ここで示す例のほとんどは、XMLファイルの一部です。

ターゲット: 管理対象エンティティです。管理対象エンティティは、ハードウェア・デバイスまたはソフトウェア・リソースです。ターゲットの例: ホスト・システム、Oracle Database、SMTPサービスなど。

関連付けられているターゲット: それぞれのデータが相互に依存し合う複数のターゲット。

メトリック: 収集できるデータ

中間層: OMS – Oracle Management Server

コンテナ: コンテナはOracleインストールを収容するエンティティです。現在、Oracleホーム(データベース、Enterprise Manager、Oracle Application Serverインストール)とApplTop (アプリケーション・インストール)という2種類のコンテナが利用可能です。

クラスタ・ターゲット: クラスタ・ターゲットは数多くのホストにまたがります。すべてのクラスタ・ターゲットは同じターゲットを表しています。各クラスタ・ターゲットを監視するエージェントは、同じメトリック結果、重大度などを生成します。

クラスタ・インタフェース: クラスタ・ターゲットと通信するためにエージェントが使用する標準インタフェース。

21.2 ターゲット・メタデータDTD要素

この項では、Enterprise Managerで使用されるDTD要素の定義を示します。

21.2.1 TargetMetadata

TargetMetadataは、ターゲット・タイプのメタデータを説明します。ターゲットのメタデータは、測定可能な特性、収集されるデータの形式およびデータの収集または計算に使用するメカニズムを説明します。

<!ELEMENT TargetMetadata (Display*, TypeProperties?, AssocTarget*, DiscoveryHelper?, MonitoringMode*, AltSkipCondition?, MetricClass*, Metric*, CredentialInfo?, InstanceProperties?, SSH_ERROR_MSG?)>

<!ATTLIST TargetMetadata

META_VER CDATA #REQUIRED

TYPE CDATA #REQUIRED

REQUIRED_AGENT_VERSION CDATA #IMPLIED

HELPID CDATA #IMPLIED

HELP CDATA #IMPLIED

CATEGORY_PROPERTIES CDATA #IMPLIED

RESOURCE_BUNDLE_PACKAGE CDATA #IMPLIED

TARGET_TYPE_CATEGORY CDATA #IMPLIED

HOST_BINDING_REQUIRED (TRUE | FALSE) "TRUE"

>

注意:
ファイルに記載される様々な属性の許容最大長を、tagsize.propertiesで指定する必要があります。この値は、メタデータ情報をリポジトリにロードする際に、メタデータ・ファイル内の属性の長さを切り捨てるのに使用されます。

21.2.1.1 属性

META_VER: メタデータのバージョンを示します。

TYPE: ターゲット・タイプを指定します。

HELPID: 使用しません。

HELP: 使用しません。

CATEGORY_PROPERTIES: ValidIfのプロパティとして使用されるプロパティのリスト(セミコロン区切り)。現在、各ターゲット・タイプでは、カテゴリ・プロパティとして最大5つのプロパティを使用できます。EMAgentは、カテゴリ・プロパティの値を評価して、メタデータ内で使用できるようにします。

RESOURCE_BUNDLE_PACKAGE:

REQUIRED_AGENT_VERSION: この属性は、メタデータの最低のエージェント・バージョンを示します。この属性を伴うTargetMetadataは、指定されたバージョン以上のエージェントで有効になります。

TARGET_TYPE_CATEGORY: ターゲット・タイプが属するカテゴリを決定します。複数のターゲット・タイプ・カテゴリは、カテゴリをセミコロンで区切ったリストとして指定できます。

HOST_BINDING_REQUIRED: ターゲットがホスト・ターゲットを必要とするかどうかを示します。

(TRUE (デフォルト) | FALSE)

21.2.1.2 要素

Display

TypeProperties

AssocTarget

DiscoveryHelper

MonitoringMode

AltSkipCondition

MetricCategory

Metric

CredentialInfo

InstanceProperties

SSH_ERROR_MSG

21.2.1.3 使用場所

TargetMetadataはトップレベルの要素です。

21.2.1.4 例

<TargetMetadata TYPE="example1" META_VER="2.0" REQUIRED_AGENT_VERSION=”10.2.0.1.0”>

. . .

</TargetMetadata>

前述の例では、メタデータのREQUIRED_AGENT_VERSION属性が10.2.0.1.0に設定されています。このメタデータは、エージェントのバージョンが10.2.0.1.0以上の場合のみ有効になります。

<TargetMetadata TYPE="example1" META_VER="2.0">

<Metric NAME=”prop” TYPE=”TABLE”>

<TableDescriptor>

<ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="value" TYPE="STRING" />

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

</QueryDescriptor>

</Metric>

</TargetMetadata>

これは非常に簡単な例で、次の形式で収集する必要があるデータ(メトリック)を持つターゲット・タイプ'exmaple1'を記述しています。引用符の付いた値は、プロパティで定義されているスコーピング・ルールに従って、'OS' Fetchletによって評価されます。

表21-1 メトリック・プロパティ

名前

値

Host Name

NAME

<TargetMetadata TYPE="example2" META_VER="2.0">

<Metric NAME="perf" TYPE=”TABLE”>

<TableDescriptor>

<ColumnDescriptor NAME="char" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="value" TYPE="STRING" />

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OSLineToken" >

<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl %scriptsDir%/example1/perf.pl %port% </Property>

<Property NAME="delimiter" SCOPE="GLOBAL">=</Property>

<Property NAME="port" SCOPE="INSTANCE">accessPort</Property>

</QueryDescriptor>

</Metric>

<InstanceProperties>

<InstanceProperty NAME="accessPort" />

</InstanceProperties>

</TargetMetadata>

このサンプルは、InstancePropertiesの使用方法を示しています。InstanceProperties要素は、ターゲット・インスタンスに関連する'accessPort'を関連付けます。メトリックperfは、次のように収集されます。引用符の付いた値は、プロパティで定義されたスコーピング・ルールに従って、OSLineToken Fetchletによって評価されます。

表21-2 メトリック: perf

Char

値

コマンド

'%perlBin%/perl %scriptsDir%/example1/perf.pl %port%'

デリミタ

=

Port

'accessPort'

<TargetMetadata TYPE="example3" META_VER="2.0" CATEGORY_PROPERTIES="OS">

<Metric NAME=”prop” TYPE=”TABLE”>

. . .

</Metric>

<InstanceProperties>

<DynamicProperties NAME="VersionAndLocation" FORMAT="ROW" PROP_LIST="OS;OracleHome;Version">

<QueryDescriptor FETCHLET_ID="OSLineToken">

<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>

<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>

<Property NAME="ENVEmdOS" SCOPE="SYSTEMGLOBAL">_emdOS</Property>

<Property NAME="ENVVersion" SCOPE="SYSTEMGLOBAL">_emdVersion</Property>

<Property NAME="ENVORACLE_HOME" SCOPE="SYSTEMGLOBAL">emdRoot</Property>

<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>

<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/emdlocandver.pl </Property>

<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>

<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>

</QueryDescriptor>

</DynamicProperties>

</InstanceProperties>

</TargetMetadata>

このサンプルは、DynamicProperties要素を使用してOS、OracleHomeおよびVersionのプロパティを戻します。このスクリプトは、PROP_LIST属性に記載されているプロパティを戻すために解析された結果を戻します。

21.2.2 Display

このタグを持つ要素を表示するためにコンソールUIで使用される情報を指定します。

<!ELEMENT Display (ValidIf*, Label, ShortName?, Icon?, Description?, Unit?)>

<!ATTLIST Display

FOR_SUMMARY_UI (TRUE | FALSE) "FALSE">

21.2.2.1 属性

FOR_SUMMARY_UI: 列が圧縮されたUIに表示されるかどうかを示します。1つのUIページにすべての列が収まらない場合は、圧縮表示が必要です。圧縮表示では、FOR_SUMMARY_UI=TRUEに設定されている列のみが表示されます。

TRUE | FALSE(デフォルト)

21.2.2.2 要素

ValidIf

Label

ShortName

Icon

Description

Unit

21.2.2.3 使用場所

TargetMetadata

Metric

ColumnDescriptor

CredentialType

CredentialTypeColumn

CredentialSet

CredentialSetColumn

InstanceProperty

21.2.2.4 例

Display要素にはLabel要素を含める必要があります。ShortName、Icon、DescriptionおよびUnitの各要素はオプションです。ValidIf要素が含まれている場合、要素が表示されるには、ValidIf要素のすべての条件を満たす必要があります。

<Display FOR_SUMMARY_UI="TRUE">

<Label NLSID="emd_resp_stat">Status</Label>

</Display>

この例は、Display要素を含む要素の表示特性を示しています。'FOR_SUMMARY_UI'をTRUEに設定して、縮小表示でも要素をUIに表示するようにします。

<Display FOR_SUMMARY_UI="TRUE">

<ValidIf>

<CategoryProp NAME="OS" CHOICES="SunOS"/>

</ValidIf>

<Label NLSID="id_name_for_agent">Agent Name</Label>

<ShortName NLSID="id_short_name">Name</ShortName>

<Icon GIF=”a.gif”>Name</Icon>

<Description NLSID=”id_for_description”>Displays the Agent Name</Description>

</Display>

このサンプルは、OSが'SunOS'の場合のみに有効な要素の表示特性を示しています。

21.2.3 SSH_ERROR_MSG

このタイプのリモート・ターゲットの監視にSSHが使用できない場合にコンソールに表示される自由形式のエラー・メッセージ。

<!ELEMENT SSH_ERROR_MSG (#PCDATA)>

<!ATTLIST SSH_ERROR_MSG

NLSID CDATA #REQUIRED

>

21.2.3.1 属性

NLSID: 自由形式のエラー・メッセージのNLSID

21.2.3.2 要素

なし。

21.2.3.3 使用場所

TargetMetadata

21.2.3.4 例

<SSH_ERROR_MSG NLSID="ssh_error_nlsid">

Target data will not be available until sshd is available

</SSH_ERROR_MSG>

21.2.4 TypeProperties

TypePropertiesはターゲット・タイプのTypeProperty要素を保持します。

<!ELEMENT TypeProperties (TypeProperty*)>

21.2.4.1 属性

なし。

21.2.4.2 要素

TypeProperty

21.2.4.3 使用場所

TargetMetadata

21.2.4.4 例

<TypeProperties>

<TypeProperty PROPERTY_NAME=”a_name” PROPERTY_VALUE=”a_value”/>

</TypeProperties>

プロパティ名/値のペアであるa_name、a_valueは、ターゲット・タイプに適用されます。

21.2.5 TypeProperty

TypeProperty要素には、ターゲット・タイプのプロパティの名前/値ペアが含まれます。

<!ELEMENT TypeProperty EMPTY>

<!ATTLIST TypeProperty

PROPERTY_NAME CDATA #REQUIRED

PROPERTY_VALUE CDATA #IMPLIED

>

21.2.5.1 属性

PROPERTY_NAME: ターゲット・タイプのプロパティの名前です。

PROPERTY_VALUE: ターゲット・タイプのプロパティの値です。

21.2.5.2 要素

なし。

21.2.5.3 使用場所

TypeProperties

21.2.5.4 例

TypePropertiesの例を参照してください。

21.2.6 AssocTarget

AssocTargetは、2つのターゲットが相互に関連している様子を記述します。数多くの理由のためにターゲットを関連付けることができます。その理由の一部として、トポロジ・マップの表示、根本原因分析の実行、ターゲットの可用性の判定、データの収集および伝送における冗長性の最小化、データの収集またはジョブの実行の順序の決定があります。たとえば、ターゲットで障害が発生した場合、関連付けられたターゲットも影響を受けることがあります。この情報は、根本原因分析にとって貴重です。

<!ELEMENT AssocTarget (AssocPropDef*)>

<!ATTLIST AssocTarget

ASSOC_TARGET CDATA #IMPLIED

TYPE CDATA #IMPLIED

ASSOCIATION_NAME CDATA #IMPLIED

NAME_NLSID CDATA #IMPLIED

DESCRIPTION CDATA #IMPLIED

DESCRIPTION_NLSID CDATA #IMPLIED

SOURCE_TARGET_TYPE CDATA #IMPLIED

ASSOC_TARGET_TYPE CDATA #IMPLIED

CARDINALITY (OPTIONAL_SINGLE_CARDINAL |

REQUIRED_SINGLE_CARDINAL |

OPTIONAL_MULTI_CARDINAL |

REQUIRED_MULTI_CARDINAL) #IMPLIED

ASSOC_TYPE (RELATES_TO|DEPENDS_ON | CONNECTS_TO |

SERVICE_ACCESS_POINT|RUNS_ON|

CONTAINS|HOSTED_BY|MONITORED_BY|

OPTIONALLY_CONNECTS_TO) #IMPLIED

COMPUTE_RULE (PARENT | MEMBER | NONE) ”NONE”

>

21.2.6.1 属性

ASSOC_TARGET: 関連付けられているターゲットの名前。

TYPE: 関連付けられているターゲットのターゲット・タイプ。

ASSOCIATION_NAME: ASSOC_TARGETは非推奨。関連付けの名前を指定します

ASSOC_TARGET_TYPE: TYPEは非推奨。このターゲットに関連付けられているターゲットタイプを指定します。'ANY'はアソシエーション・ターゲットが任意のターゲット・タイプにできることを示すことができます。

NAME_NLSID: 関連付けの名前のNLSID

DESCRIPTION: 説明

DESCRIPTION_NLSID: 説明文字列のNLSID

SOURCE_TARGET_TYPE: アソシエーションの開始場所がそのターゲット自体でなく、別のターゲットの場合、ソース・ターゲットのターゲット・タイプはこの属性内で指定されます。'ANY'ソースが任意のターゲット・タイプになる可能性があることを示すために使用できます。

CARDINALITY: 関連付けられるターゲットのカーディナリティを指定します。サポートされている値は次のとおりです。

1. OPTIONAL_SINGLE_CARDINAL: ゼロまたは1つのターゲットが関連付けられます

2. REQUIRED_SINGLE_CARDINAL: 1つのターゲットのみが関連付けられます

3. OPTIONAL_MULTI_CARDINAL: ゼロまたは複数のターゲットが関連付けられます

4. REQUIRED_MULTI_CARDINAL: 1つ以上のターゲットが関連付けられます

ASSOC_TYPE: 関連付けられているターゲットの関係を説明します。サポートされている値は次のとおりです。

1. RELATES_TO (デフォルト): なんらかの汎用的な関係を意味します

2. DEPENDS_ON: 関連付けられているターゲットへの依存

3. CONNECTS_TO: ソース・ターゲットが、関連付けられているターゲットに接続します

4. SERVICE_ACCESS_POINT

5. RUNS_ON: ソース・ターゲットが、関連付けられているターゲットで実行され(インストールされ)ます

6. CONTAINS: ソース・ターゲットに、関連付けられているターゲットが含まれます

7. HOSTED_BY: RUNS_ONと同様です

8. MONITORED_BY: ソース・ターゲットが、関連付けられているターゲット(エージェント)によって監視されます

9. OPTIONALLY_CONNECTS_TO

COMPUTE_RULE: まだ存在していない場合に、ターゲット・インスタンスに対して関連付けを計算する方法を記述します。サポートされている値は次のとおりです。

1. PARENT: ターゲットの1番目の親に基づいて構築されます。

2. MEMBER: ターゲットの1番目の子に基づいて構築されます。

3. NONE (デフォルト): ターゲット・インスタンスの関連付けは自動的には計算されません。

21.2.6.2 要素

AssocPropDef (バージョン10.2ではサポートされていません)

21.2.6.3 使用場所

TargetMetadata

21.2.6.4 例

10.2より前のバージョンでは、AssocTarget要素に次の属性が必要です。

1. ASSOC_TARGET

2. TYPE

バージョン10.2以上では、AssocTarget要素に少なくとも次の属性を使用する必要があります。

1. ASSOCIATION_NAME (ASSOC_TARGETの後継)。

2. ASSOC_TARGET_TYPE (TYPEの後継)。

<TargetMetadata TYPE="oracle_email" META_VER="2.0">

<AssocTarget ASSOCIATION_NAME="IM"

SOURCE_TARGET_TYPE="oracle_email"

ASSOC_TARGET_TYPE="oracle_im"

ASSOCIATION_TYPE="DEPENDS_ON"

NAME_NLSID=”im_assoc_name”

DESCRIPTION=”This association captures Email-IM dependency”

DESCRIPTION_NLSID=”im_assoc_description” />

. . .

</TargetMetadata>

この要素は'oracle_email'内で定義され、次の関係を表します。

Oracle_email -----DependsOn----à oracle_im

21.2.7 AssocPropDef

AssocPropDefは、関連付けのプロパティを示します。この要素はバージョン10.2ではサポートされていません。

<!ELEMENT AssocPropDef EMPTY>

<!ATTLIST AssocPropDef

NAME CDATA #REQUIRED

REQUIRED (TRUE | FALSE) #REQUIRED>

21.2.7.1 属性

NAME: プロパティの名前。

REQUIRED: プロパティが必須かどうかを示します。

TRUE | FALSE

21.2.7.2 要素

なし。

21.2.7.3 使用場所

AssocTarget

21.2.7.4 例

この要素はサポートされていません。

21.2.8 DiscoveryHelper

DiscoveryHelperは、エージェントによるターゲット・タイプの検出処理に役立ちます。

<!ELEMENT DiscoveryHelper (DiscoveryHint*) >

<!ATTLIST DiscoveryHelper

CATEGORYNAME CDATA #REQUIRED

OUI_BASED (TRUE | FALSE) "TRUE"

>

21.2.8.1 属性

CATEGORYNAME: 指定されたタイプのターゲットを検出するdiscover.lst内のカテゴリの名前。

OUI_BASED: この検出でOUIインベントリ情報が使用されたかどうかを示すブール値。

TRUE(デフォルト)| FALSE

21.2.8.2 要素

DiscoveryHint

21.2.8.3 使用場所

TargetMetadata

21.2.9 DiscoveryHint

DiscoveryHintを使用すると、検出を誘導する任意のヒントを指定できます。

<!ELEMENT DiscoveryHint (Display?) >

<!ATTLIST DiscoveryHint

NAME CDATA #REQUIRED

>

21.2.9.1 属性

NAME: 検出処理を誘導するヒントの名前

21.2.9.2 要素

Display

21.2.9.3 使用場所

DiscoveryHelper

21.2.10 MetricClass

MetricClassは、メトリックをカテゴリに分類するための手段を提供します。メトリックは、Function (Perf、Load、Config)、EvaluationCost (Cheap、Medium、Expensive)、Applicability (Typical、Esoteric)などの複数の特性に基づいてカテゴリに分類できます。

<!ELEMENT MetricClass (MetricCategory*)>

<!ATTLIST MetricClass

NAME CDATA #REQUIRED

NLSID CDATA #IMPLIED>

21.2.10.1 属性

NAME: クラスの名前(たとえばFunctional)

NLSID: 変換ID。ネーミング規則はmetric_class_<classname>です。

21.2.10.2 要素

MetricCategory

21.2.10.3 使用場所

TargetMetadata

21.2.10.4 例

<TargetMetadata TYPE="example3" META_VER="2.0">

<MetricClass NAME=”EvaluationCost” NLSID=”id_for_eval_cost_class”>

<MetricCategory NAME=”CHEAP” NLSID=”id_for_cheap_cat”/>

<MetricCategory NAME=”MEDIUM” NLSID=”id_for_medium_cat”/>

<MetricCategory NAME=”EXPENSIVE” NLSID=”id_for_expensive_cat”/>

</MetricClass>

<Metric NAME=”metric1” TYPE=”TABLE”>

<CategoryValue Class=”EvaluationCost” CATEGORY_NAME=”CHEAP”/>

. . .

</Metric>

. . .

</TargetMetadata>

この例は、ターゲット・タイプ'example3'に対して'EvaluationCostというMetricClassの追加について説明しています。EvaluationCostにはCHEAP、MEDIUMおよびEXPENSIVEの3つのカテゴリがあります。メトリック'metric1'は、評価コストの低いメトリックです。

詳細は、CategoryValue、Metricの説明を参照してください。

21.2.11 MetricCategory

MetricCategory要素は、メトリックの分類内の各選択肢をリストします。

<!ELEMENT MetricCategory EMPTY>

<!ATTLIST MetricCategory

NAME CDATA #REQUIRED

NLSID CDATA #IMPLIED>

21.2.11.1 属性

NAME: カテゴリの名前(たとえばSecurity)

NLSID: カテゴリのNLSID。ネーミング規則はmetric_cat_<category_name>です。

21.2.11.2 要素

なし。

21.2.11.3 使用場所

MetricClass

21.2.11.4 例

MetricClassの例を参照してください。

21.2.12 メトリック

Metric要素は、測定可能な、様々なターゲットの特性(パフォーマンス、ロード、構成など)を宣言するために使用します。Metric要素は、収集されるデータの構造および情報の計算方法を示します。

注意:
Responseという名前の特別なメトリックを各ターゲット・タイプに使用することをお薦めします。このメトリックにはStatusという列が必要です。また、タイプの作成者は、このメトリックの集まりを設定し、Status列に条件を設定する必要があります(TargetCollection.dtdを参照)。可用性システム(一定期間におけるターゲットの稼働/停止ステータス)では、このメトリック列でアラートを使用して、一定期間における稼働/停止の統計を提供します。

注意: QueryDescriptorは管理リポジトリのメトリックに必要です。

<!ELEMENT Metric ((ValidIf | ValidMidTierVersions)*, Display?, CategoryValue* ,TableDescriptor?, ((QueryDescriptor | ExecutionDescriptor) | PushDescriptor)* )>

<!ATTLIST Metric

NAME CDATA #REQUIRED

TYPE (NUMBER | STRING | TABLE | RAW | EXTERNAL | REPOSITORY_TABLE | REPOSITORY_NUMBER | REPOSITORY_STRING | REPOSITORY_EVENT) "NUMBER"

REPOSITORY (TRUE|FALSE) "FALSE"

USAGE_TYPE (VIEW_COLLECT | REALTIME_ONLY | HIDDEN | HIDDEN_COLLECT | COLLECT_UPLOAD) "VIEW_COLLECT"

KEYS_FROM_MULT_COLLS (TRUE | FALSE) "FALSE"

IS_TEST_METRIC (TRUE | FALSE) "FALSE"

KEYS_ONLY (TRUE | FALSE) "FALSE"

REMOTE (TRUE | FALSE) "FALSE"

IS_TRANSPOSED (TRUE | FALSE) "FALSE"

HELP CDATA #IMPLIED

IS_METRIC_LONG_RUNNING (TRUE|FALSE) "FALSE"

CONFIG (TRUE|FALSE) "FALSE"

FORCE_CACHE (TRUE | FALSE) "FALSE"

COLLECT_ON_ALL_NODES (TRUE | FALSE) "FALSE"

INCREMENTAL (TRUE|FALSE) "FALSE"

NUM_CACHE_VALUES CDATA "1"

LOCAL_ONLY (TRUE | FALSE) "FALSE"

>

21.2.12.1 属性

NAME: メトリック名を指定します。そのターゲット・タイプのスコープ内で、一意に識別します。

TYPE: データ型を指定します。サポートされているメトリック・タイプは次のとおりです。

a) NUMBER (デフォルト): 非推奨です。数値型の1列を含む表をかわりに使用してください。

b) STRING: 非推奨です。文字列型の1列を含む表をかわりに使用してください。

c) TABLE: 表形式データ

d) RAW: 表形式データ

e) EXTERNAL: EMDによって解析または先頭に配置されないデータ

f) REPOSITORY_EVENT

REPOSITORY: この属性は、管理リポジトリによって収集されるメトリックを示します。ブール属性です。

FALSE (デフォルト)は管理エージェントによって収集されるメトリックを示します。

TRUEは管理リポジトリで収集されるメトリックを示します。この属性がTRUEに設定されている場合、問合せ記述子は次のようになります。

<QueryDescriptor FETCHLET_ID="REPOSITORY_SQL">
<Property NAME="Type">SQL</Property>
<Property NAME="Source">CDATA</Property>
</QueryDescriptor>

問合せ記述子は1つのみです。タイプに可能な値は次のとおりです。

- SQL

- PLSQL

- BULK_PLSQL

注意:
REPOSITORYがTRUEに設定されている場合、メトリックTYPEはTABLEになります。RAWはリポジトリ・メトリックでサポートされていません。

USAGE_TYPE: メトリックの目的を定義します。サポートされているタイプは次のとおりです。

a) VIEW_COLLECT (デフォルト): 表示と収集の両方が可能なメトリックです。

b) REALTIME_ONLY: 収集不可のメトリックです。これらのメトリックには、キーの一意性の規則は適用されません。

c) HIDDEN: コンソールから収集および表示されないようにする必要がある場合に、メトリックに非表示のタグが付けられます。データのアップロードも行われません。これらは、他のメトリックの計算に使用される一時メトリックです。

d) HIDDEN_COLLECT: メトリックは収集できます。表示はできません。データはアップロードされません。HIDDENと同様ですが、収集基準を定義できます。

e) COLLECT_UPLOAD: メトリックの収集およびアップロードが可能で、メタデータはMGMT_METRICSにアップロードされますが、Allメトリック・ページには表示されません。

古いUSAGE_TYPEの値のマッピングは次のとおりです。

DISPLAY_ONLY: REALTIME_ONLY

MULTI_KEY: VIEW_COLLECT

COLLECT_ONLY: VIEW_COLLECT

メトリック・ブラウザは、どのメトリックを表示しないかを自動的に判断します。

KEYS_FROM_MULT_COLLS: TRUEの場合は、複数のキー列があることを示します。キー列の組合せによって、1つの行が一意に識別されます。値がTRUEの場合のみ、複数の収集項目でメトリックを収集できます。

TRUE | FALSE(デフォルト)

IS_TEST_METRIC: エージェントは、一部のメトリックをチェックして、有効なインスタンス・プロパティを使用してターゲットが正しく指定されているかどうかを判断できます。この属性は、このメトリックをテスト・メトリックの1つとしてマークします。

TRUEまたはFALSE(デフォルト)

HELP: ヘルプ・テキスト。この属性は使用されません。

KEYS_ONLY: キー列のみを持つ特別なメトリックにタグを付けるために使用します。通常、このようなメトリックは(アップロードされるデータがないため)収集には役立ちませんが、一連のキーを取得するためだけにメトリックを使用する特別な場合に役立ちます。

TRUEまたはFALSE(デフォルト)

IS_METRIC_LONG_RUNNING: TRUEの場合はメトリックが長時間実行されます。メトリック・エンジンに、この問合せの終了までに比較的時間がかかるというヒントを与えます。特別なプロパティEM_IS_METRIC_LONG_RUNNINGがfetchletに自動的に渡されます。

TRUEまたはFALSE(デフォルト)

CONFIG: これは、Enterprise Managerフレームワークによって異なる方法でアップロードされるCONFIGメトリックの特別な指定です。

TRUEまたはFALSE(デフォルト)

REMOTE: リモートの場所から評価できるメトリックのタグ付けに使用されます。これらのメトリックは、ビーコン・ノードから評価できます。

IS_TRANSPOSED: 名前/値ペアとしてデータを生成するメトリックにタグを付けるために使用され、UIはこの名前を列ヘッダーとして扱います。設計時に行数(またはデータのカテゴリ)が不明な場合に便利です。

FORCE_CACHE: 収集されたメトリックについて、エージェントにメトリック収集の結果をキャッシュするよう指示します。この指示がなければ、キャッシュ値が使用されることを認識するまで、エージェントはメトリック結果のキャッシュを開始しません。

COLLECT_ON_ALL_NODES: クラスタ化されたターゲットの場合、この属性がTRUEに設定されてマークが付けられているメトリックは、クラスタのすべてのノードで収集されます。

TRUE | FALSE(デフォルト)

INCREMENTAL: この属性はOCMコレクタによってのみ使用されます。メトリックが増分の場合この属性はTRUEです。つまり、収集中に収集された行は、前の収集中に収集された行を置換せずに、それらの行に加わります。これは、ECM_RUNNING_PRODUCTSメトリックの例の収集にライフスパンがわたるメトリック・データの場合です。

NUM_CACHE_VALUES: 11から始まって、エージェントは、EMDClient getMetricHistory APIがアクセスできるようにメモリに複数の収集結果をキャッシュする能力をサポートしています。この属性の値はデフォルトで1ですが、ユーザーはこの値を15や60などのより高い値に設定できます

LOCAL_ONLY: ローカル・ターゲットに対してのみメトリックを収集し、リモート・ターゲットに対してはスキップするように指定します。

21.2.12.2 要素

ValidIf

ValidMidTierVersions

Display

CategoryValue

TableDescriptor

QueryDescriptor

ExecutionDescriptor

PushDescription

21.2.12.3 使用場所

TargetMetadata

21.2.12.4 例

<TargetMetadata TYPE="example1" META_VER="2.0" CATEGORY_PROPERTIES=”OS;Version”>

<Metric NAME=”prop” TYPE=”TABLE”>

<Display>

<Label NLSID="example1_metric">Example1 Metric</Label>

</Display>

<TableDescriptor>

<ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="value" TYPE="STRING" />

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

</QueryDescriptor>

</Metric>

</TargetMetadata>

これは、メトリック定義の最も一般的な形式です。この文は、メトリック'example1'に表形式データが含まれることを宣言しています。

メトリックにTABLEタイプが含まれる場合、値は行のセットとして戻され、またその各行には値のセット(列)が含まれます。表の特殊なケースとして、リストが戻される可能性もあります。TABLEメトリックには、TableDescriptorが定義されている必要があります。

<Metric NAME="Inventory" TYPE="EXTERNAL" >

<ValidIf>

<CategoryProp NAME="OS" CHOICES="SunOS"/>

</ValidIf>

<Display>

<Label NLSID="host_Inventory">Inventory</Label>

</Display>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="emdRoot" SCOPE="SYSTEMGLOBAL">emdRoot</Property>

<Property NAME="emHome" SCOPE="SYSTEMGLOBAL">agentStateDir</Property>

<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>

<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>

<Property NAME="hostConfigClasspath" SCOPE="SYSTEMGLOBAL">hostConfigClasspath</Property>

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

<Property NAME="type" SCOPE="INSTANCE">TYPE</Property>

<Property NAME="display_target_name" SCOPE="INSTANCE">DISPLAY_NAME</Property>

<Property NAME="display_target_type" SCOPE="INSTANCE">TYPE_DISPLAY_NAME</Property>

<Property NAME="command" SCOPE="GLOBAL">"%perlBin%/perl" "%scriptsDir%/osm/ecmCollectInventory.pl" "%hostConfigClasspath%" "%perlBin%" "%emdRoot%" "%emHome%" "%hostname%" "%loaderFile%" "%emHome%/sysman/config/OUIinventories.add" "%type%" "%display_target_name%" "%display_target_type%"</Property>

</QueryDescriptor>

</Metric>

この例ではInventoryをEXTERNALと宣言しています。つまり、メトリックは適切な形式で評価され、アップロード・ディレクトリに配置されることを意味します。EMAgentはメトリック結果を解析しません。ValidIf要素によって、メトリックは'SunOS' OSに対してのみ評価されるようになります。

<Metric NAME="AddressMap" TYPE="TABLE" FORCE_CACHE="TRUE">

コンテンツはTABLEメトリックと同様です。

</Metric>

この例では、エージェントはAddressMapメトリックの結果をキャッシュすることを強制されます。

<Metric NAME="ICMPPing" TYPE="TABLE" IS_TEST_METRIC="TRUE" USAGE_TYPE="HIDDEN">

コンテンツはTABLEメトリックと同様です。

</Metric>

'ICMPPing'はテスト・メトリックとして識別されています。エージェントはその値を使用して、インスタンス・プロパティによって識別されたターゲットが正しいことを検証します。このメトリックは内部使用のみを目的とするため、'HIDDEN'としてマークされています。

USAGE_TYPEの要約:

USAGE_TYPE

KEY_UNIQUE_CHECK

COLLECTABLE

MGMT_METRICS_RAW

MGMT_METRICS

VIEWABLE

VIEW_COLLECT

Y

Y

Y

Y

Y

REALTIME_ONLY

N

N

N

Y

N

HIDDEN

Y

N

N

Y

N

HIDDEN_COLLECT

Y

Y

N

Y

N

COLLECT_UPLOAD

Y

Y

Y

Y

Y

<Metric NAME="http_raw" TYPE="TABLE" KEYS_FROM_MULT_COLLS="TRUE" REMOTE="TRUE">

コンテンツはTABLEメトリックと同様です。

</Metric>

'http_raw'メトリックは、リモートの場所から評価できるため、'REMOTE'としてタグ付けされています。

<Metric NAME="openPorts" TYPE="RAW" CONFIG="TRUE" KEYS_ONLY="TRUE" HELP="NO_HELP">

<ValidIf>

<CategoryProp NAME="OS" CHOICES="SunOS"/>

</ValidIf>

<Display>

<Label NLSID="host_open_ports_ESM">Open Ports</Label>

</Display>

<TableDescriptor TABLE_NAME="esm_collection">

<ColumnDescriptor NAME="property" COLUMN_NAME="property" TYPE="STRING" IS_KEY="TRUE" HELP="NO_HELP"/>

<ColumnDescriptor NAME="value" COLUMN_NAME="value" TYPE="STRING" IS_KEY="TRUE" HELP="NO_HELP"/>

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OSLineToken">

<Property NAME="scriptsDir" SCOPE="SYSTEMGLOBAL">scriptsDir</Property>

<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>

<Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>

<Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/openports.pl</Property>

<Property NAME="startsWith" SCOPE="GLOBAL">em_result=</Property>

<Property NAME="delimiter" SCOPE="GLOBAL">=</Property>

</QueryDescriptor>

</Metric>

'openPorts'はCONFIGメトリックとして識別されています。タイプがRAWのため、EMAgentは値が正しい形式であることを要求します。

<Metric NAME="storage_reporting_data" TYPE="RAW" CONFIG="TRUE" IS_METRIC_LONG_RUNNING="TRUE">

コンテンツはRAWメトリックと同様です。

</Metric>

これは、storage_reporting_dataの実行に時間がかかることを指定しています。

21.2.13 ValidIf

ターゲットの複数のフレーバに適用されるタイプ定義を作成するために、ValidIf要素は使用されます。これを行うには、ターゲットの特定のプロパティ(最大5)をカテゴリ・プロパティとしてマークすることができ、ターゲットのプロパティ値が指定値と一致する場合にのみ適用できることを示すために、ValidIf要素をメタデータの一部に配置できます。

ValidIf内のCategoryProp要素は、評価対象の包含要素と一致する必要があります。包含要素は、様々な条件セットの適用度を示すために複数のValidIfを含んでいることがあります。

<!ELEMENT ValidIf (CategoryProp+)>

21.2.13.1 属性

なし。

21.2.13.2 要素

CategoryProp

21.2.13.3 使用場所

Metric

QueryDescriptor

Display

MonitoringMode

InstanceProperty

DynamicProperties

ExecutionDescriptor

PushDescription

CollectionItem

21.2.13.4 例

<TargetMetadata TYPE="example1" META_VER="2.0" CATEGORY_PROPERTIES=”OS;Version”>

<Metric NAME=”prop” TYPE=”TABLE”>

<ValidIf>

<CategoryProp NAME="OS" CHOICES="SunOS"/>

<CategoryProp NAME="Version" CHOICES="5.9"/>

</ValidIf>

<TableDescriptor>

<ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="value" TYPE="STRING" />

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

</QueryDescriptor>

</Metric>

</TargetMetadata>

この例は、メトリック'prop'が評価されるには、カテゴリ・プロパティ'OS'および'Version'が値'SunOSおよび'5.9'を含む必要があることを示しています。EMAgentでは、ValidIf要素で使用できる最大5つのカテゴリ・プロパティを定義できます。

21.2.14 CategoryProp

CategoryProp要素を使用して、ValidIfを一致させるためのプロパティに対して許可される値をリストします。

<!ELEMENT CategoryProp EMPTY>

<!ATTLIST CategoryProp

NAME CDATA #REQUIRED

CHOICES CDATA #REQUIRED>

21.2.14.1 属性

NAME: カテゴリ・プロパティの名前を指定します。

CHOICES: プロパティに対して許可される値を指定します。値をセミコロン(;)で区切って含めることができます。

21.2.14.2 要素

なし。

21.2.14.3 使用場所

ValidIf

21.2.14.4 例

<ValidIf>

<CategoryProp NAME="OS" CHOICES="SunOS"/>

<CategoryProp NAME="Version" CHOICES="5.8;5.9"/>

</ValidIf>

ValidIf文の例を変更して'Version' CategoryPropertyに5.8と5.9という2つの選択肢を設定した場合、メトリックは'SunOS'のバージョン5.8および5.9について評価されます。

<ValidIf>

<CategoryProp NAME="OS" CHOICES="SunOS"/>

</ValidIf>

<ValidIf>

<CategoryProp NAME="OS" CHOICES="AIX"/>

</ValidIf>

このようなValidIfを含むメトリックは、OSがSunOSまたはAIXの場合に評価されます。

注意: ValidIfを使用して同じメトリックの複数の定義を区別している場合は、メトリックの複数の定義が検証されることがないようにする必要があります。

<Metric NAME=”a_metric” TYPE=”TABLE”>

<ValidIf>

<CategoryProp NAME=”C1” CHOICES=”A;B”>

</ValidIf>

. . .

</Metric>

<Metric NAME=”a_metric” TYPE=”TABLE”>

<ValidIf>

<CategoryProp NAME=”C1” CHOICES=”A;C”>

</ValidIf>

. . .

</Metric>

この例は、ValidIfを使用しない方法を示しています。

21.2.15 ValidMidTierVersions

ValidMidTierVersions要素は、エージェントでの中間層ベースのバージョニング・サポートに使用されます。

この要素はMetric要素の下またはCustomTableMapper要素の内部で使用できます。この要素が存在することで、Metric定義またはCustomTableMapper定義が中間層バージョンの特定のセットのみに適用されることがエージェントに示されます。

<!ELEMENT ValidMidTierVersions EMPTY>

<!ATTLIST ValidMidTierVersions

PLUG_IN CDATA #IMPLIED

START_VER CDATA #IMPLIED

END_VER CDATA #IMPLIED>

21.2.15.1 属性

PLUG_IN: 特定の中間層プラグインの参照を許可するオプションの属性です。指定されていない場合、このタグはコアOMSバージョンに適用されます。

START_VER: 要素の適用が開始されたバージョン(そのバージョンを含む。オプション)。

END_VER: 要素の適用が終了したバージョン(そのバージョンを含まない。オプション)。

21.2.15.2 要素

なし。

21.2.15.3 使用場所

Metric

CustomTableMapper

21.2.15.4 例

各ValidMidTierVersions要素には、少なくともSTART_VERまたはEND_VERの1つを指定する必要があります。

<Metric NAME="metric1" TYPE="RAW">

<TableDescriptor>

<CustomTableMapper REP_TABLE_NAME=”table1”>

<ValidMidTierVersions PLUG_IN=”DB” START_VER=”10.1” END_VER=”10.3”/>

<ColumnMapper METRIC_COLUMN=”col1” REP_TABLE_COLUMN=”col1_rep”/>

</CustomTableMapper>

<ColumnDescriptor NAME="c1" COLUMN_NAME="col1" TYPE="STRING"/>

<ColumnDescriptor NAME="c2" COLUMN_NAME="col2" TYPE="STRING"/>

</TableDescriptor>

<QueryDescriptor>

. . .

</QueryDescriptor>

</Metric>

'metric1'をリポジトリ表'table1'にマッピングするCustomTableMapper要素は、DB Pluginのバージョン10.1以上10.3未満でのみ適用されます。

<ValidMidTierVersions START_VER=”10.1.0.1”/>

MetricまたはCustomTableMapper内でこの要素が使用されている場合は、MetricまたはCustomTableMapperがOMSバージョン10.1.0.1以上でのみ適用されることがEMAgentに示されます。

<ValidMidTierVersions END_VER=”10.2”/>

MetricまたはCustomTableMapper内でこの要素が使用されている場合は、MetricまたはCustomTableMapperがOMSバージョン10.2未満(このバージョンを含まない)でのみ適用されることがEMAgentに示されます。

21.2.16 TableDescriptor

TableDescriptorは、タイプTABLEのメトリックのデータ構造を示します。

<!ELEMENT TableDescriptor (ColumnDescriptor+, CustomTableMapper*)>

<!ATTLIST TableDescriptor

TABLE_NAME CDATA #IMPLIED

SKIP_TARGET_COLUMN (TRUE | FALSE) "FALSE"

SKIP_METRIC_COLUMN (TRUE | FALSE) "FALSE"

SKIP_COLLTIME_PK (TRUE | FALSE) "FALSE"

SKIP_COLLTIME_COLUMN (TRUE | FALSE) "FALSE">

注意:
SKIP_COLLTIME_PK属性は非推奨です。この属性は、収集タイムスタンプを主キーの一部にできないことを指定します。同じ主キーを持つ古い行を、最新の行ですべて上書きすることを示すために使用されていました。現在では、リポジトリで表定義を単純に変更することでこの処理を行えるため、SKIP_COLLTIME_PKは不要になりました。

21.2.16.1 属性

TABLE_NAME: この属性は、収集されたデータがロードされるリポジトリ・データベース表を指定します。注意: RAWメトリックのみがこの属性を定義できます。TableDescriptorにCustomTableMapper要素が含まれている場合、TABLE_NAME属性を含まないようにする必要があります。

SKIP_TARGET_COLUMN: この属性はRAWメトリックのみに適用されます。TRUEに設定すると、ターゲットGUID列は生成されません。

TRUE | FALSE(デフォルト)

SKIP_METRIC_COLUMN: この属性はRAWメトリックのみに適用されます。TRUEに設定すると、メトリック名列は生成されません。

TRUE | FALSE(デフォルト)

SKIP_COLLTIME_PK: バージョン10.2で非推奨になりました。収集タイムスタンプを生成する必要がある場合はSKIP_COLLTIME_PKオプションを使用できますが、主キーとして追加されません。

TRUE | FALSE(デフォルト)

21.2.16.2 要素

ColumnDescriptor

CustomTableMapper

21.2.16.3 使用場所

Metric

21.2.16.4 例

TABLEメトリックには、TableDescriptorが定義されている必要があります。表の列を記述します。

<Metric NAME=”prop” TYPE=”TABLE”>

<Display>

<Label NLSID="example1_metric">Example1 Metric</Label>

</Display>

<TableDescriptor>

<ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="value" TYPE="STRING" />

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

</QueryDescriptor>

</Metric>

これは、TYPE=TABLEのメトリックを表すTableDescriptor要素の最も一般的な使用方法です。中間層バージョニング・サポートの詳細は、CustomTableMapperの例を参照してください。

<TableDescriptor TABLE_NAME="esm_collection">

この宣言は、RAWメトリックについてのみ有効です。この要素は、RAWメトリックの内部にesm_collection表の説明を含みます。

<TableDescriptor TABLE_NAME="mgmt_db_compatibility"

SKIP_COLLTIME_PK="TRUE" SKIP_COLLTIME_COLUMN="TRUE"

SKIP_METRIC_COLUMN="TRUE" SKIP_TARGET_COLUMN="TRUE">

SKIP属性は、RAWメトリックのみに適用できます。SKIP属性をTRUEに設定して明示的に指定されている場合を除いて、EMAgentは、行メトリックに対して自動的にTARGET_GUID列、METRIC_NAME列およびCOLLECTION_TIMESTAMP列を生成します。このサンプルのTableDescriptorは、デフォルトの列を省略することを明示的に要求しています。

21.2.17 ColumnDescriptor

ColumnDescriptor要素は、表の各列を説明します。また、エージェントでは、RAWメトリックに対する1レベルの表のネストがサポートされます。これにより、メトリックは、含んでいる行との関係でアップロードされた列のかわりに、データの表を戻すことができます。たとえば、データベース内でコストの高いSQL文のリストを戻すメトリックでは、そのSQL文の複数行の実行計画を戻す列を、ネストされた行メトリック列内で戻すことができます。

<!ELEMENT ColumnDescriptor (Display?, CategoryValue*, TableDescriptor?)>

<!ATTLIST ColumnDescriptor

NAME CDATA #REQUIRED

TYPE (NUMBER | STRING | RAW | CLOB | BLOB) "NUMBER"

IS_FILENAME (TRUE | FALSE) "FALSE"

IS_KEY (TRUE | FALSE) "FALSE"

TRANSIENT (TRUE | FALSE) "FALSE"

COMPUTE_EXPR CDATA #IMPLIED

REPLACE_FETCHED_VALUE (TRUE | FALSE) "FALSE"

COLUMN_NAME CDATA #IMPLIED

IS_LONG_TEXT (TRUE | FALSE) "FALSE"

IS_DATE (TRUE | FALSE) "FALSE"

STATELESS_ALERTS (TRUE|FALSE) "FALSE"

IS_TIMESTAMP (TRUE | FALSE) "FALSE"

NON_THRESHOLDED_ALERTS (TRUE | FALSE) ”FALSE”

KEYONLY_THRESHOLDS (TRUE | FALSE) ”FALSE”

RENDERABLE (TRUE | FALSE) ”TRUE”

HELP CDATA #IMPLIED>

21.2.17.1 属性

NAME: メトリック列の名前。

TYPE: データ型を指定します。

サポートされているタイプは次のとおりです。

a) NUMBER(デフォルト)

b) STRING

c) RAW: ネストされた表のサポート用です。ネストされた表であることを示すために、列をRAWとして定義できます。注意: 1レベルのみのネストされた表が可能です。

d) CLOB: ログ・ファイルなどの大きい文字データを保持します。

e) BLOB: バイナリ・データを保持します(.zipファイル、.tarファイルなど)。

IS_KEY: この列が主キーの場合はtrueに設定されます(戻された行のなかの行を一意に識別します)。戻された任意の2つの行の場合、キー列の値は同じにできません。そうでないと、主キー違反になります。注意: 最大5つの列をIS_KEY=TRUEとしてマークできます。キーとして定義されている列がない場合、キーのデフォルト値はNULLです(したがって、一度に1行のみを戻す必要があります)

TRUE | FALSE(デフォルト)

TRANSIENT: これはリポジトリにアップロードされません。レート・データの計算のみに使用されます。

TRUE | FALSE(デフォルト)

COMPUTE_EXPR: この属性は、列の値を計算するための式を指定します。表記述子であらかじめ定義されている列を計算に含めることができます。接頭辞'_'が付く列名は、列の前の値を示します。式の文法および使用方法の詳細は、例を参照してください。

事前定義済の特別な値:

a) __interval: 収集間隔。

b) __sysdate: 現在のシステム時間。

c) __GMTdate: グリニッジ標準時(GMT)での現在の時間。

d) __contains: 特定の文字列式に文字列式が存在するかどうかをテストします。

e) __beginswith: 特定の文字列式が、指定された文字列式で始まるかどうかをテストします。

f) __endswith: 特定の文字列式が、指定された文字列式で終わるかどうかをテストします。

g) __matches: 特定の文字列式が指定された文字列式と一致するかどうかをテストします。

h) __delta: 現在の値と前の値の差異を計算します。

i) __leadingchars: 指定された文字列の先頭の文字を戻します。

j) __trailingchars: 指定された文字列の末尾の文字を戻します。

k) __substringpos: 指定された文字列内でそのパターンが発生する位置を戻します。

l) __is_null: 式がNULLかどうかをテストします。

m) __length: 文字列式の長さを戻します。

n) __to_upper: 文字列を大文字に変換します。

o) __to_lower: 文字列を小文字に変換します。

p) __ceil: 識別子未満でない最小の整数値を戻します。

q) __floor: 識別子より大きくない最大の整数値を戻します。

r) __round: ゼロを境にして最も近い整数値に丸めます。

バージョン11より前は、COMPUTE_EXPR属性を持つ列が存在できるのは、fetchletによってすべての列が戻された後のみでした。バグ4869048の一部として、特殊なcompute expr列は、fetchletから値を取得する列との混在が許可されます。

COLUMN_NAME: この値は、メトリック・タイプがRAWの場合にデータベース列の識別に使用されます。

IS_LONG_TEXT: この値は、メトリックがRAWで列がダイジェスト・フォームになる場合にのみ使用されます。エージェントでは、メトリックの結果で長い文字列を繰り返し戻すことを要求するメトリックに対するサポートが提供されます。列がIS_LONG_TEXT="TRUE"とマークされている場合、エージェントは、ダイジェストに文字列をマッピングする行をMGMT_LONG_TEXT表に送信し、その後でダイジェスト値をリポジトリへのデータとして送信するだけです。

TRUE | FALSE(デフォルト)

IS_DATE: この値は、メトリックがRAWで列が日付型の場合のみ使用されます。

TRUE | FALSE(デフォルト)

STATELESS_ALERTS: この属性がTRUEに設定されている場合、この列のアラートに対応するクリアが存在しないことをEnterprise Managerに示します。これにより、この列のアラートをユーザーが手動でクリアできるかどうかをUIによって決定できます。

TRUE | FALSE(デフォルト)

IS_TIMESTAMP: この列の値は、この行の収集時間として使用されます。TRUEに設定されている場合は、この列の値をyyyy-MM-dd HH:mm:ss z形式(たとえば2003-07-30 08:41:05 PST)で指定する必要があります。有効なタイムゾーンのリストは$ORACLE_HOME/sysman/emd/supportedtzs.lstファイルに記載されています。

HELP: 使用しません。

IS_FILENAME: TRUEに設定された場合は、列の値が、送信の必要な実際の内容を含むファイル名であることを示します。IS_FILENAME属性はCLOB/BLOB列型のみに有効です。

NON_THRESHOLDED_ALERTS: この属性は、(たとえば、アラートを生成したサーバーを介して)メトリック列に対するしきい値条件なしで、そのメトリック列のアラートが存在する可能性があることを示すために使用します。

TRUE | FALSE(デフォルト)

KEYONLY_THRESHOLDS: この属性がTRUEに設定された場合は、すべてのメトリック行、およびKeyColumn要素が必要な列のすべてのCondition要素に、条件を適用できません。

TRUE | FALSE(デフォルト)

RENDERABLE: この属性がFALSEの場合は、この列の値がエンジンによって生成され、ユーザーが使用できるように暗号化またはランダム化されていることを示します。UIではこの値は表示されず、ユーザーがこの値のしきい値を設定することはできません。

TRUE(デフォルト)| FALSE

REPLACE_FETCHED_VALUE: この属性が適用されるのは、COMPUTE_EXPRが設定されている場合に、内部計算式に対してのみです(前述を参照)。設定されている場合、これは、fetchletによって戻される対応する列のかわりに計算式値を使用するようにエージェントに伝えます。設定されていない場合、計算済値に場所をあけるために、メトリック・エンジンはfetchletによって戻される既存のすべての値を右シフトします。

TRUE | FALSE(デフォルト)

21.2.17.2 要素

Display

CategoryValue

TableDescriptor

21.2.17.3 使用場所

TableDescriptor

21.2.17.4 例

それぞれの列は、列の名前およびデータ型を指定する必要があります。列にはキー列としてタグを付けることができます。これらの列の値は、キー列以外の列に戻される値を特定します。

たとえば、上位10のプロセスのメトリックでは、プロセス名がキー列になり、常駐メモリー・サイズ、CPU、使用時間が値列になります。

<ColumnDescriptor NAME="ciscoMemoryPoolName" TYPE="STRING" IS_KEY="TRUE">

<Display>

<Label NLSID="cisco_mem_pool_name">Memory Pool Name</Label>

</Display>

</ColumnDescriptor>

これは、ColumnDescriptor要素の最も一般的な使用方法で、'ciscoMemoryPoolName'はメトリックのキー列です。この列の値は'STRING'です。ColumnDescriptorに含まれている場合のオプションのDisplay要素は、UI LabelとColumnを関連付けます。

<ColumnDescriptor NAME="pgScan" TYPE="NUMBER" IS_KEY="FALSE" TRANSIENT="TRUE" HELP="NO_HELP"/>

属性'TRANSIENT'は、列が内部での計算のみに使用され、リポジトリにアップロードされないことを示しています。

<ColumnDescriptor NAME="property" COLUMN_NAME="property" TYPE="STRING" IS_KEY="TRUE" HELP="NO_HELP"/>

'COLUMN_NAME'属性は、データベース列を識別するためにRAWメトリック内で使用されます。

<ColumnDescriptor NAME="log_file_message" TYPE="STRING" IS_KEY="FALSE" IS_LONG_TEXT="TRUE"/>

'IS_LONG_TEXT'属性がTRUEに設定されると、long値を要求することがEMAgentに示されます。

<ColumnDescriptor NAME="load_timestamp" COLUMN_NAME="load_timestamp" TYPE="STRING" IS_DATE="TRUE" IS_KEY="FALSE"/>

この例は、RAWメトリックの'load_timestamp'列に日付書式の値を使用することを定義しています。

<ColumnDescriptor NAME="log_file_match_count" TYPE="NUMBER" IS_KEY="FALSE" STATELESS_ALERTS="TRUE"/>

この定義は、列のアラート'log_file_match_count'が、対応するクリアを持たないことを示しています。UIは、このデータのアラートを手動でクリアするオプションをユーザーに提供できます。

TableDescriptorの例は、ColumnDescriptor要素を使用する表メトリックを示しています。

注意:
ColumnDescriptorをキーとタイムスタンプ列の両方にすることは無効です。

CLOB/BLOBはRAWメトリック内でのみ有効です。TYPEがCLOBまたはBLOBに設定されている場合、ColumnDescriptorもIS_FILENAME属性をTRUEに設定できます。この場合、列値は、列値自体ではなく、内容を送信する必要があるファイルの名前になります。CLOB/BLOB列の場合、リポジトリ表内の宛先列も、CLOB/BLOBタイプにする必要があります。

計算式のサポート:

サポートされている文法:

expression := (cond_expr | (cond_expr ? cond_expr : cond_expr)

cond_expr := (string_expr |

(string_expr == string_expr) |

(string_expr < string_expr) |

(string_expr > string_expr) |

(string_expr <= string_expr) |

(string_expr >= string_expr) |

(string_expr __contains string_expr) |

(string_expr __beginswith string_expr) |

(string_expr __endswith string_expr) |

(string_expr __matches string_expr) |

(string_expr __delta string_expr))

string_expr := (simple_expr |

(simple_expr __leadingchars simple_expr) |

(simple_expr __trailingchars simple_expr) |

(simple_expr __substringpos simple_expr))

simple_expr := (term |

(simple_expr + term ) |

(simple_expr - term) )

term := (unary_expr |

(term * unary_expr ) |

(term / unary_expr ) )

unary_expr := (factor |

(__is_null factor) |

(__length factor) |

(__to_upper factor) |

(__to_lower factor) |

(__ceil factor) |

(__floor factor) |

(__round factor) )

factor := ( identifier |

string_literal |

number |

'(' expression ')' )

string_literal := '\'' (character | "\\'" )* '\''

使用方法:

<ColumnDescriptor NAME="pgScan" TYPE="NUMBER" />

<ColumnDescriptor NAME="pgScanRate" TYPE="NUMBER" IS_KEY="FALSE" COMPUTE_EXPR="(pgScan-_pgScan)/__interval"/>

列の値は、指定された計算式を使用して計算されます。列の値は、'pgScan'列の現在の値、同じ列の前の値('_pgScan')および収集間隔を使用して計算されます。注意: いずれかの列がその値をCOMPUTE_EXPRで使用できるようになるには、'pgScan'列を定義する必要があります。

<ColumnDescriptor NAME="baseDir" TYPE="STRING" />

<ColumnDescriptor NAME="component" TYPE="STRING" COMPUTE_EXPR="'/httpd'" />

<ColumnDescriptor NAME="full_path" TYPE="STRING" COMPUTE_EXPR="baseDir + component + '/egs/log/' "/>

列full_pathの値は'full_path' is ”<baseDir>/httpd/egs/log/”です(<baseDir>は列baseDirの値です)。

<ColumnDescriptor NAME="value1" TYPE="NUMBER" COMPUTE_EXPR="Col __contains 'ay'" />

<ColumnDescriptor NAME="value2" TYPE="NUMBER" COMPUTE_EXPR="Col __beginswith 'Mon'" />

<ColumnDescriptor NAME="value3" TYPE="NUMBER" COMPUTE_EXPR="Col_ _endswith 'day'" />

<ColumnDescriptor NAME="value4" TYPE="NUMBER" COMPUTE_EXPR="Col __matches 'Sun*'" />

このメトリックのColの値がSundayの場合、COMPUTE_EXPRの結果は次のとおりです。

value1 = 1

value2 = 0

value3 = 1

value4 = 1

<TableDescriptor>

<ColumnDescriptor NAME="parse_str" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="startpos" TYPE="NUMBER" COMPUTE_EXPR="parse_str __substringpos '#D1'" />

<ColumnDescriptor NAME="num_trailing" TYPE="NUMBER" COMPUTE_EXPR="(__length parse_str) - startpos" />

<ColumnDescriptor NAME="trim_str" TYPE="STRING" COMPUTE_EXPR="parse_str__trailingchars num_trailing" />

<ColumnDescriptor NAME="endpos" TYPE="NUMBER" COMPUTE_EXPR="trim_str __substringpos '#E1'" />

<ColumnDescriptor NAME="result_str" TYPE="STRING" COMPUTE_EXPR="trim_str __leadingchars endpos" />

</TableDescriptor>

このサンプルのTableDescriptorは、特定の文字列から部分文字列を抽出するための単純な方法を示しています。parse_strで表されるデータの形式は次のとおりです。

#A1 10

#B1 20

#C1 30

#D1 40

#E1 50

#F1 60

result_strの値は#D1=40です。

21.2.18 CategoryValue

CategoryValue要素は、特定の分類におけるメトリック、列または条件のカテゴリを示します。CategoryValueは、Metric要素に対して定義され、そのメトリックに含まれるすべてのColumnDescriptorに対して有効です。ColumnDescriptorに対して定義されている場合、その列には、そのメトリックに対する指定および定義の結合を上書きするカテゴリ値が含まれます。

次のMetricCategoriesはMetricClass, 'FUNCTIONAL'に事前定義されています。

a) FAULT: コンポーネントの機能停止、または一部のコンポーネントやユーザーが処理を正常に実行できないことを示すエラーの発生を示すために使用できるメトリック。例: AlertLog – アーカイバ・ハング

b) WORKLOAD_VOLUME: システムで実行されているユーザーまたはバッチ・ジョブに比例して発生するシステムのワークロードを取得するメトリック。通常これは、処理される作業の量を示しています。例: ユーザー・コール(毎秒)

c) WORKLOAD_TYPE: 需要とは無関係にシステム上のワークロードのタイプを取得するメトリック。通常これは、処理される作業の種類を示しています。例: 論理読取り(トランザクション単位)

d) PERFORMANCE: システムのパフォーマンスを測定するために分類できるメトリック。通常これは、システムがいかによく動作しているかを示しています。例: データベース・レスポンス(毎秒)

e) CAPACITY: 固定リソースの使用量を測定するメトリック。例: CPU使用率(秒単位)

f) CONFIGURATION: 推奨されているベストプラクティスの構成と照合してターゲットの構成を確認するメトリック。

g) SECURITY: システムのセキュリティ面に関係するメトリック。

<!ELEMENT CategoryValue EMPTY>

<!ATTLIST CategoryValue

CLASS CDATA #REQUIRED

CATEGORY_NAME CDATA #REQUIRED>

21.2.18.1 属性

CLASS: メトリック・クラスの名前。

CATEGORY_NAME: メトリック・カテゴリの名前。

21.2.18.2 要素

なし。

21.2.18.3 使用場所

Metric

ColumnDescriptor

Condition

21.2.18.4 例

<TargetMetadata TYPE="example3" META_VER="2.0">

<MetricClass NAME=”EvaluationCost” NLSID=”id_for_eval_cost_class”>

<MetricCategory NAME=”CHEAP” NLSID=”id_for_cheap_cat”/>

<MetricCategory NAME=”MEDIUM” NLSID=”id_for_medium_cat”/>

<MetricCategory NAME=”EXPENSIVE” NLSID=”id_for_expensive_cat”/>

</MetricClass>

<Metric NAME=”metric1” TYPE=”TABLE”>

<CategoryValue Class=”EvaluationCost” CATEGORY_NAME=”CHEAP”/>

. . .

</Metric>

. . .

</TargetMetadata>

この例は、メトリックのCategoryValueの使用方法を示しており、metric1は、評価コストの低いメトリックです。

<Metric NAME="FileSystems" TYPE="TABLE" >

<CategoryValue CLASS="FUNCTIONAL" CATEGORY="WORKLOAD_VOLUME" />

<TableDescriptor>

<ColumnDescriptor NAME="FileSystem" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="totalSpace" TYPE="NUMBER" >

<CategoryValue CLASS="FUNCTIONAL" CATEGORY="CAPACITY" />

</ColumnDescriptor>

<ColumnDescriptor NAME="diskUsedPct" TYPE="NUMBER />

<TableDescriptor>

....

</Metric>

このサンプルでは、列totalSpaceにCAPACITYというCategoryValueが設定されており、これによってメトリックに関連付けられているWORKLOAD_VOLUMEというCategoryValueが上書きされます。

21.2.19 CustomTableMapper

CustomTableMapper要素は、中間層ベースのバージョニング・プロジェクトの一部で、カスタム(RAW)・メトリックが中間層のバージョンに基づいて宛先の表を変更できるようにします。

RAWメトリックのTableDescriptorには、中間層バージョンのセットごとに1つずつ、複数のCustomTableMapperメトリックを含めることができます。各CustomTableMapperは、TableDescriptorの列のリポジトリ表および列マッピングを提供します。

<!ELEMENT CustomTableMapper (ValidMidTierVersions*, ColumnMapper*)>

<!ATTLIST CustomTableMapper

REP_TABLE_NAME CDATA #REQUIRED>

21.2.19.1 属性

REP_TABLE_NAME: メトリックの内容をアップロードする必要がある表の名前を示します。

21.2.19.2 要素

ValidMidTierVersions

ColumnMapper

21.2.19.3 使用場所

TableDescriptor

CustomTableMapper

21.2.19.4 例

<TableDescriptor>

<ColumnDescriptor NAME="c1" COLUMN_NAME="col1" TYPE="STRING"/>

<ColumnDescriptor NAME="c2" COLUMN_NAME="col2" TYPE="STRING"/>

<CustomTableMapper REP_TABLE_NAME=”table1”>

<ValidMidTierVersions PLUG_IN=”DB” START_VER=”10.1” END_VER=”10.3”/>

<ColumnMapper METRIC_COLUMN=”col1” REP_TABLE_COLUMN=”col1_rep”/>

</CustomTableMapper>

</TableDescriptor>

このサンプルは、中間層ベースのバージョニングを示しています。TableDescriptor要素にはTABLE_NAME属性を含めることはできません。このサンプルは、バージョン10.1以上から10.3未満の中間層に対するリポジトリ表'table1'へのメトリックのマッピングを示しています。メトリック列'col1'は、リポジトリ表'table1'に'col1_rep'をマップします。

ValidMidTierVersionsの例も参照してください。

21.2.20 ColumnMapper

ColumnMapper要素は、CustomTableMapper要素の一部で、ColumnDescriptorとそのデータの行き先となるリポジトリ列の間のマッピングを記述します。

ColumnMapperが含まれていることで、特定のリポジトリ表内の列のマッピングが提供され、その列が表内に必要であることが示されます。特定のバージョンのリポジトリに列をアップロードしないことを示すには、その列に対してColumnMapperを使用しないことが必要です。

<!ELEMENT ColumnMapper EMPTY>

<!ATTLIST ColumnMapper

METRIC_COLUMN CDATA #REQUIRED

REP_TABLE_COLUMN CDATA #REQUIRED>

21.2.20.1 属性

METRIC_COLUMN: この要素が適用されるColumnDescriptorの名前

REP_TABLE_COLUMN: このデータの行き先となるデータベース表の列名。

21.2.20.2 要素

なし。

21.2.20.3 使用場所

CustomTableMapper

21.2.20.4 例

CustomTableMapperの例を参照してください。

21.2.21 QueryDescriptor

問合せ記述子によって、フレームワークはfetchletを見つけることができ、ターゲットからパフォーマンス・データ値を取得するために問合せ情報を渡すことができます。fetchletは、EMAgentにはわかっている既知のIDによって識別できます。fetchletに渡されるプロパティを含むこともできます。

<!ELEMENT QueryDescriptor (ValidIf*, Property*) >

<!ATTLIST QueryDescriptor

FETCHLET_ID CDATA #REQUIRED

NEED_CHARSET_CONVERT (TRUE | FALSE) "TRUE"

REMOTE (TRUE | FALSE) "FALSE"

ON_TARGET (TRUE | FALSE) "FALSE"

>

21.2.21.1 属性

FETCHLET_ID: 使用するfetchletの(EMAgentで認識されている)IDを指定します。この属性は、$ORACLE_HOME/lib/fetchlets.regファイルからの要素を指定する必要があります。

NEED_CHARSET_CONVERT: メトリック結果が正しいUTF8エンコーディングの場合、このフラグをFALSEに設定してEMAgentによる文字変換が行われないようにする必要があります。

TRUE(デフォルト)| FALSE

REMOTE: この属性により、ターゲットがローカルかリモートかに基づいて、エージェントは適切なQueryDescriptorを選択できます。REMOTE=falseである単一のQueryDescriptorは、同じ問合せ記述子がローカル・ターゲットとリモート・ターゲットに使用されることを示しています。REMOTE=trueである単一のQueryDescriptorは、ターゲットがリモートである場合のみ問合せ記述子が使用され、ターゲットがリモートの場合はスキップされることを示しています。2つあるQueryDescriptorのうち一方がREMOTE=trueである場合、もう一方はREMOTE=falseである必要があります。

TRUE | FALSE(デフォルト)

ON_TARGET: TRUEの値は、メトリックがどこにあってもターゲット上で評価する必要があることを示しています。ローカル・ターゲットの場合、この属性は無視されます。リモート・ターゲットの場合、メトリックはSSH上で評価されます。

TRUE | FALSE(デフォルト)

21.2.21.2 要素

ValidIf

Property

21.2.21.3 使用場所

Metric

DynamicProperties

21.2.21.4 例

関連付けられている問合せ記述子には、メトリックの値を収集するのに使用できるメタデータが含まれます。例: SQL問合せ。

<TargetMetadata TYPE="example1" META_VER="2.0">

<Metric NAME=”prop” TYPE=”TABLE”>

<TableDescriptor>

<ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE" />

<ColumnDescriptor NAME="value" TYPE="STRING" />

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

</QueryDescriptor>

</Metric>

</TargetMetadata>

この単純な例は、メトリックで使用され、'OS'というfetchletに依存してプロパティ'hostname'を返す問合せ記述子を示しています。

<TargetMetadata TYPE="example1" META_VER="2.0">

<Metric NAME=”prop” TYPE=”TABLE”>

. . .

</Metric>

<InstanceProperties>

<DynamicProperties NAME="VersionAndLocation" FORMAT="ROW" PROP_LIST="OS;OracleHome;Version">

<QueryDescriptor FETCHLET_ID="OSLineToken">

<Property NAME="ENVEmdOS" SCOPE="SYSTEMGLOBAL">_emdOS</Property>

<Property NAME="ENVVersion" SCOPE="SYSTEMGLOBAL">_emdVersion</Property>

<Property NAME="ENVORACLE_HOME" SCOPE="SYSTEMGLOBAL">emdRoot</Property>

</QueryDescriptor>

</DynamicProperties>

</InstanceProperties>

</TargetMetadata>

この例は、QueryDescriptorを使用したDynamicProperties要素の評価を示しています。

21.2.22 Property

fetchletに渡される情報を示します。

<!ELEMENT Property (#PCDATA)>

<!ATTLIST Property

NAME CDATA #REQUIRED

SCOPE (GLOBAL | INSTANCE | USER | SYSTEMGLOBAL | ENV | HOST | CACHE) "GLOBAL"

OPTIONAL (TRUE | FALSE) "FALSE">

Propertyの値は次のように解決されます。

1. 指定されたスコープ内で値が検索されます。

2. 検索された値に含まれるそれぞれの潜在的なインスタンス化(つまり%<varname>%)について、次のようにvarnameが検索されます。

a.プロパティ値自体(つまり以前のプロパティの1つ)の内部

b.インスタンス・プロパティ内

c.システム・グローバル・スコープ(emd.properties)内

d.自動プロパティについて値がチェックされます。

ターゲットに対して、次の自動プロパティが定義されます。

1. NAME - ターゲット名の代替

2. TYPE - ターゲット・タイプの代替

3. DISPLAY_NAME – ターゲットの表示名を代替します

4. TYPE_DISPLAY_NAME – タイプの表示名を代替します

5. GUID – GUIDを代替します

注意:
すべての検索では大文字/小文字が区別されます。

21.2.22.1 属性

NAME: プロパティの名前。

SCOPE: プロパティの値の解決方法を定義します。

SCOPEに対してサポートされている値は次のとおりです。

a) GLOBAL(デフォルト): プロパティは、ターゲット・タイプ定義XMLファイル内で解決される必要があります。

b) INSTANCE: プロパティは検出によって解決される必要があります。この場合は、PCDATAを検出XMLファイルで設定されたプロパティのNAMEにする必要があります。

c) USER: プロパティはコール元(収集者または対話するエンドユーザー)によって解決されます。この場合は、PCDATAを、コール元(対話するユーザーの場合)にプロンプトを表示する際に使用するプロパティの名前にする必要があります。

d) SYSTEMGLOBAL: emd.propertiesを使用してプロパティを解決します。

e) ENV: 環境変数を使用してプロパティを解決します。

f) HOST: そのEMAgentのhostターゲットのインスタンス変数として、プロパティを解決する必要があります。例: OSプロパティ

g) CACHE: 値はメトリックの前の評価から取得する必要があります。前の評価の中で戻されるどの列を指定することもでき、これは単一行メトリックまたは非キー・メトリックにのみ適用されます。

OPTIONAL: fetchletに対して提供された場合に使用可能にする必要のないプロパティを呼び出すために使用します。fetchletに接続する前に、EMAgentは、オプション以外のすべてのプロパティに対して有効な値を検索できることを検証します。

TRUE | FALSE(デフォルト)

21.2.22.2 要素

プロパティの値を表す文字データが含まれます。

21.2.22.3 使用場所

QueryDescriptor

PushDescription

21.2.22.4 例

<Property NAME="perlBin" SCOPE="SYSTEMGLOBAL">perlBin</Property>

'perlBin'プロパティには'SYSTEMGLOBAL'スコープが含まれており、これは、emd.propertiesファイルを使用してプロパティが解決されることを意味します。

<Property NAME="delimiter" SCOPE="GLOBAL">|</Property>

'delimiter'プロパティには'GLOBAL'スコープが含まれています。

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

'hostname'には'INSTANCE'が含まれており、これは、値が検出によって解決されることを意味します。値'NAME'は、検出XMLファイル内のフィールドと一致する必要があります。

<Property NAME="SNAPSHOT_TYPE" SCOPE="USER">SNAPSHOT_TYPE</Property>

このプロパティはコール元によって解決されます。'SNAPSHOT_TYPE'は、コール元にプロンプトを表示する際のプロパティの名前です。

<Property NAME="ENVNMUPM_TIMEOUT" OPTIONAL="TRUE" SCOPE="SYSTEMGLOBAL">NMUPM_TIMEOUT</Property>

プロパティ'ENVNMUPM_TIMEOUT'は、OPTIONALプロパティとして識別されています。OPTIONAL以外のすべてのプロパティは、fetchletをコールする前にEMAgentによって検証される必要があります。

Property要素の使用方法は、

QueryDescriptor、ValidIf、TargetMetadataの例を参照してください。

21.2.23 Label

UIに表示されるラベルを表します。

<!ELEMENT Label (#PCDATA)>

<!ATTLIST Label

NLSID CDATA #REQUIRED>

21.2.23.1 属性

NLSID: リソース・バンドル内で文字列を検索するのに使用するIDが含まれます。

21.2.23.2 要素

文字データ。

21.2.23.3 使用場所

Display

21.2.23.4 例

この要素は、Display要素内に存在する必要があります。

<Label NLSID="host_load_cpuLoad">Run Queue Length (5 minute average)</Label>

この要素は、Display要素内で定義され、表示するラベルを表します。

Displayの例を参照してください。

21.2.24 ShortName

ShortNameは、メトリック表示名を短縮したものです。長さを12文字未満にする必要があります。

<!ELEMENT ShortName (#PCDATA)>

<!ATTLIST ShortName

NLSID CDATA #REQUIRED>

21.2.24.1 属性

NLSID: リソース・バンドル内で文字列を検索するのに使用するIDが含まれます。

21.2.24.2 要素

文字データ。

21.2.24.3 使用場所

Display

21.2.24.4 例

<ShortName NLSID="host_load_cpuLoad_short">CPU Load (5min)</ShortName>

この要素は、Display要素内で定義され、表示する短縮名を表します。

Displayの例を参照してください。

21.2.25 Icon

使用するアイコンを表します。

<!ELEMENT Icon (#PCDATA)>

<!ATTLIST Icon

GIF CDATA #IMPLIED>

21.2.25.1 属性

GIF: 表示する画像の名前およびファイル・パスが含まれます。

21.2.25.2 要素

文字データ。

21.2.25.3 使用場所

Display

21.2.25.4 例

Displayの例を参照してください。

21.2.26 Description

表示されるエンティティの説明を保持します。

<!ELEMENT Description (#PCDATA)>

<!ATTLIST Description

NLSID CDATA #IMPLIED>

21.2.26.1 属性

NLSID: リソース・バンドル内で文字列を検索するために使用するIDが含まれます。

21.2.26.2 要素

文字データ。

21.2.26.3 使用場所

Display

21.2.26.4 例

Displayの例を参照してください。

21.2.27 Unit

表示されるデータの単位情報を保持します。

いくつかの標準単位および単位のNLSIDがサポートされています。後述する標準単位に対して、適切なNLS IDおよび表示名を使用してください。システムでサポートされるこれらの単位(em__sys__で始まるNLSID)の変換は、システム・レベルで行われるため、ターゲット・タイプごとに変換する必要がありません。

サポートされている単位は次のとおりです。

標準パーセント: 値が0から100%のメトリックに使用します。

NLSID: "em__sys__standard_percent"

表示: %

使用方法: <Unit NLSID="em__sys__standard_percent">%</Unit>

汎用パーセント: 値が正のパーセントにも負のパーセントにもなる可能性があるメトリックに使用します(-50%や200%など)。

NLSID: "em__sys__generic_percent"

表示: %

使用方法: <Unit NLSID="em__sys__generic_percent">%</Unit>

<!ELEMENT Unit (#PCDATA)>

<!ATTLIST Unit

NLSID CDATA #IMPLIED>

21.2.27.1 属性

NLSID: リソース・バンドル内で文字列を検索するために使用するIDが含まれます。

21.2.27.2 要素

文字データ。

21.2.27.3 使用場所

Display

21.2.27.4 例

Displayの例を参照してください。

21.2.28 MonitoringMode

MonitoringMode要素は、データ収集のメディエータを示します。TargetMetadata要素内にこの要素がある場合は、そのターゲットがクラスタ・タイプであることを示します。クラスタ・タイプには、すべてのクラスタ・タイプ・ターゲット・エージェントで一貫性のあるデータ収集を行うためのメディエーションが必要です。クラスタ・ターゲットは、OMSメディエート、エージェント・メディエートまたはリポジトリ・メディエートすることが可能です。MEDIATOR属性はメディエーションを指定します。CLUSTERDESCRIPTOR属性は、エージェントで必要なクラスタ・インタフェースを実装する共有ライブラリを指定します。これは、AgentMediatedクラスタのみに適用されます。

<!ELEMENT MonitoringMode (ValidIf*)>

<!ATTLIST MonitoringMode

MEDIATOR (AgentMediated|OMSMediated) #REQUIRED

CLUSTERDESCRIPTOR CDATA #IMPLIED>

21.2.28.1 属性

MEDIATOR: 使用するメディエータを指定します。

サポートされている値は次のとおりです。

a) AgentMediated

b) OMSMediated

CLUSTERDESCRIPTOR: クラスタのタイプを示します。エージェント・メディエーションのみに適用されます。

21.2.28.2 要素

ValidIf

21.2.28.3 使用場所

TargetMetadata

21.2.28.4 例

<TargetMetadata META_VER=”2.0” TYPE=”example1” CATEGORY_PROPERTIES=”OS;OSVersion”>

. . .

<MonitoringMode MEDIATOR=”OMSMediated”>

<ValidIf>

<CategoryProp NAME=”OSVersion” CHOICES=”5.8”/>

<CategoryProp NAME=”OSVersion” CHOICES=”5.9”/>

</ValidIf

</MonitoringMode>

. . .

</TargetMetadata>

この例は、ターゲット'example1がクラスタ・タイプであり、OSVersionが5.8および5.9の場合のみOMSメディエートされることを示しています。他のバージョンの場合は、通常のターゲットのように動作します。すべての管理エージェントはターゲットをモニターします。この要素が存在しない場合、ターゲットは通常のターゲットになります。

21.2.29 AltSkipCondition

エージェントには、接続障害によるメトリック・エラーの生成を抑えるために、停止中であることが認識されているターゲットのメトリックの評価をスキップするロジックがあります。Responseメトリックの評価でエラーが発生した場合や、ResponseのStatus条件にクリアされていない重大度がある場合は、そのたびにメトリックがスキップされます。ターゲットがResponseのStatus列以外の条件でメトリックの評価を停止する必要がある場合は、AltSkipCondition要素を作成してこれを指定することができます。

<!ELEMENT AltSkipCondition EMPTY >

<!ATTLIST AltSkipCondition

METRIC CDATA #REQUIRED

COLUMN CDATA #REQUIRED

ASSOC_TARGET CDATA #IMPLIED>

21.2.29.1 属性

METRIC: 結果メトリックの名前

COLUMN: 列の名前

ASSOC_TARGET: 関連付けられているターゲット内の条件を指定するのに使用できます。

21.2.29.2 要素

なし。

21.2.29.3 使用場所

TargetMetadata

21.2.29.4 例

<TargetMetadata TYPE="example1" META_VER="2.0">

<AltSkipCondition METRIC=”metric1” COLUMN=”Status”/>

<Metric NAME=”Response” TYPE=”TABLE”>

<TableDescriptor>

<ColumnDescriptor NAME="Status" TYPE="NUMBER" IS_KEY="FALSE"/>

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="hostname" SCOPE="INSTANCE">NAME</Property>

</QueryDescriptor>

</Metric>

<Metric NAME=”metric1” TYPE=”TABLE”>

<TableDescriptor>

<ColumnDescriptor NAME="Status" TYPE="NUMBER" IS_KEY="FALSE"/>

</TableDescriptor>

<QueryDescriptor FETCHLET_ID="OS">

<Property NAME="homedir" SCOPE="INSTANCE">home</Property>

</QueryDescriptor>

</Metric>

</TargetMetadata>

この例は、Responseメトリックの評価でエラーが発生した場合や、ResponseのStatus列にクリアされていないの重大度がある場合に、その都度メトリック評価がスキップされるターゲットを示しています。それ以外にも、メトリック評価は、'metric1'メトリックのStatus列でエラーまたはクリアされていない重大度が発生した場合にスキップされます。

<AltSkipCondition METRIC=”Response” COLUMN=”State” ASSOC_TARGET=”t2”/>

この例の'example1'ターゲット・タイプが別のターゲット・タイプに関連付けられているとします。他のターゲット・タイプのResponseメトリックの'State'列に基づいてexample1のメトリックの評価をスキップするために、AltSkipConditionを使用できます。

アソシエーション't2'はexample1のtargets.xmlファイルで定義する必要があります。

21.2.30 CredentialInfo

資格証明タイプは、資格証明のセットのメタデータです。資格証明タイプは、資格証明(CredentialTypeColumns)のコンポーネントを記述し、これはキーなどです。場合によっては、CredentialTypeは既存のCredentialType (このターゲット・タイプや他のターゲット・タイプにおける)で構成できます。

CredentialSetは、特定のターゲットに適用されるCredentialTypeのインスタンスです。値がターゲットのインスタンス・プロパティにマップされている資格証明セットを監視することは特に重要です。

<!ELEMENT CredentialInfo (CredentialType*, CredentialSet*)>

21.2.30.1 属性

なし。

21.2.30.2 要素

CredentialType

CredentialSet

21.2.30.3 使用場所

TargetMetadata

21.2.30.4 例

<TargetMetadata TYPE="example1" META_VER="2.0">

. . .

<CredentialInfo>

<CredentialType NAME="DBCreds" >

<CredentialTypeColumn NAME="DBUsername" IS_KEY="true" />

<CredentialTypeColumn NAME="DBPassword" />

<CredentialTypeColumn NAME="DBRole" />

</CredentialType>

<CredentialSet NAME="DBCredsMonitoring" CREDENTIAL_TYPE="DBCreds" USAGE="monitoring">

<CredentialSetColumn TYPE_COLUMN="DBUsername" SET_COLUMN="UserName" />

<CredentialSetColumn TYPE_COLUMN="DBPassword" SET_COLUMN="password" />

<CredentialSetColumn TYPE_COLUMN="DBRole" SET_COLUMN="role" />

</CredentialSet>

<CredentialSet NAME="DBCredsSysdba" CREDENTIAL_TYPE="DBCreds" USAGE="monitoring">

<CredentialSetColumn TYPE_COLUMN="DBUsername" SET_COLUMN="SYSDBAUserName" />

<CredentialSetColumn TYPE_COLUMN="DBPassword" SET_COLUMN="SYSDBApassword" />

<CredentialSetColumn TYPE_COLUMN="DBRole" SET_COLUMN="SYSDBArole" />

</CredentialSet>

</CredentialInfo>

. . .

</TargetMetadata>

CredentialInfoにはCredentialType要素およびCredentialSet要素が含まれる場合があります。この例はその場合に該当します。ターゲット・タイプ'example1'は'DBCreds'、'DBCredsMonitoring'および'DBCredsSysdba'資格証明と関連付けられています。

21.2.31 CredentialType

CredentialType要素には、コンポーネント列の(そのうち1つはキー)で構成されているか、または他の事前定義済資格証明タイプのコンポジットとして、タイプの説明が含まれます。

<!ELEMENT CredentialType (Display?, (CredentialTypeColumn|CredentialTypeRef)+)>

<!ATTLIST CredentialType

NAME CDATA #REQUIRED>

21.2.31.1 属性

NAME: CredentialTypeの一意の名前

21.2.31.2 要素

Display

CredentialTypeColumn

CredentialTypeRef

21.2.31.3 使用場所

CredentialInfo

21.2.31.4 例

CredentialTypeには、オプションのDisplay要素を含めることができます。Display要素は、CrendentialType、および1つ以上のCredentialTypeColumnもしくはCredentialTypeRefのどちらかの表示特性を指定します。

<CredentialType NAME="HostCreds" >

<CredentialTypeColumn NAME="HostUserName" IS_KEY="TRUE">

<CredentialTypeColumn NAME="HostPassword">

</CredentialType>

このサンプルの'HostCreds'はCredentialTypeとして宣言されています。CredentialInfoの詳細な例を参照してください。

21.2.32 CredentialTypeColumn

CredentialTypeは資格証明列のセットとして定義されます。それぞれのCredentialTypeColumnは、この列に使用できる値のリストを提供します。

<!ELEMENT CredentialTypeColumn (Display?, CredentialTypeColumnValue*)>

<!ATTLIST CredentialTypeColumn

NAME CDATA #REQUIRED

IS_KEY (TRUE|FALSE) "FALSE">

21.2.32.1 属性

NAME: 列の名前

IS_KEY: この資格証明タイプで複数のセットが作成されている場合、この列によって各セットは他のセットと区別されます。

TRUE | FALSE(デフォルト)

21.2.32.2 要素

Display

CredentialTypeColumnValue

21.2.32.3 使用場所

CredentialType

21.2.32.4 例

CredentialTypeColumnには、CredentialTypeColumn要素およびオプションのCredentialTypeColumnValue要素の表示特性を指定する、オプションのDisplay要素を含めることができます。

<CredentialTypeColumn NAME="HostUserName" IS_KEY="TRUE">

<Display FOR_SUMMARY_UI="TRUE">

<Label NLSID="host_username">UserName</Label>

</Display>

</CredentialTypeColumn>

HostUserName列は、(ユーザー名、パスワード)資格証明タイプのキーです。この列はUIの縮小バージョンで表示され、これに関連付けられているラベルは'UserName'です。CredentialInfoの詳細な例を参照してください。

21.2.33 CredentialTypeColumnValue

CredentialTypeColumnValueは、CredentialTypeColumnに使用できる値を保持します。

<!ELEMENT CredentialTypeColumnValue (#PCDATA)>

<!ATTLIST CredentialTypeColumnValue

IS_DEFAULT (TRUE|FALSE) "FALSE">

21.2.33.1 属性

IS_DEFAULT: リスト内のデフォルト値の場合はTRUEに設定されます。

TRUE | FALSE(デフォルト)

21.2.33.2 要素

値を表す文字データ

21.2.33.3 使用場所

CredentialTypeColumn

21.2.33.4 例

<CredentialType NAME="DBCreds" >

<CredentialTypeColumn NAME="DBUsername" IS_KEY="true" />

<CredentialTypeColumn NAME="DBPassword" />

<CredentialTypeColumn NAME="DBRole">

<CredentialTypeColumnValue IS_DEFAULT="true">normal</CredentialTypeColumnValue>

<CredentialTypeColumnValue>sysdba</CredentialTypeColumnValue>

</CredentialTypeColumn>

</CredentialType>

'DBCreds'資格証明タイプの'DBRole'列には、次の値を指定できます。

1. normal(デフォルト値)

2. sysdba

CredentialInfoの例を参照してください。CredentialInfoの例は、CredentialType要素のコンテキストを示しています。

21.2.34 CredentialTypeRef

この要素では、資格証明タイプが他の事前定義済資格証明タイプを参照できます。この要素には、元の資格証明タイプの列と定義する資格証明タイプの列とのマッピングが含まれます。

<!ELEMENT CredentialTypeRef (CredentialTypeRefColumn*)>
<!ATTLIST CredentialTypeRef
REF_NAME        CDATA #REQUIRED
REF_TYPE        CDATA #REQUIRED
REF_TARGETTYPE  CDATA #IMPLIED
ASSOCIATION     CDATA #IMPLIED>

21.2.34.1 属性

REF_NAME: このCredentialTypeRefの名前を指定します。

REF_TYPE: 参照先の資格証明タイプ。

REF_TARGETTYPE: 元の資格証明タイプを含むターゲット・タイプ。同じターゲット・タイプの場合はNULLを指定します。

ASSOCIATION: このターゲットと、資格証明がここで管理される他のターゲットの関連付けを表します。この値を、前述のAssocTarget要素の1つにする必要があります。

21.2.34.2 要素

CredentialTypeRefColumn

21.2.34.3 使用場所

CredentialType

21.2.34.4 例

<CredentialType NAME="FMCreds" >
<CredentialTypeRef NAME="FMDBCreds1" REF_TYPE="DBCreds" REF_TARGET_TYPE="oracle_database" ASSOCIATION="firstDB">
<CredentialTypeRefColumn NAME="FMUserName1" REF_TYPECOLUMN="DBUsername" />
<CredentialTypeRefColumn NAME="FMpassword1" REF_TYPECOLUMN="DBPassword" />
<CredentialTypeRefColumn NAME="FMRole1" REF_TYPECOLUMN="DBRole" />
</CredentialTypeRef>
</CredentialType>

FMCredsは、列FMUserName1、Fmpassword1およびFMRoleがDBCredのDBUsername、DBPasswordおよびDBRole列にそれぞれマップされる資格証明タイプを定義します。

CredentialInfoの例を参照してください。CredentialInfoの例は、CredentialType要素のコンテキストを示しています。

21.2.35 CredentialTypeRefColumn

この要素は、参照先資格証明タイプの列をこの資格証明タイプの列にマップします。

<!ELEMENT CredentialTypeRefColumn EMPTY>
<!ATTLIST CredentialTypeRefColumn
NAME            CDATA #REQUIRED
REF_TYPECOLUMN  CDATA #REQUIRED>

21.2.35.1 属性

NAME: この資格証明タイプ内の列の名前。

REF_TYPECOLUMN: 参照先資格証明タイプ内の列の名前

21.2.35.2 要素

なし

21.2.35.3 使用場所

CredentialTypeRef

21.2.35.4 例

CredentialTypeRefの例を参照してください。

21.2.36 CredentialSet

この要素は、このターゲット・タイプの名前付き資格証明セットを形成する要素のセットを定義します。資格証明セットは、このターゲット・タイプに対して定義された資格証明タイプのうち、1つの資格証明タイプの値を提供します。資格証明セットには、監視、優先資格証明およびアプリケーション固有の機能の3つのうち、いずれかの使用方法に対する資格証明を含めることができます。

<!ELEMENT CredentialSet (Display?, CredentialSetColumn+)>
<!ATTLIST CredentialSet
NAME             CDATA  #REQUIRED
CREDENTIAL_TYPE  CDATA  #REQUIRED
USAGE    (MONITORING|PREFERRED_CRED|SYSTEM) "MONITORING"
CONTEXT_TYPE     (TARGET|CONTAINER|COLLECTION) "TARGET"
CONTEXT          CDATA  #IMPLIED>

21.2.36.1 属性

NAME: 資格証明セットの名前

CREDENTIAL_TYPE: このセットによって値が提供される資格証明タイプ。

USAGE: この資格証明セットは優先資格証明として監視用に、またはアプリケーション固有の機能に使用されますか。サポートされている値は次のとおりです。

- MONITORING(デフォルト): 管理アプリケーションがターゲットに直接接続するために使用できる資格証明を指定します。

- PREFERRED_CRED: ユーザーの優先資格証明を指定します。

- SYSTEM: 特定の特化したアプリケーション(パッチ適用、クローニングなど)で使用される一定の資格証明セットを指定します。

- CONTEXT_TYPE: セットに関連するエンティティの種類を指定します。
サポートされている値は次のとおりです。

- TARGET(デフォルト): ジョブ・システムやパッチ適用などのアプリケーションで使用できるターゲットの格納済資格証明です。

- CONTAINER: コンテナの格納済資格証明です。これらは常に、ホスト資格証明です。

- COLLECTION: これらはユーザー定義のメトリックに関連付けられている資格証明です。

- CONTEXT: このセットの対象となるメトリックを指定します。COLLECTION資格証明のみを参照します。

21.2.36.2 要素

Display

CredentialSetColumn

21.2.36.3 使用場所

CredentialInfo

21.2.36.4 例

CredentialSetには、オプションのDisplay要素が含まれます。Display要素は、CredentialSet要素および少なくとも1つのCredentialSetColumnの表示特性を指定します。

<CredentialSet NAME="HostPrefCreds" CREDENTIAL_TYPE="HostCreds" USAGE="PREFERRED_CRED">
<CredentialSetColumn TYPE_COLUMN="HostUsername" SET_COLUMN="HostPrefUserName" />\
<CredentialSetColumn TYPE_COLUMN="HostPassword" SET_COLUMN="HostPrefPassword" />
</CredentialSet>

このサンプルは、ユーザーの資格証明セットの使用方法を示しています。

<CredentialSet NAME="DBCredsMonitoring" CREDENTIAL_TYPE="DBCreds" USAGE="monitoring">
<CredentialSetColumn TYPE_COLUMN="DBUsername" SET_COLUMN="UserName"/>
<CredentialSetColumn TYPE_COLUMN="DBPassword" SET_COLUMN="password"/>
<CredentialSetColumn TYPE_COLUMN="DBRole" SET_COLUMN="role"/>
</CredentialSet>

DBCredsMonitoringデータベースの監視のためにエージェントで使用できる資格証明セットを定義します。

<CredentialSet NAME="HostSystemCreds" CREDENTIAL_TYPE="HostCreds" USAGE="SYSTEM">
<CredentialSetColumn TYPE_COLUMN="HostUsername" SET_COLUMN="HostPrefUserName"/>
<CredentialSetColumn TYPE_COLUMN="HostPassword" SET_COLUMN="HostPrefPassword"/>
</CredentialSet>

HostSystemCredsはSYSTEM資格証明タイプの一例です。

CredentialInfoの例を参照してください。この例は、CredentialType要素のコンテキストを示しています。

21.2.37 CredentialSetColumn

資格証明列は、資格証明タイプの列をその値のソースにマップします。監視資格証明セットの場合、ソースはターゲットのインスタンス・プロパティです。

<!ELEMENT CredentialSetColumn (Display?, CredentialSetColumnValue*) >
<!ATTLIST CredentialSetColumn
TYPE_COLUMN CDATA #REQUIRED
SET_COLUMN  CDATA #REQUIRED>

21.2.37.1 属性

TYPE_COLUMN: CredentialTypeの列の名前。

SET_COLUMN

21.2.37.2 要素

Display

CredentialSetColumnValue

21.2.37.3 使用場所

CredentialSet

21.2.37.4 例

CredentialSetColumnには、オプションのDisplay要素が含まれます。この要素は、CredentialSetColumn要素とオプションのCredentialSetColumnValue要素の表示特性を指定します。

CredentialSetの例を参照してください

21.2.38 CredentialSetColumnValue

この要素は、CredentialSetColumnに使用できる値を保持します。

<!ELEMENT CredentialSetColumnValue (#PCDATA)>
<!ATTLIST CredentialSetColumnValue
IS_DEFAULT (TRUE|FALSE) "FALSE">

21.2.38.1 属性

IS_DEFAULT: この要素がリスト内のデフォルト値の場合は、この属性をTRUEに設定します。

21.2.38.2 要素

値を表す文字データ。

21.2.38.3 使用場所

CredentialSetColumn

21.2.38.4 例

CredentialSetの例を参照してください。

21.2.39 InstanceProperties

InstanceProperties要素は、ターゲット・タイプのプロパティを宣言します。targets.xmlファイルから取得できるプロパティもあれば、オプションまたは必須のプロパティもあり、他のプロパティの値を使ってDynamicProperties要素を使用して計算できるプロパティもあります。

エージェントはInstanceProperties要素の情報を使用して、ターゲットが十分に構成されていないときを求め、ターゲットの動的プロパティを計算します。コンソールUIはプロパティに関する情報を使用してUIを作成し、この場合、ターゲットはゼロから作成することも、既存のターゲットのプロパティを変更することもできます。

InstancePropertiesはターゲットのInstanceProperty要素およびDynamicProperties要素を保持します。

<!ELEMENT InstanceProperties ((InstanceProperty | DynamicProperties)*)>

21.2.39.1 属性

なし

21.2.39.2 要素

InstanceProperty

DynamicProperties

21.2.39.3 使用場所

TargetMetadata

21.2.39.4 例

QueryDescriptorおよびTargetMetadataの例を参照してください。

21.2.40 InstanceProperty

InstanceProperty要素には、インスタンス・プロパティの定義が含まれます。

<!ELEMENT InstanceProperty (ValidIf*, (PCDATA | Display)*)>
<!ATTLIST InstanceProperty
NAME CDATA #REQUIRED
OPTIONAL (TRUE | FALSE) "FALSE"
IN_PRIMARY_KEY (TRUE | FALSE) "FALSE"
CHECK_FOR_MODIFIABLE (TRUE | FALSE) "FALSE"
CREDENTIAL (TRUE | FALSE) "FALSE"
READONLY (TRUE | FALSE) "FALSE"
NEED_REENTER ( TRUE | FALSE) "FALSE"
HIDE_ENTRY ( TRUE | FALSE) "TRUE"
CHECK_ORIGINAL ( TRUE | FALSE) "FALSE"
IS_COMPUTED (TRUE|FALSE) "FALSE"
WAS_REQUIRED (FALSE|TRUE) "FALSE"
>

21.2.40.1 属性

NAME: プロパティの名前

OPTIONAL: 必要なプロパティの値

TRUE | FALSE(デフォルト)

CREDENTIAL: 機密的な性質を持つプロパティ。通常、このようなプロパティは不明瞭化されてtargets.xmlに保存されます。

TRUE | FALSE(デフォルト)

READONLY: この要素をReadOnlyとしてマークします。

TRUE | FALSE(デフォルト)

NEED_REENTER: TRUEの場合は、ユーザーがコマンドラインに値を2回入力する必要があります。

TRUE | FALSE(デフォルト)

HIDE_ENTRY: TRUEの場合は、ユーザーが入力した文字を*として表示します。

TRUE(デフォルト)| FALSE

CHECK_ORIGINAL: TRUEの場合、ユーザーは変更する前に元の値を入力する必要があります。

IS_COMPUTED: TRUEの場合は、動的プロパティを説明することを示します。

WAS_REQUIRED: これは、10.2より前は必須とされていたインスタンス・プロパティですが、現在は動的プロパティです。TRUEに設定されている場合、このプロパティは10.1 OMSに送られます。デフォルト値はFALSE (詳細は、バグ/ER 4631553を参照)です。

21.2.40.2 要素

ValidIf

Display

21.2.40.3 使用場所

TargetMetadata

21.2.40.4 例

InstanceProperty要素にValidIf要素が含まれる場合、プロパティが評価されるには、すべての条件を満たす必要があります。InstancePropertyには、オプションとしてDisplay要素または文字データを含めることもできます。

<InstanceProperty NAME="password" OPTIONAL="FALSE" CREDENTIAL="TRUE">

この例では、oracle_databaseターゲットの1つのInstancePropertyに、OPTIONALではなくCREDENTIALのpasswordというNAMEが含まれます。

TargetMetadataに記載されているInstancePropertyの別の例も参照してください。

21.2.41 DynamicProperties

DynamicProperties要素を使用すると、ターゲットのインスタンス・プロパティに対応する値のセットを戻す問合せを、ターゲットが指定できます。値はターゲット・プロパティになり、INSTANCEスコープから他の問合せ記述子へのアクセスが可能です。

<!ELEMENT DynamicProperties (ValidIf*, (QueryDescriptor | ExecutionDescriptor)+) >
<!ATTLIST DynamicProperties
NAME CDATA #REQUIRED
PROP_LIST CDATA #IMPLIED
OPT_PROP_LIST CDATA #IMPLIED
FORMAT (TABLE | ROW) "TABLE"
IS_CRITICAL (TRUE | FALSE) "FALSE"
>

注意:
DynamicProperty評価によってCategoryPropertiesがインスタンス化された場合、カテゴリ・プロパティの値がtargets.xmlに含まれていないかぎり、DynamicProperty評価が失敗したことで、エージェントによるターゲットの拒否が発生します。

21.2.41.1 属性

NAME: エラー・トレースなどのためにプロパティの収集者を単純に識別する属性。

PROP_LIST: 問合せ記述子によって戻すことが可能なプロパティの名前のリストを指定する、セミコロン(';')で区切られた値を含みます。結果には、ここにリストされた値が含まれている必要があります。

OPT_PROP_LIST: 問合せ記述子によって戻すことが可能なプロパティの名前のリストを指定する、セミコロン(';')で区切られた値を含みます。結果は、ここにリストされた値を含むことができます。

FORMAT: 戻されるデータの形式を指定します。

サポートされている値は次のとおりです。

- TABLE (デフォルト): FORMATがTABLE (デフォルト)の場合、戻り値はインスタンス・プロパティ値の表であることが必要です。戻される表は、2列(NAME、VALUE)の表であることが必要です。

- ROW: FORMATがROWの場合、PROP_LISTに記載されているのと同じ順序で、次にOPT_PROP_LISTに記載されているのと同じ順序で、1行の内容がプロパティの値とみなされます。

IS_CRITICAL: 動的プロパティがターゲットにとって重大であることを表すために、IS_CRITICALフラグ属性を指定できます。このフラグのデフォルト値はFALSEで、この属性が存在しない場合は想定されます。この属性の値をTRUEと指定した場合、その動的プロパティの計算が失敗/タイムアウトしたら、emd.propertiesファイルに記載されているパラメータの値に従って、ターゲットのすべての動的/インスタンス・プロパティの計算を再スケジュールします。

21.2.41.2 要素

ValidIf

QueryDescriptor

ExecutionDescriptor

21.2.41.3 使用場所

InstanceProperties

21.2.41.4 例

DynamicProperties要素にValidIf要素が含まれる場合、プロパティが評価されるには、すべての条件を満たす必要があります。また、QueryDescriptorまたはExecutionDescriptorの1つ以上のインスタンスを含む必要もあります。

PROP_LISTおよびOPT_PROP_LISTに含まれるプロパティ名は、ターゲット・タイプ・メタデータを評価する際に、InstanceProperty宣言とともに使用されます。

<DynamicProperties NAME="VersionAndLocation" FORMAT="ROW" PROP_LIST="OS;OracleHome;Version">

'VersionAndLocation'というDynamicPropertiesにはROW形式が指定されており、プロパティとして'OS'、'OracleHome'、'Version'を戻します。

問合せ記述子がすでに使用可能であるプロパティ値を戻した場合、そのプロパティは無視されます。複数のDynamicProperties問合せによってプロパティが戻された場合は、最初のプロパティの値が使用されます。

TargetMetadataの例に、DynamicProperties要素のコンテキストが含まれています。

21.2.42 ExecutionDescriptor

ExecutionDescriptorは、メトリック評価の実行計画を指定します。MAgentは、定義された順序で計画の各文を実行し、メトリックの結果を作成します。実行計画の最後の文の評価結果として生成されたメトリックの結果が戻されます。

<!ELEMENT ExecutionDescriptor (ValidIf*, (GetTable | GetView | GroupBy | Union | JoinTables)*)>

21.2.42.1 属性

なし

21.2.42.2 要素

ValidIf

GetTable

GetView

GroupBy

Union

JoinTables

21.2.42.3 使用場所

Metric

DynamicProperties

21.2.42.4 例

ExecutionDescriptor要素にValidIf要素が含まれる場合、要素が評価されるには、すべての条件を満たす必要があります。また、GetTable、GetView、GroupBy、Union、JoinTablesのいずれかの要素のインスタンスを0以上含む必要もあります。

ExecutionDescriptorは、集計メトリックの計算に使用されます。

<TargetMetadata META_VER=”3.0” TYPE=”host”>
. . .
<Metric NAME=”Load” TYPE=”TABLE”>
. . .

<ExecutionDescriptor>
<GetTable NAME="DiskActivity"/>
<GetView NAME="AvgSrvcTimeView" FROM_TABLE="DiskActivity">
<Column NAME="DiskActivityavserv"/>
</GetView>
<GroupBy NAME="DA_MaxAvServ" FROM_TABLE="AvgSrvcTimeView">
<AggregateColumn NAME="longestServ" COLUMN_NAME="DiskActivityavserv" OPERATOR="MAX" />
</GroupBy>
<GetTable NAME="_LoadInternal"/>
<JoinTables NAME="Load">
<Table NAME="_LoadInternal"/>
<Table NAME="DA_MaxAvServ"/>
</JoinTables>
</ExecutionDescriptor>
</Metric>

<Metric NAME="_LoadInternal" TYPE="TABLE" USAGE_TYPE="HIDDEN">
. . .
</Metric>

<Metric NAME="DiskActivity" TYPE="TABLE">
. . .
</Metric>

</TargetMetadata>

This ExecutionDescriptor in this sample generates the following intermediate Metric results after executing each statement:
§         GetTable: The metric result, &rsquor;DiskActivity' contains all the columns of &rsquor;DiskActivity' metric.  The result of this operation is similar to the SQL statement,
”Select * from DiskActivity”
§         GetView: The metric result, &rsquor;AvgSrvcTimeView' contains only &rsquor;DiskActivityavserv' column of &rsquor;DiskActivity' metric.
§         GroupBy: Metric result, &rsquor;DA_MaxAvServ' is a grouping of the &rsquor;AvgSrvcTimeView' based on the &rsquor;longestServ' which is the max value of the &rsquor;DiskActivityavserv' column.
§         GetTable: Metric result, &rsquor;_LoadInternal' contains all the columns of the &rsquor;_LoadInternal' metric.
§         JoinTable: &rsquor;Load' metric contains a join of the &rsquor;_LoadInternal' and &rsquor;DA_MaxAvServ' metrics.

'Load'メトリックの結果として、最後のメトリックが戻されます。

21.2.43 GetTable

この要素はExecutionDescriptor要素内で使用され、次のSQL操作と同じです。

Select * from T

Tはメトリックです。

<!ELEMENT GetTable EMPTY>
<!ATTLIST GetTable
NAME CDATA #REQUIRED
ASSOC_TARGET CDATA #IMPLIED
METRIC_NAME CDATA #IMPLIED
USE_CACHE (TRUE | FALSE | TRUE_IF_COLLECT) "FALSE">

21.2.43.1 属性

NAME: メトリックの名前。

ASSOC_TARGET: データの収集元であるターゲット。この属性はオプションで、省略された場合はMETRIC_NAMEが同じターゲット内のメトリックを指定します。

METRIC_NAME: リクエスト元のメトリックの名前。省略した場合は、属性NAMEがMETRIC_NAMEとして使用されます。

USE_CACHE: データがキャッシュからフェッチ可能かどうかを指定します。

TRUE | FALSE(デフォルト)| TRUE_IF_COLLECT

21.2.43.2 要素

なし

21.2.43.3 使用場所

ExecutionDescriptor

21.2.43.4 例

<GetTable NAME="DiskActivity"/>

この文は、'DiskActivity'メトリックのすべての列を取得します。

ExecutionDescriptorの例を参照してください。

21.2.44 GetView

GetView表からサブ表を作成します。新しく作成された表は、NAME属性で識別されます。この表はExecutionDescriptor内で一意である必要があります。この要素は次のSQL文と同じです。

Select column1, column2,. . . from T

Tはメトリックです。

<!ELEMENT GetView ((ComputeColumn | Column)*, (Filter | In)*)>
<!ATTLIST GetView
NAME CDATA #REQUIRED
FROM_TABLE CDATA #REQUIRED>

21.2.44.1 属性

NAME: ビューの名前。

FROM_TABLE: ビューの生成元となる表。

21.2.44.2 要素

ComputeColumn

Column

Filter

In

21.2.44.3 使用場所

ExecutionDescriptor

21.2.44.4 例

GetViewには、'ComputeColumn'要素または'Column要素のどちらかの0以上のインスタンス、および'Filter'要素または'In'要素のどちらかの0以上のインスタンスを含めることができます。

<GetView NAME="AvgSrvcTimeView" FROM_TABLE="DiskActivity">
<Column NAME="DiskActivityavserv"/>
</GetView>

これは、次のSQL文と同じです。

create view AvgSrvcTimeView as
select DiskActivityavserv from DiskActivity.

Column要素がGetViewに含まれていない場合は、表のすべての列が含められます。

ExecutionDescriptorの例を参照してください。

21.2.45 Filter

フィルタ条件を指定します。フィルタは、行を新しい表に含めるかどうかを判断するために使用されます。フィルタ条件を満たさない場合、行は除外されます。

<!ELEMENT Filter (#PCDATA)>
<!ATTLIST Filter
COLUMN_NAME CDATA #REQUIRED
SCOPE (GLOBAL | INSTANCE | SYSTEMGLOBAL) "GLOBAL"
OPERATOR (EQ | LT | GT | LE | GE | NE | CONTAINS | MATCH | ISNULL | ISNOTNULL) "EQ">

21.2.45.1 属性

COLUMN_NAME: フィルタ条件が適用される列の名前。

SCOPE:

サポートされている値は次のとおりです。

- GLOBAL (デフォルト)

- INSTANCE

- SYSTEMGLOBAL

- OPERATOR: 実行する演算を指定します。

サポートされている演算子は次のとおりです。

- EQ (デフォルト): 等しい

- LT: より少ない

- GT: より大きい

- LE: 以下

- GE: 以上

- NE: 等しくない

- CONTAINS: 含む

- MATCH: 一致する

- ISNULL: NULLです

- SNOTNULL: NULLではありません

21.2.45.2 要素

フィルタ条件を表す文字データ。

21.2.45.3 使用場所

GetView

21.2.45.4 例

<ExecutionDescriptor>
<GetTable NAME="Servlet_raw" USE_CACHE="TRUE_IF_COLLECT"/>
<GetView  NAME="result" FROM_TABLE="Servlet_raw">
<Filter COLUMN_NAME="totalRequests1" OPERATOR="GT">0</Filter>
</GetView>
</ExecutionDescriptor>

このExecutionDescriptorの結果は、totalRequests1 > 0を持つメトリック'result'です。

21.2.46 Column

新しい表に含める列を表します。

<!ELEMENT Column EMPTY>
<!ATTLIST Column
NAME CDATA #REQUIRED
COLUMN_NAME CDATA #IMPLIED
TABLE_NAME CDATA #IMPLIED>

21.2.46.1 属性

NAME: メトリックの列の名前を指定します。

COLUMN_NAME: 列の名前を指定します。NAMEと同じ場合は省略できます。

TABLE_NAME: メトリックの名前を指定します。ColumnがGetView要素の一部の場合は、この属性を除外する必要があります。

21.2.46.2 要素

なし

21.2.46.3 使用場所

GetView

JoinTables

21.2.46.4 例

<Column NAME="DiskActivityavserv"/>

'DiskActivityavserv'は、操作に対して選択されるメトリック列です。

<Column NAME="responseTime" TABLE_NAME="groupbyapps"/>

'groupbyapps'メトリックの列'responseTime'が操作対象として選択されます。

ExecutionDescriptorの例を参照してください

21.2.47 ComputeColumn

この要素は、列の値の計算方法を示します。

<!ELEMENT ComputeColumn EMPTY>
<!ATTLIST ComputeColumn
NAME               CDATA #REQUIRED
EXPR               CDATA #REQUIRED
IS_VALUE           (TRUE | FALSE) "FALSE"
DEFAULT_WHEN_EMPTY (TRUE | FALSE) "FALSE"
DEFAULT_VALUE      CDATA #IMPLIED>

21.2.47.1 属性

NAME: 列の名前。

EXPR: 値を計算するために評価される式。式の文法および使用方法の詳細は、ColumnDescriptorの例を参照してください。

IS_VALUE: TRUEに設定されている場合、EXPRは実際の文字列値を指定します。TRUE以外の場合、EXPRは列の計算に使用する式です。

TRUE | FALSE(デフォルト)

DEFAULT_WHEN_EMPTY:

TRUE | FALSE(デフォルト)

DEFAULT_VALUE: 列のデフォルト値。指定していない場合、デフォルト値は0に設定されます。

21.2.47.2 要素

なし

21.2.47.3 使用場所

GetView

GroupBy

21.2.47.4 例

<GetView NAME="NEW_TABLE" FROM_TABLE="ORIG_TABLE">
<Column NAME="cn1" COLUMN_NAME="A" />
<Column NAME="cn2" COLUMN_NAME="B" />
<ComputeColumn NAME="cn3" EXPR="cn1+cn2" />
<ComputeColumn NAME="cn4" EXPR="cn1/cn2" DEFAULT_WHEN_EMPTY="TRUE" DEFAULT_VALUE="1"/>
<ComputeColumn NAME="isMultiThreaded.value" IS_VALUE="TRUE" EXPR="true" />
<Filter COLUMN_NAME="C" OPERATOR="EQ">3</Filter>
</GetView>

EXPR属性で許容される式の文法の詳細およびその他の例は、ColumnDescriptorの例を参照してください。

21.2.48 In

この要素は、SQL文select * from from_table where column_name in ( select in_column_name from in_table_name)と同じです

<!ELEMENT In EMPTY>
<!ATTLIST In
COLUMN_NAME CDATA #REQUIRED
IN_TABLE_NAME CDATA #REQUIRED
IN_COLUMN_NAME CDATA #REQUIRED>

21.2.48.1 属性

COLUMN_NAME: 検索する列名。

IN_TABLE_NAME: 検索場所である表。

IN_COLUMN_NAME: IN_TABLE_NAME属性で指定された表の列名。

21.2.48.2 要素

なし

21.2.48.3 使用場所

GetView

21.2.49 GroupBy

GroupByは、新しい表を作成するための集計操作を表またはビューで実行します。この要素は、Select sum(column_name) from table_nameというSQL文と同じです。

<!ELEMENT GroupBy (By*, (AggregateColumn | ComputeColumn)*)>
<!ATTLIST GroupBy
NAME CDATA #REQUIRED
FROM_TABLE CDATA #REQUIRED>

21.2.49.1 属性

NAME: グループ化の名前を指定します。

FROM_TABLE: メトリックの名前を指定します。

21.2.49.2 要素

By

AggregateColumn

ComputeColumn

21.2.49.3 使用場所

GetView

21.2.49.4 例

この要素には、'By'の0以上の要素、およびAggregateColumnまたはComputeColumnのどちらかの0以上の要素を含めることができます。

<GroupBy NAME="DA_MaxAvServ" FROM_TABLE="AvgSrvcTimeView">

この文の結果、AvgSrvcTimeViewメトリックに適用されたgroupby操作の結果がDA_MaxAvServに含まれます。

ExecutionDescriptorの例を参照してください。

21.2.50 By

By要素は、GroupBy句を構成する列を定義します。各'By'要素は、列として結果表に追加されます。

<!ELEMENT By EMPTY>
<!ATTLIST By
NAME CDATA #REQUIRED
COLUMN_NAME CDATA #IMPLIED>

21.2.50.1 属性

NAME: 新しい列の名前。

COLUMN_NAME: 新しい列の名前。

21.2.50.2 要素

なし

21.2.50.3 使用場所

GroupBy

21.2.50.4 例

NAMEは、新しい表内で一意であることが必要です。COLUMN_NAMEが指定されていない場合は、NAMEと同じになります。

21.2.51 AggregateColumn

この要素は、列で実行する演算を示します。

<!ELEMENT AggregateColumn EMPTY>
<!ATTLIST AggregateColumn
NAME CDATA #REQUIRED
COLUMN_NAME CDATA #REQUIRED
OPERATOR (MAX | MIN | SUM | AVG | COUNT) "SUM">

21.2.51.1 属性

NAME: AggregateColumnの名前を指定します。

COLUMN_NAME: 演算を実行するメトリックの列名を指定します。

OPERATOR: 実行する演算を指定します。

サポートされている演算子は次のとおりです。

- MAX

- MIN

- SUM (デフォルト)

- AVG

- COUNT

21.2.51.2 要素

なし

21.2.51.3 使用場所

GroupBy

21.2.51.4 例

<AggregateColumn NAME="longestServ" COLUMN_NAME="DiskActivityavserv" OPERATOR="MAX" />

この演算の結果、'DiskActivityavserv'列から最大値が計算されます。

ExecutionDescriptorの例を参照してください。

21.2.52 Union

Union要素は、2つ以上の表を結合またはマージする操作を示します。結合できるのは、同じ数の列を持つ表のみです。この要素は次のSQL文と同じです。

Select * from T1 Union
Select * from T2

<!ELEMENT Union (Table+)>
<!ATTLIST Union
NAME CDATA #REQUIRED
DISTINCT (TRUE | FALSE) "FALSE">

21.2.52.1 属性

NAME: 結合の名前を指定します。

DISTINCT: TRUEの場合は、前の行と同一の行がすべて廃棄されます。

TRUE | FALSE(デフォルト)

21.2.52.2 要素

Table

21.2.52.3 使用場所

ExecutionDescriptor

21.2.52.4 例

Union要素には少なくとも1つのTable要素を含める必要があります。

<Union NAME="result4">
<Table NAME="result" />
<Table NAME="result1" />
<Table NAME="result2" />
<Table NAME="result3" />
</Union>

'result4'は4つ表の結合になります。作成される表には、最初の表と同じ列名リストが含まれます。

注意:
結合できるのは、同じ数の列を持つ表のみです。新しく作成された表はNAMEで識別されます。ExecutionDescriptor内では一意である必要があります。

21.2.53 Table

この要素は、UnionやJoinTablesなどの表操作に関与する可能性があるメトリックを示します。

<!ELEMENT Table EMPTY>
<!ATTLIST Table
NAME CDATA #REQUIRED>

21.2.53.1 属性

NAME: メトリックの名前を指定します。

21.2.53.2 要素

なし

21.2.53.3 使用場所

Union

JoinTables

21.2.53.4 例

<Table NAME="result" />

この例では、'result'が表操作に関与する可能性があるメトリックとして示されています。

Unionの例を参照してください。

21.2.54 JoinTables

この要素は結合操作を記述します。これは次のSQL文と同じです。

Select C1, C2 where . . .

<!ELEMENT JoinTables (Table, Table+, (Column | ComputeColumn)*, Where*)>
<!ATTLIST JoinTables
NAME CDATA #REQUIRED
OUTER (TRUE | FALSE) "FALSE"
BOTH_SIDE (TRUE | FALSE) "FALSE">

21.2.54.1 属性

NAME: 結合の名前を指定します。

OUTER: TRUEの場合はOUTER結合を指定します。

TRUE | FALSE(デフォルト)

BOTH_SIDE: TRUEの場合はBOTH_SIDEを指定します。結果には、UNIONと同じ数の行が含まれます。

TRUE | FALSE(デフォルト)

21.2.54.2 要素

Table

Column

ComputeColumn

Where

21.2.54.3 使用場所

ExecutionDescriptor

21.2.54.4 例

JoinTablesには、少なくとも2つの'Table'要素、'Column'または'ComputeColumn'のどちらかの0以上の要素、および'Where'要素の0以上の要素を含める必要があります。

<JoinTables NAME="Load">
<Table NAME="_LoadInternal"/>
<Table NAME="DA_MaxAvServ"/>
</JoinTables>

この例は、'Load'を'_LoadInterval'メトリックと'DA_MaxAvServ'メトリックの結合として定義しています。

ExecutionDescriptorの例を参照してください。

21.2.55 Where

<!ELEMENT Where EMPTY>
<!ATTLIST Where
FROM_TABLE CDATA #REQUIRED
FROM_KEY CDATA #REQUIRED
OPERATOR (EQ | GT | GE | LE | LT | NE | CONTAINS | MATCH) "EQ"
JOIN_TABLE CDATA #REQUIRED
JOIN_KEY CDATA #REQUIRED>

21.2.55.1 属性

FROM_TABLE:

FROM_KEY:

OPERATOR: WHERE句の演算子を指定します。

サポートされている演算子は次のとおりです。

- EQ(デフォルト): 等しい

- GT: より大きい

- GE: 以上

- LE: 以下

- LT: より少ない

- NE: 等しくない

- CONTAINS: 含む

- MATCH: 一致する

JOIN_TABLE:

JOIN_KEY:

21.2.55.2 要素

なし

21.2.55.3 使用場所

JoinTables

21.2.55.4 例

<JoinTables NAME="all" OUTER="TRUE">
<Table NAME="groupbyapps" />
<Table NAME="groupbyappsejb" />
<Column NAME="Application" TABLE_NAME="groupbyapps"/>
<Column NAME="activeRequests" TABLE_NAME="groupbyapps"/>
<Column NAME="responseTime" TABLE_NAME="groupbyapps"/>
<Column NAME="activeMethods" TABLE_NAME="groupbyappsejb"/>
<Column NAME="avgMethodExecTime" TABLE_NAME="groupbyappsejb"/>
<Where  FROM_TABLE="groupbyapps" JOIN_TABLE="groupbyappsejb"
FROM_KEY="Application"  JOIN_KEY="ApplicationName"/>
</JoinTables>

21.2.56 PushDescription

push descriptorは、メトリックのデータまたはイベント、もしくはその両方を提供し、各ターゲット用にそのrecvletに渡されるデータを指定するrecvletを識別します。ここでrecvletに使用する名前は、recvlets.regで使用されるrecvlet名と一致する必要があります。

<!ELEMENT PushDescriptor (ValidIf*, Property*) >
<!ATTLIST PushDescriptor
RECVLET_ID CDATA #REQUIRED>

21.2.56.1 属性

RECVLET_ID: 使用するrecvletの(EMAgentで認識されている)IDを指定します。この属性は、$ORACLE_HOME/lib/recvlets.regファイルからの要素を指定する必要があります。

21.2.56.2 要素

ValidIf

Property

21.2.56.3 使用場所

Metric

21.2.56.4 例

PushDescriptorには、'ValidIf'および'Property'の0以上の要素を含めることができます。

<Metric . . .>
. . .
<PushDescriptor RECVLET_ID=”AQMetrics”>
<Property NAME=”QueueName” SCOPE=”GLOBAL”>ALERT_QUE</Property>
<Property NAME=”MachineName” SCOPE=”INSTANCE”>MachineName</Property>
<Property NAME=”Port” SCOPE=”INSTANCE”>Port</Property>
<Property NAME=”SID” SCOPE=”INSTANCE”>SID</Property>
<Property NAME=”UserName” SCOPE=”INSTANCE”>UserName</Property>
<Property NAME=”password” SCOPE=”INSTANCE”>password</Property>
<Property NAME=”Role” SCOPE=”INSTANCE”>Role</Property>
<Property NAME=”InstanceName” SCOPE=”INSTANCE”>InstanceName</Property>
<Property NAME=”KeyField” SCOPE=”GLOBAL”>OBJECT_NAME</Property>
<Property NAME=”KeyColumn” SCOPE=”GLOBAL”>name</Property>
</PushDescriptor>
</Metric>

PushDescriptorに含まれるプロパティは、'AQMetrics'というreceiveletに渡されます。このreceiveletは、メトリックのデータまたはイベント、あるいはその両方を提供します。

21.3 ターゲット収集DTD要素

ターゲット収集は、中央リポジトリでの値のアップロード、または指定された条件に対する値のチェック、もしくはその両方の目的で、メトリックのバックグラウンド収集を駆動します。

このDTDに準拠するXMLファイルは、システムによって生成されます(サーブレット・フロントエンドまたはコレクタから生成可能です)。

EMAgentは、それぞれが特定のターゲットから収集する必要があるメトリックを含む、複数の収集ファイルを使用できます。

21.3.1 TargetCollection

TargetCollectionは、特定のターゲットについて収集する必要のあるメトリックを記述します。この要素は、デフォルトの収集(タイプ・レベル)とインスタンス固有の収集の両方に適用されます。NAME、LEVELおよびINCLUDE_DEFAULT属性は、インスタンス固有の収集のみに適用されます。

0個以上のCollectionItem要素およびCollectionLevel要素を持つことができます。CollectionLevel要素は、デフォルトの収集のみに適用されます。

<!ELEMENT TargetCollection  ( CollectionLevel*, CollectionItem* ) >
<!ATTLIST TargetCollection
TYPE CDATA #REQUIRED
NAME CDATA #IMPLIED
LEVEL CDATA #IMPLIED
INCLUDE_DEFAULT (TRUE|FALSE)  "TRUE">

21.3.1.1 属性

TYPE: ターゲット・タイプを指定します。

NAME: ターゲットの名前を指定します。これがトップレベルの要素の場合、NAMEをNULLにすることはできません。このファイルが含まれている場合はNULLにすることができます。この属性は、インスタンス固有の収集のみに適用されます。

LEVEL: 収集レベルを指定します。デフォルトは最小になります。この属性は、インスタンス固有の収集のみに適用されます。

INCLUDE_DEFAULT: TRUEに設定された場合、同じターゲット・タイプのデフォルトの収集が含まれます。この属性は、インスタンス固有の収集のみに適用されます。

TRUE(デフォルト)| FALSE

21.3.1.2 要素

CollectionLevel

CollectionItem

21.3.1.3 使用場所

TargetCollectionはトップレベルの要素です。

21.3.1.4 例

<TargetCollection TYPE="preferred" >

<CollectionItem NAME = "Load" UPLOAD_ON_FETCH="TRUE">

<Schedule OFFSET_TYPE="INCREMENTAL">
<IntervalSchedule INTERVAL = "15" TIME_UNIT = "Min"/>
</Schedule>

<MetricColl NAME = "NfsOperations">
<Filter COLUMN_NAME="NfsCallsRate" OPERATOR="LE">100000</Filter>
<Condition COLUMN_NAME="NfsServPercentBadCalls" CRITICAL="10" WARNING="5" OPERATOR="GT" OCCURRENCES="3" MESSAGE="NFS Bad Calls are %value%%%." MESSAGE_NLSID="netapp_filer_nfs_operations_nfs_per_bad_calls"/>
</MetricColl>

<MetricColl NAME = "CifsOperations">
<Filter COLUMN_NAME="CifsCallsRate" OPERATOR="LE">100000</Filter>
<Condition COLUMN_NAME="CifsPercentBadCalls" CRITICAL="10" WARNING="5" OPERATOR="GT" OCCURRENCES="3" MESSAGE="CIFS Bad Calls %value%%%." MESSAGE_NLSID="netapp_filer_cifs_operations_cifs_per_bad_calls"/>
</MetricColl>

<MetricColl NAME = "SystemLoad" />

</CollectionItem>
</TargetCollection>

This example illustrates the preferred method of declaring CollectionItems.  One collection item specifies multiple metrics with their own filter criteria and Condition elements defined.

<TargetCollection TYPE="network" >

<CollectionItem NAME = "Response">

<Schedule>

<IntervalSchedule INTERVAL = "300" TIME_UNIT = "Sec"/>

</Schedule>

<Condition COLUMN_NAME="Status"
CRITICAL="ok"
OPERATOR="NE"
OCCURRENCES="3"
MESSAGE="%target% adaptor is inaccesible or is connected."
MESSAGE_NLSID="network_response_status"/>
</CollectionItem>

</TargetCollection>

この例は、'network'ターゲット・タイプのデフォルトの収集を示しています。メトリックはCollectionItemのNAME属性として指定されています。このようにCollectionItem内でメトリックNAMEを指定する方法は、下位互換性のみを目的としています。かわりに、MetricCollsの例を使用します。

TargetCollectionには、オプションの'CollectionLevel'要素および'CollectionItem'要素が含まれます。

<TargetCollection TYPE="oracle_beacon" >

NAME属性は、これがdefault_collectionsに含まれていない可能性があることを意味します。

21.3.2 CollectionLevel

この要素は、収集レベル・リストを表しています。これはデフォルトの収集にのみ適用されます。順序は、'contains'関係を意味しています。

<!ELEMENT CollectionLevel EMPTY>
<!ATTLIST CollectionLevel
NAME CDATA #REQUIRED>

21.3.2.1 属性

NAME: 収集レベルの名前

21.3.2.2 要素

なし

21.3.2.3 使用場所

TargetCollection

21.3.2.4 例

<TargetCollection TYPE=”example2”> <CollectionLevel NAME=”LEVEL1”/> <CollectionLevel NAME=”LEVEL2”/> <CollectionLevel NAME=”LEVEL3”/> . . . <MetricColl NAME=”metric1”> <ItemProperty NAME=”prop1”>foo</ItemProperty> <Condition COLUMN_NAME=”value” CRITICAL=”bar” OPERATOR=”EQ”/> </MetricColl></TargetCollection>

収集レベルの順序は、LEVEL1収集項目がLEVEL2に含まれ、LEVEL2およびLEVEL1の両方の項目がLEVEL3に含まれることを意味します。

この要素を使用してレベルを宣言すると、LEVEL属性によってこれらのレベルが参照されます。

21.3.3 CollectionItem

CollectionItemは、1つ以上のメトリックの収集を定義します。スケジュールを持っています。

<!ELEMENT CollectionItem (ValidIf*, Schedule?, (MetricColl+ | (ItemProperty*, Filter*, LimitRows?, Condition*)  ) )>
<!ATTLIST CollectionItem
NAME CDATA #REQUIRED
LEVEL CDATA #IMPLIED
UPLOAD CDATA "YES"
UPLOAD_ON_FETCH (TRUE | FALSE) "FALSE"
ATOMIC_UPLOAD (TRUE | FALSE) ”FALSE”
POSTLOAD_PROC CDATA #IMPLIED
PRELOAD_PROC CDATA #IMPLIED
CONFIG       (TRUE | FALSE) "FALSE"
CONFIG_METADATA_VERSION CDATA #IMPLIED
TIMEOUT  CDATA  #IMPLIED
COLLECT_WHEN_DOWN (TRUE | FALSE) "FALSE"
COLLECT_WHEN_ALTSKIP (TRUE | FALSE) "FALSE"
COMBINE_WITH_OTHER_COLLECTION (TRUE | FALSE) "TRUE"
PROXY_TARGET_NAME CDATA #IMPLIED
PROXY_TARGET_TYPE CDATA #IMPLIED
PROXY_TARGET_TZ   CDATA #IMPLIED
PROXY_TARGET_TZ_REGION   CDATA #IMPLIED
INITIAL_UPLOADS CDATA #IMPLIED
DISABLED (TRUE | FALSE) "FALSE"
REQUIRED (TRUE | FALSE) "FALSE">

21.3.3.1 属性

NAME: 収集の名前を指定します。

LEVEL: 収集レベル。

UPLOAD: この属性が指定されていない場合は、YESとみなされます。NUMBERは、CollectionItemがアップロードされる頻度を示します。(n回の収集ごとにアップロード)。

YES (デフォルト) | NO | NUMERIC

UPLOAD_ON_FETCH: UPLOAD_ON_FETCHとしてマークされた収集項目は、ATOMIC_UPLOADと同じ動作をしますが、唯一の相違点はアップロードがただちに発生することです。

TRUE | FALSE(デフォルト)

COLLECT_WHEN_DOWN: デフォルトの動作では、Responseメトリック(ターゲットに対して存在する場合)によってターゲットのステータスが停止中と示された場合に収集が停止します。Responseメトリック自体である場合は例外です。ただし、ターゲットの停止中に収集を行わないという動作は、この属性をTRUEに設定することで上書きできます。

TRUE | FALSE(デフォルト)

COLLECT_WHEN_ALTSKIP: デフォルトの動作では、AltSkipConditionが定義済でその条件に重大度が存在する場合に、メトリックの収集が停止します。この属性をTRUEに設定すると、このような場合でも収集が続行されます。ResponseのStatus条件の重大度を解消する方法は、COLLECT_WHEN_DOWN属性を使用する以外にありません。

TRUE | FALSE(デフォルト)

PROXY_TARGET_NAME: プロキシ収集のサポート用に使用され、ターゲット・データの名前およびアップロード対象の重大度を指定します。

PROXY_TARGET_TYPE: プロキシ収集のサポート用に使用され、タイプを指定します。

PROXY_TARGET_TZ_REGION: プロキシ収集のサポート用に使用され、タイムゾーン・リージョン文字列(たとえばUS/Pacific)を指定します。

PROXY_TARGET_TZ: プロキシ収集のサポート用に使用され、タイムゾーン(グリニッジ標準時(GMT)からの分数、たとえば-420)を指定します。

TIMEOUT: メトリック評価がいつまでに終了する必要があるかを示す時間。時間は秒単位で指定されます。評価がこの時間内に終わらない場合は、エージェントによってメトリック評価が中断され、TIMEOUT例外が戻されます。この属性が指定されていないか、値がゼロの場合は、収集ファイルに含まれるこのメトリック評価頻度の2倍がデフォルト値になります。タイムアウトが一切発生しないようにするには、0より小さい値を指定します。0より小さい値を指定すると、メトリックが完全に評価されるまで、エージェントが待機します。

POSTLOAD_PROC: UPLOAD_ON_FETCHの状況でのみ適用されます。この属性は、受信者がこの収集の内容を含むファイルを受信したときに起動する必要がある、オプションのPL/SQLプロシージャを指定します。

PRELOAD_PROC: UPLOAD_ON_FETCHの状況でのみ適用されます。この属性は、受信者がこの収集の内容を含むファイルを受信したときに起動する必要がある、オプションのPL/SQLプロシージャを指定します。

CONFIG: この属性は、CONFIGメトリックの収集にタグを付けるために使用されます。これらは、Enterprise Managerフレームワークによって特別に処理されます。注意: CONFIGメトリックの収集項目は、ATOMIC_UPLOADをFALSEに指定できません。TRUE | FALSE(デフォルト)

INITIAL_UPLOADS: デフォルト値は2ですが、UPLOADパラメータに基づいてアップロードをスキップする前にその他の初期アップロードを送る必要がある場合は、別の数値に設定できます。

ATOMIC_UPLOAD:ATOMIC_UPLOADとしてマークされた収集項目は、通常のアップロード間隔(5分)でアップロードされる単一のファイルにバンドルされます。

TRUE | FALSE(デフォルト)

CONFIG_METADATA_VERSION: この属性は、CONFIGメトリックのバージョンを指定するのに使用されます。

COMBINE_WITH_OTHER_COLLECTION: 通常、エージェントは収集を結合して、時間間隔に基づいてスレッドで保存するために単一のスレッドで順次実行します。前のメトリック実行に時間がかかっている場合は、これによってメトリック実行に遅延が発生する可能性があります。ただし、一部のメトリックは時間どおりに実行する必要があります。このフラグをFALSEに設定すると、このメトリックが独自のスレッドで実行されます。

TRUE(デフォルト)| FALSE

DISABLED: TRUEに設定された場合、エージェントはこの収集項目を無視します。

REQUIRED: TRUEに設定された場合、コンソールはユーザーがこの項目を無効化することを許可しません。

21.3.3.2 要素

ValidIf

MetricColl

ItemProperty

Filter

LimitRows

Condition

21.3.3.3 使用場所

TargetCollection

21.3.3.4 例

CollectionItemは'ValidIf'要素を含めることができます。この要素は、CollectionItemを評価するためには、すべて満されている必要があります。これには、オプションの'Schedule'要素と、'MetricColl'要素、あるいは'ItemProperty'、'Filter'、'LimitRows'または'Condition'要素を含むことができます。

下位互換性のために、NAME属性を使用して単一のメトリックを指定でき、そのプロパティ、フィルタおよび条件を子要素として指定できます。

新しい優先DTDには、CollectionItem内に1つ以上のMetric要素があり、それぞれは、収集するメトリック、関連付けるフィルタ、しきい値などを示しています。

<CollectionItem NAME="ProgramResourceUtilization">

これはこの要素の最もシンプルな例です。'ProgramResourceUtilizationはCollectionItemです。

<CollectionItem NAME = "general_collection" UPLOAD="12" INITIAL_UPLOADS="4">

このサンプルでは'general_collection'は、最初に4回(INITIAL_UPLOADSで示された数値)アップロードされ、その後は12回(UPLOAD属性で示された数値)に1回アップロードされます。

<CollectionItem NAME = "Inventory" UPLOAD_ON_FETCH = "TRUE" TIMEOUT = "3600">

'Inventory'収集項目は、メトリックが収集されるときにアップロードされます。指定されたタイムアウトは1時間です。

<CollectionItem NAME = "oracle_security" UPLOAD_ON_FETCH = "TRUE" CONFIG = "TRUE">

この例の'oracle_security'はCONFIGメトリックの収集に関与するため、EMAgentに対してそのように示す必要があります。

<CollectionItem NAME = "UserResourceUsage" UPLOAD="YES" UPLOAD_ON_FETCH="FALSE" COLLECT_WHEN_DOWN="FALSE">

UPLOAD属性は、'Yes'、'No'または数値を指定できます。'UserResourceUsage'収集は、レスポンス・メトリックによってターゲットが停止中であると示された場合でも試行されます。

PROXY_TARGET_TZ_REGIONは、PROXY_TARGET_TZのプロシージャを継承します(両方が指定されている場合)。

TargetCollectionの例を参照してください。

21.3.4 MetricColl

MetricColl要素は、収集項目内で収集されるメトリックを参照します。

<!ELEMENT MetricColl (ItemProperty*, Filter*, LimitRows?, Condition*)>
<!ATTLIST MetricColl
NAME CDATA #REQUIRED
TRANSIENT (TRUE|FALSE) ”FALSE”
UPLOAD_IF_SEVERITY (WARNING|CRITICAL|CHANGE_ONLY) "CHANGE_ONLY">

21.3.4.1 属性

NAME: これは収集するメトリックの名前です。

TRANSIENT: この属性がTRUEに設定されている場合、このメトリックのデータはアップロードされるか収集されて、他のメトリックの評価に使用されているキャッシュをリフレッシュすることを示しています。UPLOAD_IF_SEVERITY: UPLOAD=NOであり、UPLOAD=N>1の場合のみ有効です。

サポートされている値は次のとおりです。

- CHANGE_ONLY (デフォルト): 重大度が変更されたときにデータをアップロードします

- WARNING: 重大度に変更があり、条件がWARNINGまたはCRITICALの場合にデータをアップロードします

- CRITICAL: 重大度に変更があり、条件がCRITICALの場合にデータをアップロードします

21.3.4.2 要素

ItemProperty

Filter

LimitRows

Condition

21.3.4.3 使用場所

CollectionItem

21.3.4.4 例

MetricCollには、オプションのItemProperty要素(単数または複数)、Filter要素(単数または複数)、オプションのLimitRows要素(単数)およびオプションのCondition要素(単数または複数)を含めることができます。

<MetricColl NAME = "WebServicesService"/>

これはMetricCollの一般的な使用方法です。'WebServicesService'メトリックはCollectionItemに関連付けられます。

TargetCollectionの例を参照してください。

21.3.5 LimitRows

LimitRowsは、Upload Managerを介してリポジトリに送信される前の収集済データに適用できるフィルタ処理のメカニズムです。アップロードされる行数を制限します。

<!ELEMENT LimitRows EMPTY>
<!ATTLIST LimitRows
COLUMN_NAME CDATA #IMPLIED
SORT_ORDER (ASCEND|DESCEND|NO_ORDER) "NO_ORDER"
LIMIT_TO    CDATA   #REQUIRED>

21.3.5.1 属性

COLUMN_NAME:

SORT_ORDER:

サポートされている値は次のとおりです。

- ASCEND:

- DESCEND:

- NO ORDER (デフォルト):

LIMIT_TO: 収集での行数の制限を指定します。

21.3.5.2 要素

なし

21.3.5.3 使用場所

CollectionItem

MetricColl

21.3.5.4 例

<LimitRows LIMIT_TO="16" />

この例では、収集結果が16行に制限されます。

21.3.6 ItemProperty

この要素は、プロパティの名前/値ペアを示します。

<!ELEMENT ItemProperty (#PCDATA)>
<!ATTLIST ItemProperty
NAME CDATA #REQUIRED
ENCRYPTED (NA|FALSE|TRUE) ”NA”
>

21.3.6.1 属性

NAME: 項目プロパティの名前

ENCRYPTED: プロパティ値が暗号化されるかどうかを示します。

属性に対して次の値が定義されます。

NA(デフォルト): 暗号化を適用できません。値の暗号化はエージェントによって試行されません。

FALSE: 暗号化を適用できます。エージェントによって値の暗号化が試行されます。

TRUE: 暗号化を適用できます。エージェントによって値が暗号化されています。

21.3.6.2 要素

文字データ

21.3.6.3 使用場所

CollectionItem

MetricColl

21.3.6.4 例

<TargetCollection TYPE=”example2”>
. . .

<MetricColl NAME=”metric1”>
<ItemProperty NAME=”prop1”>foo</ItemProperty>
<Condition COLUMN_NAME=”value” CRITICAL=”bar” OPERATOR=”EQ”/>
</MetricColl>
</TargetCollection>

ItemPropertyの'prop1'は、ターゲット・タイプ'example2'に対してTargetMetadataの'metric1'の'USER'スコープで定義された'prop1'プロパティの値を計算するために利用されます。

21.3.7 Filter (ターゲット収集用)

Filterは、Upload Managerを介してリポジトリに送信される前の収集済データに適用できる、フィルタ処理のメカニズムです。フィルタ処理が適用されていない場合、fetchletを介して収集されたすべてのデータは、リポジトリに送信されます。その結果、リポジトリはいくつかのメトリックをアップロードするとすぐにいっぱいになります。この問題を改善するには、アップロード前のデータにフィルタ処理のメカニズムを適用します。フィルタ条件はcollection xmlで指定されます。

<!ELEMENT Filter (#PCDATA)>
<!ATTLIST Filter
COLUMN_NAME CDATA #REQUIRED
OPERATOR  (EQ|LT|GT|LE|GE|NE|CONTAINS|MATCH) "EQ"
AFTER_SEVERITY_CHECKING (TRUE|FALSE)  "FALSE" >

注意:
TargetCollection用のFilter要素とTargetMetadata用のFilter要素は異なります。

21.3.7.1 属性

COLUMN_NAME: フィルタ処理を行うメトリックの列の名前。

OPERATOR: 演算子を指定します。

EQ(デフォルト): 等しい

LT: より少ない

GT: より大きい

LE: 以下

GE: 以上

NE: 等しくない

CONTAINS: 含む

MATCH: 一致する

AFTER_SECURITY_CHECKING: TRUEの場合、フィルタは重大度チェックの後に適用されます。

TRUE | FALSE(デフォルト)

21.3.7.2 要素

文字データ

21.3.7.3 使用場所

CollectionItem

MetricColl

21.3.7.4 例

<Filter COLUMN_NAME="total_connections" OPERATOR="NE">0</Filter>

結果には、'total_connections'が0と等しくない行のみが含まれます。

21.3.8 Condition

Condition要素は、重大度がいつトリガーされるかを定義します。

<!ELEMENT Condition (CategoryValue*, KeyColumn*, FixitJob? )>
<!ATTLIST Condition
CRITICAL CDATA #IMPLIED
WARNING CDATA #IMPLIED
OPERATOR (EQ | LT | GT | LE | GE | NE | CONTAINS | MATCH ) "GT"
OCCURRENCES CDATA "1"
NO_CLEAR_ON_NULL (TRUE | FALSE) "FALSE"
MESSAGE CDATA #IMPLIED
MESSAGE_NLSID CDATA #IMPLIED
COLUMN_NAME CDATA #REQUIRED
PUSH (TRUE | FALSE) "FALSE"
GENERATE_INIT_CLEAR (TRUE | FALSE) "FALSE"
ALERT_CONTEXT CDATA #IMPLIED
CLEAR_MESSAGE CDATA #IMPLIED
CLEAR_MESSAGE_NLSID CDATA #IMPLIED
STATELESS_ALERT (TRUE | FALSE)  "FALSE"
>

これが表メトリックの場合、行および列の識別に使用する列およびキーが、メトリック列を使用して定義されます。

メトリック列に対してKEYONLY_THRESHOLDSをTRUEに設定した場合は、Condition要素にKeyColumn要素を含める必要があります。

21.3.8.1 属性

CRITICAL: しきい値。しきい値の特別値NotDefinedによって、OPERATORで指定された操作の結果は確実に失敗します。

WARNING: しきい値。NotDefinedはWARNINGにも適用できます。

OPERATOR: 条件を評価するための演算子を指定します。

EQ: 等しい

LT: より少ない

GT(デフォルト): より大きい

LE: 以下

GE: 以上

NE: 等しくない

CONTAINS: 含む

MATCH: 一致する

OCCURRENCES: デフォルト値は1です。

NO_CLEAR_ON_NULL: メトリック列に対してNULL値が戻されたときに重大度のクリアリングを制御するために、この属性は使用されます。デフォルトはFALSEで、NULL値が前のアラート重大度をクリアする動作をします。この属性にTRUE値が設定されている場合、重大度をクリアせずに、重大度の評価においてNULL値はスキップされます。

MESSAGE: この属性は、イベントが発生すると送信されるメッセージを生成するための、メッセージ・テンプレートです。このメッセージには次のプレースホルダを含めることができます。

- %value%: メトリックの値 (またはメトリックの列)

- %target%: ターゲットの名前

- %metric_id%: メトリックID

- %column_name%: 値列およびキー列を含むことが可能な列の値になります

- %warning_threshold%: 条件の警告のしきい値

- %critical_threshold%: 条件のクリティカルのしきい値

- %num_of_occur%: 発生数

MESSAGE_NLSID: メッセージのリソース・バンドルの文字列IDを指定します。

*COLUMN_NAME: 表メトリックでは、COLUMN_NAMEは確認対象の列を定義します。KeyColumnを使用して行が識別されます。

PUSH: この属性は、プッシュベースのアラート用に作成された条件を、収集済データ全体で評価される条件と区別するために使用します。PUSH="TRUE"の条件はエージェントによって評価されません。

GENERATE_INIT_CLEAR: この属性は、最初にクリアが生成されたときに重大度を生成しないというエージェントの動作を上書きするために使用できます。最初のクリアを生成する場合は、TRUEに設定します。

ALERT_CONTEXT: この属性は、関連するアラート・コンテキストを渡すために使用します。この新しい属性には、セミコロン(;)区切りの列名のリストを含めることができます。

CLEAR_MESSAGE: アラートがクリアされた場合の異なるメッセージを指定します。この属性が含まれていない場合は、アラートのクリア時にMESSAGE属性が使用されます。

CLEAR_MESSAGE_NLSID: クリア・メッセージのNLSIDを指定します。存在しない場合は、アラートのクリア時にMESSAGE_NLSIDが使用されます。

STATELESS_ALERT: デフォルトはfalseです。この属性がTRUEに設定されている場合、Enterprise Managerは条件に関連付けられた状態を保持しないよう指示されます。デフォルトはFalseです。

21.3.8.2 要素

CategoryValue

KeyColumn

FixitJob

21.3.8.3 使用場所

CollectionItem

MetricColl

21.3.8.4 例

Condition要素には、オプションのCategoryValue要素(単数または複数)、KeyColumn要素(単数または複数)、およびオプションのFixitJob要素(単数)を含めることができます。

キー適用後の結果に複数の行が含まれている場合、生成されたイベント発生には、しきい値を超えた行ごとの内容/メッセージが含まれます。

正規表現にはMATCHが使用されます。

次に例を示します。

OPERATIOR="MATCH" CRITICAL=".*ORA.*ERR.*"

この文では、ORAとERRの両方を含むORA-ERR 345のような文字列が一致します。

CategoryValueサブタグは、CLASSおよびCATEGORYの2つの軸に沿ったConditionを分類するのに使用されます。たとえばCLASS=Fruits、CATEGORY=RedFruitsなどの条件の分類は、その他の根本原因分析に役立ちます。

<Condition COLUMN_NAME="alertSeverity"
CRITICAL="NotDefined"
WARNING="NotDefined"
OPERATOR="LE"
OCCURRENCES="1"
MESSAGE="%alertConcatString%"
NO_CLEAR_ON_NULL="TRUE"
MESSAGE_NLSID="host_alertLog_alertSeverity_cond"/>

<Condition COLUMN_NAME="State"
CRITICAL="open"
OPERATOR="EQ"
MESSAGE="%Description%"
ALERT_CONTEXT="In-contextLaunchURL"
NO_CLEAR_ON_NULL="TRUE" />

これらは、Condition要素の例です。

<TargetCollection TYPE="examplec1" >
<CollectionItem NAME = "Response">
<Schedule>
<IntervalSchedule INTERVAL = "300" TIME_UNIT = "Sec"/>
</Schedule>
<Condition COLUMN_NAME="Status"
CRITICAL="ok"
OPERATOR="NE"
OCCURRENCES="3"
MESSAGE="%target% adaptor is inaccesible or is connected."
MESSAGE_NLSID="network_response_status"/>
</CollectionItem>

</TargetCollection>

このサンプルは、Condition要素のコンテキストを示しています。

その他の例は、TargetCollectionの例を参照してください。

21.3.9 KeyColumn

KeyColumn要素は、表のキー列を指定するために使用されます。表の行を識別します。KEYONLY_THRESHOLDS属性がMetric列に対して設定されている場合、この要素はCondition要素内に存在している必要があります。

<!ELEMENT KeyColumn (#PCDATA)>
<!ATTLIST KeyColumn
COLUMN_NAME CDATA #REQUIRED
OPERATOR    (EQ | LIKE) "EQ">

21.3.9.1 属性

COLUMN_NAME: キー列の名前を指定します。

OPERATOR:

サポートされている値は次のとおりです。

- EQ (デフォルト) : 等しい

- LIKE: 相似

21.3.9.2 要素

文字データ

21.3.9.3 使用場所

Condition

21.3.9.4 例

<Condition COLUMN_NAME="col3" WARNING="def" OPERATOR="CONTAINS">
<KeyColumn COLUMN_NAME=”col1”>keyA</KeyColumn>
</Condition>

21.3.10 FixitJob

この要素は、アラートに応じて実行される処置を示します。

<!ELEMENT  FixitJob  (Property*) >
<!ATTLIST  FixitJob
TYPE    CDATA  #IMPLIED >

21.3.10.1 属性

TYPE: ジョブのタイプを指定します。

21.3.10.2 要素

Property

21.3.10.3 使用場所

Condition

21.3.10.4 例

<TargetCollection TYPE="examplec1" >

<CollectionItem NAME = "FixitExample" UPLOAD_ON_FETCH="TRUE">
<Schedule>
<IntervalSchedule INTERVAL="60" TIME_UNIT="Sec" />
</Schedule>

<MetricColl NAME=”metric1”/>

<Condition COLUMN_NAME="col2" CRITICAL="0" OPERATOR="GT" OCCURRENCES="1">
<FixitJob TYPE=”OSCommand”>

<Property NAME=”prop_env” SCOPE=”ENV”>EMDROOT</Property>
<Property NAME=”prop_loc” SCOPE=”INSTANCE”>FILE_LOC</Property>
<Property NAME=”COMMAND” SCOPE=”GLOBAL”>rm %prop_loc %</Property>
</FixitJob>
</Condition>
</CollectionItem>
</TargetCollection>

この例は、条件に応じてファイルを削除する単純なFixitJobを示しています。COMMANDプロパティは、メトリックのcol2の値によって条件がトリガーされた場合に実行されるコマンドを指定します。

A 即時利用可能なアソシエーション

Enterprise Managerには、ほとんどのプラグイン開発者のニーズを満たすアソシエーション・タイプの共通セットが用意されています。プラグイン開発者はこれらのアソシエーション・タイプについてよく理解して使用する(該当する場合)ことをお薦めします。プラグイン開発者として、アソシエーション・タイプと、すべてのアソシエーション・タイプの使用について説明するドキュメント(allowed_pairs)へのリンクを含むインテグレータとドキュメントの表も更新する必要があります。

次の表で、即時利用可能なアソシエーションについて詳しく説明します。

- 表A-1「application_contains」

- 表A-2「app_composite_contains」

- 表A-3「authenticated_by」

- 表A-4「composite_contains(抜粋)」

- 表A-5「cluster_contains」

- 表A-6「connects_through」

- 表A-7「contains(抜粋)」

- 表A-8「depends_on(抜粋)」

- 表A-9「deployed_on」

- 表A-10「exposes」

- 表A-11「hosted_by」

- 表A-12「installed_at」

- 表A-13「internal_contains(内部OMS使用の場合のみ)」

- 表A-14「managed_by」

- 表A-15「monitored_by」

- 表A-16「provided_by」

- 表A-17「runs_on(抜粋)」

- 表A-18「stores_on」

- 表A-19「stores_on_db」

- 表A-20「uses(抜粋)」

表A-1 application_contains

基本詳細

ソース/宛先

説明

用途

拡張: Contains

コア/拡張: コア

表示名: "contains (app component)"

逆: member_of_application

ソース: コンポジットの種類ではない集計タイプ(oracle_emrepなど)。ソース・タイプがコンポジット・タイプの場合、ユーザーはcomposite_containsを使用するか、そこから拡張されるアソシエーション・タイプを使用する必要があります。

宛先: メンバー・エンティティ・タイプ。たとえば、Enterprise Managerコンソールやバックエンド・サービスのj2ee_applicationsはoracle_emrepのメンバーです。

カーディナリティ: 0..*

アプリケーションとそのメンバー間のメンバーシップを取得します。ソースは、メンバーの集計になります。1つのメンバーが、複数の集計の一部になることができます。

アプリケーションのメンバーシップを示します。トポロジで使用できます。

表A-2 app_composite_contains

基本詳細

ソース/宛先

説明

用途

拡張: application_contains、composite_contains

コア/拡張: コア

表示名: "contains (app_composite component)"

逆: member_of_composite_app

ソース: コンポジット・タイプでもある任意のアプリケーション(siebel_serverなど)。ソース・タイプがクラスタ・タイプの場合、cluster_containsを使用する必要があります。

宛先: メンバー・エンティティ・タイプ。たとえば、siebel_component_groupはsiebel_serverのメンバーになります。

カーディナリティ: 0..*

アプリケーションとそのメンバー間のメンバーシップを取得します。メンバーシップも構成の一種になります。1つのメンバーは、1つの構成のみの構成要素となります。

アプリケーションのメンバーシップを示します。トポロジで使用できます。

表A-3 authenticated_by

基本詳細

ソース/宛先

説明

用途

拡張: depends_on

コア/拡張: コア

表示名: "authenticated_by)"

逆: authenticates

ソース: 認証を必要とするME

宛先: 認証を提供するME(oracle_ldapなど)

カーディナリティ: 0..1

アプリケーションとそのメンバー間のメンバーシップを取得します。メンバーシップも構成の一種になります。1つのメンバーは、1つの構成のみの構成要素となります。

アプリケーションのメンバーシップを示します。トポロジで使用できます。

表A-4 composite_contains(抜粋)

基本詳細

ソース/宛先

説明

用途

拡張: contains、uses

コア/拡張: コア

表示名: "CompositeContains"

逆: member_of_composite

ソース: ソース: 任意のコンポジット・タイプ

宛先: コンポジットのメンバー。

カーディナリティ: 0..*

構成要素の1つのインスタンスを、一度に最大で1つのコンポジットに含める必要がある集計の形式。例: データベースD1がOracle RACクラスタR1を構成する場合、D1は別のクラスタR2の一部になることはできません。これは、ソースとそのすべてのメンバーの周囲にボックスを配置して、メンバーが別のソースの一部になれないことを示す場合に使用されます。

この制限は、composite_containsから拡張される特定の具体的なアソシエーション・タイプに適用されます。Tがcomposite-containsを拡張する場合、MEは、タイプTの1つのみのアソシエーションの宛先になります。ただし、具体的なcomposit_containsタイプが異なる場合、MEは別のソースMEを含む宛先になることができます。

現在の使用方法では、クラスタ・ターゲット(rac_database、cluster、weblogic_cluster)をそのメンバーにリンクします。トポロジ・ビューアなどのフレームワーク機能で使用できます。

表A-5 cluster_contains

基本詳細

ソース/宛先

説明

用途

拡張: composite_ contains

コア/拡張: コア

表示名: "contains (in cluster)"

逆: member_of_cluster

ソース: クラスタ・ターゲット・タイプ(RACまたはクラスタなど)

宛先: クラスタのメンバー・タイプ。クラスタ・メンバー・タイプは同じにします。

カーディナリティ: 1..*

クラスタ・メンバーシップ。メンバーのタイプは同じで、スケーラビリティと冗長性が得られます。コンポジットの包含も示します。Cluster A cluster_contains Bの場合、Bが別のクラスタCのメンバーになれないことを表します。

統合プランナなどのツールで、クラスタ・メンバーシップを把握する必要があります。トポロジ・ビューアなどのすべての汎用ツールでも同様です。

表A-6 connects_through

基本詳細

ソース/宛先

説明

用途

拡張: depends_ on

コア/拡張: コア

表示名: "connects_through"

逆: connects

ソース: 中間パスを介して別のMEに接続しているME。例: リスナーを介してデータベースに接続しているアプリケーション

宛先: 別のMEのアクセス・ポイントを提供するME(oracle_listener、oracle_apache、slb)

カーディナリティ: 0..*

データベースを公開するアプリケーションconnects_throughリスナー。oracle_oc4jを公開するサービスconnects_through oracle_apache。

アプリケーション・トポロジで使用され、中間パスを介したエンドへの接続を表します。例: データベースを公開するconnects_throughリスナー。ソースには、エンド・ポイントで直接機能する依存性もあります(アプリケーションstores_on_dbデータベース)。機能ビューでは、stores_on_dbの直接依存性が表示され、物理ビューでは、リスナー・リンクが表示されます。

表A-7 contains(抜粋)

基本詳細

ソース/宛先

説明

用途

拡張: none

コア/拡張: コア

表示名: "contains"

逆: member_of

任意のソースMEとそのメンバーMEのタイプ

カーディナリティ: 0..*

包含メンバーシップを示します。A contains Bは、BがAを構成する要素の1つであることを示します。

すべての包含関係はプラグイン開発者が取得する必要があります。ただし、システム・メンバーシップはOMSによって取得されます。TC包含は、アソシエーション・インスタンスを介して表す必要はありません。containsから拡張する具体的なタイプを使用する必要があります。

ただし、ユーザーは、constainsから拡張するすべてのアソシエーション・タイプのインスタンスに問合せを行うことができます。トポロジ・ビューアなどのフレームワーク機能でこのタイプのアソシエーションに問合せを行うことができます。

表A-8 depends_on(抜粋)

基本詳細

ソース/宛先

説明

用途

拡張: uses

コア/拡張: コア

表示名: "Depends on"

逆: depended_on_by

ソース: 任意のMEタイプ

宛先: 任意のMEタイプ

カーディナリティ: 0..*

可用性についてME Bに依存する任意のME Aの場合。ME Bを使用できない場合、Aの可用性に影響があります。

RCAやトポロジ・ビューアなどのフレームワーク機能で使用できます。

表A-9 deployed_on

基本詳細

ソース/宛先

説明

用途

拡張: runs_on、member_of_application

コア/拡張: コア

表示名: "Deployed on"

逆: deploys

ソース: ターゲット・コンポーネントを除く任意のME

宛先: j2eeコンテナ

カーディナリティ: 1..*

アプリケーションAは、J2EE?コンテナBにデプロイされます。

トポロジ・ビューアでは、j2eeサーバーにデプロイされたアプリケーションを表示できます。

表A-10 exposes

基本詳細

ソース/宛先

説明

用途

拡張: uses

コア/拡張: コア

表示名: "exposes"

逆: exposed_by

ソース: 別のMEのアクセス・ポイントを提供するME(oracle_listener、oracle_apache、slb)

宛先: ソースを介してアクセスされるターゲットのME。

カーディナリティ: 0..*

MEの一部の機能は、他のMEによって公開されます(oracle_listenerがoracle_databaseをアプリケーションに公開する場合や、oracle_apacheがoc4jを公開する場合など)。使用するセマンティクスをさらに取得します。データベースが停止した場合、リスナーが実行可能な操作に影響があります。ただし、リスナー自体は停止せず、低下モードになります。

ターゲット/システムのエントリ・ポイントを表す場合に使用されます。

リスナーはoracle_databaseを公開します。この場合、厳密には、アクセス・ポイントを提供するデータベース・ターゲットではありません。Oracleデータベースを、リスナーを介して利用可能なサービスを提供するものと考えることができます。

oracle_httpはoc4jを公開します。繰り返しになりますが、oc4jターゲットはhttpサービスを提供しません。httpサービスは、アプリケーションをoc4jに接続する個別サービスとして実行します。

トポロジ・ビューアなどのフレームワーク機能で使用できます。

表A-11 hosted_by

基本詳細

ソース/宛先

説明

用途

拡張: runs_on

コア/拡張: コア

表示名: "hosted_by"

逆: host_for

ソース: システム、サービスまたはターゲット・コンポーネントを除く任意のMEタイプ

宛先: ホスト

カーディナリティ: 1

hosted_by Hの任意のターゲットTの場合、Tを構成するプロセスは、ホストHで実行されます。ターゲットは、1つのホストでのみホストされます。

指定のホストで実行するターゲットの検索に使用されます。

表A-12 installed_at

基本詳細

ソース/宛先

説明

用途

拡張: uses

コア/拡張: コア

表示名: "installed_at"

逆: install_home_for

ソース: ターゲット・コンポーネントを除く任意のME

宛先: インストール・ホームを表すME

カーディナリティ: 1

A installed at Bの場合、BがAのインストール・ホームであることを示します。例: oracle database --> installed_at --> oracle_home

MEのソフトウェアがインストールされるインストール・ホームへのリンクを示す場合に使用されます。パッチ適用で使用され、ターゲットがインストールされるOracleホームになります。

表A-13 internal_contains(内部OMS使用の場合のみ)

基本詳細

ソース/宛先

説明

用途

拡張: contains

コア/拡張: コア

表示名: "InternalContains"

逆: internal_member_of

ソース: システム/グループ

宛先: システムには、グループを除く任意のMEを含めることができます。グループには、ターゲット・コンポーネントを除く任意のMEを含めることができます。

カーディナリティ: 0..*

システムとコンポーネント部分の関係全体を指定する特殊な形式のアソシエーション。コンポーネント部分は、システムとは関係なく存在し、複数のシステムの一部になることができます。System A contains Bは、BがAを構成する要素の1つであることを示します。他のシステムCにBを含めることもできます。

ユーザーは、通常グループ/システムAPIを使用してメンバーを検索する必要があります。ただし、表/ビューに対してinternal_containsに問合せを実行できます。

表A-14 managed_by

基本詳細

ソース/宛先

説明

用途

拡張: monitored_by, uses

コア/拡張: コア

表示名: "managed_by"

逆: manages

ソース: ターゲット・コンポーネントを除く任意のMEタイプ

宛先: 他のMEタイプの管理機能を提供できるMEタイプ。たとえば、oracle_csは、oracle_databaseやoracle_listenerなどを管理できます。

カーディナリティ: 1..*(特定のallowed_pairでは、より厳密なカーディナリティ(1など)を使用できます)

宛先のMEは、ウォッチドッグとして機能し、ソース・ターゲットを起動できます。別のエンティティを管理するエンティティは、管理対象エンティティを変更できます。monitored_byにはこのセマンティックはありません。

トポロジ・ビューアなどのフレームワーク機能でアソシエーションを使用できます。

表A-15 monitored_by

基本詳細

ソース/宛先

説明

用途

拡張:

コア/拡張: コア

表示名: "monitored_by"

逆: monitors

ソース: ターゲット・コンポーネントを除く任意のMEタイプ

宛先: エージェント

カーディナリティ: 1(カーディナリティは常に1)

エージェントで監視される任意のターゲットTの場合。例: target T--> monitored_by -> agent A

エージェントの同期、可用性の計算、フレームワーク・コードで使用されます。

表A-16 provided_by

基本詳細

ソース/宛先

説明

用途

拡張: depends_on

コア/拡張: コア

表示名: "provided_by"

逆: provides

ソース: 通常はある種のサービスを表すME(データベース・サービス、Fusion製品、Webサービスなど)

宛先: サービスを提供するシステムまたはターゲット

カーディナリティ: 1

A provided_by Bは、BというサービスがME Aで提供されることを示します。

トポロジ・ビューアでアソシエーションを表示できます。

表A-17 runs_on(抜粋)

基本詳細

ソース/宛先

説明

用途

拡張: depends_on

コア/拡張: コア

表示名: "runs_on"

逆: runs

ソース: ターゲット・コンポーネントを除く任意のME

宛先: 他のMEが実行するためのインフラストラクチャ(VMなど)を提供する任意のME。

カーディナリティ: 1

A run_on Bの場合、Aの一部のプロセスを実行するためのインフラストラクチャをBが提供することを示します。注意: プロセスは英語の意味で使用されます。OSプロセスは示しません。

トポロジ・ビューアなどのフレームワーク機能で使用できます。

表A-18 stores_on

基本詳細

ソース/宛先

説明

用途

拡張: depends_on

コア/拡張: コア

表示名: "stores_on"

逆: stores

ソース: 通常は、データを保存するターゲット。例: oracle_databaseまたはSQLサーバー。

宛先: 記憶域を表すME。例: NetApp FilerまたはExadata。

カーディナリティ: 0..*

ビットの記憶域を表すターゲットへのリンクを示します。A stored_on Bは、Aの記憶域ビットのインフラストラクチャをBが提供することを示します。例: datafile-->stored_on-->netapp_filer保存されたデータは静的または更新可能になります。

記憶域インフラストラクチャへのリンクを示す場合に使用されます。トポロジ内の記憶域の詳細を視覚的に検索します。

表A-19 stores_on_db

基本詳細

ソース/宛先

説明

用途

拡張: stores_on

コア/拡張: コア

表示名: "Data Repository"

逆: data_repository_for

ソース: データベースにデータを保存するME。

宛先: データを保存するためのデータベース・リポジトリを提供するME。例: application stores_on_db oracle_database

カーディナリティ: 0..*

データベース・サーバーが停止した場合にソースが停止する可能性があるという点で、depends_onを表します。

アプリケーション・トポロジで使用され、アプリケーション・データが保存されるデータベースを表します。

表A-20 uses(抜粋)

基本詳細

ソース/宛先

説明

用途

拡張: None

コア/拡張: コア

表示名: "uses"

逆: used_by

ソース: 任意のMEタイプ

宛先: 任意のMEタイプ

カーディナリティ: 0..*

機能に関してME Bに依存する任意のME Aの場合。ただし、可用性に影響はありません。

トポロジ・ページで使用され、可用性の依存がないことを示します。

B プラグイン・テクニカル・チェックリスト

すべてのメタデータ・プラグインは、この付録に記載されている自己検証チェックリストを使用して、品質およびベスト・プラクティスについて評価されます。

これらのチェックリストに対して自己検証を実行してから、正式な確認のためにプラグインを発行することをお薦めします。また、Enterprise Managerリリース管理チームに、このチェックリストの最新バージョンについて問い合せてください。

次の項が含まれます:

- プラグインの確認

- ターゲットの確認

- カスタマイズされたUIの確認

- ジョブ・タイプの確認

- レポートの確認

- プラグインのテスト

B.1 プラグインの確認

表B-1に、プラグイン・データを確認するためのリストを示します。

プラグイン・メタデータの定義の詳細は、第2章「プラグインの定義」を参照してください。

表B-1 プラグイン・メタデータ・チェックリスト

カテゴリ

チェックリストのアイテム

Readmeタグ

plugin.xmlファイルにプラグインを説明するReadmeタグを組み込みます。80文字以上の長さにしてください。

詳細は、表2-1「plugin.xmlファイル内のキー要素」を参照してください。

DisplayName属性

plugin.xmlファイルに次のようなDisplayName属性を含めます。

<PluginAttributes DisplayName="Oracle Sun ZFS Storage Appliance" Type="MP"/>

詳細は、表2-1「plugin.xmlファイル内のキー要素」を参照してください。

TargetTypeListタグ

plugin.xmlファイルにTargetTypeListタグを組み込みます。

<TargetTypeList> <TargetType isIncluded="TRUE" name="sun_storage_7000" />

バージョン・サポート情報

これらのターゲットに対して、特定のバージョンまたは特定の範囲のバージョンをサポートしている場合は、そのバージョンを定義します。バージョンを指定しない場合、Enterprise Managerはこのプラグインがターゲット・タイプのすべてのバージョンをモニターおよび管理できると見なします。

注意: サポートされているバージョンの指定は必須要件ではありませんが、指定する必要があるかどうかを確認してください。

次の例はデータベース・プラグインのものです。

<TargetType name="oracle_database">
<VersionSupport> <SupportedVersion supportLevel="Comprehensive" minVersion="9.2.0.8.0" maxVersion="9.2.0.8.0"/>
<SupportedVersion supportLevel="Comprehensive" minVersion="10.1.0.5.0" maxVersion="10.1.0.5.0"/>
<SupportedVersion supportLevel="Comprehensive" minVersion="10.2.0.4.0" maxVersion="10.2.0.5.0"/>
<SupportedVersion supportLevel="Comprehensive" minVersion="11.1.0.7.0" maxVersion="11.1.0.7.0"/>
<SupportedVersion supportLevel="Comprehensive" minVersion="11.2.0.1.0" maxVersion="11.2.0.3.0"/>
</VersionSupport>

詳細は、表2-1「plugin.xmlファイル内のキー要素」を参照してください。

特定のプラグイン・カテゴリ

「その他」以外の特定のカテゴリを選択します。プラグインが次の事前定義済のカテゴリに適合しない場合、Oracle Extensibilityレビュー担当者に連絡してください。

- Applications

- Databases

- Middleware

- Engineered Systems

- Cloud

- Servers, Storage and Network

詳細は、表2-1「plugin.xmlファイル内のキー要素」を参照してください。

汎用プラグイン

デフォルトは「汎用」であるため、<PluginOMSOSAruId>タグを削除するか、次のように定義することをお薦めします。

<PluginOMSOSAruId value="2000"/>

詳細は、表2-1「plugin.xmlファイル内のキー要素」を参照してください。

OPARのサイズは2MB未満

Oracleプラグイン・アーカイブ(OPAR)ファイルが2 MB未満であることを確認します。

OPARファイルの詳細は、第14.4項「プラグイン・アーカイブの作成」を参照してください。

プラグイン検証レポート

プラグイン検証レポートで違反が報告されていないことを確認します。

詳細は、第14.3項「プラグインの検証」を参照してください。

リポジトリ接続詳細

プラグイン検証レポート内で、リポジトリ接続詳細の欠落が原因でスキップされた検証がないことを確認します。

B.2 ターゲットの確認

表B-2に、プラグインに定義されたターゲットに適用するチェックリストを示します。このチェックリストは、plugin_stage/oms/metadata/targetTypesディレクトリ内にファイルがある場合のみに適用されます。

ターゲットの詳細は、第3章「ターゲット・メタデータ・ファイルの作成」および第7章「ターゲット構成データの収集」を参照してください。

表B-2 ターゲット・チェックリスト

カテゴリ

チェックリストのアイテム

ターゲット・タイプ名

ターゲット・タイプ名が、oracle_vt_zoneまたはoracle_emas_forms_serverなどのパターンcompany_plugin_tag_type _nameに従っていることを確認します。

ターゲットがエンティティである

ターゲットがモニターおよび管理可能なエンティティで、ビジネスを正しくモデル化していることを確認します。

識別可能な存在

ターゲットがモデル化されており、Enterprise Managerがインストールされていなくても識別可能な存在であることを確認します。

管理可能なエンティティ・クラス

ターゲット・タイプが属する管理可能なエンティティ・クラスを特定し、それに従ってプロパティを設定します。

- is_system

- is_end_user_system
注意: このプロパティはエンドユーザー・システムに関するものです。ほとんどのプラグインにこのプロパティは必要ないため、プロパティを設定する前にOracle Extensibilityレビュー担当者に確認してください。

- is_service

- is_install_home

- is_group
注意: このプロパティは、target_type=compositeグループのみに設定する必要があります。

- is_existence_only
注意: このプロパティは、完全には管理またはモニターできていない新しいターゲットに対して設定する必要があります。

詳細は、表3-2「タイプ・プロパティ」を参照してください。

モニタリング・モード

このチェックは、リポジトリ側のターゲットのみに適用されます。リポジトリ・ターゲット・タイプに対してMonitoringModeが「リポジトリ」に設定されていることを確認します。

モニタリング・モード

このチェックは、MultiAgent側のターゲットのみに適用されます。

マルチエージェント・ターゲット・タイプに対して、MonitoringModeをOMSMediatedに設定します。

レスポンス・メトリック

すべてのターゲット・タイプは、レスポンス・メトリックを定義する必要があります。

詳細は、第3.4.2項「基本レスポンス・メトリック・グループの定義」を参照してください。

ターゲット・タイプ・メタデータ・バージョン

ターゲット・タイプ・メタデータ・バージョンは、2つの番号MM.NNで構成されています(MMはメジャー・バージョン番号、NNはマイナー・バージョン番号)。

メジャー・バージョン番号をメイン・プラグイン・リリースに設定します(プラグイン・リリースが12.1.N.N.Nの場合は12、13.N.N.N.Nの場合は13に設定)。

マイナー・バージョン番号を01から始まる2桁の数字(13.xプラグインの場合は13.01)に設定します

注意: 問合せ記述子、実行記述子、またはエージェント側のスクリプトの変更である場合は、メタデータ・バージョンを更新する必要はありません。

詳細は、第3.3.3項「ターゲット・タイプ・メタデータの定義」を参照してください。

ターゲット・タイプ・メタデータのマイナー・バージョン

マイナー・バージョン番号に2桁の形式(13.1ではなく、13.01など)が使用されていることを確認します。

注意: マイナー・バージョンは、右側に埋め込まれた20桁で比較されるため、メタデータ・バージョンのセマンティクスでは13.9は13.10より大きくなります(13と13は等しく、右側に埋め込まれた20桁の9は、右側に埋め込まれた10より大きくなるため(900000... > 100000..))。あるバージョンから別のバージョンに移行する場合、マイナー・バージョンの桁数が一致している必要があります。マイナー・バージョンを2桁にすることにより、番号を99まで増やすことができます。

以前のリリースに対して提供されたDDRパッチは、13.NNYYWWWの形式を使用します。13.01の上にメタデータ・パッチを提供している場合、パッチ・バージョンは13.0113005 (2013年の第5週の場合)です。13.0113005は13.01より大きいですが、ターゲット・タイプ・メタデータ・バージョンのセマンティクスでは13.02よりも小さくなります

詳細は、第3.3.3項「ターゲット・タイプ・メタデータの定義」を参照してください。

アソシエーション

抽象アソシエーション・タイプが使用されていないことを確認します(select assoc_type from mgmt_assoc_types where is_abstract=1)。

アソシエーション

コア・アソシエーション・タイプのみが使用されていることを確認します(select assoc_type from mgmt_assoc_types where category=1)。

アソシエーション

Provided_by/relies_on_key_componentの許可されたペアがサービスと他のターゲット・タイプ間で定義されていないことを確認します。

有効なターゲット・プロパティ

ターゲット・プロパティに、メトリックの収集などターゲットのモニターに使用するプロパティのみが含まれていることを確認します。

ターゲットに対してデータをダンプするために、名前と値のペアとしてターゲット・プロパティを使用しないでください。データが管理エージェントによって頻繁に使用されていない場合、このデータはターゲット・プロパティではありません。

ターゲット・バージョン・プロパティ

ターゲット・バージョン・プロパティが追加されていることを確認します。

ターゲット・バージョン・プロパティはターゲット・バージョンを取得します。デフォルトではEnterprise Managerは、versionプロパティを使用してターゲット・バージョンを表します。

ターゲット・バージョンはターゲットを管理するために必要なものであり、ターゲットの特定のバージョンがプラグインの新しいリリースで非推奨となっていることを示すことができます。これにより、管理者は使用している製品のバージョンを判断することもできます。

資格証明セット

資格証明が資格証明セットとして定義されていることを確認します。

詳細は、第16章「資格証明の定義」を参照してください。

資格証明の格納

ターゲット・プロパティに資格証明(ユーザー名またはパスワード)を格納しないでください。ユーザー名とパスワードは資格証明としてモデル化する必要があります。

レスポンス・メトリック

レスポンス・メトリック・カテゴリに、ステータスと呼ばれる唯一の数値メトリックがあることを確認します。

詳細は、第3.4.2項「基本レスポンス・メトリック・グループの定義」を参照してください。

メトリック定義

メトリック定義内でPerlへのパスがハードコードされていないことを確認します。

メトリック定義

定義されたキー列にTimestampまたはDateが格納されていないこと、また、Date、Timestamp、Line NumberまたはSession Idなどの変数のキー部分がないことを確認します。

メトリック定義

メトリック定義でスクリプトにコマンドライン引数として資格証明値が渡されていないことを確認します。

メトリック定義

ユーザー名およびパスワードが、環境変数ではなくstdinによってスクリプトに渡されていることを確認します。

メトリック収集項目

収集項目を定義する場合、UPLOAD_ON_FETCH属性を使用しないでください。

詳細は、表3-5「デフォルトの収集メタデータ・ファイル内のキー要素」を参照してください。

メトリック定義

メトリックおよびメトリック列の表示名はわかりやすく、適切なNLSIDがあることを確認します。

詳細は、第3.4.1項「メトリック定義ファイル」を参照してください。

メトリック定義

構成メトリック定義にTABLEタイプではなくRAWタイプが使用されていることを確認します。

詳細は、表3-4「メトリックの定義に使用するキー要素」を参照してください。

メトリック定義

カウントまたは数値タイプのメトリック列がタイプSTRINGとして定義されていないことを確認します。

メトリック定義

メトリック・キーに高いカーディナリティがない、つまり、メトリックが多数のキーを収集しないことを確認します。

詳細は、第3.6.1項「ターゲット・メタデータの定義」を参照してください。

メトリック定義

Defaultメトリック・クラス内でメトリックがカテゴライズされていることを確認します。

詳細は、第3.4.5項「メトリックのカテゴライズ」を参照してください。

メトリック定義

構成メトリックが、管理者のアクションによって明示的に変更されたデータのみを収集することを確認します。

ターゲット構成データ

整数のVER属性が構成メタデータXMLファイルで指定されていることを確認します。

詳細は、第7.3.2項「構成メタデータXMLファイルのキー要素」を参照してください。

ターゲット構成データ

表名がプラグイン・タグで始まり、次にアンダースコアがついて、25文字以内であることを確認します。

ターゲット構成データ

表名および列名が大文字であることを確認します。

ターゲット構成データ

列のサイズが適切なサイズであることを確認します。

ターゲット構成データ

UIに表示されエンド・ユーザーが見るため、表および列のユーザー・インタフェース(UI)名が、適切でわかりやすいものであることを確認します。

ターゲット構成データ

キー列が表(複数行の表の場合)ごとに適切に識別されていることを確認します。

ターゲット構成データ

デフォルト設定でフラグが繰り返されないことを確認します。デフォルト設定のすべての表または列でフラグを繰り返さないでください。デフォルト設定ではないフラグのみを上書きして使用します。すべてのフラグ(デフォルト設定のものを含む)を1つの場所にリストする場合は、METADATAレベルでリストします。

ターゲット構成データ

ターゲット収集ファイルのMETA_VER属性が、ターゲット・タイプに定義した対応するMETA_VER属性と一致していることを確認します。

メトリック収集項目

レスポンス・メトリックに定義されたレスポンス収集項目が高頻度でスケジュールされていることを確認します。収集間隔は1分から5分の間に設定することをお薦めします。

メトリック収集項目

条件がキー列に定義されていないことを確認します。

メトリック収集項目

MetricColl要素に使用する値が、ターゲット・タイプ・メタデータXMLにおいて有効なメトリック値であることを確認します。

メトリック収集項目

条件に定義したメッセージが、ハードコード化した値ではなく、しきい値に対して代替変数を使用していることを確認します。

メトリック収集項目

アラート・メッセージにメトリック表示名、メトリック値およびアラートを発生させるしきい値が含まれていることを確認します。メインのアラートがメッセージの最初の80文字で使われていることを確認します。

ターゲットのアップグレード

以前のリリースからターゲット・タイプをアップグレードする場合、データ列タイプが変更されていないことを確認します。

ターゲットのアップグレード

以前のリリースからターゲット・タイプをアップグレードする場合、キー列、順序、データ・タイプまたは番号が変更されていないことを確認します。

ターゲットのアップグレード

以前のリリースからターゲット・タイプをアップグレードする場合、メトリック・タイプが変更(TABLEからRAWへの変更など)されていないことを確認します。

ターゲットのアップグレード

以前のリリースからターゲット・タイプをアップグレードする場合、RAWメトリック(STORAGE_TABLE_NAMEまたはSTORAGE_COLUMN_NAME)が変更されていないことを確認します。

ターゲットのアップグレード

以前のリリースからターゲット・タイプをアップグレードする場合、メトリックのUSAGE_TYPEが変更されていないことを確認します。

導出されたアソシエーション

導出されたアソシエーション・ルールが適切な接頭辞で始まることを確認します。

詳細は、第11.3.1項「アソシエーション導出ルールの構文とセマンティクスの使用」を参照してください。

導出されたアソシエーション

トリガーがガイド内のすべてのトリガー・パターンを満たすことを確認してください。

詳細は、第11.3.5項「正規問合せおよびトリガー・パターンについて」を参照してください。

導出されたアソシエーション

ルール問合せに単純なjoinと1つのFROM句のみが含まれていることを確認します(それより複雑になる場合は、explainでパフォーマンスを確認します)。

導出されたアソシエーション

ルールがトリガーされる可能性のある各パースペクティブのパフォーマンスをテストします。

導出されたアソシエーション

結合された列に必要な索引が定義されているかを確認します(特に大規模なデータ表の場合)。

B.3 カスタマイズされたUIの確認

表B-3に、プラグインのカスタマイズされたUIに適用するチェックリストを示します。このチェックリストは、カスタマイズされたUIがある場合のみ適用されます。

カスタマイズされたUIの詳細は、第9章「管理ユーザー・インタフェースの定義」を参照してください。

表B-3 カスタマイズされたユーザー・インタフェース・チェックリスト

カテゴリ

チェックリストのアイテム

Adobe Flash Player

カスタムUIがサポート対象のAdobe Flash Playerのバージョンで動作するか確認します。

サポートされているバージョンについては、My Oracle SupportのEnterprise Managerの動作保証マトリックスを参照してください。

https://support.oracle.com/

ブラウザ・バージョンの互換性

カスタムUIが、サポートされているWebブラウザのバージョンで動作するかを確認します。

サポートされているバージョンについては、My Oracle SupportのEnterprise Managerの動作保証マトリックスを参照してください。

https://support.oracle.com/

アクセシビリティ

UIがOracle Global HTML Accessibility Guidelines (OGHAG)に準拠しているかを確認します。

詳細は、第9.32項「アクセシビリティ・ガイドライン」を参照してください。

パフォーマンス

すべての新しいページでパフォーマンス・テストを実行し、各ページが妥当な時間制限内にロードされることを確認します。

B.4 ジョブ・タイプの確認

表B-4に、プラグインに定義したジョブ・タイプに適用するチェックリストを示します。このチェックリストは、plugin_stage/oms/metadata/jobTypesディレクトリ内にファイルがある場合のみに適用されます。

ジョブ・タイプの詳細は、第8章「ジョブ・タイプの追加」を参照してください。

表B-4 ジョブ・タイプ・チェックリスト

カテゴリ

チェックリストのアイテム

ジョブ・タイプ名

ジョブ・タイプ名がplugin_tag_VerbNounの形式であることを確認してください。

- plugin_tagを接頭辞として使用することで、ジョブ・タイプが他のプラグインの同様の名前のジョブ・タイプと競合しないようにします。

- 適切に動詞と名詞を組み合せると、顧客に対してジョブ・タイプの目的を明確にできます。

oracle_as_RunHostProcess、oracle_db_BackupDB、oracle_as_RotateLogsなどの名前をお薦めします。

表示名

ジョブ・タイプのNLS情報が、ジョブ・タイプの意図を明確に表していることを確認してください。他のプラグインに同様の名前のジョブ・タイプが存在している場合があることに留意してください。

dbBackupDB - "Backup Oracle Database"またはasRotateLogs - "Rotate Weblogic Logs"などの名前をお薦めします。

B.5 レポートの確認

表B-5に、プラグインに定義したレポートに適用するチェックリストを示します。このチェックリストは、plugin_stage/oms/metadata/reportsディレクトリ内にファイルがある場合のみに適用されます。

詳細は、第5章「情報パブリッシャ・レポートの追加」および第6章「BI Publisherレポートの開発」を参照してください。

表B-5 レポート・チェックリスト

カテゴリ

チェックリストのアイテム

SQLの使用方法

情報パブリッシャ・レポートのみ

レポートで未加工SQL文パラメータではなく、名前付きSQLが使用されていることを確認します。

パッチ適用しSQLをより堅牢にする名前付きSQLを使用することをお薦めします。ユーザーがレポートでCREATE LIKEを実行すると、名前付きSQLを使用しないかぎり、実際のSQL文のコピーを取得します(この場合名前付きSQLのポインタを取得します)。後でSQLを変更する場合、ユーザーは名前付きSQLポインタから新しいコピーを取得します。

BI Publisherレポートのみ

レポートに適切なヘッダー・テンプレートおよびフッター・テンプレートが含まれていることを確認します。

B.6 プラグインのテスト

表B-6に、プラグインのセルフテストに適用するチェックリストを示します。

詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。

表B-6 プラグイン・セルフテスト・チェックリスト

カテゴリ

チェックリストのアイテム

デプロイメント例

テストが次のデプロイ・シーケンスで実行されていることを確認します。

1. Oracle Management Service (OMS)へのデプロイ

2. 管理エージェントへのデプロイ

3. 管理エージェントからの削除

4. OMSからの削除

5. OMSへの再デプロイ

6. 管理エージェントへの再デプロイ

詳細は、第14.5項「Enterprise Managerへのプラグイン・アーカイブのインポートおよびデプロイ」を参照してください。

アップグレード

これがプラグインの最初のバージョンではない場合、以前サポートされていたプラグインのバージョンと同じEnterprise Managerのインストールでプラグイン・アップグレードをテストしていることを確認します。

索引
A  B  C  D  E  F  G  H  I  J  L  M  N  O  P  R  S  T  U  V  W  Y

A

アクセシビリティ・ガイドライン, 9.32

Enterprise Managerデータへのアクセス, 9.11

ActionScriptからの文字列へのアクセス, 9.33.3

ActionScript, 9.3.2.2

アクティビティ・コンテンツ・パラメータ, 9.5.3

ActivityControllerベース・クラス, 9.6.2

ターゲット・インスタンスの追加, 14.6

エンティティ・タイプの追加, 17.6

レポートの追加, 5

ターゲットの手動追加, 12.6

Adobe Flash Builder, 9.30.2

Adobe Flex SDK, 9.30.1

拡張メトリック収集, 定義, 3.5.3

拡張メトリック, 定義, 3.4.3

拡張プラグイン, 作成, 1.7

ANT_HOME環境変数, 9.30.1

ANT_OPTS環境変数, 9.30.1

Apache Ant, 9.30

アプリケーション・アクティビティ, 定義, 9.6.1

appModelプロパティ, 9.5.2.2

面グラフ, 9.16.2

非同期サービスのリクエスト処理, 9.2.4.3

自動検出, 構成, 12.9

自動ターゲット検出, 12

自動化サービス

概要, 9.12.1

ジョブの実行, 9.12.1.1

ジョブの発行, 9.12.1.1

可用性リージョン, 9.15.1 列内の可用性ステータス・アイコン, 5.5.2.1

B

棒グラフ, 9.16.3

基本のメトリック収集, 定義, 3.5.2

基本プラグイン, 作成, 1.5

基本のResponseメトリック・グループ, 定義, 3.4.2

BI Publisher

Oracle Enterprise Manager Cloud Controlとの統合, 6

レポートのデータソース, 6.3

トレーニングとリソース, 6.2

BI Publisherレポート, 6.5

Adobe Acrobat, 6

Microsoft Word, 6

ステージングとデプロイ, 6.5

BulkSqlQueryインタフェース, 9.11.4

C

コールバック・シグネチャ, 17.1

カテゴリ, メトリック, 3.4.5

メトリックのカテゴライズ, 3.4.5

チャージ・アイテム, 17.3

チャージ・プラン, 17

チャージ・テンプレート, 17.3

チャージバック

MDSファイル, 17.4

新しいエンティティ・タイプ, 17.3

MDSの登録, 17.5

新しいエンティティのテスト, 17.6

使用モード, 17.3

XML要素, 17.4

ChargebackMetadata.xsd, 17.4 グラフ要素, 5.5.2.2 グラフ・タイトル, 5.5.2.2 グラフ・タイプ, 5.5.2.2 チャート

面グラフ, 9.16.2

棒グラフ, 9.16.3

列グラフ, 9.16.4

定義, 9.16

横棒グラフ, 9.16.3

折れ線グラフ, 9.16.1

円グラフ, 9.16.5

縦棒グラフ, 9.16.4

ジョブ・ステータスのチェック, 9.12.1.3 収集された構成データ, 7.2 ターゲット構成データの収集, 7 列グラフ, 9.16.4 列グループ終了列, 5.5.2.1 列グループ・ヘッダー, 5.5.2.1 列グループ開始列, 5.5.2.1 列, 一時, 3.6.1 コマンド

emcli add_target, 14.6

emcli import_upate, 14.5.2

emctl register oms metadata, 14.7, 14.7.1

empdk create_plugin, 14.4

empdk validate_plugin, 14.3

コンプライアンス・コンテンツ, 例, 13.5 コンプライアンスの例, 13.10 コンプライアンス・フレームワーク

定義, 13.4

構文, 13.4

タグ, 13.4, 13.5

コンプライアンス標準ルール, 13.2 コンプライアンス標準

追加, 13

定義, 13.3

プロセス, 13.1

構文, 13.3

タグ, 13.3

コンプライアンスXML, パッケージ化, 13.8 構成収集表, 7, 7.3.1 構成データ, アップグレード, 7.3.6 構成管理表, 7.3 構成メタデータ, 7.3.1.5 構成メタデータ・ファイル, 7.2 構成メタデータXMLファイル, 7.3.1

COLUMN要素, 7.3.2

要素, 7.3.2

例, 7.3.2

METADATA要素, 7.3.2

パッケージ化, 7.3.3

TABLE要素, 7.3.2

自動検出の構成, 12.9 Flash Builderの構成, 9.30.2.1 メタデータのみのMPCUI実装の変換, 9.8 チャージ・プランの作成, 17.6 コネクタの作成, 13.2.2 イベント固有のカスタマイズXMLの作成, 10.3 プラグイン・アーカイブの作成, 14.4 plugin_registry.xmlファイルの作成, 2.3.2 プラグインの作成, 4

ターゲットの追加, 1.1

拡張プラグイン, 1.7

基本プラグイン, 1.5

デプロイ, 1.1

設計, 1.1

開発, 1.1

Enterprise Managerへのインポート, 1.1

中間プラグイン, 1.6

パッケージ化, 1.1

ステ－ジング, 1.1

テスト, 1.1

検証, 1.1

plugin.xmlファイルの作成, 2.3.1 資格証明ストア, 16.1 資格証明要素

CredentialInfo, 16.2.1

CredentialSet, 16.2.1

CredentialSetColumn, 16.2.1

CredentialType, 16.2.1

資格証明情報

取得, 9.12.2.1

資格証明リージョン, 9.15.4 資格証明

認証ターゲット・タイプ, 16.1

定義, 16

要素, 16.2.1

メタデータ, 16.2

名前付き資格証明, 16.1

セット, 16.1

タイプ, 16.1, 16.1.1

X509v3証明書, 16.1

カスタム・データソース, 9.11.2

作成, 9.11.2.1

更新, 9.11.2.3

CustomDataSource.setRowメソッド, 9.11.2.3 CustomDataSource.setTimestampedRowsメソッド, 9.11.2.3 カスタマイズ仕様, 10.2 インシデント・マネージャのカスタマイズ, 10

D

データ・モデル・エディタ, 6

データ・サービス・タグ, 9.5.2.2

データ・サービス, 9.2.4.1

データソース

折れ線グラフ, 9.16.1.1

データソース, バインディング, 9.11.2.2 デフォルトの収集ファイル, 1.5, 3.2 デフォルトの収集ファイル, 作成, 3.5 デフォルトの収集メタデータの要素, 概要, 3.5.5 デフォルトの収集メタデータ・ファイル

CollectionItem要素, 3.5.5

条件, 3.5.5

MetricColl要素, 3.5.5

Schedule要素, 3.5.5

TargetCollection要素, 3.5.5

デフォルトの収集メタデータ・ファイル, 3.4.1, 7.2 デフォルト・フィルタ, 上書きの説明, 5.5.2.1.1 フィルタ名の定義, 5.5.2.1.1 フィルタ・プロンプトの定義, 5.5.2.1.1 定義

拡張メトリック, 3.4.3

管理ユーザー・インタフェースの定義, 9.1 プラグインの定義, 2

概要, 2.1

コンプライアンス・フレームワークの定義, 13.4 管理ユーザー・インタフェースの定義, プロセス, 9.1 メトリックの定義, 3.4 ナビゲーションの定義, 9.5.3 ページの定義, 9.5.2.1, 9.6.2 ターゲット・タイプ・メタデータの定義, 3.3.3 ジョブの削除, 9.12.1.4 デモ・サンプルのFlex UI, 要素, 9.30.2.4 デモ・サンプルのMPCUI, 9.30.2.3 デモ・サンプル・プロジェクト, 設定, 9.30.2.2 デプロイされたプラグイン

変更, 9.30.2.6

プラグインのデプロイ, 14.5, 14.5.3 非推奨化, プラグイン, 2.7 プラグインの開発, 1 開発環境オプション, MPCUI, 9.30 開発のガイドライン, レポート, 5.8 ダイアログ

定義, 9.18

表示, 9.18.2

登録, 9.18.1

ダイアログ, 定義, 9.6.3 検出コンテンツ, 12.4.2 検出コンテンツ, パッケージ化, 12.4.2 検出の例, 12.8 検出フレームワーク, 12.2.1, 12.3 検出入力, 12.3 検出メタデータ要素, 12.2.3 検出プロセス, 12.1 検出スクリプト

作成, 12.3

例, 12.2.2

変数, 12.3

検出スクリプト, 12.4.2, 12.4.2.1 検出XML, 作成, 12.2 検出XSD, 12.2 DLFファイル, 13.7 DMS fetchlet/エージェント統合の説明, 20.8.2 DTD, 21 動的インスタンス・プロパティ, 3.3.6.2 ダイナミック・モニタリング・サービス, 20.8 ダイナミック・モニタリング・サービス(DMS)fetchlet, 20.8 動的時間セレクタ, 5.5.5

E

EDK, 1.2, 1.5, 9.1, 12.2

ダウンロード, 1.2

インストール, 1.3

EDK, コンポーネント, 1.2 EM CLIユーティリティ, 14.6

設定, 14.5.1.2

EM CLIの動詞

deploy_bipublisher_reports, 6.5

setup_bipublisher, 6.5

emagent_perl.trc, 12.2.2 emcli add_targetコマンド, 14.6 emcli import_upateコマンド, 14.5.2 emctl register oms metadataコマンド, 14.7, 14.7.1 emd_common.plファイル, 12.2.2 empdk create_pluginコマンド, 14.4 empdkツール, 1.2 empdk validate_pluginコマンド, 14.3 空の表, 表示, 5.5.2.1.1 空の表テキスト, 5.5.2.1.1 空の表, ヘッダーのタイプ, 5.5.2.1.1 空の表, ヘッダー, 5.5.2.1.1 EMREPOSデータソース, 6.3 「拡張開発キット」を参照, 「EDK」を参照 Enterprise Managerデータ, アクセス, 9.11 Enterprise Manager DTD, 21 エンティティ・コールバック, 17.3 エンティティ・タイプ, 17, 17.3 エンティティ・タイプ, 13.2.2.1 エンティティ・タイプ, フィルタ処理, 13.2.2.1 イベント固有のカスタマイズ・メタデータ要素, 10.3.1 イベント固有のカスタマイズXML, 10.3 イベント固有のカスタマイズXSD, 10.3 拡張性

プラグイン・ビルダー, 4

拡張性

ソフトウェア・ライブラリ・プロパティ・ファイル, 15.2.3.1

拡張ツールキット, チャージバック用, 17.1

F

ファセット, 定義, 13.2.2.2

ファセット, 13.2.2

fetchlet, 定義, 3.4

fetchlet

DMS, 20.8

HTTPデータ, 20.5

JDBC, 20.9

JMX, 20.11

OSコマンド, 20.2

概要, 20.1

REST, 20.14

SNMP, 20.4

SQL, 20.3

URLタイミング, 20.7

URLXML, 20.6

WBEM, 20.10

Webサービス, 20.12

WS-Management, 20.13

ファイルの場所

コンプライアンスDLFファイル, 13.8

コンプライアンスXML, 13.7

compliance_rule.xml, 14.2

compliance.dlf, 14.2

構成メタデータXMLファイル, 7.3.3

default_collections.xml, 14.2

derivedAssoc_rule.xml, 14.2

検出JAR, 12.4.2.1

検出メタデータ, 12.4.1

discovery.xml, 14.2

job_type.xml, 14.2

MPCUIメタデータXMLファイル, 9.7, 9.7

MPCUI SWFバイナリ・ファイル, 9.7

mpcui.xml, 14.2

plugin_registry.xml, 14.2

plugin.xml, 14.2

report.xml, 14.2

target_type.xml, 14.2

target-type_ecmdef.xml, 14.2

ファイル権限, 変更, 14.2.1 ファイル

構成メタデータ, 7.2

デフォルトの収集, 7.2

DLF, 13.7

メトリック定義, 3.4.1

MPCUIメタデータ・ファイル, 9.4

plugin_discovery.xml, 12.2.3

ターゲット・タイプ・メタデータ, 7.2

塗りつぶし, 5.5.2.2 フィルタ名, デフォルト, 5.5.2.1.1 フィルタ名, Nullデフォルト, 5.5.2.1.1 フィルタ名, 変換, 5.5.2.1.1 フィルタのヒント・テキスト, 5.5.2.1.1 エンティティ・タイプのフィルタ処理, 13.2.2.1 Flash Builder, 構成, 9.30.2.1 Flex Builder, 9.30 Flex実装, 9.3.2 Flex実装

ActionScript, 9.3.2.2

ホーム・ページの定義, 9.3.2.4

MXML, 9.3.2.1

SWFバイナリ・ファイル, 9.3.2.3

Flex実装, プロセス, 9.1.1 Flex SDK, 9.30 Flex UIメタデータ・ファイル

例, 9.4

フレームワーク

検出, 12.2.1, 12.3

G

汎用的な検出統合の例, 12.2.1

getDataメソッド, 9.11.1.3

getIntegrationClassメソッド, 9.6.1

getIntegrationClass()メソッド, 9.6

getTargetInfo()メソッド, 9.11.5.1

類似のメトリックのグループ化, 3.5.1

ガイドされた検出, UIの定義, 9.28

「ガイドされた解決」リージョン

カスタマイズの追加, 10.5

「ガイドされた解決」リージョン, カスタマイズ, 10.2

H

高さ, 5.5.2.2, 5.5.3

ホームページのカスタマイズ, 移行, 9.31

横棒グラフ, 9.16.3

横または縦, 5.5.2.2

HTTPデータfetchlet, 20.5

HTTPデータfetchlet, 20.5

ハイパーリンク, 表, 5.5.2.1.2

I

アイコン, 定義, 9.26

Enterprise Managerへのプラグインのインポート, 14.5

プラグインのインポート, 前提条件, 14.5.1

「インシデントの詳細」リージョン, 10.2

カスタマイズの追加, 10.4

インシデント・マネージャ

カスタマイズ, 10

「インシデントと問題」リージョン, 9.15.2 InfoDisplayクラス, 9.20 InfoItemクラス, 9.20 情報表示

定義, 9.20

情報アイテム

定義, 9.20

Information Publisher, 5 initメソッド, 9.6.2.3 init(Train)メソッド, 9.6.4 inputParams要素, 9.5.3 EDKのインストール, 1.3 インスタンス・プロパティ, 定義, 3.3.6 統合クラス, 9.2.1, 9.6.1 統合メタデータ, 定義, 9.5.2 中間プラグイン, 1.6 invokeActivityディレクティブ, 9.5.3 invokeActivityメソッド, 9.10.2 PL/SQL文, 5.5.2.1, 5.5.2.2

J

Javaコンテンツ, 検出で必要, 12.4.2.1

JDBC fetchlet, 20.9

JDBC fetchlet, 20.9

JMX, 18

JMXコマンドライン・ツール

構文, 18.4.1.1

使用方法, 18.4.1.2

JMX fetchlet, 20.11 JMX対応アプリケーション, 18.1 ジョブ・サービス, 9.12.1.1 ジョブ・ステータス, チェック, 9.12.1.3 ジョブ・サマリー・リージョン, 9.15.3 JVMターゲット・タイプ, 18.4 JVMターゲット, 構成, 18.6.3

L

ラベルと値のペア, 9.20

レイアウト・エディタ, 6

凡例の位置, 5.5.2.2, 5.5.3

凡例, 制御, 9.16.1.2

折れ線グラフのデータソース, 9.16.1.1

折れ線グラフ, 9.16.1

リンク先, 5.5.4

リンク, 定義, 9.22

フィルタ名のリスト, 5.5.2.1.1

ローカライズ, ターゲット・メタデータ, 3.7

ロギング

コードへの追加, 9.29.1

出力のオプション, 9.29.2

M

管理対象エンティティ, 17, 17.3

管理ユーザー・インタフェース

定義, 9

行の最大数, 5.5.2.1 MBeans, 18.1 MDSファイル, チャージバック用, 17.4 MenuMetadata要素, 9.5.3 メッセージ・スタイル, 5.5.4 メッセージ・テキスト, 5.5.4 メタデータ

基本プラグイン, 2.2

構成, 7.2

デフォルトの収集要素, 3.5.5

デフォルトの収集ファイル, 3.2

ターゲット・タイプの定義, 3.3.3

定義, 3.2

検出, 12.2.3

plugin.xmlファイル, 2.3.1

ターゲット・タイプ定義ファイル, 1.5

ターゲット・タイプ・ファイル, 3.2

デプロイ済ファイルの更新, 14.7

バージョニング, 3.3.3

メタデータ登録サービス(MRS), 14.7 メタデータベースUIのMPCUIメタデータ・ファイル

例, 9.4

メタデータのみの実装, 9.3.1

制限, 9.5.1

メタデータのみの実装, プロセス, 9.1.2 メタデータのみのMPCUI実装, 変換, 9.8 メトリックのカテゴリ, 3.4.5 メトリック列名, 5.5.3 メトリック定義ファイル, 3.4.1 メトリック詳細要素, 5.5.3 メトリック拡張アーカイブ, 18.9.2 メトリック名, 5.5.3 メトリック・サービス, 9.11.1 メトリック, 定義, 3.4 メトリック, 定義, 3.4 MetricValuesDataServiceタグ, 9.5.2.2, 9.11.1.2 ホームページのカスタマイズの移行, 9.31 ターゲット・インスタンスの監視, 14.6 エンティティ・タイプの監視, 13.2.2.1 スクリプトの監視, 12.4.2 MpApplicationクラス, 9.6 MPCUI, 9

オンライン・ヘルプの表示, 9.34

MPCUIアプリケーション

アプリケーション・バイナリ・ファイル, 9.6

定義, 9.6

MPCUIの概念

アクティビティ, 9.2.2

統合クラス, 9.2.1

ページ, 9.2.3

サービス, 9.2.4

非同期サービスのリクエスト処理, 9.2.4.3

データ・サービス, 9.2.4.1

操作サービス, 9.2.4.2

URL, 9.2.5 MPCUIの開発環境オプション, 9.30 MPCUIフレームワーク, 9.6, 9.11, 9.32 MPCUIフレームワーク・サービス, 9.2.4 MPCUI実装

パッケージ化, 9.7

MPCUIメタデータ要素, 9.4.1 MPCUIメタデータ・ファイル

ActivityDefinition要素, 9.4.1

作成, 9.4

Integration要素, 9.4.1

MenuMetadata要素, 9.4.1

SqlStatements要素, 9.4.1

SwfFiles要素, 9.4.1

UIMetadata要素, 9.4.1

MXML言語, 9.1.3, 9.3.2.1

N

名前/値ペアの表示, 5.5.2.1

名前付き資格証明セット, 9.12.2.1.2

名前と値のペア, 追加, 10.2

ナビゲーション, 定義, 9.5.3, 9.10

NLS ID, 17.4

まだ管理されていないターゲット, 12.2.2

nullデータ文字列置換, 5.5.2.1

表示する行数, 5.5.2.1

O

オンライン・ヘルプ, MPCUIでの定義, 9.34

OPAR, 14.4

操作サービス, 9.2.4.2

オプション, 6.5

Oracleプラグイン・アーカイブ・ファイル

「OPAR」を参照

oracle_homeターゲット, 7.3.2 OSコマンドfetchlet, 20.2 OSコマンドfetchlet, 20.2 OSFetchlet, 20.2.1 OSLinesFetchlet, 20.2.2 OSLineTokenFetchlet, 20.2.3 即時利用可能なコンプライアンス・フレームワーク, 13.2.2 即時利用可能なポリシー・グループ, 13.2.1 デフォルト・ボタン・テキストの上書き, 5.5.2.1.1 デフォルト・フィルタのヒント・テキストの上書き, 5.5.2.1.1

P

パッケージ化されたリージョン

可用性リージョン, 9.15.1

資格証明リージョン, 9.15.4

「インシデントと問題」リージョン, 9.15.2

包含, 9.15

ジョブ・サマリー・リージョン, 9.15.3

パッケージ化されたSQL, 9.11.4 パッケージ化されたSQL, 記述, 9.11.4.1 コンプライアンスXMLのパッケージ化, 13.8 検出コンテンツのパッケージ化, 12.4, 12.4.2 検出XMLのパッケージ化, 12.4 パッケージ化ツール, 1.2 ページ・クラス, 9.6.2, 9.6.2.1 ページ・コントローラ, 9.6.2, 9.6.2.3 ページ・レイアウト・コンポーネント

定義, 9.14

リージョン, 9.14.1

ページ・モデル, 9.6.2.2 page.invokeActivityメソッド, 9.10.1 ページ, 定義, 9.5.2.1, 9.6.2 権限, ファイル, 14.2.1 円グラフ, 9.16.5 プラグイン

基本的なメタデータ, 2.2

アーカイブの作成, 14.4

定義, 2

デプロイ, 14.5, 14.5.3

非推奨化, 2.7

設計, 1.4

インポート, 14.5

パッケージ化, 1.2

SQLのパッケージ化, 9.11.4.2

ステ－ジング, 14.2

UIオプション, 9.3

アップグレード, 2.6

検証, 1.2, 14.3

プラグイン・アーカイブ, 14.4 プラグイン・アーカイブ, インポート, 14.5.2 プラグイン・ビルダー, 4

収集項目の追加, 4.10

ターゲットのメトリック・プロパティの追加, 4.9.5

ターゲット・タイプの追加, 4.8

収集項目, 4.1

Enterprise Managerプラグインの作成, 4.4

プラグイン・プロジェクトの作成, 4.4

サンプル・プラグインの作成, 4.5

削除, 4.12

PARファイルのインポートとデプロイ, 4.7

インストール, 4.3

概要,4.1

plugin_registry.xml, 4.1

plugin.xml, 4.1

前提条件, 4.2

ターゲットの検出, 4.6

ターゲット・タイプ, 4.1

ターゲット・タイプ情報の更新, 4.9

既存のJdeveloper, 4.3.2

Jdeveloperのフレッシュ・インストール, 4.3.1

プラグイン作成プロセス, 1.1 プラグイン定義ファイル

作成, 2.3

plugin-registry.xml, 2.3

plugin.xml, 2.3

プラグイン定義プロセス, 2.1 プラグインのデプロイメント, 14.5.4 プラグイン開発, 開始, 1 プラグインID

プラグイン・タグ, 2.2.1

製品ID, 2.2.1

ベンダーID, 2.2.1

プラグイン識別子, 2.2.1

「プラグインID」を参照, 2.2.1

プラグインのステージ領域, 9.12.1.5 プラグインのステージング・ディレクトリ, 7.3.3, 12.4, 13.8 プラグイン・バージョン

概要, 1.1

定義, 2.2.2

plugin_discovery.xml

AutomaticDiscovery要素, 12.2.3

BasicDiscoveryInfo要素, 12.2.3

DiscoveryInfo要素, 12.2.3

DiscoveryInput要素, 12.2.3

DiscoveryModule要素, 12.2.3

EmTargetDiscovery要素, 12.2.3

SupportedAgentOSList要素, 12.2.3

TypesDiscovered要素, 12.2.3

plugin_discovery.xmlファイル, 12.2.3 plugin_registry.xml, 4.1 plugin_registry.xmlファイル

作成, 2.3.2

要素, 2.3.2.1

例, 2.3.2

プラグイン, 2.3.2.1

PlugInLibrary要素, 2.3.2.1, 2.3.2.1

TargetCollections要素, 2.3.2.1

TargetTypes要素, 2.3.2.1

バージョン属性, 1.1

plugin.xml, 4.1 plugin.xmlファイル

AgentSideCompatibility要素, 2.3.1.1

作成, 2.3.1

要素, 2.3.1.1

例, 2.3.1

plugin要素, 2.3.1.1

PluginAttributes要素, 2.3.1.1

PluginDependencies要素, 2.3.1.1

PluginID要素, 2.3.1.1

PluginOMSOSAruId要素, 2.3.1.1

PluginVersion属性, 1.1

PluginVersion要素, 2.3.1.1

TargetTypeList要素, 2.3.1.1

優先資格証明, 9.12.2.1.1 コンプライアンス標準を追加するための前提条件, 13.1.1 前提条件, 構成データの収集, 7.1.1 プロセス

コンプライアンス標準, 13.1

検出, 12.1

プラグイン定義, 2.1

ターゲット構成データ収集, 7.1

ターゲット・メタデータ・ファイル作成, 3.1

検証、パッケージ化およびデプロイ, 14.1

処理カーソル, 表示, 9.24 処理ウィンドウ, 定義, 9.25 まだ管理されていないターゲットの昇格, 12.7 プル・メトリック, 3.4 プッシュ・メトリック, 3.4

R

率メトリック, 3.6.1

RAWメトリック, 7.3.7

リアルタイム監視ファセット, 13.2.2.2

作成, 13.2.2.3

タグ, 13.2.2.3

時間ウィンドウ, 13.2.2.4

リアルタイム監視ルール, 13.2.2

作成, 13.2.2.5

タグ, 13.2.2.5

receivelet, 19.1 receivelet, 定義, 3.4 MXMLからの文字列の参照, 9.33.2 バンドルの登録, 9.33.1 イベント固有のカスタマイズの登録, 10.8 MDSの登録, チャージバック用, 17.5 リモート操作, 9.12.1.5 RemoteOpサービス, 9.12.1.5 RemoteOp.performOperationメソッド, 9.12.1.5 列でのイメージのレンダリング, 5.5.2.1 レポート定義ファイル, 作成, 5.4 「レポート定義」ページ, 5.2.1 レポート定義, 更新, 5.4.2 レポート・テスト, 対話的, 5.4.1.2 ReportDefinitionタグ, 5.5.1.1 レポート全体のパラメータ, 5.5.5 リポジトリ・チェックベースのルール, 13.2.1 リポジトリ・ルール定義

例, 13.2.1

リポジトリ・ルールの構文, 13.2.1 リポジトリ・ルールの構文, 説明, 13.2.1 レスポンス・メトリック, JMX, 18.4.1.2 REST CLI, 20.14.3 REST fetchlet, 20.14 RESTful Webリソース, 20.14 再利用可能な資格証明UIコンポーネント, 9.12.2.3 ルール・ソース問合せ, 13.2.1

S

リモート操作のスクリプト, パッケージ化, 9.12.1.5

セキュリティ

Webサービス, 18.2.1.2

デリミタとしての別の行, 5.5.2.1 セル内の値に対する別の行, 5.5.2.1 サービス・リクエスト・パフォーマンス, 監視, 9.11.6 サービス・リクエスト

バッチ処理, 9.11.8

サービス・リクエスト, 自動ポーリング, 9.11.7 setRowsメソッド, 9.11.2.3 重大度アイコン, 5.5.2.1 凡例に値を表示, 5.5.2.2 収集に向けた類似のメトリック, 3.5.1 スライスの割合, 5.5.2.2 SNMP fetchlet, 20.4 SNMP fetchlet, 20.4 SNMP receivelet, 19.2 SOAP, 18.2 ソフトウェア・ライブラリ・エンティティ

EM CLIの動詞の使用, 15.5.2

ジョブ・タイプの使用, 15.5.1

ソフトウェア・ライブラリ・フレームワーク, 15

Enterprise Managerへのメタデータの追加, 15.4

エンティティの定義, 15.2.4

メタデータの定義, 15.2

エンティティ・プロパティ・ファイル, 15.2.3.1

概要, 15.1

メタデータ・ファイルの編成, 15.3

エンティティの使用, 15.5

ソフトウェア・ライブラリ, 設定, 14.5.1.1 ソート列, 5.5.2.1 ソート順序, 5.5.2.1 列による表の複数の表への分割, 5.5.2.1 SQL fetchlet, 20.3 SQL fetchlet, 20.3 SQLフィルタ, 5.5.2.1.1 SQLまたはPL/SQL問合せ, レポート, 5.4.1.1 SQLまたはPL/SQL文, 5.5.2.1, 5.5.2.1, 5.5.2.2 SQL問合せサービス, 9.11.4 SQL文, パッケージ化, 9.11.4 SQLDataServiceタグ, 9.5.2.2, 9.11.4 SqlQueryインタフェース, 9.11.4 積上げ棒グラフ, 5.5.2.2 ステージング・ディレクトリ構造, 14.2 プラグインのステージング, 14.2 スタンドアロンJavaアプリケーション, 構成, 18.6.3 標準収集メトリック, 7.3.7 静的インスタンス・プロパティ, 3.3.6.1 ジョブの停止, 9.12.1.4 文字列

ActionScriptからのアクセス, 9.33.3

MXMLからの参照, 9.33.2

submitメソッド, 9.12.1.1 サポートされたカスタマイズ, 10.2 メトリックの公開

Oracle Coherence, 18.10

スタンドアロンJVM, 18.10

システムのホームページ, 定義, 9.9 systemUiIntegrationメタデータXMLファイル, 9.9.1

T

表要素パラメータ, 5.5.2.1

表ヘッダー・テキスト, 上書き, 5.5.2.1.1

表

カスタム・データ・プロバイダ, 9.17.2

データ・サービス, 9.17.1

定義, 9.17

選択した行の取得, 9.17.3

ターゲット構成データ収集

定義, 3.5.4

プロセス, 7.1

ターゲット構成データ, 収集, 7 ターゲット資格証明, 定義, 3.3.4 ターゲット定義ファイル

概要, 3.2

ターゲット記述子

TargetMetadataおよびDisplay, 3.3.3

ターゲット検出, 定義, 12 ターゲット・インスタンス・プロパティ, 3.3.6 ターゲット・インスタンス, 追加,14.6 ターゲット・メタデータ, 3.4.1

ローカライズ, 3.7

ターゲット・メタデータ・ファイル

作成, 3

ターゲット・メタデータ・ファイル作成プロセス, 3.1 ターゲット・ナビゲータ, 9.27 ターゲット・サービス

関連ターゲット・サービス, 9.11.5.2

可用性サービス, 9.11.5.4

メトリック・メタデータ・サービス, 9.11.5.3

ターゲット・プロパティ・サービス, 9.11.5.1

操作, 9.11.5

ターゲット・タイプ, 5.5.2.1, 5.5.3 ターゲット・タイプ・ファセット, 13.2.2.2 ターゲット・タイプ・メタデータ・ファイル, 3.2, 3.4.1, 7.2

作成, 3.3

例, 3.3.1

ネーミング, 3.3.2

target.getAssociatedTargets()メソッド, 9.11.5.2 target.getAvailability()メソッド, 9.11.5.4 Target.getMetric()メソッド, 9.11.5.3 target.getMetricMetadata ()メソッド, 9.11.5.3 ターゲット

WSDLとJMX対応, 18

ターゲット, 手動で追加, 12.6 タスク自動化, 9.12 テスト・メトリック, 3.4.3 検出のテスト, 12.5 インシデント・マネージャのテスト, 10.9 テキスト要素パラメータ, 5.5.4 時間間隔, 5.5.2.1, 5.5.2.2, 5.5.3 時間ウィンドウ・ファセット

タグ, 13.2.2.4

トレース・サービス, 9.11.6 トレイン・コントローラ, 9.19.2 トレイン・イベント, 9.19.4 トレイン・ページ, 定義, 9.6.4 トレインの状態, 9.19.3 trainDoneメソッド, 9.6.4 トレイン

定義, 9.19

定義例, 9.19.1

トレイン・コントローラ, 9.19.2

トレイン・イベント, 9.19.4

トレインの状態, 9.19.3

トレイン, 定義, 9.6.4 一時列, 3.6.1 翻訳サポート, 13.7 タイプ・プロパティ, 定義, 3.3.5

U

UIオプション, 9.3

デプロイ済メタデータ・ファイルの更新, 14.7

プラグインのアップグレード, 2.6

URL fetchlet(RAW), 20.5.1

URL行トークンfetchlet, 20.5.3

URL行fetchlet, 20.5.2

URLタイミングfetchlet, 20.7

URLタイミングfetchlet, 20.7

UrlEm.homepageUrlメソッド, 9.10.2

URLXML fetchlet, 20.6

URLXML fetchlet, 20.6

使用モード, チャージバック, 17.3

V

プラグインの検証, 14.3

検証ツール, 1.2

バージョン, プラグイン, 1.1

メタデータのバージョニング, 3.3.3

縦棒グラフ, 9.16.4

ビュー

GC$, 6.3

MGMT$VIEW, 6.3

W

WBEM fetchlet, 20.10

Webサービス, 18

Webサービス, 18.2

コマンドライン・ツール, 18.2.1

監視, 18.2

WebサービスCLI, 18.2.1.1 Webサービスfetchlet, 20.12 Webサービス・ターゲット, 追加, 18.6.1 WebLogic, カスタムJ2EEアプリケーション, 18.6.4 幅, 5.5.2.2, 5.5.3 WSDL, 18, 18.2 WS-Management, 18.3 WS-Management fetchlet, 20.13 WS-Managementターゲット, 追加, 18.6.2 WSManagementFetchlet, 18.3.1

Y

Y軸ラベル, 5.5.2.2

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2018, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。