20 fetchletの使用

この章の構成は、次のとおりです。

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

OSコマンドfetchlet

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

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

  • OS fetchlet (RAW)

  • OS行fetchlet(行に分割)

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

OS fetchlet

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

入力パラメータ

表20-1 OS fetchletの入力パラメータ

パラメータ タイプ 説明 使用

コマンド

文字列

実行するオペレーティング・システム・コマンド。

必須

ENVname

文字列

ENVで始まるOSFetchletパラメータは、コマンドの実行環境でname環境変数になります

ゼロ以上

errStartsWith

文字列

定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。

オプション

スクリプト

文字列

commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。scriptは、実行する特定のPerlスクリプトの指定に使用されます。

スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

args

文字列

commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。

引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

separateErrorStream

ブール値

commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。

オプション。(TRUE/FALSE)

em_metric_timeout

整数

メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません

タイムアウト期間がない場合は-1を指定します。

オプション

メトリック・データを取得するには、UNIXのechoコマンドを実行します。

シェル環境からコマンドを実行するには、次のように入力します。

echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end 

echoコマンドにより、次の標準出力が生成されます。

Line 1|some more|even more 
Line 2 

Line 4|a little more| 
|Line 5 
|Line 6| 
|Line 7|again|
Line 8|the|end 

例で示されたコマンドとともにOS fetchletを使用します。

fetchletは次の1x1表を返します。

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



OSコマンドのRAW出力が返されます。標準エラー出力が標準出力に追加されます。

エラー処理

commandの起動で生じる問題(commandプログラムが見つからないなど)が発生すると、java.io.IOExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionが発生します。ゼロ以外の終了値でコマンドが終了した場合、fetchletはoracle.sysmand.emd.fetchlets.CommandFailedExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionをスローします。

ノート

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

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

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

OS行fetchlet(行に分割)

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

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

入力パラメータ

表20-2 OS行fetchletの入力パラメータ

パラメータ タイプ 説明 使用

コマンド

文字列

実行するオペレーティング・システム・コマンド。

必須

startsWith

文字列

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

ENVname

文字列

ENVで始まるパラメータは、コマンドの実行環境でname環境変数になります

0以上

errStartsWith

文字列

定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。

オプション

スクリプト

文字列

commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。scriptは、実行する特定のPerlスクリプトの指定に使用されます。

スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

args

文字列

commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。

引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

separateErrorStream

ブール値

commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。

オプション。(TRUE/FALSE)

em_metric_timeout

整数

メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。

タイムアウト期間がない場合は-1を指定します。

オプション

次のUNIXコマンドを例にとります。

echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end 

これによって、次の出力が生成されます。

Line 1|some more|even more 
Line 2 

Line 4|a little more| 
|Line 5 
|Line 6| 
|Line 7|again| 
Line 8|the|end 

例で示したコマンドとともにOS行fetchletを実行すると、次の単一列表が生成されます。

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



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

ノート:

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

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

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

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

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

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

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

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

入力パラメータ

表20-3 OS行トークンfetchletの入力パラメータ

パラメータ タイプ 説明 使用

コマンド

文字列

実行するオペレーティング・システム・コマンド。

必須

delimiter

文字列

行をトークン化するためのデリミタとして機能する文字のセット。

オプションであり、デフォルトは""(出力を行に分割)

startsWith

文字列

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

ENVname

文字列

ENVで始まるパラメータは、コマンドの実行環境でname環境変数になります

0以上

errStartsWith

文字列

定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。

オプション

スクリプト

文字列

commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。その場合、scriptは実行する特定のperlスクリプトの指定に使用されます。

スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

args

文字列

commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。

引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。

オプション

separateErrorStream

ブール値

commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。

オプション。(TRUE/FALSE)

em_metric_timeout

整数

メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。

タイムアウト期間がない場合は-1を指定します。

オプション

次のUNIXコマンドを例にとります。

echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end 

これによって、次の出力が生成されます。

Line 1|some more|even more 
Line 2 

Line 4|a little more| 
|Line 5 
|Line 6| 
|Line 7|again| 
Line 8|the|end 

例で示されたコマンドとともにOS行トークンfetchletを実行すると、デリミタを表す単一文字"|"により次の表が生成されます。

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



エラー処理

コマンドの起動に関する問題(コマンド・プログラムが見つからない)が発生すると、java.io.IOExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionが発生します。

ゼロ以外の終了値でコマンドが終了した場合、fetchletはoracle.sysmand.emd.fetchlets.CommandFailedExceptionをラップしたoracle.sysman.emSDK.emd.fetchlet.MetricSourceExceptionをスローします。

ノート

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

fetchletは実行中のコマンドに対する入力ストリームを即時に閉じます。

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

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

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

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

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

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

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

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

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

<TargetMetadata TYPE="my_type" NAME="my_target_name">
  ...
  <Metric NAME="my_special_metric" TYPE="TABLE">
    <TableDescriptor>
       <ColumnDescriptor NAME="test" TYPE="STRING"/>
    </TableDescriptor>
    <QueryDescriptor FETCHLET_ID="OS">
      <Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property>
      <Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/your_
       script.pl</Property>
      <CredentialRef NAME="OSCreds">your_cred</CredentialRef>
    </QueryDescriptor>
  </Metric>
  ...
</TargetMetadata>

ターゲットを監視している管理エージェントでは、host:HostCredsを指している参照先資格証明タイプを作成する必要があり、監視資格証明セットを、追加する新しいタイプにします。Enterprise Managerを使用した権限委任設定の詳細は、Enterprise Manager管理者ガイドを参照してください。

資格証明データは、ターゲットを監視する管理エージェント用のターゲット・メタデータ・ファイル(target.xml)に永続化されます。

次の例は、target.xml内で参照先資格証明タイプMyHostCredsを定義しています。これは、host:HostCredsという資格証明タイプです。

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

<Target TYPE="<removed>" NAME="<removed>" DISPLAY_NAME="<removed>" ON_HOST="" EMD_URL="https://<removed>/emd/main/" TIMEZONE_REGION="" IDENTIFIER="TARGET_GUID=<removed>">
...
<CredentialType NAME="MyHostCreds"><CredentialTypeRef REF_NAME="HostRef" REF_TYPE="HostCreds" REF_TARGETTYPE="host" ASSOCIATION="host"><CredentialTypeRefColumn NAME="HostUserName" REF_TYPECOLUMN="HostUserName"/><CredentialTypeRefColumn NAME="HostPassword" REF_TYPECOLUMN="HostPassword"/></CredentialTypeRef></CredentialType>
...
</Target>

Enterprise Managerで監視資格証明が更新されると(「設定」→「セキュリティ」→「監視資格証明」)、前述のデータは管理エージェント上で自動的に更新されます。

次の例では、HostMonCredSet監視資格証明セットを定義します。これはタイプMyHostCreds (したがってタイプhost:HostCreds)です。

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

SQL fetchlet

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

入力パラメータ

表20-4 SQL fetchletの入力パラメータ

パラメータ タイプ 説明 使用

接続情報

MachineName

文字列

データベース・ホスト

必須

ポート

整数

データベース・ポート

必須

SID

文字列

データベースSID

ServiceNameが指定されていないかぎり必須。

ServiceName

文字列

データベースServiceName

SIDが指定されていないかぎり必須。

OracleHome

文字列

データベースのOracle Home(OidRepSchemaNameとともに使用します)。

OidRepSchemaNameが使用されている場合は必須。

資格証明情報

UserName

文字列

ユーザー名

必須

パスワード

文字列

ユーザー・パスワード

オプションであり、デフォルトは""。

ロール

文字列

データベースへの接続時に使用されるロール(SYSDBAなど)。

オプションであり、選択肢はSYSDBA、SYSOPERおよびNORMAL(デフォルト)

全般

STATEMENT

文字列

SQL文またはPL/SQLブロック。

FILENAMEが指定されていないかぎり必須。

FILENAME

文字列

SQL文またはPL/SQLブロックを含むファイルのフルパス。

STATEMENTが指定されていないかぎり必須。

NUMROWS

整数

出力する行の最大数。

必須

バインド・パラメータ

SQLINPARAM<位置>

文字列

位置<position>にある入力パラメータの値。

ゼロ以上で、入力パラメータごとに1つ。

SQLOUTPARAMPOS

整数

出力パラメータの位置(存在する場合)。

存在する場合は、必ず1つの出力パラメータが存在できます。

SQLOUTPARAMTYPE

文字列

出力パラメータのタイプ(存在する場合)。

存在する場合は、必ず1つの出力パラメータ・タイプが存在できます。

transpose

TRUE/FALSE

TRUEの場合は、結果が入れ替えられます。行が列に、列が行に入れ替えられます。

ノート

SQL文またはPL/SQLブロックは、STATEMENTプロパティを通じて、または名前がFILENAMEプロパティで指定されているファイルを介して指定できます。

SQL fetchletでは、入力パラメータがサポートされます。入力および出力パラメータは、:<number>を使用することにより、通常の方法でSQL/PLSQLテキストで指定されます。入力パラメータを使用して、SQL問合せとPL/SQLブロックの両方に値をバインドできます。

入力パラメータの値は、SQLINPARAM<位置>形式のプロパティとして指定されます。任意の数の入力パラメータが可能です。入力パラメータはスカラーである必要があります。タイプARRAYおよびSTRUCTの入力パラメータはサポートされません。

SQL fetchletは、データを取得する匿名のPL/SQLブロック(他の機能やプロシージャを呼び出す)の実行をサポートします。PL/SQLのブロックを実行すると、データはOUTパラメータによってfetchletに返されます。正確には1つのOUTパラメータになります。タイプはSQL_CURSOR(PL/SQL REF CURSOR)、またはオブジェクトの配列を表す指定のタイプである必要があります。後者の場合、オブジェクトの各フィールドは、表の一列を表します。配列の各オブジェクト・インスタンスは、表の完全な一行を表します。OUTパラメータの位置とタイプは、プロパティSQLOUTPARAMPOSおよびSQLOUTPARAMTYPEによって指定されます。OUTパラメータを指定する場合、fetchletはPL/SQLを実行し、STATEMENTプロパティを匿名のPL/SQLブロックとして処理することが前提になります。

ノート:

ARRAY型のSQLOUTPARAMTYPEを使用している場合は、配列を次のように識別する必要があります。

  • 配列名を囲む二重引用符を使用せずに、SQLOUTPARAMTYPEで指定された配列型をSQL*Plusまたは任意のユーティリティから作成する場合、このプロパティの配列名は、ターゲット・メタデータ・ファイルですべて大文字を使用して指定する必要があります。その理由は、RDBMSが配列名を自動的にすべて大文字に変更するためです。

  • 二重引用符を使用して配列名を囲んで、SQLOUTPARAMTYPEで指定された配列型をSQL*Plusまたは任意のユーティリティから作成する場合、RDBMSは、指定された大文字と小文字の区別を保持します。このため、ユーザーはターゲット・メタデータ・ファイルで使用したのと同じ大/小文字を使用して配列名を指定する必要があります。

OUTパラメータが指定されていない場合、fetchletはSQL問合せを実行していることを想定します。

SQL fetchletへのすべての入力パラメータは文字列であることに注意してください。したがって、他のすべてのデータ型は文字列に変換する必要があります。これは、数値などのデータ型では簡単ですが、日付やタイムスタンプでは簡単ではありません。(DateFormatクラスを使用して)値の文字表現を渡すことにより、絶対的な日付またはタイムスタンプを渡すことができます。現在、SYSDATEやSYSDATE+1などの日付関数を渡す方法はありません。このような場合は、たとえばSQLに日付引数を直接埋め込むことができます。

begin func1(:1, :2, SYSDATE); end;

その他の注意事項は、プロシージャにnull引数を渡す場合です。次のSQLについて考えます。

STATEMENT=begin func1(:1,:2); end;
SQLINPARAM1=null
SQLOUTPARAMPOS=2
SQLOUTPARAMTYPE=fooret

最初の引数をvarchar2にするとします。これをパラメータ化し、最初の引数としてnullを渡すことにより、実際にはnull値ではなく*string* nullを引数に渡すことになります。null値を渡す場合は、次の処理を行います。

STATEMENT=begin func1(null, :1); end;
SQLOUTPARAMPOS=1
SQLOUTPARAMTYPE=fooret

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

例1: パラメータを指定しない問合せ

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

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

例2: 入力パラメータを指定した問合せ

