自動検出スクリプト、ターゲット・プロパティの指定によるターゲットの手動追加、およびガイドされた検出を使用したターゲットの手動追加など、様々な方法でEnterprise Manager内のターゲットの検出を実行できます。
自動ターゲット検出は、ターゲットを配置するプロセスで、Enterprise Managerに追加されます。インストール後にOracle Management Agentを起動すると自動的に検出されます。管理エージェントが実行中のサーバーに存在するターゲットが検出され、まだ管理されていないターゲットとして管理リポジトリに送信されます。エンドユーザーは、Enterprise Managerによって管理されるターゲットとしてこれらのターゲットを昇格することによって、監視するターゲットを選択できます。
この章の内容は次のとおりです。
プラグイン開発者は、検出プロセスにおいて、次の手順に従う必要があります。
検出メタデータを作成します。
検出メタデータXMLファイルの作成のガイドラインは、検出のXMLスキーマ定義(XSD)を使用します。
メタデータ内で、次を行います。
DiscoveryModule
要素を使用した検出モジュールの定義。
DiscoveryInput
要素を使用した検出パラメータの定義(必要な場合)。
検出メタデータの作成の詳細は、12.2項「検出XMLの作成」を参照してください。
Perlを使用して、検出スクリプトを作成します。
検出スクリプトによって、管理エージェントは、プラグインに属しているすべてのターゲット・タイプを自動的に検出できます。
検出スクリプトの作成の詳細は、12.3項「検出スクリプトの作成」を参照してください。
検出に必要な追加のPerlモジュールまたはJARファイルを特定します。
検出メタデータおよびコンテンツをプラグイン・ステージング・ディレクトリ(plugin_stage)にバンドルします。
検出XMLをplugin_stage/oms/metadata/discoveryディレクトリに保存します。
検出コンテンツをplugin_stage/discoveryディレクトリに保存します。
パッケージ化の詳細は、12.4項「検出XMLおよび検出コンテンツのパッケージ化」を参照してください。
プラグインを再パッケージ化(必要な場合)およびデプロイします。
プラグイン・アーカイブを作成し、プラグインがManagement Serverにデプロイされた後で、エンドユーザーは、登録された検出モジュールの検出構成UIを使用して、検出を開始できます。
プラグインのデプロイの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。
次のように自動検出を構成します。
Enterprise Managerにログインします。
「設定」、「ターゲットの追加」、「自動検出の構成」の順に選択します。
「自動検出の構成」ページが表示されます。このページのオプションの詳細は、Enterprise Managerのオンライン・ヘルプを参照してください。
自動検出の構成の詳細は、12.9項「プラグインの自動検出の構成」を参照してください。
検出結果をテストします。
検出のテストの詳細は、12.5項「検出の設定およびテスト」を参照してください。
Oracleでは、検出メタデータXMLに書き込んで検出フレームワークに登録できるように、検出XSDが提供されます。検出フレームワークに登録すると、検出ページは、プラグインに属しているターゲット・タイプの検出を起動できます。
検出XSDの詳細は、拡張開発キット(EDK)仕様を参照してください。
次の項および例12-4に、検出XMLの例を示します。
この例では、検出には情報の入力が必要なく、ターゲットの昇格には特別なロジックが必要ありません。
ターゲットを構成するための特別な要件はありませんが、UIにアクセスする必要があります。
例12-1に、この検出のための検出統合XMLを示します。
注意: 検出XMLファイルのネーミングに関して制限されていません。ただし、標準の規則はplugin_discovery.xml です。 |
例12-1 検出統合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の検出を起動できます。
たとえば、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つのターゲットを昇格できます。
表12-1では、検出メタデータを定義する重要な要素について説明します。
表12-1 plugin_discovery.xmlファイルの重要な要素
要素 | 説明 |
---|---|
ファイルのルート要素 |
|
このプラグインに1つ以上の自動検出モジュールを指定します。各自動検出モジュールは、管理エージェント上で実行された検出スクリプトに関連付けられています。 |
|
自動検出モジュールを指定します。 |
|
これは、自動検出モジュール内の要素です。これには、検出モジュールの名前を定義する名前属性が含まれます。 |
|
この検出がサポートされる管理エージェント・プラットフォームのリストを指定します。これには、プラットフォームを定義する |
|
実行する検出スクリプトおよびオプションのカテゴリ名を指定します。次の属性があります。
|
|
この検出モジュールを使用して、検出できるターゲット・タイプのリストを指定します。これには、ターゲット・タイプ名を定義する |
|
検出中にユーザーが入力する情報を指定します。ユーザーによって入力された情報は、管理エージェントで実行中の検出スクリプトで環境変数として使用できます。 |
検出XMLを登録した後で、検出フレームワークは、検出スクリプトを使用して検出を起動します。
検出スクリプトを作成するには、次の手順に従います。
Perlを使用して、最上位の検出スクリプトを記述します。このスクリプトは、Java、Shellなどを呼び出すことができます。
検出スクリプトの出力が、ターゲット・タイプのターゲットを追加するのに必要なすべての名前と値のペアを返すことが理想的です。そうでない場合、ユーザーは、ターゲットの昇格時に残りの値を指定する必要があります。
例12-5に、検出のPerlスクリプトの例を示します。
検出のPerlスクリプトでは、次のDocument Type Definition (DTD)に準拠した出力を作成する必要があります。
例12-2 検出されたターゲット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 >
次の項では、プラグイン・ステージング・ディレクトリに検出XMLおよびコンテンツを含める場所について説明します。
検出メタデータXMLファイルが完成したら、プラグイン・ステージング・ディレクトリの次のディレクトリにファイルを含めます。
plugin_stage
/oms/metadata/discovery
検出コンテンツは、特定のターゲット・タイプの検出を実行するために必要なすべてのPerlスクリプト、PerlモジュールおよびJARファイル(存在する場合)を参照します。
Enterprise Manager Cloud Control 12cでは、検出コンテンツは、ユーザーが最初に検出を試行したときのみ、管理エージェントに送信されます。特定の検出モジュールに対応する検出コンテンツは、独自の領域に存在します。
検出とスクリプトの監視は別々に行われます。両方とも、プラグインの一部です。コンテンツを監視せずに、検出を実行できます。両方のライフサイクルは検出またはプラグインのライフサイクル・フレームワークによって管理され、プラグイン開発者に対して透過的です。
特定のターゲット・タイプを検出するために必要な検出コンテンツをパッケージ化する必要があります。たとえば、既存のデータベース検出の場合、検出コンテンツは、oracledb.plと、データベース検出を実行するために必要なユーティリティです。
注意: 検出メタデータ・ファイルは、管理エージェント・アーカイブではなく、Oracle Management Serverアーカイブとパッケージ化する必要があります。 |
各検出プラグインのコンテンツをインストールするために、plugin_stageの下に検出ディレクトリを作成します。plugin_stageの下のディレクトリの詳細は、第14章「プラグインの検証、パッケージ化およびデプロイ」を参照してください。
例12-3 検出コンテンツのインストールのためのディレクトリ構造
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コンテンツは、検出バンドルおよびプラグイン・バンドルとパッケージ化する必要があります。 |
一部の検出スクリプト(Oracle Fusion Middlewareの場合など)は、検出のプロセスでJARファイルを使用します。JARファイルが検出固有のみの場合、それらは検出領域に存在する必要があります。
検出を実行するよう記述されたJavaメソッドがある場合、検出で必要ないコンテンツを送信しないようにするため、可能な場合はそれらを別のクラス・ファイルに移動する必要があります。
現在の管理コンテンツから独立して検出を実行できるように、検出コンテンツと管理コンテンツは分けることをお薦めします。これにより、検出されたターゲット(存在する場合)を管理するためにプラグインをインストールするかどうかを決定するのに役立ちます。検出コンテンツは、軽量にして、検出に必要なファイルのみを含める必要があります。
たとえば、次のディレクトリの下に、特定の検出モジュールの検出固有のコードを含むJARを配置できます。
plugin_stage/discovery/lib
注意: 個々の検出スクリプトは、クラスパスの構築を行います。 |
特定の検出モジュールの検出コンテンツ領域で、独自のディレクトリ構造を作成できます。Fusion Middlewareなど、各検出モジュールに対する最上位のPerlスクリプトは、使用するJavaユーティリティの実行前に、クラスパスを構築します。検出モジュールに固有のJARファイルは、独自の検出コンテンツ領域にあるため、検出のPerlスクリプトは、必要なクラスパスを容易に構築できます。再度、検出のみの実行を行うコードを分けて、特定の検出モジュールに固有の検出コンテンツ領域にインストールする必要があります。
テスト目的で、次のように検出を実行できます。
Enterprise Managerにログインします。
https://em_host
:em_port
/em/
コンソールから、「設定」、「ターゲットの追加」、「自動検出の構成」の順に選択します。
「自動検出の構成」ページが表示されます。
「自動検出の構成」表の「検出モジュール」の下で、「単一ホストで重複するターゲット・タイプの検出」を選択します。
「ターゲットの検出(エージェント・ベース)」ページが表示されます。
必要なエージェント・ホスト名を選択し、「検出を今すぐ実行」をクリックします。
ターゲットの検出が完了すると、「正常に完了しました」ウィンドウが表示されます。
自動検出に加えて、Cloud Controlでは、ホストおよび様々なOracleソフトウェアとコンポーネントを管理対象ターゲットとして手動で追加できます。ターゲットを手動で追加する場合、ターゲットを直接追加することにより、検出プロセスを実行せずに済みます。この方法でターゲットを検出すると、エージェントで検出が不要なときに検出を実行するリソースを消費しなくて済みます。
管理対象ターゲットのプロパティを指定し、Enterprise Manager管理対象ターゲットを作成できる必要があります。
すべてのターゲット・タイプを手動で追加できるわけではありません。検出フレームワークへの登録中に、ターゲット・タイプの所有者はそのターゲット・タイプが手動で追加可能かどうかを指定します。
手順については、次の各項を参照してください。
ウィザードによって、管理エージェントを新しいホスト・ターゲットに手動でデプロイするプロセスが順を追って説明されます。
管理エージェントのインストール手順は、『Enterprise Manager Cloud Control基本インストレーション・ガイド』のOracle Management Agentのインストールに関する項を参照してください。
ターゲット・タイプのメタデータに基づく構成ページまたはウィザードが表示され、ターゲットの管理に必要なすべてのインスタンス・プロパティがリストされます。
ターゲットの名前を指定し、必要な構成情報を入力できます。
ターゲットをEnterprise Managerに手動で追加するには、次の手順に従います。
Enterprise Managerにログインします。
「設定」メニューから、「ターゲットの追加」、「ターゲットの手動追加」の順に選択します。
ターゲットの手動追加ページが表示されます。
「ターゲットの手動追加」ページで、「ターゲットの手動追加」サブセクションに移動して、次のオプションのいずれかを選択します。
ガイド付きプロセスを使用して非ホスト・ターゲットを追加
「ターゲット・タイプ」リストから、「Oracleクラスタおよび高可用性サービス」、「Oracle Database Machine」またはWebLogicドメインの検出などの追加するターゲット・タイプのいずれかを選択し、「ガイドされた検出を使用した追加」をクリックします。このプロセスは、関連ターゲットも追加します。
ターゲット監視プロパティを指定して非ホスト・ターゲットを追加
「ターゲット・タイプ」リストから、「Fusion J2EEアプリケーション」、「Applications Utilities」または「Supplier Portal」などの追加するターゲット・タイプのいずれかを選択し、「監視エージェント」リストから必要な監視エージェントを選択し、「手動追加」をクリックします。
ターゲット・タイプの選択後、ターゲットを追加するターゲット・タイプに固有のウィザードに従います。
確認後、ターゲットはEnterprise Managerの管理対象ターゲットになります。Enterprise Managerでは、情報が承認され、可能な場合は入力されたデータの検証が実行されて、ターゲットの監視が開始されます。
関連項目: Enterprise Managerへの手動によるターゲットの追加の詳細は、Oracle Enterprise Managerのオンライン・ヘルプを参照してください。 |
Enterprise Manager管理対象ホスト上のターゲットの検出により、新規データベースやEnterprise Managerによって管理されていないSQLサーバーなどのターゲットのリストが提供されます。これは、検出された新規ターゲットがEnterprise Managerによる監視および管理対象の候補になるかどうかを決定するために役立ちます。
Enterprise Manager UIによって、検出された管理対象外ターゲットを確認し、ターゲットをEnterprise Managerによる管理対象ターゲットとして監視できるように昇格できます。
関連項目: ターゲットの構成および昇格の詳細は、Oracle Enterprise Managerのオンライン・ヘルプを参照してください。 |
汎用的な検出UIを使用して、検出を起動し、検出を管理エージェントで定期的に実行するようスケジュールできます。汎用的な検出UIが検出を起動するためには、登録XMLで必要な入力を指定する必要があります。Enterprise Managerは、この情報を使用して、汎用的な検出UIを構築します。
この例では、検出にはユーザーが情報を入力する必要があります。ユーザーは、CRS_HOMEおよびCRS_HOME1の値を入力するよう求められます。ユーザーは、CRS_HOMEの値は入力する必要はありませんが、CRS_HOME1の値は必須です。
ターゲットを構成するための特別な要件はありませんが、UIにアクセスする必要があります。
注意: サポートはされていますが、必要な検出入力の使用は、自動検出の利点を排除してしまうため、お薦めしません。検出プロセスを最適化するためのヒントとして、オプションの検出入力を使用できます。 |
例12-4 検出パラメータを使用した検出統合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スクリプトは検出パラメータにアクセスできます。
例12-5 検出スクリプトのサンプル
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";
管理エージェント側で実行するためのプラグインで、ターゲットの自動検出を構成できます。現在、自動検出は、毎日実行するようスケジュールされています。
構成は、メタデータが存在するOracle Management Serverから行います。
注意: 管理エージェントのインストール前にデプロイされたプラグインまたは新規ホストにデプロイされたプラグインの場合、検出は24時間ごとに自動的に実行されます(検出がユーザー入力を必要としない場合のみ)。管理エージェントのインストールまたはデプロイ後に、Enterprise Manager UIからパラメータを構成できます。 |
検出後に、ターゲットはEnterprise Managerに送信されます。エンドユーザーは、ターゲットを確認し、Enterprise Managerによって管理されるターゲットとしてターゲットを昇格することによって、監視するターゲットを選択できます。
関連項目: 自動検出の構成の詳細は、Oracle Enterprise Managerのオンライン・ヘルプを参照してください。 |