プライマリ・コンテンツに移動
Oracle® Enterprise Manager Cloud Control拡張プログラマーズ・リファレンス
12cリリース4 (12.1.0.4)
B70762-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

21 fetchletの使用

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

21.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について説明します。

21.2 OSコマンドfetchlet

オペレーティング・システム(OS)コマンドfetchletでは、標準出力(stdout)データ・ストリームを返すOSコマンドを(個別に、またはスクリプトから)実行することにより、メトリック・データを取得できます。

次の3つのOSコマンドfetchletを使用できます。

  • OS fetchlet(RAW)

  • OS行fetchlet(行に分割)

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

21.2.1 OS fetchlet

OS fetchletは、与えられたOSコマンドを実行し、コマンドの出力を単一セル表に返します。

入力パラメータ

表21-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表を返します。

図21-1 OS fetchletにより返される表

図21-1の説明が続きます
「図21-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は中断し、コマンドの終了を待機します。

21.2.2 OS行fetchlet(行に分割)

OS行fetchletは、与えられたOSコマンドを実行し、OSコマンドの出力をトークン化します。出力は行ごとにトークン化されます。fetchletは、単一列表にトークンを返します。表のn番目の行は、OSコマンドの出力のn番目の行を表します。

OSコマンドのトークン化されていないRAW出力を取得するには、OS fetchletを使用します。行ごとにトークン化され、各行が特定のデリミタでトークン化されたOSコマンドの出力を取得するには、「OS行トークンfetchlet」を参照してください。

入力パラメータ

表21-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を実行すると、次の単一列表が生成されます。

図21-2 OS行fetchletにより返される表

図21-2の説明が続きます
「図21-2 OS行fetchletにより返される表」の説明

内容がない場合は、\nにより、行2と行4の間に空白行が挿入されます。


注意:

コマンドは、シェルで実行されている場合と同様には実行されません。したがって、パイプ、出力リダイレクションおよびバックグラウンド処理を含む共通シェル・シンボルは動作しません。

コマンドを標準入力から読み取ることはできません。

fetchletは中断し、コマンドの終了を待機します。

コマンドの標準出力が取得され、標準エラーが取得されて標準出力に追加されます。

行は\nを使用してトークン化されます。


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

OS行トークンfetchletは、与えられたOSコマンドを実行し、OSコマンドの出力をトークン化します。出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。fetchletは、トークンを表に返します。表のn番目の行は、OSコマンドの出力のn番目の行を表します。表のn番目の列は、指定のデリミタ・セットにより決定された、行のn番目のトークンを表します。

OSコマンドのトークン化されていないRAW出力を取得するには、21.2.1項「OS fetchlet」を参照してください。

入力パラメータ

表21-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を実行すると、デリミタを表す単一文字"|"により次の表が生成されます。

図21-3 OS行トークンfetchletにより返される表

図21-3の説明が続きます
「図21-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進数識別子です。

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

要件に応じて、プラグインはOS fetchletを使用して、特定ユーザー、つまりデフォルトのoracleユーザー以外のユーザーとして特定メトリックのデータを収集するためにターゲットを監視する管理エージェントで既存のスクリプトを起動する必要があることがあります。

Enterprise Managerは、特定ユーザーとしてメトリック収集を起動するために、権限委任プロバイダ(sudoおよびpowerbroker)の使用をサポートしています。プラグイン用のPDPを有効にするには、監視対象のターゲットがデプロイされているプラグインとホストの両方で資格証明を設定する必要があります。

プラグインでは、ターゲット・メタデータ・ファイルにあるメトリック定義の資格証明参照を設定する必要があります。例では、例のCredentialref行にyour_credがあります。この値は監視資格証明セット名を参照しています。

例21-1 ターゲット・メタデータでの資格証明参照の例

<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という資格証明タイプです。

例21-2 管理エージェント内の資格証明タイプの定義

<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)です。

例21-3

<CredentialSet NAME="HostMonCredSet" CREDENTIAL_TYPE="MyHostCreds" USAGE="MONITORING"><AllowedCredType TYPE="MyHostCreds"/>
</CredentialSet>

21.3 SQL fetchlet

SQL fetchletは、特定のデータベース上の特定のSQL文を特定のユーザーとして実行し、表結果を返します。

入力パラメータ

表21-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

次のプロパティは、パラメータなしで問合せ(すべてのユーザーを取得)を実行します。

例21-4 パラメータを指定しない問合せ