MachineName=skini-pc 
Port=1521 
SID=o817 
UserName=scott 
password=tiger 
STATEMENT=select * from all_objects where owner=:1 and object_type=:2 and rownum<:3tt>
NUMROWS=30 
SQLINPARAM1=SYSTEM 
SQLINPARAM2=INDEX 
SQLINPARAM3=10 

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

例3: 入力パラメータを指定したPL/SQLプロシージャ

achineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=begin :1 := skini_junk.func1(:2); end;
NUMROWS=30
SQLINPARAM2=SYSTEM
SQLOUTPARAMPOS=1
SQLOUTPARAMTYPE=sql_cursor

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

例4: 文字列の配列を返すPL/SQLプロシージャ

MachineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=begin skini_junk.newproc(:1,:2); end;
NUMROWS=30
SQLINPARAM1=SYSTEM
SQLOUTPARAMPOS=2
SQLOUTPARAMTYPE=my_string_array

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

例5: 構造体の配列を返すPL/SQLパッケージ

MachineName=skini-pc
Port=1521
SID=o817
UserName=scott
password=tiger
STATEMENT=begin :1 := skini_junk.func2(:2,:3,:4,:5,:6); end;
NUMROWS=30
SQLINPARAM2=somename
SQLINPARAM3=someplace
SQLINPARAM4=someanimal
SQLINPARAM5=something
SQLINPARAM6=22
SQLOUTPARAMPOS=1
SQLOUTPARAMTYPE=my_struct_array

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

例6: 例で使用されるPL/SQL

create or replace type my_type as Object (
    name varchar2(128),
    place varchar2(128),
    animal integer,
    thing number,
    thing2 number);
/
create or replace type my_struct_array as table of my_type;
/

create or replace type my_string_array as table of varchar2(3000);
/

create or replace type my_int_array as table of integer;
/

create or replace package skini_junk as

type Jcr is ref cursor;

function func1(username in varchar2) return Jcr;
function func2(name varchar2, place varchar2, animal integer,
             thing number, thing2 number) return my_struct_array;
procedure newproc(name varchar2, outArray OUT my_string_array);
procedure newproc2(numrows in varchar2, outArray OUT my_int_array);

end skini_junk;
/


create or replace package body skini_junk as

function func1(username in varchar2) return Jcr is
cr Jcr;
begin
    open cr for select object_name, object_type, status from all_objects where
         owner=upper(username);

     return cr;
end;

function func2(name varchar2, place varchar2, animal integer,
             thing number, thing2 number) return my_struct_array IS
ret my_struct_array := my_struct_array();

begin
    ret.extend(50);

    for i in 1..50 loop
        ret(i) := my_type(name || i,
                          place || i,
                          animal+i,
                          thing+i,
                          thing2+i);
    end loop;
    return ret;
end;

procedure newproc(name varchar2, outArray OUT my_string_array) IS
begin
    outArray := my_string_array();
    outArray.extend(100);

    for i in 1..100 loop
        outArray(i) := name || i;
    end loop;
end;

procedure newproc2(numrows in varchar2, outArray OUT my_int_array) IS
begin
    outArray := my_int_array();
    outArray.extend(numrows);
    for i in 1..numrows loop
        outArray(i) := i;
    end loop;
end;

end skini_junk;
/

SNMP fetchlet

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

入力パラメータ

表20-5 SNMP fetchletの入力パラメータ

パラメータ タイプ 説明 使用

ホスト名

文字列

SNMPエージェントのホスト名。

必須。デフォルトは"localhost"

例:

"bigip.host.example.com"

"148.87.10.5"

PORT

文字列

SNMPエージェントのポート。

オプション。デフォルトは"161"

COMMUNITY

文字列

SNMPコミュニティ文字列

オプション。デフォルトは"public"

TIMEOUT

文字列

SNMPタイムアウト。

オプション。デフォルトは5秒です。

OIDS

文字列

デリミタで区切られた部分文字列のリスト。各部分文字列は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

文字列

OIDSの個々の部分文字列を区切るためのデリミタ。

オプションであり、デフォルトは空白文字。(ドット)、*(アスタリスク)および0から9まで(数字)はデリミタとして使用できません。

TABLE

文字列

このパラメータがTRUEに設定されている場合、OIDS内の各OIDは、複数インスタンスを持つ変数に対応します。FALSEに設定されている場合は、単一変数インスタンスに対応します。

オプション。デフォルトはFALSE。

PINGMODE

ブール値

PINGMODEレスポンス・メトリックの定義に使用されます。

TRUEに設定する場合、成功したGetResponseは、単一行で単一列の表(セルの値は1)を生成します。タイムアウトにより、単一行で単一列の表(値は0)が生成されます。

これは、SNMPベースのターゲットにレスポンス・メトリックを定義する場合に役立ちます。

オプション。デフォルトは"FALSE"

IGNORE_TIMEOUT_ERR_BOOLEAN

ブール値

レスポンスの待機中にPINGMODE以外の呼出しがタイムアウトした場合にエラーを生成するかどうかを指定します。

TRUEに設定すると、レスポンスの待機中にタイムアウトするPINGMODE以外の呼出しは、メトリック収集エラーを生成しません。これは、PINGMODEレスポンス・メトリックを定義するターゲットの合理的な動作です。SNMPエージェントが応答を停止したときにレスポンス・メトリックが可用性の重大度を生成する場合、レスポンス・メトリックで問題を特定する前に実行されるレスポンス以外のメトリックでメトリック・エラーを生成する必要はありません。

オプション。デフォルトは"TRUE"

MAX_NUM_ROWS_FETCH

整数

TABLE呼出しによって返される最大行数。

構成プロパティSnmpTableMaxNumRowsFetchは、デフォルト値をオーバーライドできます。

オプション。デフォルトは1000

CONTEXT_NAME

文字列

CONTEXT_ENGINE_IDと同様に、これら2つのプロパティでは、SNMPv1およびSNMPv2cで使用されるコミュニティ文字列を置き換える一連のSNMPv3資格証明を指定します。

ノート: これら2つのプロパティを指定する場合、COMMUNITYとVERSIONパラメータは無視され、送信されたリクエストはSNMPv3リクエストになります。

オプション。デフォルト値はありません

CONTEXT_ENGINE_ID

文字列

このパラメータの詳細は、CONTEXT_NAMEの説明を参照してください。

オプション。デフォルト値はありません

VERSION

文字列

SNMPのバージョンを指定します。

次のような場合、VERSIONは、SNMPv2cリクエストを示すv2cに設定されます。

  • disallowV1RequestsをTRUEに設定するか、hasV2TypesをTRUEに設定する場合

    および

  • CONTEXT_NAMEとCONTEXT_ENGINE_IDを指定しない場合

前述の条件が適用されない場合、VERSIONは、SNMPv1リクエストを示すv1に設定されます。

オプション。デフォルトは"v1"

disallowV1Requests

ブール値

このパラメータにより、管理エージェントが特定のターゲットへのリクエストの送信時にのみSNMPv2cを使用するように指定できます。

オプション。デフォルトは"FALSE"

hasV2Types

ブール値

このパラメータは、タイプが64ビット整数値のMIB変数のOIDを含むSNMP QueryDescriptorのグローバル範囲のプロパティです。これらはSNMPv1では表現できません。同じターゲット・インスタンスの他のリクエストがSNMPv1を使用して送信される場合でも、ターゲットタイプの所有者は、このリクエストがSNMPv2cである必要があることを把握しています。

オプション。デフォルトは"FALSE"

USE_GET_NEXT_ONLY

ブール値

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

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

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

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



行は、それぞれサブ識別子1、2、3、4に対応します。

OIDSのどのOIDも別のplacement OIDで追加できます。配置OIDの変数インスタンスは、返される表には表示されません。かわりに、列内での元のOIDの変数インスタンスの場所を決定します。具体的には、元のOIDのインスタンスのセット内のサブ識別子Sを持つ変数インスタンスIすべてについて、(a)配置OIDに対応する、サブ識別子Sを持つ変数インスタンスXがインスタンスのセット内に存在する必要があり、(b)XはインスタンスIのサブ識別子として使用されます。

たとえば、MIBに、それぞれ4つの変数インスタンスを持つ次の3つの列が含まれているとします。

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



ifDescrおよびipAdEntNetMaskを含む表を作成するには、ipAdEntIfIndexのOIDを配置OIDとして使用し、列を位置揃えする必要があります。このため、fetchletへのOIDS入力は、1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.4.20.1.3*1.3.6.1.2.1.2.1.4.20.1.2となります。fetchletの出力は次のようになります。

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



前の例でOIDSが1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.4.20.1.3だった場合、出力は次のようになります。

図20-9 SNMP fetchlet: 別のOID



HTTPデータfetchlet

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

  • URL fetchlet

  • URL行

  • URL行トークン

URL fetchlet (RAW)

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

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

入力パラメータ

表20-6 URL fetchletの入力パラメータ

名前 説明 使用

url

コンテンツを取得するURL

必須

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション

次のURLを例にとります。

http://localhost/nhcities.txt 

このコンテンツは次のとおりです。

行1: Nashua, Keene,

行2: Concord

行3: , Conway, Manchester, Milford, Brookline,

行4:

行5: Hollis, Meredith

ここで、指定したURLでURL fetchletを実行します。fetchletは次の1x1表を返します。

図20-10 URL fetchletの出力



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

エラー処理

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

URL行fetchlet(行に分割)

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

ノート:

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

表20-7 URL行fetchletの入力パラメータ

名前 説明 使用

url

コンテンツを取得するURL

必須

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション

startsWith

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

次のURLを例にとります。

http://localhost/nhcities.txt 

このコンテンツは次のとおりです。

行1: Nashua, Keene,

行2: Concord

行3: , Conway, Manchester, Milford, Brookline,

行4:

行5: Hollis, Meredith

ここで、指定したURLでURL fetchletを実行します。

fetchletは次の表を返します。

図20-11 URL行fetchletの出力



エラー処理

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

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

ノート

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

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

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

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

表20-8 URL行トークンfetchletの入力パラメータ

名前 説明 使用

url

コンテンツを取得するURL

必須

delimiter

行をトークン化するためのデリミタとして機能する文字のセット。

オプションであり、デフォルトは""(出力を行に分割)

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション

startsWith

この文字列で始まる行のみが結果に含まれます。

オプションであり、デフォルトは""(すべての行が含まれる)

次のURLを例にとります。

http://localhost/nhcities.txt 

このコンテンツは次のとおりです。

行1: Nashua, Keene,

行2: Concord

行3: , Conway, Manchester, Milford, Brookline,

行4:

行5: Hollis, Meredith

ここで、指定したURLと、デリミタを表す単一文字","を使用して、URL fetchletを実行します。

fetchletは次の表を返します。

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



エラー処理

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

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

ノート

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

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

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

URLXML fetchlet

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

入力パラメータ

表20-9 URLXML fetchletの入力パラメータ

名前 説明 使用

url

コンテンツを取得するURL

必須。

パターン

XMLからの情報の抽出に使用されるパターン。URLのXMLコンテンツに対して比較されるXMLチャンクのリストになります。各チャンクでは、テキストにフラット化して抽出する内容を定義する要素のテキスト部分にグラバー(*)が1つ以上あります。

必須。

proxyHost

URL接続を行うために使用するプロキシ・ホスト。

オプション。

proxyPort

URL接続を行うために使用するプロキシ・ポート。

オプション。

ignoreDtd

TRUEに設定されている場合は、コンテンツXMLにより参照されるDTDファイルを無視する必要があることを指定します。これは、DTDファイルにアクセスできない場合に役立ちます。

オプション。

generateKey

trueに設定されている場合は、行ごとに一意のキーが生成されます。キーは、結果の最初の列を占め、数値になります。

オプション。

throwConnException

TRUEに設定されている場合は、java.net.ConnectExceptionがスローされます。それ以外の場合は、捕捉されて空の結果セットが返されます。このプロパティをFALSEに設定すると、DMSFetchletと一貫性のある動作が行われます。

オプション。デフォルト値はTRUEです。

次のURLを例にとります。

http://localhost/urlxmltestfile.xml

このコンテンツは次のとおりです。

<?xml version="1.0"?>
<testfile>
    <test>Simple text</test>
    <test><level>A little more complex</level></test>
    <test></test>
    <notatest></notatest>
    <test>Yet more complexity<level>Even a little more complex</level>Will it ever stop?</test>
    <test1>must match<level>extract me!</level></test1>
    <test1>must match here<level>extract me, too!</level></test1>
</testfile>

与えられたURLおよびパターンでURLXML fetchletを実行します。

<testfile><test>*<level>*</level></test></testfile>

次の表が返されます。

図20-13 URLXML fetchletの出力



エラー処理

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

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

  • URLの形式が不正な場合

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

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

ノート

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

URLタイミングfetchlet

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

入力パラメータ

表20-10 URLタイミングfetchletの入力パラメータ

パラメータ 説明 使用

url#

ダウンロードするURL。url0は必須ですが、url0、url1、url2、url3という表記に従って、url0以外にも任意の数のURLを指定できます。

必須。

proxy_host

URL接続を行うために使用するプロキシ・ホスト。

オプション。URLへのアクセスに使用するプロキシを指定します。proxy_host_override値が指定されている場合は、かわりにその値が使用されます。

proxy_port

URL接続を行うためにプロキシ・ホストで使用されるポート。

オプション。

dont_proxy_for

プロキシが使用されないドメイン。

オプション。.us.example.com、.uk.example.comのようになります。

use_proxy

プロキシ・オーバーライド入力パラメータとともに使用される場合、use_proxyでは、元のプロキシのかわりに使用するプロキシを指定します。プロキシ・オーバーライド・パラメータを設定しないでfalseに設定した場合は、プロキシが使用されません。

オプション。パラメータはtrueまたはfalseに設定できます。

proxy_host_override

URL接続を行うために使用する別のプロキシ・ホスト。

オプション。proxy_hostをオーバーライドします。

proxy_port_override

URL接続を行うために使用する別のプロキシ・ポート。

オプション。proxy_portをオーバーライドします。

dont_proxy_override

ドメインのプロキシを使用しません。

オプション。パラメータはtrueまたはfalseに設定できます。

internet_cert_loc

セキュア(HTTPS)URLへのアクセスに使用する証明書の場所を指すパス。

オプション。

auth_realm

Basic認証ログオンのレルム。レルムが認証に対して指定されていない場合、認証は行われず、ページのダウンロードは401レスポンス・コードで失敗します。

オプション。

auth_user

BASIC認証のユーザー名。

オプション。

auth_password

Basic認証のパスワード。

オプション。

再試行

最初に失敗した場合にurlを再試行する回数。

オプション。デフォルトは1

connection_timeout

サーバーへの接続の確立で許容される待機時間(ミリ秒単位)。この時間には、名前解決に必要な時間も含まれます。

オプション。デフォルトは60000ミリ秒(1分)

read_timeout

読取りでサーバーの応答を待機するアイドル時間。たとえば、指定したタイムアウト期間中にサーバーからデータを受信しない場合、操作は失敗したとみなされます。

オプション。デフォルトは12000ミリ秒(2分)

タイムアウト

ページ・ダウンロードが失敗とみなされる経過ミリ秒数。サイトが機能していても極端に低速な場合は、これが検出されます。

オプション。デフォルトは300000ミリ秒(5分)

status_comparator

行を組み合せて単一行を作成する場合、status_comparatorパラメータは、すべてのURLが成功した必要があるか(and)、またはいずれかのURLが成功した必要があるか(or)を示します。

オプション。デフォルトはand

キャッシュ

URLにアクセスする際にキャッシュを使用するかどうかを示します。キャッシュを使用しないことを指定するには、パラメータをnに設定します。

オプション。デフォルトはyNoteです。キャッシュの範囲はリクエストごとになります。複数の取得メトリック・リクエスト間には永続キャッシュがありません。

output_format

使用する出力形式(summary、detailed、repeat_column)を指定します。出力形式の詳細は、「メトリック列および出力モード」を参照してください。

必須。summary: すべてのurlについてデフォルトのメトリック・セットを単一行に与えます。detailed: 各urlについてデフォルトのメトリック・セットを与えます。repeat_column: 各urlについてタイミングとともに単一のメトリック行を与えます。

メトリック

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

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

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

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

表20-11 URLタイミングfetchlet: 出力形式

出力形式 説明 メトリック列

サマリー

すべての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。

詳細

各urlについてデフォルトのメトリック・セットを返します。

メトリック入力パラメータが指定されている場合は、指定された列のみ返されます。

url、computed_response_time、status、status_description、dns_time、connect_time、redirect_time、first_byte_time、html_time、content_time、total_response_time、rate、redirect_count、html_bytes、content_bytes、total_bytes、avg_connect_time、avg_first_byte_time、broken_count、broken_details。

repeat_column

各URLについてタイミングとともに単一のメトリック行を返します。

メトリック入力パラメータが指定されている場合、各URLについてこれらの列が返され、その後に全体的なstatusとstatus_descriptionが続きます。(出力は常に単一行であることに注意してください。)

各URLについてtotal_response_timeが繰り返され、その後に全体的なstatusとstatus_descriptionが続きます。

メトリック列

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

表20-12 URLタイミングfetchlet: メトリック列

列名 説明

ステータス

すべての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数)として計算されます。

評価

KB/秒。これは、合計受信バイト数/その受信の合計所要時間で計算されます。

html_time

すべてのページのHTML部分のダウンロードの合計所要時間。この時間では、イメージおよびその他のコンテンツをフェッチするための時間は除外されます。(フレームHTMLをフェッチするための時間は含みます。)

content_time

ページ・コンテンツ(gif、JavaScript、cssなど)のダウンロードの所要時間。

redirect_time

指定されたurlのセットのフェッチ中に発生するすべてのリダイレクトの合計所要時間。

redirect_count

リダイレクト数。

total_bytes

合計バイト数。

html_bytes

HTMLの合計バイト数。(フレームHTMLのバイト数を含みます。)

content_bytes

コンテンツの合計バイト数。

status_description

これは、ステータスが停止中の場合にのみ存在します。HTTPステータスの説明に対応します。

request_count

行われたリクエスト数。(すべてのHTMLおよびコンテンツ・リクエストを含みます。)

broken_count

イメージまたはその他のコンテンツ要素のフェッチ時のエラー数。

broken_details