MachineName=skini-pc 
Port=1521 
SID=o817 
UserName=scott 
password=tiger 
STATEMENT=select * from all_users; 
NUMROWS=30 

次のプロパティは、入力パラメータを指定して問合せを実行します(指定したユーザーが所有している指定したタイプのオブジェクトのうち、最初のいくつかを取得します)。

例21-5 入力パラメータを指定した問合せ

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 

例21-6では、カーソルを返し、入力パラメータを受け取るPL/SQLプロシージャを実行します。

例21-6 入力パラメータを指定した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

例21-7では、文字列の配列を返すPL/SQLプロシージャを指定します。

例21-7 文字列の配列を返す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

例21-8では、構造体の配列を返すPL/SQLパッケージを指定します。

例21-8 構造体の配列を返す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

例21-9では、前述の例で使用されるPL/SQLを参考として示します。

例21-9 例で使用される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;
/

21.4 SNMP fetchlet

オブジェクト識別子(OID)は、MIB変数インスタンスまたは複数インスタンスのMIB変数に相当します。OIDのリストを前提として、SNMP fetchletは、指定のホストで対応するインスタンスのSNMPエージェントをポーリングします。

入力パラメータ

表21-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(sysDescrsysUpTimeおよび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が含まれます。戻り表は、次のようになります(実際の値は異なる場合があります)。

図21-4 SNMP fetchlet

図21-4の説明が続きます
「図21-4 SNMP fetchlet」の説明

または、一部のMIBに、次の3列および4つのインスタンスが含まれているとします。

図21-5 SNMP fetchlet: 3列および4つのコンテンツ

図21-5の説明が続きます
「図21-5 SNMP fetchlet: 3列および4つのコンテンツ」の説明

ifDescrifInOctetsおよび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は次の表を返します。

図21-6 SNMP fetchlet: ifDescr、ifInOctetsおよびifOutOctets OIDS

図21-6の説明が続きます
「図21-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つの列が含まれているとします。

図21-7 SNMP fetchlet: 4つの変数インスタンスを持つMIBコンテンツ

図21-7の説明が続きます
「図21-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の出力は次のようになります。

図21-8 SNMP fetchlet: ifDescrおよびipAdEntNetMaskを含む表

図21-8の説明が続きます
「図21-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だった場合、出力は次のようになります。

図21-9 SNMP fetchlet: 別のOID

図21-9の説明が続きます
「図21-9 SNMP fetchlet: 別のOID」の説明

21.5 HTTPデータfetchlet

HTTPデータfetchletは、URLのコンテンツを取得し、URLのコンテンツをデータとして返します。次の3つのfetchletを使用できます。

  • URL fetchlet

  • URL行

  • URL行トークン

21.5.1 URL fetchlet(RAW)

URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツを単一セル表に返します。

行ごとにトークン化され、各行が特定のデリミタでトークン化されたURLの出力を取得するには、「URL行トークンfetchlet」を参照してください。

入力パラメータ

表21-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表を返します。

図21-10 URL fetchletの出力

図21-10の説明が続きます
「図21-10 URL fetchletの出力」の説明

URLのRAWコンテンツが返されます。

エラー処理

URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。

21.5.2 URL行fetchlet(行に分割)

URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツをトークン化します。出力は行ごとにトークン化されます。fetchletは、単一列表にトークンを返します。表のn番目の行は、URLコンテンツのn番目の行を表します。


注意:

URLのトークン化されていないRAWコンテンツを取得するには、「URL fetchlet」を参照してください。行ごとにトークン化され、各行が特定のデリミタでトークン化されたURLのコンテンツを取得するには、「URL行トークンfetchlet」を参照してください。

表21-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は次の表を返します。

図21-11 URL行fetchletの出力

図21-11の説明が続きます
「図21-11 URL行fetchletの出力」の説明

エラー処理

URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。

URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。

注意

行は\nを使用してトークン化されます。

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

URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツをトークン化します。出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。fetchletは、トークンを表に返します。表のn番目の行は、URLコンテンツのn番目の行を表します。表のn番目の列は、指定のデリミタ・セットにより決定された、行のn番目のトークンを表します。

URLのトークン化されていないRAWコンテンツを取得するには、「URL fetchlet」を参照してください。

表21-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は次の表を返します。

図21-12 URL行トークンの出力

図21-12の説明が続きます
「図21-12 URL行トークンの出力」の説明

エラー処理

URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。

URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。

注意

行は\nを使用してトークン化されます。

デリミタは、1文字または複数文字の組合せになります。たとえば、行をパイプ、プラスおよびアンダースコアで分割する必要がある場合は「|+_」となります。2つ以上のデリミタを出力テキストで組み合せる場合(「||」や「+|+」など)、そのデリミタとデリミタの間には空の文字列トークンがあるかのようになります。これらの空の文字列は、結果表の列を取得します。行を開始するデリミタの前、または行を終了するデリミタの後に空の文字列があることは考慮されません。

印刷不能文字(タブなど)をXMLのデリミタ・セットで表現するには、&#xHH;を使用します。Hは、文字の16進数識別子です。

21.6 URLXML fetchlet

URLXML fetchletは、与えられたURLのXMLコンテンツを取得し、特定のパターンに基づいて情報を抽出します。パターンは、照合するXMLのチャンクのリストです。戻り表では、パターンの各グラバ(*)が列に順番にリストされ、パターン・チャンクがXMLコンテンツと一致するたびに行が作成されます。

入力パラメータ

表21-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>

次の表が返されます。

図21-13 URLXML fetchletの出力

図21-13の説明が続きます
「図21-13 URLXML fetchletの出力」の説明

エラー処理

URLまたはパターン・パラメータが指定されていない場合は、MissingParameterExceptionが発生します。

次の場合は、FetchletExceptionが生成されます。

  • URLの形式が不正な場合

  • URLのコンテンツの取得でI/Oエラーが発生した場合

  • URLコンテンツまたはパターンに無効なXMLが含まれている場合

注意

プロキシ・ホストまたはポート、あるいはその両方を設定すると、Java環境全体のjava.netパッケージに対してこれらの設定が変更され、プロキシ設定が変更された場合にスレッド・セーフになりません。

21.7 URLタイミングfetchlet

URLタイミングfetchletは、特定のURLタイミングのコンテンツを取得します。ベース・ページ・ソースのみでなく、ページ内のフレームまたはイメージも取得します。

入力パラメータ

表21-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

返す必要のあるメトリック列を指定します。各出力形式について返されるメトリック列の詳細は、表21-12「URLTIMING fetchlet: メトリック列」を参照してください。

オプション。fetchletから何をどのような順序で返す必要があるかを指定できます。たとえば、status, status_description, total_response_timeのように指定します。


メトリック列および出力モード

情報の形式および返される特定のメトリック情報は、output_formatおよびmetrics入力パラメータによって収集されます。表21-11に、形式カテゴリおよびそれぞれで返されるメトリック(列)をリストします。使用可能なメトリック列の説明は、表21-12「URLタイミングfetchlet: メトリック列」を参照してください。

表21-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が続きます。


メトリック列

表21-12に、URLタイミングfetchletから返されるメトリック列を示します。

表21-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は次の表(列のヘッダーを除く)を返します。

図21-14 サマリー出力形式

図21-14の説明が続きます
「図21-14 サマリー出力形式」の説明

output_format = summaryおよびmetrics = timetotal_response_time, status, status_descriptionでは、fetchletは次の表(列のヘッダーを除く)を返します。

図21-15 指定したメトリック列でのサマリー出力形式

図21-15の説明が続きます
「図21-15 指定したメトリック列でのサマリー出力形式」の説明

output_format = summaryおよびmetrics = total_response_time, status, status_descriptionでは、fetchletは次の表(列のヘッダーを除く)を返し、サーバーはエラーになります。

図21-16 指定したメトリック列でのサマリー出力形式および内部サーバー・エラー

図21-16の説明が続きます
「図21-16 指定したメトリック列でのサマリー出力形式および内部サーバー・エラー」の説明

次のURLを例にとります。

url0=http://www.example.com/
url1=http://nedc.us.example.com/

output_format=summaryでは、fetchletは次の表(列のヘッダーを除く)を返します。ここで、数値は両方のurlのフェッチの所要時間です。

図21-17 2つのURLに対するサマリー出力形式

図21-17の説明が続きます
「図21-17 2つのURLに対するサマリー出力形式」の説明

output_format=detailedでは、fetchletは次の表(列のヘッダーを除く)を返します。

図21-18 2つのURLに対する詳細出力

図21-18の説明が続きます
「図21-18 2つのURLに対する詳細出力」の説明

output_format=repeat_columnでは、fetchletは次の表(列のヘッダーを除く)を返します。

図21-19 繰返し列の出力形式

図21-19の説明が続きます
「図21-19 繰返し列の出力形式」の説明

エラー処理

URLパラメータがないか不正な場合、またはメトリックを計算できない場合は、メトリック・エラーになります。

注意

再試行の実行に必要な時間がページの合計時間に加算されます。たとえば、2回の再試行が実行され、成功した場合、合計ページ時間は、成功したページの時間に失敗した2回の再試行の所要時間を加算した時間になります。

推奨される使用方法:

  • 基本監視の場合:

    url0=<監視するURL> , output_mode=summaryを使用し、metrics=status, computed_response_time, status_descriptionを指定します。

  • すべての列を取得する場合:

    url0=<監視するurl> , output_mode=summaryを使用します。

21.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と共有できます。

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

DMSを使用する場合、コンポーネントは、それ自体を管理エージェントの操作の詳細から隔離できます。コンポーネントは、各自のfetchletをデプロイ(または維持)したり、既存のいずれかのfetchletに組み込むためのTclスクリプトやシェル・スクリプトをデプロイ(または維持)したりする必要はありません。コンポーネントは、パフォーマンス・メトリックを測定またはエクスポートする独自の新しい手段を工夫する必要はありません。パフォーマンス・メトリックは、コンポーネント間で一貫した方法で測定および報告できます。DMS fetchletは、シェル・スクリプトやTclスクリプトをフォークせずに、リモートDMSランタイムに直接接続します。最も重要な点として、DMSが長く複雑なメタデータ・ドキュメントを自動生成するため、面倒でエラーを起こしやすい手動による編集時間が大幅に短縮されます。

入力パラメータ

表21-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プロパティは無視されます。

21.8.2 DMS fetchlet/Oracle Management Agent統合の方法

Oracle 9i Application Serverのインフラストラクチャのパフォーマンス監視を一貫して行うために、DMSは複数のコンポーネント(Apache、JServ、OSEおよびPortal)で使用されてきました。センサーは、簡単に使用でき、タイミング、カウントおよび分類に関連する詳細のほとんどを隠すため、パフォーマンス測定に関連する作業のほとんどを簡略化します。最後に、DMSは管理エージェントの詳細の多くをコンポーネント開発者および多くの管理エージェント統合作業から隠します。

21.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をクリックすることにより、メトリックを参照できます。

21.9 JDBC fetchlet

JDBCなどのコールレベル・インタフェースにより、SQLデータベース操作および更新コマンドへの外部アクセスが可能になります。Java Database Connectivity(JDBC)fetchletにより、共通JDBCコマンドを実行し、任意のタイプのデータベースのレスポンス時間を取得できます。

入力パラメータ

表21-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を使用できます。

必須。


表21-15 収集されるメトリック列

説明

ステータス

テストのステータス。fetchletによって生成されたSQLExceptionがある場合、ステータスは「停止中」です。

合計時間

fetchletがテストの実行に要する時間。

接続時間

DriverManager.getConnection()の完了に要する時間。

準備時間

conn.prepareStatement()の完了に要する時間。

実行時間

stmt.executeQuery()の完了に要する時間。

フェッチ時間

while(rs.next()) { rs.getRow() }の完了に要する時間。

クローズ時間

結果セット、文、接続のクローズの完了に要する時間。

行数

フェッチされた行数。

行当たりの合計時間


行当たりのフェッチ時間



例21-10では、呼出し時にJDBC fetchletに渡されるプロパティを示します。

例21-10 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> 

21.10 WBEM fetchlet

WBEM fetchletはCIMOMにアクセスし、指定したCIMクラスを使用して、要求された情報を取得します。CIMクラスは、管理リポジトリ表メトリックにマッピングされます。CIMクラスの名前は、返される表メトリックの名前であり、CIMクラスに対して定義されるプロパティは、メトリックの表の列の名前を付けるために使用されます。目的のプロパティは、メトリック定義中に指定する必要があります。

fetchletは、CIMクラスに対してインスタンス化されたインスタンスを管理リポジトリ表メトリックの行として返します。

入力パラメータ

表21-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コールに混在させることはできません。例21-11では、COUNT操作のメタデータを書き込む方法を示しています。

例21-11 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を返します。

例21-12 レスポンス・ステータス・メトリック

  <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つのプロパティのみあります。

例21-13 クラスについてフェッチされた単一プロパティ

<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つのクラスに対して複数のプロパティがフェッチされた場合は、セミコロンで区切る必要があります。プロパティは、メトリック表定義に対して列記述子が指定されている順序で提供する必要があります。

例21-14 クラスについてフェッチされた複数のプロパティ

<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>

21.11 JMX fetchlet

JMX fetchletは、MBeanからJava Management Extensions(JMX)の属性を取得して(またはJMX操作を呼び出して)、結果を(表)メトリックとして返します。指定されたObjectNameがObjectNameパターンの場合、複数の行が返されます。各行は、指定したObjectNameパターンに一致するMBeanに対応します。

入力パラメータ

表21-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操作の呼出しを示します。

    例21-15 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に存在する必要があります。

21.12 Webサービスfetchlet

Webサービス・コマンドライン・ツールで生成されるターゲット・メタデータ・ファイルの<QueryDescriptor>要素で、呼出し時にWebサービスfetchletに渡されるプロパティを指定します。

入力パラメータ

表21-18に、サポートされるプロパティを示します。

表21-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をキャッチすると、ターゲットはダウンしているとみなされます。


例21-16に、Remote Procedure Call (RPC)またはエンコードWebサービスのメトリック定義の例を示し、例21-17に、ドキュメント/リテラルのWebサービスのメトリック定義の例を示します。

例21-16 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="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>

例21-17 docまたはリテラルの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="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>

21.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>
    

例21-18 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>

21.13 WS-Management fetchlet

wsmancliコマンドライン・ツールで生成されるターゲット・メタデータ・ファイルの<QueryDescriptor>要素で、呼出し時にWS-Management fetchletに渡されるプロパティを指定します。

入力パラメータ

表21-19に、サポートされるプロパティの一覧を示します。

例21-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をキャッチすると、ターゲットはダウンしているとみなされます


例21-19に、WS-Management fetchletを使用したメトリック定義の例を示します。

例21-19 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>

21.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>
    

例21-20 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>

21.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認証をサポートします。

21.14.1 レスポンス処理

fetchletは、レスポンス・データに依存して監視メトリックを作成します。レスポンス・メディア・タイプはapplication/xml、application/jsonまたはtext/xmlになるため、様々なメカニズムがレスポンスの処理に適応されます。表21-20では、レスポンス・メディア・タイプごとに異なるメカニズムについて説明します。

表21-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

テキストは非構造表現であるため、このテキストから特定のデータを抽出する方法はありません。かわりに、レスポンス全体が返されます。


入力パラメータ

表21-21に、サポートされるプロパティの一覧を示します。

表21-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接続を行うプロキシ・サーバーのポート番号

あり


例21-21に、ターゲット・メタデータ・ファイルからのfectchlet問合せ記述子の例を示します。ターゲット・メタデータ・ファイルの詳細は、第3章「ターゲット・メタデータ・ファイルの作成」を参照してください。


注意:

fetchletのIDはRESTFetchletになります。

例21-21 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>

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

REST fetchletの自己署名付きSSL証明書を持ったHTTPS URLを呼び出す場合、ターゲット・メタデータ・ファイルに資格証明セットを指定する必要があります。

例21-22

<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リリース2 (12.1.0.3)では、fetchletの新しいプロパティSSLTrustServerCertが追加されました。これをTRUEに設定すると、fetchletはサーバー証明書に非検証モードを使用するため、SSLトラスト・ストアを提供または指定する必要はありません。

例21-23

<Property NAME="SSLTrustServerCert" SCOPE="GLOBAL">TRUE</Property>

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

REST CLIは、ターゲット・メタデータとデフォルトの収集ファイルを生成するためのクライアント・コマンドライン・ツールです。このツールを使用すると、管理エージェントはREST fetchletを呼び出してRESTful Webリソースを監視できます。

次のemctlコマンドを使用してREST CLIを呼び出します。

emctl restcli

表21-22に、emctl restcliコマンドで使用可能なコマンドライン引数のリストを示します。

表21-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の場所へのアクセスが保護される場合、ユーザー名とパスワードを入力します。

    例21-24に、REST CLIツールを実行するユーザーの例を示します。

  2. REST CLIによって、ターゲットのタイプと場所(出力ディレクトリに、生成されたターゲットと収集メタデータ・ファイルが含まれる場所)を入力するように求められます。

  3. REST CLIでは、監視に使用可能なすべてのリソース・パスがリストされます。リソース・パスとそのいずれかのメソッドを選択して、該当リソースの監視メトリックを定義する必要があります。

  4. さらに、REST CLIによって、収集スケジュールを定義するように求められます。

    すべての情報をユーザーから集める場合、ツールによって、(例21-25に示すメタデータのような)ターゲットとデフォルトの収集メタデータ・ファイルが指定の出力ディレクトリに生成されます。

    例21-24 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
    

    例21-25 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>