フェッチできなかったイメージまたはその他のコンテンツのリスト。これは、url[broken list], url[broken list...の形式です。

computed_response_time

この時間は、クライアント(ブラウザなど)がトランザクションのすべてのページのフェッチに要した時間の概算です。この数値は、すべてのページのコンテンツ(gifs、cssなど)が複数のスレッドを使用してフェッチされた場合と同様に計算されます。

avg_connect_time

合計connect_time/行われた収集の合計数。

avg_first_byte_time

最初のバイトの合計時間/行われたリクエスト数(HTMLまたはコンテンツをフェッチするため)。

dns_time

ホスト名の解決に要した時間(実装されておらず、常にゼロを返します)。

url

URLを返します。detailedのoutput_formatでのみ使用できます。

次のURLを例にとります。

url0=http://www.example.com/ 

入力パラメータoutput_format=summaryでは、fetchletは次の表(列のヘッダーを除く)を返します。

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



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

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



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

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



次のURLを例にとります。

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

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

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



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

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



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

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



エラー処理

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

ノート

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

推奨される使用方法:

  • 基本監視の場合:

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

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

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

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

ダイナミック・モニタリング・サービス(DMS)fetchletは、Application Server(AS)にアクセスし、DMSから返されるメトリックを収集します。

DMSにより、アプリケーションおよびシステム開発者は、カスタマイズされたコンポーネント固有のパフォーマンス・メトリックを測定およびエクスポートできます。Oracle Management Agentにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをOracle Enterprise Managerにインポートできます。

DMS fetchletはOracle Management Agentプラグイン・モジュールであり、DMSによりエクスポートされるパフォーマンス・データを管理エージェントがインポートできるようにします。DMS fetchletを使用すると、DMS APIコールを使用してインスツルメント処理されたコンポーネントは、そのパフォーマンス・データをEnterprise Managerと共有できます。

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

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

入力パラメータ

表20-13 DMS fetchletの入力パラメータ

名前 タイプ 説明 使用

oraclehome

文字列

監視されるIASインスタンスがインストールされる最上位ディレクトリ。これは、ローカルIASプロセスの監視にのみ使用されます。リモートIASプロセスを監視する場合、ユーザーはこのパラメータに空の値を指定し、かわりにプロパティopmnremoteportまたはmachine(あるいはその両方)を指定する必要があります。

必須。

次に例を示します。

"/private/oracle/ias"

バージョン

文字列

ターゲットのASバージョン番号。監視されるASインスタンスのバージョンの区別に使用されます。

オプション

次に例を示します。

"9.0.4"

opmnport

整数

Oracle Process Monitoring and Notification(OPMN)のポート。これは、主にリモートASプロセスの監視に使用されます。プロパティmachineと一緒に指定する必要があります。これが存在するか有効な場合、プロパティoraclehomeおよびhttpportは無視されます。

オプション

次に例を示します。

"6200"

httpport

整数

HTTPポートは、主にスタンドアロンのプロセスの監視に使用されます。プロパティmachineと一緒に指定する必要があります。プロパティopmnportがある場合は無視されます。これが存在するか有効な場合、プロパティoraclehomeは無視されます。

オプション

次に例を示します。

"7777"

マシン

文字列

Internet Application Server(AS)インスタンスが実行するホスト名。プロパティopmnportと一緒に指定する必要があります。これが存在しない場合、ローカル・ホストが前提になります。

オプション

次に例を示します。

"my-sun.us.example.com"

メトリック

文字列

ターゲットタイプ・メトリックの名前。

必須

次に例を示します。

"Servlets"

columnOrder

文字列

;で区切られたメトリック列名のリスト。列名は、ターゲット・タイプ・メタデータ・ファイルへの出現順序と同じ順序で指定する必要があります。

name、host、processおよびfullname列は含めないでください。

必須

次に例を示します。

"processTimes;totalRequest;requestRate"

usecache

文字列

このメトリックをキャッシュするかどうか。有効値はtrue、falseおよびrefreshallであり、デフォルトはtrue。refreshallは、キャッシュ・データを削除してすべてのターゲットから最新データを取得するようDMSに指示します。

オプション。

例: "false"

usecacheをfalseに設定すると、DMSキャッシュがバイパスされます。

proxyHost

文字列

HTTP接続を行うために使用するプロキシ・ホスト。

オプション

次に例を示します。

"proxy.us.example.com"

proxyPort

整数

HTTP接続を行うために使用するプロキシ・ポート。

オプション

次に例を示します。

"80"

dontProxyFor

文字列

プロキシが使用されないドメイン。

オプション

次に例を示します。

.us.example.comまたは18.219.0

useDefaultProxy

文字列

プロキシ・オーバーライド・パラメータとともに使用される場合、この変数では、元のプロキシ以外のプロキシを指定します。プロキシ・オーバーライド・パラメータを設定しないでfalseに設定した場合は、プロキシが使用されません。

オプション

次に例を示します。

"true"または"false"

proxyHostOverride

文字列

HTTP接続を行うために使用するプロキシ・ホスト。

オプション

次に例を示します。

"www-proxy.us.example.com"

proxyPortOverride

整数

HTTP接続を行うために使用するプロキシ・ポート。

オプション

次に例を示します。

"80"

authrealm

文字列

Basic認証ログオンのレルム。レルムが認証に対して指定されていない場合、認証は行われず、ページのダウンロードは401レスポンス・コードで失敗します。

オプション

次に例を示します。

Please input your flex account login:

authuser

文字列

Basic認証のユーザー名。

オプション

"superuser"

authpwd

文字列

Basic認証のパスワード。

オプション

次に例を示します。

"welcome"

エラー処理

oraclehome、metric、columnOrder、opmnportまたはhttpportのいずれかのプロパティが欠落した場合、DMS fetchletはMissingParameterExceptionをスローします。指定されたポートのいずれかが有効ではない場合、FetchletExceptionをスローします。

ノート

返されるメトリック表の最初の4列は、常にname、fullname、hostおよびprocessです。したがって、columnOrder文字列にはこれらの列を含めないでください。machineプロパティは、opmnportまたはhttpportプロパティとともに指定する必要があります。この場合、oraclehomeプロパティは無視されます。

DMS fetchlet/Oracle Management Agent統合の方法

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

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

前述のように、DMSにより、アプリケーションおよびシステム開発者は、カスタマイズされたコンポーネント固有のパフォーマンス・メトリックを測定およびエクスポートできます。Oracle Management Agentにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをEnterprise Managerにインポートできます。この項では、DMSパフォーマンス・メトリックを管理エージェントと統合する方法について説明します。

ステップ1: ASのインストール

ステップ2: Enterprise Managerのインストール

ステップ3: DMSでのコンポーネントのインスツルメント処理

Enterprise Managerに対して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に追加するには、次のコマンドを実行する必要があります。

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

JDBC fetchlet

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

入力パラメータ

表20-14 JDBC fetchletの入力パラメータ

名前 説明 使用

トランザクション名

(標準)

必須。

ビーコン名

(標準)

必須。

接続文字列

ユーザーが提供する接続文字列。接続文字列は、ユーザーが接続しようとしているデータベースのベンダーによって指定されたURL形式に従っている必要があります。

例:

Oracleが要求している形式:

jdbc:oracle:thin:@hostname:port

MySQLが要求している形式:

jdbc:mysql://hostname:port

必須。

クラス名の文字列

接続に使用するドライバ・クラス名。

次に例を示します。

oracle.jdbc.driver.OracleDriver

ドライバを含む.jarファイルを使用するようにエージェントを構成するオプションは2つあります。

  1. .jarファイルを$JAVA_HOME/jre/lib/extに置きます。CLASSPATHを変更する必要はありません。

  2. .jarファイルを任意の場所に置き、emd.propertiesファイルのCLASSPATHをjarへのパスで更新します。エージェントをバウンスします。これをスクリプト化し、ユーザーに対して透過的にする必要があります。

必須。

Username

データベースに接続するときに使用するユーザー名。

必須。

Password

データベースへの接続時に使用されるパスワード。

必須。

ロール

ユーザー・ロール

必須。

実行するSQL文。prepareCall() APIを使用することにより、PL/SQLを使用できます。

必須。

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

Column 説明

ステータス

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

合計時間

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

接続時間

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

準備時間

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

実行時間

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

フェッチ時間

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

クローズ時間

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

行数

フェッチされた行数。

行当たりの合計時間

行当たりのフェッチ時間

例: JDBC fetchletに渡されるプロパティ

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

<QueryDescriptor FETCHLET_ID="JDBC">
<Property NAME="TxnName" SCOPE="GLOBAL">TxnName</Property>
<Property NAME="BeaconName" SCOPE="GLOBAL">BeaconName</Property>
<Property NAME="connstring" SCOPE="INSTANCE">connString</Property>
<Property NAME="username" SCOPE="INSTANCE">username</Property>
<Property NAME="password" SCOPE="INSTANCE">password</Property>
<Property NAME="statement" SCOPE="GLOBAL">select * from user_tables</Property>
<Property NAME="classstring" SCOPE="GLOBAL">oracle.jdbc.none</Property>
<Property NAME="role" SCOPE="GLOBAL" OPTIONAL="TRUE">DBA</Property>
<Property NAME="useconnpool" SCOPE="GLOBAL" OPTIONAL="TRUE">FALSE</Property>
<Property NAME="GetTimingData" SCOPE="GLOBAL">TRUE</Property>
</QueryDescriptor> 

WBEM fetchlet

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

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

入力パラメータ

表20-16 WBEM fetchletの入力パラメータ

名前 タイプ 説明 使用

ホスト名

文字列

CIMOMのホスト名。

オプションであり、デフォルトはlocalhost。

ポート

整数

CIMOMのポート。

オプションであり、デフォルトは5988

ネームスペース

文字列

CIMネームスペース

オプションであり、デフォルトはroot/cimv2。

ユーザー名

文字列

CIMOMが稼働しているホストでのCIMOM認可に使用するユーザー名

必須

パスワード

文字列

CIMOMが稼働しているホストでのCIMOM認証に使用するパスワード。

必須

CIMclassname

文字列

インスタンスが返されるCIMクラスの名前。

STATUSを除くすべての操作に必須です。STATUS操作は、CIMOMが稼働しているかどうかのみチェックするため、クラス名は不要です。

操作

文字列

実行する操作。サポートされる操作には、クラス内のインスタンス数を返すCOUNT、クラスの各インスタンスの指定したプロパティの値を返すVALUES、またはCIMOMに関するステータス情報を提供するSTATUSが含まれます。

オプションであり、デフォルトはVALUES。

プロパティ

文字列

収集に必要なCIMクラス定義からのプロパティ名。

VALUES操作に必要です。操作がVALUESの場合は、これらのうち1からNまでをセミコロンで区切って使用できます。操作がVALUESで、プロパティが提供されていない場合は、エラーが返されます。プロパティは、指定された順序でEMDに渡されます。

エラー処理

次のタイプのエラーがWBEM fetchletに対して識別されています。

次の場合にMissingParameterExceptionが発生します

  • 一致するCIM Classパラメータがない場合

次の場合にfetchlet例外が発生します

  • クラス名がCIMOMネームスペースに見つからない場合

  • ネームスペースが見つからない場合

  • CIMOMへの接続に有効な資格証明がない場合

  • CIMOMが稼働していないため、CIMOMへの接続に失敗した場合

  • CIMクラス・プロパティが存在しない場合

  • サポートされていない操作が指定された場合

  • プロパティが指定されていない場合

ノート

ポート: 一部のCIMOMクライアント・インタフェースは、一部のクライアントがリスニングしていないときにCIMOMがリスニングしているポートを公開します。両方のケースを扱うために、ポートはデフォルトでポート5988となるオプションの入力パラメータとして公開されます。これは、デフォルトのPegasus CIMOMリスナー・ポートです。SunのWbem Servicesを介して提供されているJava APIは、CIMOMポートを公開しません。

プロトコル: ほとんどのCIMOMは、CIMOMとの通信にRMIまたはHTTPプロトコルをサポートします。行ったテストでは、HTTPプロトコルが安定せず、場合によってはCIMOMで完全には実装されていないことが示されました。このため、プロトコルは現在デフォルトでRMIになります。プロトコルのWBEMサービスCIMOMの実際のパラメータは、CIMClient.CIM_RMIまたはCIMClient.CIM_XMLです。

fetchlet操作: WBEM APIは、定義されているクラス階層とその関連をクライアントが横断できるという点で非常に柔軟性があります。現時点では、EMDからCIMデータへのアクセスに関するオプションは、カウント、クラスのプロパティの取得およびCIMOMステータスに限定されています。これらは、監視について実行する必要のある重要な操作です。追加の要件が発生した場合、オラクル社は必要に応じて新しい操作を追加し、これらをサポートできます。プロトタイプでは、カウント操作のみ実装されています。

認証: ほとんどのCIMOMには、ユーザー識別メカニズムを通じて認証をサポートするためのAPIが用意されています。CIMOMの大多数はAPIを実装していないため、この機能は実際にはno-opです。どの場合でも、オラクル社では、CIMOM実装が標準に遅れをとらないようにfetchletに機能を提供し、必要なサポートを行います。

Wbem fetchletでは、3つの基本操作がサポートされます。現時点では、fetchletは一度に1つの操作のみ処理するため、カウント、ステータスおよび値操作を1回のfetchletコールに混在させることはできません。例1では、COUNT操作のメタデータを書き込む方法を示しています。

例1: COUNT操作のメタデータ

<Metric NAME="Load" TYPE="TABLE">
    <Display>
       <Label NLSID="wbem_cimom_load">Load</Label>
     </Display>
     <TableDescriptor>
       <ColumnDescriptor NAME="Active Clients" TYPE="NUMBER" IS_KEY="FALSE">
           <Display>
             <Label NLSID="wbem_cimom_active_clients">Active CIMOM Clients</Label>
           </Display>
         </ColumnDescriptor>
     </TableDescriptor>  
    <QueryDescriptor FETCHLET_ID="Wbem">
       <Property NAME="username" SCOPE="GLOBAL">guest</Property>
       <Property NAME="password" SCOPE="GLOBAL">guest</Property>
       <Property NAME="CIMClassname" SCOPE="GLOBAL">EX_SFLProvider</Property>
       <Property NAME="operation" SCOPE="GLOBAL">COUNT</Property> 
    </QueryDescriptor>
  </Metric>

FETCHLET_IDはWbemによって識別されます。必須パラメータusername、passwordおよびCIMClassnameの場合、プロパティ名はfetchletに渡されます。operationはCOUNTとして識別されます。

次の例に、CIMOMを実行するかどうかを判断するResponse Statusメトリックの実装方法を示します。CIMOMへの接続に成功した場合は値1を返し、それ以外は0を返します。

例2 レスポンス・ステータス・メトリック

  <Metric NAME="Response" TYPE="TABLE">
     <Display>
       <Label NLSID="wbem_cimon_response">Response</Label>
     </Display>
     <TableDescriptor>
       <ColumnDescriptor NAME="Status" TYPE="NUMBER" IS_KEY="FALSE">
           <Display>
             <Label NLSID="wbem_cimom_response_status">Status</Label>
           </Display>
         </ColumnDescriptor> 
    </TableDescriptor> 
    <QueryDescriptor FETCHLET_ID="Wbem">
       <Property NAME="username" SCOPE="GLOBAL">guest</Property>
       <Property NAME="password" SCOPE="GLOBAL">guest</Property>
       <Property NAME="operation" SCOPE="GLOBAL">STATUS</Property>
     </QueryDescriptor>
   </Metric>

デフォルトの操作はVALUES操作です。CIMOMで定義されるクラスの値のフェッチに使用されます。

最後の例では、EX_Teacherクラスにアクセスし、名前列をフェッチします。名前はクラスおよび定義されている新規メトリックのキーであるため、IS_KEYプロパティがtrueに設定されています。CIMクラス・プロパティは、propertiesプロパティに指定されている順序でEnterprise Manager列にマッピングされます。この場合は、Nameという1つのプロパティのみあります。

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

<Metric NAME="EX_Teacher" TYPE="TABLE">
     <Display>
       <Label NLSID="wbem_EX_Teacher">EX_Teacher Class</Label>
     </Display>
     <TableDescriptor>
       <ColumnDescriptor NAME="Name" TYPE="STRING" IS_KEY="TRUE">
           <Display>
             <Label NLSID="wbem_ex_teacher_name">Name</Label>
           </Display>
         </ColumnDescriptor>
     </TableDescriptor>
     <QueryDescriptor FETCHLET_ID="Wbem">
       <Property NAME="username" SCOPE="GLOBAL">guest</Property>
       <Property NAME="password" SCOPE="GLOBAL">guest</Property>
       <Property NAME="CIMClassname" SCOPE="GLOBAL">EX_Teacher</Property>
       <Property NAME="properties" SCOPE="GLOBAL">Name</Property>
     </QueryDescriptor>
   </Metric>

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

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

<Metric NAME="EX_SFLProvider" TYPE="TABLE">
     <Display>
       <Label NLSID="wbem_EX_SFLProvider">EX_SFLProvider Class</Label>
     </Display>
     <TableDescriptor>
       <ColumnDescriptor NAME="Name" TYPE="STRING" IS_KEY="TRUE">
           <Display>
             <Label NLSID="wbem_ex_sfl_name">Name</Label>
           </Display>
         </ColumnDescriptor>
       <ColumnDescriptor NAME="Win" TYPE="NUMBER" IS_KEY="FALSE">
           <Display>
             <Label NLSID="wbem_ex_sfl_win">Win</Label>
           </Display>
         </ColumnDescriptor>
       <ColumnDescriptor NAME="Lost" TYPE="NUMBER" IS_KEY="FALSE">
           <Display>
             <Label NLSID="wbem_ex_sfl_lost">Lost</Label>
           </Display>
         </ColumnDescriptor>
     </TableDescriptor>
     <QueryDescriptor FETCHLET_ID="Wbem">
       <Property NAME="username" SCOPE="GLOBAL">guest</Property>
       <Property NAME="password" SCOPE="GLOBAL">guest</Property>
       <Property NAME="CIMClassname" SCOPE="GLOBAL">EX_SFLProvider</Property>
       <Property NAME="properties" SCOPE="GLOBAL">Name;Win;Lost</Property>
     </QueryDescriptor>
   </Metric>

JMX fetchlet

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

入力パラメータ

表20-17 JMX fetchletの主な入力パラメータ

名前 タイプ 説明 使用

MachineName

文字列

MBeanサーバーのホスト名

オプション

ポート

MBeanサーバーが新しい接続をリスニングするポート

オプション

UserName

文字列

JMX接続のユーザー名(必須の場合)

必須

パスワード

文字列

JMX接続のパスワード(必須の場合)

必須

プロトコル

文字列

接続に使用されるプロトコル

オプション

サービス

文字列

接続に使用されるサービス

オプション

serviceURL

文字列

JMX接続に使用されるserviceURLこれは、前述のMachineName、Port、protocolおよびserviceプロパティのかわりです。

ノート: ミドルウェア・ターゲットの場合、メトリックを管理サーバーまたは管理対象サーバーのどちらから収集する必要があるかに応じて、ファームまたは管理対象サーバーのいずれかのアソシエーションからserviceURLを取得できます。

必須(MachineNameとPortが指定されている場合を除く)

メトリック

文字列

MBeanオブジェクト名(MetricService=trueの場合はDMS表名)

必須

columnOrder

文字列

メトリックのTableDescriptorの列定義に対応する、前述のMBeanのセミコロン区切りのJMX属性リスト。

必須

操作

文字列

呼び出されるJMX操作の名前。この場合、columnOrderは、メトリックに移入される戻りオブジェクトからの値を表します。(jmxcliを使用してこれを生成することをお薦めします)。

オプション

引数

文字列

JMX操作の引数を表すXML。jmxcliを使用してこれを生成することをお薦めします。

オプション

MetricService

ブール値

MetricService=trueの場合、メトリックはOracleに固有のDMSメトリック・サービスで取得されることを示します。この場合、前述のcolumnOrderプロパティは列名のリストになり、metricプロパティは実際のDMS表名を示します。

オプション

identityCol

文字列

MBean ObjectNameから抽出されて結果メトリックのキー列として表面化されるMBeanオブジェクト名キー(またはセミコロン区切りのキーのリスト)。値canonicalを指定する場合、完全なMBeanオブジェクト名の追加キー・メトリック列がfetchletによって返されます。このプロパティは、前述のメトリック・プロパティが、サーバー上の複数のMBeanと一致するObjectNameパターンの場合のみ機能します。

オプション

autoRowID

文字列

自動生成されたキー列の接頭辞。接尾辞は1で始まる連番になります。たとえば、autoRowIDがROW_に設定される場合、位置が0で値がROW_1、ROW_2など(最大で返される行数まで)のキー列が生成されます。これは、通常、それ以外のどの列(選択されたJMX属性)も一意ではなく、MBeanの一致とMBeanのパターンが複数あるときの結果として複数の行が返される場合になります。

オプション

useCache

ブール値

MetricService=trueの場合のみ該当し、メトリック・サービス・キャッシュを使用する必要があるかどうかを示します。

オプション

ServerNames

文字列

MetricService=trueの場合のみ該当し、DMSメトリックを取得する必要があるサーバー名のセミコロン区切りのリストになります。これは、すべての管理対象サーバーのメトリックがある管理サーバーからこれらのメトリックを収集する(serviceURLがファーム・アソシエーションからAdminServerを指し示す)場合のみ該当します。

オプション

valueWhenNoMBean

数値

通常はレスポンス・メトリックに使用されます。(前述のメトリック・プロパティで)指定のMBeanパターンに一致するMBeanが見つからない場合、単一行および列としてfetchletが返す値があります。

オプション

valueWhenDown

数値

通常はレスポンス・メトリックに使用されます。接続例外(サーバーの停止を示す)が原因でサーバーへの接続が失敗した場合に単一行および列としてfetchletが返す値があります。

オプション

admlMap

文字列

MetricService=trueの場合のみ該当します。admlパラメータをこのadml表に対して渡す必要があることを示すXMLスニペットになります(jmxcliを使用してこれを生成することをお薦めします)。

オプション

ノート:

  1. JMX fetchletは、主にターゲットMBeanServerのMBeanからJMX属性を取得する場合に使用されます。また、同じ種類の複数のMBeanから属性を表形式で取得することもできます(複数の行があり、各行は一致するMBeanを表します)。

    たとえば、MBean ObjectNameパターンでサーブレットを指定し(メトリック・プロパティの*:Type=ServletRuntime,*)、columnOrderでA1;A2;A3と指定する場合、結果のメトリックにはサーブレットごとに1つの行があります。

  2. JMX操作を使用してメトリック・データを取得する必要がある場合(これはメトリックを収集する一般的な方法ではない)、QueryDescriptorプロパティ操作でJMX操作名を指定する必要があり、引数はJMX操作に渡されるパラメータのXML表現になります。

    たとえば、次のQueryDescriptorは、引数が単一文字列でvalueがtotalのgetNumUserSessionsというJMX操作の呼出しを示します。

    例: JMX操作名の指定

    <Metric NAME="GetNumUserSessions" TYPE="TABLE" USAGE_TYPE="HIDDEN">
          <Display>
             <Label NLSID="GetNumUserSession">GetNumUserSession</Label>
          </Display>
          <TableDescriptor>
             <ColumnDescriptor NAME="Get Num User  Sessions" TYPE="STRING">
                <Display>
                   <Label NLSID="Get Num User  Sessions">Get NumUser  Sessions</Label>
                </Display>
             </ColumnDescriptor>
          </TableDescriptor>
          <QueryDescriptor FETCHLET_ID="JMX">
            <Property NAME="serviceURL" SCOPE="ASSOCTGT" ASSOCIATION_NAME="farm">serviceURL</Property>
             <Property NAME="UserName" SCOPE="ASSOCTGT" OPTIONAL="TRUE" ASSOCIATION_NAME="farm">UserName</Property>
             <Property NAME="password" SCOPE="ASSOCTGT" OPTIONAL="TRUE" ASSOCIATION_NAME="farm">password</Property>
               <Property NAME="instName.parameter" SCOPE="INSTANCE">instName</Property>
             <Property NAME="metric" SCOPE="GLOBAL">oracle.forms.FormsJ2EEapplication.%instName.parameter%:,type=Runtime,*</Property>
             <Property NAME="operation" SCOPE="GLOBAL">getNumUserSessions</Property>
             <Property NAME="columnOrder" SCOPE="GLOBAL">getNumUserSessions</Property>
             <Property NAME="arguments" SCOPE="GLOBAL">            <![CDATA[<arguments>
       <argument type="java.lang.String">
          <value>total</value>
       </argument>
    </arguments>]]>
            </Property>
         </QueryDescriptor>
       </Metric>
    
  3. JMX fetchletのQueryDescriptorには、JMX接続情報が含まれます。通常は、serviceURLの形式になります。serviceURLプロパティがQueryDescriptorで利用できない場合、JMX fetchletとの接続情報を提供するように、MachineName、Port、protocolおよびserviceのプロパティの組合せがQueryDescriptorに存在する必要があります。

Webサービスfetchlet

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

ノート:

リリース13.1以降、Webサービスfetchletは、Enterprise Manager for Fusion AppsプラグインおよびEnterprise Manager for Fusion Middlewareプラグインから使用できます。

このfetchletを使用するには、Enterprise Manager for Fusion AppsプラグインおよびEnterprise Manager for Fusion MiddlewareプラグインがOMSと管理エージェントの両方にデプロイされている必要があります。

入力パラメータ

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

表20-18 Webサービスfetchletのプロパティ

名前 説明 使用 コメント

ServiceName

Webサービス名

必須。

有効なネームスペースをサービス名の先頭にする必要があります。

参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。

PortName

Webサービスのポート名

必須。

有効なネームスペースをポート名の先頭にする必要があります。

参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。

OperationName

Webサービスの操作名

必須。

有効なネームスペースを操作名の先頭にする必要があります。

参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。

ServiceEndpoint

Webサービス・エンドポイント

必須。

有効なURL。

WsdlURL

WebサービスのWSDL URL

オプション。

有効なURL。

RPC/エンコードWebサービスの場合のみ必須

ParameterStyle

SOAPパラメータのマッピング・スタイル

オプション。

- BARE

- WRAPPED

RPC/エンコードWebサービスまたはREST-ful Webサービスの場合のみオプション

ペイロード

Webサービス操作のリクエスト・ペイロード

必須。

CDATAセクションを使用して指定する必要があります。

SOAPBindingStyle

SOAPバインディング・スタイル

オプション。

- DOCUMENT

- RPC

RPCまたはエンコードWebサービスの場合のみオプション

SOAPBindingUse

SOAPバインディング使用

オプション

- ENCODED

- LITERAL

RPCまたはエンコードWebサービスの場合のみオプション

SOAPVersion

SOAPバージョン

オプション

- SOAP_1_1

- SOAP_1_2

RPCまたはエンコードWebサービスの場合のみオプション

MessageType

Webサービスのメッセージ・タイプ

オプション

- SOAP

- REST

RPCまたはエンコードWebサービスの場合のみオプション

SecurityPolicy

セキュリティ・ポリシー

必須

- NONE

- BASIC_AUTHENTICATION

Namespace

参照するすべてのネームスペースのセット

オプション。メトリックで参照されるすべてのネームスペースが含まれます。

注釈[ns0="uri0"][ns1="uri1"]を使用して指定します。

例: [ns0="http://type.abc.com"]

[ns1="http://app.abc.com"]

ColType

収集結果列タイプ

必須

メトリック列タイプのリスト(カンマ区切り)

例: msgId:STRING,source:STRING,detail:STRING

RowType

収集結果行タイプ

必須

メトリック列に対応するXPath式のリスト(カンマ区切り)

たとえば: //ns0:eventResponse/msgId,

//ns0:eventResponse/source,

SSLKeyStoreCredential

SSLキーストア資格証明セット名

オプション

<CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット

監視資格証明として定義する必要があります。

SSLTrustStoreCredential

SSLトラストストア資格証明セット名

オプション

<CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット

監視資格証明として定義する必要があります。

UserCredential

ユーザー・トークン資格証明セット名

オプション

<CredentialInfo>で定義されるエイリアス資格証明またはCSFキー資格証明タイプの有効な資格証明セット

監視資格証明として定義する必要があります。

ValueWhenDown

ターゲットがダウンしているときのデフォルト・レスポンス

必須(レスポンス・メトリックの場合のみ)。通常のメトリックには必要ありません。レスポンス・メトリックの場合、ターゲットがダウンしていると、この値(指定されている場合)が戻されます。

fetchletがConnectionExceptionをキャッチすると、ターゲットはダウンしているとみなされます。

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

例1: RPCまたはエンコードWebサービスのメトリック定義

 <Metric NAME="getVacantRooms" TYPE="TABLE">
   <Display>
     <Label NLSID="NLSID_GET_VACANT_ROOMS">getVacantRooms</Label>
   </Display>

   <TableDescriptor>
     <ColumnDescriptor IS_KEY="TRUE" NAME="roomID" TYPE="STRING">
       <Display>
         <Label NLSID="COL_ROOM_ID">roomID</Label>
       </Display>
     </ColumnDescriptor>
     <ColumnDescriptor IS_KEY="FALSE" NAME="floor" TYPE="STRING">
       <Display>
         <Label NLSID="COL_FLOOR">floor</Label>
       </Display>
     </ColumnDescriptor>
     <ColumnDescriptor IS_KEY="FALSE" NAME="number" TYPE="STRING">
       <Display>
         <Label NLSID="COL_NUMBER">number</Label>
       </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="rate" TYPE="STRING">
        <Display>
          <Label NLSID="COL_RATE">rate</Label>
        </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="roomType" TYPE="STRING">
        <Display>
          <Label NLSID="COL_ROOM_TYPE">roomType</Label>
        </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="smoking" TYPE="STRING">
        <Display>
          <Label NLSID="COL_SMOKING">smoking</Label>
        </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="available" TYPE="STRING">
        <Display>
          <Label NLSID="COL_AVAILABLE">available</Label>
        </Display>
      </ColumnDescriptor>
    </TableDescriptor>
    <QueryDescriptor FETCHLET_ID="OWSM_WSF">
     <Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property>
      <Property NAME="WsdlURL" SCOPE="INSTANCE">wsdlURL</Property>
      <Property NAME="ServiceEndpoint" SCOPE="INSTANCE">serviceURL</Property>
      <Property NAME="ServiceName" SCOPE="GLOBAL">ns0:SimpleHotelServiceRE</Property>
      <Property NAME="PortName" SCOPE="GLOBAL">ns0:HotelService</Property>
      <Property NAME="OperationName" SCOPE="GLOBAL">getVacantRooms</Property>
      <Property NAME="MessageType" SCOPE="GLOBAL">SOAP</Property>
      <Property NAME="SOAPBindingStyle" SCOPE="GLOBAL">RPC</Property>
      <Property NAME="SOAPBindingUse" SCOPE="GLOBAL">ENCODED</Property>
      <Property NAME="ParameterStyle" SCOPE="GLOBAL">BARE</Property>
      <Property NAME="SOAPVersion" SCOPE="GLOBAL">SOAP_1_1</Property>
      <Property NAME="Namespace" SCOPE="GLOBAL"><![CDATA[[ns1="http://hotel.apps.muws/"][ns0="http://hotel.apps.muws/rpc/"]]]></Property>
      <Property NAME="RowType" SCOPE="GLOBAL">//ns1:getVacantRoomsResponse/return/item/@roomID,//ns1:getVacantRoomsResponse/return/item/floor,
      //ns1:getVacantRoomsResponse/return/item/number,//ns1:getVacantRoomsResponse/return/item/rate,//ns1:getVacantRoomsResponse/return/item/roomType,
      //ns1:getVacantRoomsResponse/return/item/smoking,//ns1:getVacantRoomsResponse/return/item/available</Property>
      <Property NAME="ColType" SCOPE="GLOBAL">roomID:STRING,floor:STRING,number:STRING,rate:STRING,roomType:STRING,smoking:STRING,available:STRING</Property>
      <Property NAME="Payload" SCOPE="GLOBAL"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:ns="http://hotel.apps.muws/"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            <soap:Body soap:encodingStyle="">
              <ns:getVacantRooms/>
            </soap:Body>
          </soap:Envelope>]]></Property>
    </QueryDescriptor>
  </Metric>

例2: ドキュメントまたはリテラルWebサービスのメトリック定義

    <Metric NAME="square" TYPE="TABLE">
      <Display>
        <Label NLSID="NLSID_SQUARE">square</Label>
      </Display>
      <TableDescriptor>
        <ColumnDescriptor IS_KEY="FALSE" NAME="arg0" TYPE="STRING">
          <Display>
            <Label NLSID="COL_ARG0">arg0</Label>
          </Display>
        </ColumnDescriptor>
      </TableDescriptor>
      <QueryDescriptor FETCHLET_ID="OWSM_WSF">
        <Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property>
        <Property NAME="ServiceEndpoint" SCOPE="INSTANCE">serviceURL</Property>
        <Property NAME="ServiceName" SCOPE="GLOBAL">ns0:CalculatorService</Property>
        <Property NAME="PortName" SCOPE="GLOBAL">ns0:CalculatorPort</Property>
        <Property NAME="OperationName" SCOPE="GLOBAL">square</Property>
        <Property NAME="MessageType" SCOPE="GLOBAL">SOAP</Property>
        <Property NAME="SOAPBindingStyle" SCOPE="GLOBAL">DOCUMENT</Property>
        <Property NAME="SOAPBindingUse" SCOPE="GLOBAL">LITERAL</Property>
        <Property NAME="ParameterStyle" SCOPE="GLOBAL">WRAPPED</Property>
        <Property NAME="SOAPVersion" SCOPE="GLOBAL">SOAP_1_1</Property>
        <Property NAME="Namespace" SCOPE="GLOBAL"><![CDATA[[ns0="http://tests.jaxws.oracle.com/"]
[ns1="http://www.oracle.com/jaxws/tests"]]]></Property>
        <Property NAME="RowType" SCOPE="GLOBAL">//ns1:squareResponse/arg0</Property>
        <Property NAME="ColType" SCOPE="GLOBAL">arg0:STRING</Property>
        <Property NAME="Payload" SCOPE="GLOBAL"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
              <soap:Body xmlns:ns1="http://www.oracle.com/jaxws/tests">
                <ns1:square>
                  <arg0>%square.arg00001%</arg0>
                </ns1:square>
              </soap:Body>
            </soap:Envelope>]]></Property>
      </QueryDescriptor>
    </Metric>

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

BASIC認証が必要な場合、メトリック定義で次のように構成または定義する必要があります。

  1. SecurityPolicyプロパティをBASIC_AUTHENTICATIONに設定します。
      <Property NAME="SecurityPolicy" SCOPE="INSTANCE">BASIC_AUTHENTICATION</Property>
    
  2. 次のプロパティを<QueryDescriptor>要素に追加します。
       <Property NAME="UserCredential" SCOPE="GLOBAL"> UserCredentialSet </Property>
      <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
    
  3. <Metric>タグの後の資格証明タイプを定義します。
    ………
        <Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet    </Property>
           <CredentialRef NAME="UserCredentialSet">UserCredentialSet </CredentialRef>
          </QueryDescriptor>
        </Metric>
           <CredentialInfo>
        <CredentialType NAME="AliasCredential">
          <Display>
            <Label NLSID="CRED_TYPE">Alias Credential Type</Label>
          </Display>
          <CredentialTypeColumn NAME="Alias">
            <Display>
              <Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
            </Display>
          </CredentialTypeColumn>
          <CredentialTypeColumn NAME="Password">
            <Display>
              <Label NLSID="CRED_PASSWORD">Password for the alias</Label>
            </Display>
          </CredentialTypeColumn>
        </CredentialType>
        <CredentialSet NAME="UserCredentialSet" USAGE="MONITORING">
          <AllowedCredType TYPE="AliasCredential"/>
        </CredentialSet>
      </CredentialInfo>
    

例: SSLのキーストアおよびトラストストアの使用

…………
      <Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">SSLTrustStoreCredentialSet</Property>
      <Property NAME="SSLKeyStoreCredential" SCOPE="GLOBAL">SSLKeyStoreCredentialSet</Property>
NAME="SSLTrustStoreCredentialSet">SSLTrustStoreCredentialSet</CredentialRef>
      <CredentialRef NAME="SSLKeyStoreCredentialSet">SSLKeyStoreCredentialSet</CredentialRef>
    </QueryDescriptor>
  </Metric>
  <CredentialInfo>
    <CredentialType NAME="StoreCredential">
      <Display>
        <Label NLSID="CRED_TYPE">Store Credential Type</Label>
      </Display>
      <CredentialTypeColumn NAME="StoreLocation">
        <Display>
          <Label NLSID="CRED_STORE_LOCATION">Store Location</Label>
        </Display>
      </CredentialTypeColumn>
      <CredentialTypeColumn NAME="StoreType">
        <Display>
          <Label NLSID="CRED_STORE_TYPE">Store Type</Label>
        </Display>
      </CredentialTypeColumn>
      <CredentialTypeColumn NAME="StorePassword">
        <Display>
          <Label NLSID="CRED_STORE_PASSWORD">Store Password</Label>
        </Display>
      </CredentialTypeColumn>
    </CredentialType>
    <CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING">
      <AllowedCredType TYPE="StoreCredential"/>
    </CredentialSet>
    <CredentialSet NAME="SSLKeyStoreCredentialSet" USAGE="MONITORING">
      <AllowedCredType TYPE="StoreCredential"/>
    </CredentialSet>
  </CredentialInfo>

WS-Management fetchlet

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

ノート:

リリース13.1以降、WS-Management fetchletは、Enterprise Manager for Fusion Middlewareプラグインから使用できます。

このfetchletを使用するには、Enterprise Manager for Fusion MiddlewareプラグインがOMSと管理エージェントの両方にデプロイされている必要があります。

入力パラメータ

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

例20-19 WS-Management fetchletのプロパティ

名前 説明 使用

ResourceURI

リソース・クラス表現またはインスタンス表現のURI(wsman:ResourceURL)

必須

RFC 3986に従う有効なURI

宛先

サービスのトランスポート・アドレス(wsa:To)。

必須

有効なネットワーク・トランスポート・アドレス。

アクション

wsa:Actionの場合、リソースに対してどの操作を実行するかを特定します。

必須

現在のリリースでサポートされるのは、http://schemas.xmlsoap.org/ws/2004/09/transfer/Getのみです。

TransferOperation

WS-Transfer操作の名前。

必須

現在のリリースでサポートされるのはGETのみです。

ロケール

クライアントがリクエストする(場合によっては要求する)言語と翻訳先のレスポンス・テキストを指定します(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]

Where

- S1、S2、...、Snはセレクタ名です。

- V1、V2、...、Vnはセレクタ値です。

SecurityPolicy

セキュリティ・ポリシー

必須

- NONE

- BASIC_AUTHENTICATION

Namespace

参照するすべてのネームスペースのセット

必須

注釈[ns0="uri0"][ns1="uri1"]を使用して指定します。

例: [ns0="http://type.abc.com"][ns1="http://app.abc.com"]

ColType

収集結果列タイプ

必須

メトリック列タイプのリスト(カンマ区切り)

例: msgId:STRING,source:STRING,detail:STRING

RowType

収集結果行タイプ

必須

メトリック列に対応するXPath式のリスト(カンマ区切り)

たとえば: //ns0:eventResponse/msgId,//ns0:eventResponse/source

SSLKeyStoreCredential

SSLキーストア資格証明セット名

オプション

<CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット

SSLTrustStoreCredential

SSLトラストストア資格証明セット名

オプション

<CredentialInfo>タグで定義されるストア資格証明タイプの有効な資格証明セット

UserCredential

ユーザー・トークン資格証明セット名

オプション

<CredentialInfo>タグで定義されるエイリアス資格証明またはCSFキー資格証明タイプの有効な資格証明セット

ValueWhenDown

ターゲットがダウンしているときのデフォルト・レスポンス

必須(レスポンス・メトリックの場合のみ)。通常のメトリックには必要ありません。レスポンス・メトリックの場合、ターゲットがダウンしていると、この値(指定されている場合)が戻されます。

fetchletがConnectionExceptionをキャッチすると、ターゲットはダウンしているとみなされます

例: WS-Management fetchletを使用する場合のメトリック定義

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

  <Metric NAME="trafficLight" TYPE="TABLE">
    <Display>
      <Label NLSID="NLSID_TRAFFIC_LIGHT">trafficLight</Label>
    </Display>
    <TableDescriptor>
      <ColumnDescriptor IS_KEY="YES" NAME="name" TYPE="STRING">
        <Display>
          <Label NLSID="COL_NAME">name</Label>
        </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="color" TYPE="STRING">
        <Display>
          <Label NLSID="COL_COLOR">color</Label>
        </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="x" TYPE="STRING">
        <Display>
          <Label NLSID="COL_X">x</Label>
        </Display>
      </ColumnDescriptor>
      <ColumnDescriptor IS_KEY="FALSE" NAME="y" TYPE="STRING">
        <Display>
          <Label NLSID="COL_Y">y</Label>
        </Display>
      </ColumnDescriptor>
    </TableDescriptor>
    <QueryDescriptor FETCHLET_ID="WSManagementFetchlet">
      <Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property>
      <Property NAME="ResourceURL" SCOPE="INSTANCE">resourceURL</Property>
      <Property NAME="To" SCOPE="INSTANCE">To address</Property>
      <Property NAME="OptionSet" SCOPE="INSTANCE">optionSet</Property>
      <Property NAME="Locale" SCOPE="INSTANCE">locale</Property>
      <Property NAME="MaxEnvelopeSize" SCOPE="INSTANCE">maxEnvelopeSize</Property>
      <Property NAME="OperationTimeout" SCOPE="INSTANCE">operationTimeout</Property>
      <Property NAME="Namespace" SCOPE="GLOBAL"> <![CDATA[[ns1="http://schemas.wiseman.dev.java.net/traffic/1/light.xsd"]
            [ns0="http://www.w3.org/2001/XMLSchema"]
            [wsa="http://www.w3.org/2005/08/addressing"]
            [env="http://www.w3.org/2003/05/soap-envelope"]]]></Property>
      <Property NAME="RowType" SCOPE="GLOBAL">//ns1:trafficlight/ns1:name,//ns1:trafficlight/ns1:color,//ns1:
      <Property NAME="ColType" SCOPE="GLOBAL">name:STRING,color:STRING,x:STRING,y:STRING</Property>
      <Property NAME="ReplyTo" SCOPE="GLOBAL">http://www.w3.org/2005/08/addressing/role/anonymous</Property>
      <Property NAME="Action" SCOPE="GLOBAL">http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</Property>
      <Property NAME="TransferOperation" SCOPE="GLOBAL">GET</Property>
      <Property NAME="SelectorSet" SCOPE="GLOBAL">[name,Light1]</Property>
    </QueryDescriptor>
  </Metric>

資格証明の使用

BASIC認証が必要な場合、メトリック定義で構成または定義します。

  1. SecurityPolicyプロパティをBASIC_AUTHENTICATIONに設定します。
      <Property NAME="SecurityPolicy" SCOPE="INSTANCE">BASIC_AUTHENTICATION</Property>
    
  2. 次のプロパティを<QueryDescriptor>タグに追加します。
      <Property NAME="UserCredential" SCOPE="GLOBAL"> UserCredentialSet </Property>
      <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
    
  3. <Metric>タグの後の資格証明タイプを定義します。
           ………
        <Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet </Property>
           <CredentialRef NAME="UserCredentialSet">UserCredentialSet </CredentialRef>
          </QueryDescriptor>
        </Metric>
      <CredentialInfo>
        <CredentialType NAME="AliasCredential">
          <Display>
            <Label NLSID="CRED_TYPE">Alias Credential Type</Label>
          </Display>
          <CredentialTypeColumn NAME="Alias">
            <Display>
              <Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
            </Display>
          </CredentialTypeColumn>
          <CredentialTypeColumn NAME="Password">
            <Display>
              <Label NLSID="CRED_PASSWORD">Password for the alias</Label>
            </Display>
          </CredentialTypeColumn>
        </CredentialType>
        <CredentialSet NAME="UserCredentialSet" USAGE="MONITORING">
          <AllowedCredType TYPE="AliasCredential"/>
        </CredentialSet>
      </CredentialInfo>
    

例: SSLのキーストアおよびトラストストアの使用

    …………
    <Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">SSLTrustStoreCredentialSet</Property>
      <Property NAME="SSLKeyStoreCredential" SCOPE="GLOBAL">SSLKeyStoreCredentialSet</Property>
<CredentialRef NAME="SSLTrustStoreCredentialSet">SSLTrustStoreCredentialSet</CredentialRef>
      <CredentialRef NAME="SSLKeyStoreCredentialSet">SSLKeyStoreCredentialSet</CredentialRef>
    </QueryDescriptor>
  </Metric>
  <CredentialInfo>
    <CredentialType NAME="StoreCredential">
      <Display>
       <Label NLSID="CRED_TYPE">Store Credential Type</Label>
     </Display>
     <CredentialTypeColumn NAME="StoreLocation">
       <Display>
         <Label NLSID="CRED_STORE_LOCATION">Store Location</Label>
       </Display>
      </CredentialTypeColumn>
      <CredentialTypeColumn NAME="StoreType">
        <Display>
          <Label NLSID="CRED_STORE_TYPE">Store Type</Label>
        </Display>
      </CredentialTypeColumn>
      <CredentialTypeColumn NAME="StorePassword">
        <Display>
          <Label NLSID="CRED_STORE_PASSWORD">Store Password</Label>
        </Display>
      </CredentialTypeColumn>
    </CredentialType>
    <CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING">
      <AllowedCredType TYPE="StoreCredential"/>
    </CredentialSet>
    <CredentialSet NAME="SSLKeyStoreCredentialSet" USAGE="MONITORING">
      <AllowedCredType TYPE="StoreCredential"/>
    </CredentialSet>
  </CredentialInfo>

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

レスポンス処理

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

表20-20 レスポンス処理のメカニズム

メディア・タイプ メカニズム

application/xml

XPath問合せはXMLデータの処理に使用されます。

fetchletのプロパティRowTypeで、列データを取得するための、メトリック列に対応するXPath式のリスト(カンマ区切り)を指定します。

たとえば:

<records>
  <ns2:Record xmlns:ns2="urn:com.office.directory">
    <name>Peter</name>
    <phone>+1 (650) 555-0100</phone>
  </ns2:Record>
  <ns2:Record xmlns:ns2="urn:com.office.directory">
    <name>John</name>
    <phone>+1 (650) 555-0185</phone>
  </ns2:Record>
</records>

監視メトリックには2つの列(名前と電話番号)があることが前提です。対応するXPath式は次のようになります。

  • //records/ns.2:Record/name

  • //records/ns.2:Record/phone

次に、抽出されたデータの例を示します。

Peter, +1 (650) 555-0100
John, +1 (650) 555-0185

application/json

JSONPathは、JavaScript Object Notation(JSON)データの処理に使用されます。JSONPath式は、XPath式がXMLドキュメントで使用される場合と同様にJSON構造を参照します。

たとえば:

{
  “Record":
  [
    {
      “name":"Peter"
      “phone":"+1 (650) 555-0100"
    },
    {
      “name":"John"
      “phone":"+1 (650) 555-0185"
    },
   ]
 }  

監視メトリックには2つの列(名前と電話番号)があることが前提です。対応するJSONPath式は次のようになります。

  • $.Record.name

  • $.Record.phone

次に、抽出されたデータの例を示します。

Peter, +1 (650) 555-0100
John, +1 (650) 555-0185

text/xml

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

入力パラメータ

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

表20-21 REST fetchletのプロパティ

名前 説明 オプション

BaseURI

RESTful WebサービスのベースURI

いいえ

RequestElementPayload

文字列形式のリクエスト要素ペイロード(XML/JSON)。XMLの場合、CDATAセクションを使用して指定する必要があります。

はい

RequestMetadata

XML形式のリクエスト・メタデータ

いいえ

SecurityPolicy

認証スキームを指定します。NONEまたはBASIC_AUTHENTICATIONのいずれか

いいえ

Namespace

メトリックで参照するすべてのネームスペースのセット。注釈[ns0="uri0"][ns1="uri1"]...を使用して指定します。

たとえば:

[ns0="http://type.abc.com"][ns1="http://app.abc.com"]

いいえ

ColType

収集結果列タイプ。メトリック列タイプのリスト(カンマ区切り)。

たとえば:

msgId:STRING,source:STRING,detail:STRING

いいえ

RowType

収集結果行タイプ。メトリック列に対応するパス(XPathまたはJsonPath)式のリスト(カンマ区切り)。

たとえば:

//ns0:eventResponse/msgId,//ns0:eventResponse/source,//ns0:eventResponse/detail

いいえ

SSLKeyStoreCredential

SSLキーストア資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。

Location、Type、Password

はい

SSLTrustStoreCredential

SSLトラストストア資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。

Location、Type、Password

はい

UserCredential

ユーザー・トークン資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。

Alias、Password

はい

ProxyHost

URL接続を行うプロキシ・サーバーのホスト名

はい

ProxyPort

URL接続を行うプロキシ・サーバーのポート番号

はい

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

ノート:

fetchletのIDはRESTFetchletになります。

例: fetchlet問合せ記述子

<QueryDescriptor FETCHLET_ID="RESTFetchlet">
  <Property NAME="SecurityPolicy" SCOPE="INSTANCE">ListAll.SecurityPolicy</Property>
  <Property NAME="BaseURI" SCOPE="INSTANCE">ListAll.BaseURI</Property>
  <Property NAME="Namespace" SCOPE="GLOBAL">
    <![CDATA[[ns0="urn:com.office.directory"]]]></Property>
  <Property NAME="RowType" SCOPE="GLOBAL">//ns0:Record/name,//ns0:Record/title,
    //ns0:Record/phone,//ns0:Record/building,//ns0:Record/floor,
    //ns0:Record/office</Property>
  <Property NAME="ColType" SCOPE="GLOBAL">name:STRING,title:STRING,phone:STRING
    ,building:STRING,floor:STRING,office:STRING</Property>
  <Property NAME="RequestMetadata" SCOPE="GLOBAL">
            <![CDATA[<Resource path="/">
                <Resource path="lookup/list">
                    <Method elementDefined="false" 
                     accept="application/xml" name="GET"/>
                </Resource>
            </Resource>
            </Property>]]> 
  <Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet</Property>
  <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
</QueryDescriptor>

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

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

<QueryDescriptor FETCHLET_ID="RESTFetchlet">
  ......
   <Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">
    SSLTrustStoreCredentialSet</Property>
   <CredentialRef NAME="SSLTrustStoreCredentialSet">
    SSLTrustStoreCredentialSet</CredentialRef></QueryDescriptor>
<CredentialInfo>
  <CredentialType NAME="StoreCredential">
    <Display>
      <Label NLSID="CRED_TYPE">Store Credential Type</Label>
    </Display>
    <CredentialTypeColumn NAME="StoreLocation" IS_SENSITIVE="FALSE">
      <Display>
        <Label NLSID="CRED_STORE_LOCATION">Store Location</Label>
      </Display>
    </CredentialTypeColumn>
    <CredentialTypeColumn NAME="StoreType" IS_SENSITIVE="FALSE">
      <Display>
        <Label NLSID="CRED_STORE_TYPE">Store Type</Label>
      </Display>
    </CredentialTypeColumn>
    <CredentialTypeColumn NAME="StorePassword">
      <Display>
        <Label NLSID="CRED_STORE_PASSWORD">Store Password</Label>
      </Display>
    </CredentialTypeColumn>
  </CredentialType>
  <CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING" CONTEXT_TYPE="TARGET">
    <AllowedCredType TYPE="StoreCredential"/>
  </CredentialSet>
</CredentialInfo>

Enterprise Managerでは、fetchletの新しいプロパティSSLTrustServerCertが追加されました。これをTRUEに設定すると、fetchletはサーバー証明書に非検証モードを使用するため、SSLトラスト・ストアを提供または指定する必要はありません。

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

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

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

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

emctl restcli

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

表20-22 REST CLIでサポートされるコマンドライン引数

引数 説明 次に例を示します。

metadata

ターゲット・メタデータを生成します。

-metadata

wadl

WADLの場所

-wadl=http://......

-wadl=file:///.....

wsdl

WSDLの場所

-wsdl=http://......

-wsdl=file:///.....

username

ホストにログインするユーザー名

-username=admin

proxyhost

プロキシ・サーバーのホスト名

-proxyhost=proxy.example.com

proxyport

プロキシ・サーバーのポート番号。

-proxyport=80

REST CLIを使用するには、次のようにします。

  1. Web Application Description Language(WADL)の場所でREST CLIコマンドを実行します。たとえば:
    emctl restcli -wadl=http://host.us.example.com:17382/OfficeDirectoryBA/application.wadl
     

    WADLの場所へのアクセスが保護される場合、ユーザー名とパスワードを入力します。

    次の「REST CLIの実行」の例では、REST CLIツールを実行するユーザーの例を示します。

  2. REST CLIによって、ターゲットのタイプと場所(出力ディレクトリに、生成されたターゲットと収集メタデータ・ファイルが含まれる場所)を入力するように求められます。
  3. REST CLIでは、監視に使用可能なすべてのリソース・パスがリストされます。リソース・パスとそのいずれかのメソッドを選択して、該当リソースの監視メトリックを定義する必要があります。
  4. さらに、REST CLIによって、収集スケジュールを定義するように求められます。

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

    例: REST CLIの実行

    Generate Metric Metadata for REST Web Resource Monitoring
    
    Enter password for "weblogic" : 
    
    Reading WADL Document at 
    http://host.us.example.com:17382/OfficeDirectoryBA/application.wadl...done.
    
    
    ==> Enter the name for this target type : OfficeDirectory
    
    ==> Enter metadata file name [/scratch/work/metadata/OfficeDirectory.xml] :
    
    All resource paths available for monitoring :
    [1]   /add
    [2]   /lookup/list
    [3]   /lookup/phone
    [4]   /lookup/building/people
    [5]   /db/count
    
    ==> Enter the index [1-5] to select : 2
    * Selected Resource Path : /lookup/list
    
    All methods available from the selected path : 
    [1]   application/xml[Record] GET()
    [2]   application/json[Record] GET()
    
    ==> Enter the index [1-2] to select : 1
    * Selected Resource Method: application/xml[Record] GET()
    
    Define new metric group :
    ==> Enter the name for this metric group [GET] : ListGet_XML 
    
    Return value(s) for the selected method : 
    [1]   //ns0:Record/name <string>
    [2]   //ns0:Record/title <string>
    [3]   //ns0:Record/phone <string>
    [4]   //ns0:Record/building <string>
    [5]   //ns0:Record/floor <string>
    [6]   //ns0:Record/office <string>
    
    ==> Enter the index [1-6] of metric to display : 1
    ==> Enter the name for this metric [name] : 
    ==> Enter the label for this metric [name] : 
    ==> Is this a key metric <y/n>? [n] : y
    ==> Do you want to add another metric <y/n>? [y] : 
    
    Return value(s) for the selected method :
    [1]   //ns0:Record/title <string>
    [2]   //ns0:Record/phone <string>
    [3]   //ns0:Record/building <string>
    [4]   //ns0:Record/floor <string>
    [5]   //ns0:Record/office <string>
    
    ==> Enter the index [1-5] of metric to display : 1
    ==> Enter the name for this metric [title] : 
    ==> Enter the label for this metric [title] : 
    ==> Is this a key metric <y/n>? [n] : 
    ==> Do you want to create threshold for it <y/n>? [n] : 
    ==> Do you want to add another metric <y/n>? [y] : 
    
    Return value(s) for the selected method : 
    [1]   //ns0:Record/phone <string>
    [2]   //ns0:Record/building <string>
    [3]   //ns0:Record/floor <string>
    [4]   //ns0:Record/office <string>
    
    ==> Enter the index [1-4] of metric to display : 1
    ==> Enter the name for this metric [phone] : 
    ==> Enter the label for this metric [phone] : 
    ==> Is this a key metric <y/n>? [n] : 
    ==> Do you want to create threshold for it <y/n>? [n] : 
    ==> Do you want to add another metric <y/n>? [y] : 
    
    Return value(s) for the selected method : 
    [1]   //ns0:Record/building <string>
    [2]   //ns0:Record/floor <string>
    [3]   //ns0:Record/office <string>
    
    ==> Enter the index [1-3] of metric to display : 1
    ==> Enter the name for this metric [building] : 
    ==> Enter the label for this metric [building] : 
    ==> Is this a key metric <y/n>? [n] : 
    ==> Do you want to create threshold for it <y/n>? [n] : 
    ==> Do you want to add another metric <y/n>? [y] : 
    
    Return value(s) for the selected method : 
    [1]   //ns0:Record/floor <string>
    [2]   //ns0:Record/office <string>
    
    ==> Enter the index [1-2] of metric to display : 1
    ==> Enter the name for this metric [floor] : 
    ==> Enter the label for this metric [floor] : 
    ==> Is this a key metric <y/n>? [n] : 
    ==> Do you want to create threshold for it <y/n>? [n] : 
    ==> Do you want to add another metric <y/n>? [y] : 
    
    Return value(s) for the selected method : 
    [1]   //ns0:Record/office <string>
    
    ==> Enter the index [1-1] of metric to display : 1
    ==> Enter the name for this metric [office] : 
    ==> Enter the label for this metric [office] : 
    ==> Is this a key metric <y/n>? [n] : 
    ==> Do you want to create threshold for it <y/n>? [n] : 
    
    Setup request parameters
    
    
    ==> Do you want to add User/Password Credential <y/n>? [n] : y
    
    ==> Do you want to add SSL TrustStore Credential <y/n>? [n] : 
    
    ==> Do you want to add SSL KeyStore Credential <y/n>? [n] : 
    
    ==> Is this metric group for periodic collection <y/n>? [y] : 
    The following units are for collection frequency: 
    [1]   Min
    [2]   Hr
    [3]   Day
    
    ==> Enter the index [1-3] of unit for this collection : 1
    ==> Enter the frequency of collection in Min : 5
    
    ==> Do you want to add another metric group <y/n>? [n] : y
    
    All resource paths available for monitoring : 
    [1]   /add
    [2]   /lookup/list
    [3]   /lookup/phone
    [4]   /lookup/building/people
    [5]   /db/count
    
    ==> Enter the index [1-5] to select : 3
    * Selected Resource Path : /lookup/phone
    
    All methods available from the selected path : 
    [1]   application/json[PhoneInfo] GET(name)
    [2]   application/xml[PhoneInfo] GET(name)
    
    ==> Enter the index [1-2] to select : 1
    * Selected Resource Method: application/json[PhoneInfo] GET(name)
    
    Define new metric group : 
    ==> Enter the name for this metric group [GET] : LookupGet_JSON
    
    Return value(s) for the selected method : 
    [1]   $..name <string>
    [2]   $..phone <string>
    
    ==> Enter the index [1-2] of metric to display : 1
    ==> Enter the name for this metric [name] : 
    ==> Enter the label for this metric [name] : 
    ==> Is this a key metric <y/n>? [n] : y
    ==> Do you want to add another metric <y/n>? [y] : 
    
    Return value(s) for the selected method : 
    [1]   $..phone <string>
    
    ==> Enter the index [1-1] of metric to display : 1
    ==> Enter the name for this metric [phone] : 
    ==> Enter the label for this metric [phone] : 
    ==> Is this a key metric <y/n>? [n] : 
    ==> Do you want to create threshold for it <y/n>? [n] : 
    
    Setup request parameters
    ==> Enter value for query parameter "name" [%LookupGet_JSON.name0000%] : Harry Smith
    
    
    ==> Do you want to add User/Password Credential <y/n>? [n] : y
    
    ==> Do you want to add SSL TrustStore Credential <y/n>? [n] : 
    
    ==> Do you want to add SSL KeyStore Credential <y/n>? [n] : 
    
    ==> Is this metric group for periodic collection <y/n>? [y] : 
    The following units are for collection frequency: 
    [1]   Min
    [2]   Hr
    [3]   Day
    
    ==> Enter the index [1-3] of unit for this collection : 1
    ==> Enter the frequency of collection in Min : 5
    
    ==> Do you want to add another metric group <y/n>? [n] : 
    
    Files Generated:
    - Target Metadata file: /scratch/work/metadata/OfficeDirectory.xml
    - Target Collection file: /scratch/work/metadata/OfficeDirectoryCollection.xml
    

    例: REST CLIで生成されるターゲット・メタデータ

    <TargetMetadata META_VER="1.0" TYPE="OfficeDirectory">
      <Display>
        <Label NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</Label>
        <ShortName NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</ShortName>
        <Description NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</Description>
      </Display>
      <Metric NAME="ListGet_XML" TYPE="TABLE">
        <Display>
          <Label NLSID="NLSID_LIST_GET_XML">ListGet_XML</Label>
        </Display>
        <TableDescriptor>
          <ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING">
            <Display>
              <Label NLSID="COL_NAME">name</Label>
            </Display>
          </ColumnDescriptor>
          <ColumnDescriptor IS_KEY="FALSE" NAME="title" TYPE="STRING">
            <Display>
              <Label NLSID="COL_TITLE">title</Label>
            </Display>
          </ColumnDescriptor>
          <ColumnDescriptor IS_KEY="FALSE" NAME="phone" TYPE="STRING">
            <Display>
              <Label NLSID="COL_PHONE">phone</Label>
            </Display>
          </ColumnDescriptor>
          <ColumnDescriptor IS_KEY="FALSE" NAME="building" TYPE="STRING">
            <Display>
              <Label NLSID="COL_BUILDING">building</Label>
            </Display>
          </ColumnDescriptor>
          <ColumnDescriptor IS_KEY="FALSE" NAME="floor" TYPE="STRING">
            <Display>
              <Label NLSID="COL_FLOOR">floor</Label>
            </Display>
          </ColumnDescriptor>
          <ColumnDescriptor IS_KEY="FALSE" NAME="office" TYPE="STRING">
            <Display>
              <Label NLSID="COL_OFFICE">office</Label>
            </Display>
          </ColumnDescriptor>
        </TableDescriptor>
        <QueryDescriptor FETCHLET_ID="JAXRS_Fetchlet">
          <Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property>
          <Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property>
          <Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">ListGet_XML.SecurityPolicy</Property>
          <Property NAME="BaseURI" SCOPE="INSTANCE" OPTIONAL="FALSE">ListGet_XML.BaseURI</Property>
          <Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="urn:com.office.directory"]]]></Property>
          <Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">//ns0:Record/name,//ns0:Record/title,//ns0:Record/phone,//ns0:Record/building,//ns0:Record/floor,//ns0:Record/office</Property>
          <Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,title:STRING,phone:STRING,building:STRING,
    floor:STRING,office:STRING</Property>
          <Property NAME="RequestMetadata" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[<Resource path="/">
        <Resource path="lookup/list">
            <Method elementDefined="false" accept="application/xml" name="GET"/>
        </Resource>
    </Resource>
    ]]></Property>
          <Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet</Property>
          <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
        </QueryDescriptor>
      </Metric>
      <Metric NAME="LookupGet_JSON" TYPE="TABLE">
        <Display>
          <Label NLSID="NLSID_LOOKUP_GET_JSON">LookupGet_JSON</Label>
        </Display>
        <TableDescriptor>
          <ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING">
            <Display>
              <Label NLSID="COL_NAME">name</Label>
            </Display>
          </ColumnDescriptor>
          <ColumnDescriptor IS_KEY="FALSE" NAME="phone" TYPE="STRING">
            <Display>
              <Label NLSID="COL_PHONE">phone</Label>
            </Display>
          </ColumnDescriptor>
        </TableDescriptor>
        <QueryDescriptor FETCHLET_ID="JAXRS_Fetchlet">
          <Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property>
          <Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property>
          <Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">LookupGet_JSON.SecurityPolicy</Property>
          <Property NAME="BaseURI" SCOPE="INSTANCE" OPTIONAL="FALSE">LookupGet_JSON.BaseURI</Property>
          <Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="urn:com.office.directory"]]]></Property>
          <Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">$..name,$..phone</Property>
          <Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,phone:STRING</Property>
          <Property NAME="RequestMetadata" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[
    <Resource path="/">
        <Resource path="lookup/phone">
            <Method elementDefined="false" accept="application/xml" name="GET">
                <Parameter style="query" value="Harry Son" name="name"/>
            </Method>
        </Resource>
    </Resource>
    ]]></Property>
          <Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet</Property>
          <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
        </QueryDescriptor>
      </Metric>
      <CredentialInfo>
        <CredentialType NAME="CSFKeyCredential">
          <Display>
            <Label NLSID="CRED_TYPE">CSF-Key Credential Type</Label>
          </Display>
          <CredentialTypeColumn NAME="CSFKey">
            <Display>
              <Label NLSID="CRED_CSFKEY">Alias CSF Key</Label>
            </Display>
          </CredentialTypeColumn>
        </CredentialType>
        <CredentialType NAME="AliasCredential">
          <Display>
            <Label NLSID="CRED_TYPE">Alias Credential Type</Label>
          </Display>
          <CredentialTypeColumn NAME="Alias">
            <Display>
              <Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label>
            </Display>
          </CredentialTypeColumn>
          <CredentialTypeColumn NAME="Password">
            <Display>
              <Label NLSID="CRED_PASSWORD">Password for the alias</Label>
            </Display>
          </CredentialTypeColumn>
        </CredentialType>
        <CredentialSet NAME="UserCredentialSet" USAGE="MONITORING">
          <AllowedCredType TYPE="CSFKeyCredential"/>
          <AllowedCredType TYPE="AliasCredential"/>
        </CredentialSet>
      </CredentialInfo>
      <InstanceProperties>
        <InstanceProperty NAME="ProxyHost" CREDENTIAL="FALSE" OPTIONAL="TRUE">
          <Display>
            <Label NLSID="PROP_PROXY_HOST">Proxy Server Name</Label>
          </Display>
        </InstanceProperty>
        <InstanceProperty NAME="ProxyPort" CREDENTIAL="FALSE" OPTIONAL="TRUE">
          <Display>
            <Label NLSID="PROP_PROXY_PORT">Proxy Server Port</Label>
          </Display>
        </InstanceProperty>
        <InstanceProperty NAME="ListGet_XML.SecurityPolicy"
          CREDENTIAL="FALSE" OPTIONAL="FALSE">
          <Display>
            <Label NLSID="PROP_LIST_GET_XML_SECURITY_POLICY">[ListGet_XML] Authentication/Web Service Policy</Label>
          </Display>
        </InstanceProperty>
        <InstanceProperty NAME="ListGet_XML.BaseURI" CREDENTIAL="FALSE" OPTIONAL="FALSE">
          <Display>
            <Label NLSID="PROP_LIST_GET_XML_BASE_URI">[ListGet_XML] Resource Base URI</Label>
          </Display>
        </InstanceProperty>
        <InstanceProperty NAME="LookupGet_JSON.SecurityPolicy"
          CREDENTIAL="FALSE" OPTIONAL="FALSE">
          <Display>
            <Label NLSID="PROP_LOOKUP_GET_JSON_SECURITY_POLICY">[LookupGet_JSON] Authentication/Web Service Policy</Label>
          </Display>
        </InstanceProperty>
        <InstanceProperty NAME="LookupGet_JSON.BaseURI" CREDENTIAL="FALSE" OPTIONAL="FALSE">
          <Display>
            <Label NLSID="PROP_LOOKUP_GET_JSON_BASE_URI">[LookupGet_JSON] Resource Base URI</Label>
          </Display>
        </InstanceProperty>
      </InstanceProperties>
    </TargetMetadata>