この章の内容は次のとおりです。
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では、標準出力(stdout)データ・ストリームを返すOSコマンドを(個別に、またはスクリプトから)実行することにより、メトリック・データを取得できます。
次の3つのOSコマンドfetchletを使用できます。
OS fetchlet(RAW)
OS行fetchlet(行に分割)
OS行トークンfetchlet(トークン化された行)
OS fetchletは、与えられたOSコマンドを実行し、コマンドの出力を単一セル表に返します。
入力パラメータ
表21-1 OS fetchletの入力パラメータ
パラメータ | 型 | 説明 | 使用 |
---|---|---|---|
command |
string |
実行するオペレーティング・システム・コマンド。 |
必須 |
ENVname |
string |
ENVで始まるOSFetchletパラメータは、コマンドの実行環境でname環境変数になります。 |
0以上 |
errStartsWith |
String |
定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。 |
オプション |
script |
string |
commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。scriptは、実行する特定のPerlスクリプトの指定に使用されます。 スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。 |
オプション |
args |
string |
commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。 引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。 |
オプション |
separateErrorStream |
boolean |
commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。 |
オプション。(TRUE/FALSE) |
em_metric_timeout |
integer |
メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。 タイムアウト期間がない場合は-1を指定します。 |
オプション |
例
メトリック・データを取得するには、UNIXのechoコマンドを実行します。
シェル環境からコマンドを実行するには、次のように入力します。
echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end
echoコマンドにより、次の標準出力が生成されます。
Line 1|some more|even more Line 2 Line 4|a little more| |Line 5 |Line 6| |Line 7|again| Line 8|the|end
例で示されたコマンドとともにOS fetchletを使用します。
fetchletは次の1x1表を返します。
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コマンドを実行し、OSコマンドの出力をトークン化します。出力は行ごとにトークン化されます。fetchletは、単一列表にトークンを返します。表のn番目の行は、OSコマンドの出力のn番目の行を表します。
OSコマンドのトークン化されていないRAW出力を取得するには、OS fetchletを使用します。行ごとにトークン化され、各行が特定のデリミタでトークン化されたOSコマンドの出力を取得するには、「OS行トークンfetchlet」を参照してください。
入力パラメータ
表21-2 OS行fetchletの入力パラメータ
パラメータ | 型 | 説明 | 使用 |
---|---|---|---|
command |
string |
実行するオペレーティング・システム・コマンド。 |
必須 |
startsWith |
string |
この文字列で始まる行のみが結果に含まれます。 |
オプションであり、デフォルトは""(すべての行が含まれる) |
ENVname |
string |
ENVで始まるパラメータは、コマンドの実行環境でname環境変数になります。 |
0以上 |
errStartsWith |
string |
定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。 |
オプション |
script |
string |
commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。scriptは、実行する特定のPerlスクリプトの指定に使用されます。 スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。 |
オプション |
args |
string |
commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。 引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。 |
オプション |
separateErrorStream |
boolean |
commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。 |
オプション。(TRUE/FALSE) |
em_metric_timeout |
integer |
メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。 タイムアウト期間がない場合は-1を指定します。 |
オプション |
例
次のUNIXコマンドを例にとります。
echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end
これによって、次の出力が生成されます。
Line 1|some more|even more
Line 2 Line 4|a little more|
|Line 5
|Line 6|
|Line 7|again|
Line 8|the|end
例で示したコマンドとともにOS行fetchletを実行すると、次の単一列表が生成されます。
内容がない場合は、\nにより、行2と行4の間に空白行が挿入されます。
注意: コマンドは、シェルで実行されている場合と同様には実行されません。したがって、パイプ、出力リダイレクションおよびバックグラウンド処理を含む共通シェル・シンボルは動作しません。コマンドを標準入力から読み取ることはできません。 fetchletは中断し、コマンドの終了を待機します。 コマンドの標準出力が取得され、標準エラーが取得されて標準出力に追加されます。 行は\nを使用してトークン化されます。 |
OS行トークンfetchletは、与えられたOSコマンドを実行し、OSコマンドの出力をトークン化します。出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。fetchletは、トークンを表に返します。表のn番目の行は、OSコマンドの出力のn番目の行を表します。表のn番目の列は、指定のデリミタ・セットにより決定された、行のn番目のトークンを表します。
OSコマンドのトークン化されていないRAW出力を取得するには、21.2.1項「OS fetchlet」を参照してください。
入力パラメータ
表21-3 OS行トークンfetchletの入力パラメータ
パラメータ | 型 | 説明 | 使用 |
---|---|---|---|
command |
String |
実行するオペレーティング・システム・コマンド。 |
必須 |
delimiter |
String |
行をトークン化するためのデリミタとして機能する文字のセット。 |
オプションであり、デフォルトは""(出力を行に分割) |
startsWith |
String |
この文字列で始まる行のみが結果に含まれます。 |
オプションであり、デフォルトは""(すべての行が含まれる) |
ENVname |
String |
ENVで始まるパラメータは、コマンドの実行環境でname環境変数になります。 |
0以上 |
errStartsWith |
String |
定義されている場合、このプロパティではエラー・メッセージのカスタム接頭辞を定義できます。このプロパティが定義されていない場合、OSFetchletはデフォルトでメッセージ接頭辞をem_error=にします。 |
オプション |
script |
String |
commandプロパティがインタプリタのみ提供する場合に実行するスクリプトを指定します。たとえば、commandはPerlで構成されます。その場合、scriptは実行する特定のperlスクリプトの指定に使用されます。 スクリプトはcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にscriptパラメータを使用するとスタイルの明確さと読みやすさが向上します。 |
オプション |
args |
String |
commandおよびscriptプロパティへの1つ以上の引数として取得されるプロパティ。 引数はcommandパラメータから直接指定できますが、ターゲット・タイプ・メタデータ・ファイルを定義する際にargsパラメータを使用するとスタイルの明確さと読みやすさが向上します。 |
オプション |
separateErrorStream |
Boolean |
commandの実行中にエラーが発生した場合、このプロパティは、stdoutとstderrの両方をユーザーにエラー・メッセージとして返すかどうかをfetchletに指示します。TRUEに設定されている場合は、commandエラーがある場合にstderr出力のみユーザーにエラー・メッセージとして返されます。FALSE(デフォルト値)に設定されている場合は、commandの障害時にstdoutとstderrの両方がユーザーにエラー・メッセージとして返されます。 |
オプション。(TRUE/FALSE) |
em_metric_timeout |
Integer |
メトリック・タイムアウト期間(秒単位)。タイムアウト期間が終了した後、管理エージェントはタイムアウト例外を返し、作成されたすべての子プロセスを終了します。管理エージェントは、孫プロセスを中断しません。 タイムアウト期間がない場合は-1を指定します。 |
オプション |
例
次のUNIXコマンドを例にとります。
echo Line 1|some more|even more\nLine 2\n\nLine 4|a little more|\n|Line 5\n|Line 6|\n|Line 7|again|\nLine 8|the|end
これによって、次の出力が生成されます。
Line 1|some more|even more Line 2 Line 4|a little more| |Line 5 |Line 6| |Line 7|again| Line 8|the|end
例で示されたコマンドとともにOS行トークンfetchletを実行すると、デリミタを表す単一文字"|"により次の表が生成されます。
エラー処理
コマンドの起動に関する問題(コマンド・プログラムが見つからない)が発生すると、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を使用して、特定ユーザー、つまりデフォルトのoracleユーザー以外のユーザーとして特定メトリックのデータを収集するためにターゲットを監視する管理エージェントで既存のスクリプトを起動する必要があることがあります。
Enterprise Managerは、特定ユーザーとしてメトリック収集を起動するために、権限委任プロバイダ(sudoおよびpowerbroker)の使用をサポートしています。プラグイン用のPDPを有効にするには、監視対象のターゲットがデプロイされているプラグインとホストの両方で資格証明を設定する必要があります。
プラグインでは、ターゲット・メタデータ・ファイルにあるメトリック定義の資格証明参照を設定する必要があります。例では、例のCredentialref行にyour_credがあります。この値は監視資格証明セット名を参照しています。
例21-1 ターゲット・メタデータでの資格証明参照の例
<TargetMetadata TYPE="my_type" NAME="my_target_name"> ... <Metric NAME="my_special_metric" TYPE="TABLE"> <TableDescriptor> <ColumnDescriptor NAME="test" TYPE="STRING"/> </TableDescriptor> <QueryDescriptor FETCHLET_ID="OS"> <Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl</Property> <Property NAME="script" SCOPE="GLOBAL">%scriptsDir%/your_ script.pl</Property> <CredentialRef NAME="OSCreds">your_cred</CredentialRef> </QueryDescriptor> </Metric> ... </TargetMetadata>
ターゲットを監視している管理エージェントでは、host:HostCredsを指している参照先資格証明タイプを作成する必要があり、監視資格証明セットを、追加する新しいタイプにします。Enterprise Manager Cloud Controlを使用した権限委任設定の詳細は、『Enterprise Manager Cloud Control管理者ガイド』のSudoおよびPowerBrokerのサポートに関する説明を参照してください。
資格証明データは、ターゲットを監視する管理エージェント用のターゲット・メタデータ・ファイル(target.xml)に永続化されます。
次の例は、target.xml内で参照先資格証明タイプMyHostCredsを定義しています。これは、host:HostCredsという資格証明タイプです。
例21-2 管理エージェント内の資格証明タイプの定義
<Target TYPE="<removed>" NAME="<removed>" DISPLAY_NAME="<removed>" ON_HOST="" EMD_URL="https://<removed>/emd/main/" TIMEZONE_REGION="" IDENTIFIER="TARGET_GUID=<removed>"> ... <CredentialType NAME="MyHostCreds"><CredentialTypeRef REF_NAME="HostRef" REF_TYPE="HostCreds" REF_TARGETTYPE="host" ASSOCIATION="host"><CredentialTypeRefColumn NAME="HostUserName" REF_TYPECOLUMN="HostUserName"/><CredentialTypeRefColumn NAME="HostPassword" REF_TYPECOLUMN="HostPassword"/></CredentialTypeRef></CredentialType> ... </Target>
Cloud Controlで監視資格証明が更新されると(「設定」→「セキュリティ」→「監視資格証明」)、前述のデータは管理エージェント上で自動的に更新されます。
次の例では、HostMonCredSet監視資格証明セットを定義します。これはタイプMyHostCreds (したがってタイプhost:HostCreds)です。
SQL fetchletは、特定のデータベース上の特定のSQL文を特定のユーザーとして実行し、表結果を返します。
入力パラメータ
表21-4 SQL fetchletの入力パラメータ
パラメータ | 型 | 説明 | 使用 |
---|---|---|---|
接続情報 |
|||
MachineName |
String |
データベース・ホスト |
必須 |
Port |
Integer |
データベース・ポート |
必須 |
SID |
String |
データベースSID。 |
ServiceNameが指定されていないかぎり必須。 |
ServiceName |
String |
データベースServiceName。 |
SIDが指定されていないかぎり必須。 |
OracleHome |
String |
データベースのOracle Home(OidRepSchemaNameとともに使用します)。 |
OidRepSchemaNameが使用されている場合は必須。 |
資格証明情報 |
|||
UserName |
String |
ユーザー名。 |
必須 |
password |
String |
ユーザー・パスワード。 |
オプションであり、デフォルトは""。 |
Role |
String |
データベースへの接続時に使用されるロール(SYSDBAなど)。 |
オプションであり、選択肢はSYSDBA、SYSOPERおよびNORMAL(デフォルト) |
一般 |
|||
STATEMENT |
String |
SQL文またはPL/SQLブロック。 |
FILENAMEが指定されていないかぎり必須。 |
FILENAME |
String |
SQL文またはPL/SQLブロックを含むファイルのフルパス。 |
STATEMENTが指定されていないかぎり必須。 |
NUMROWS |
Integer |
出力する行の最大数。 |
必須 |
バインド・パラメータ |
|||
SQLINPARAM<位置> |
String |
位置<position>にある入力パラメータの値。 |
ゼロ以上で、入力パラメータごとに1つ。 |
SQLOUTPARAMPOS |
Integer |
出力パラメータの位置(存在する場合)。 |
存在する場合は、必ず1つの出力パラメータが存在できます。 |
SQLOUTPARAMTYPE |
String |
出力パラメータのタイプ(存在する場合)。 |
存在する場合は、必ず1つの出力パラメータ・タイプが存在できます。 |
transpose |
TRUE/FALSE |
TRUEの場合は、結果が入れ替えられます。行が列に、列が行に入れ替えられます。 |
注意
SQL文またはPL/SQLブロックは、STATEMENTプロパティを通じて、または名前がFILENAMEプロパティで指定されているファイルを介して指定できます。
SQL fetchletでは、入力パラメータがサポートされます。入力および出力パラメータは、:<number>を使用することにより、通常の方法でSQL/PLSQLテキストで指定されます。入力パラメータを使用して、SQL問合せとPL/SQLブロックの両方に値をバインドできます。
入力パラメータの値は、SQLINPARAM<位置>形式のプロパティとして指定されます。任意の数の入力パラメータが可能です。入力パラメータはスカラーである必要があります。タイプARRAYおよびSTRUCTの入力パラメータはサポートされません。
SQL fetchletは、データを取得する匿名のPL/SQLブロック(他の機能やプロシージャを呼び出す)の実行をサポートします。PL/SQLのブロックを実行すると、データはOUTパラメータによってfetchletに返されます。正確には1つのOUTパラメータになります。タイプはSQL_CURSOR(PL/SQL REF CURSOR)、またはオブジェクトの配列を表す指定のタイプである必要があります。後者の場合、オブジェクトの各フィールドは、表の一列を表します。配列の各オブジェクト・インスタンスは、表の完全な一行を表します。OUTパラメータの位置とタイプは、プロパティSQLOUTPARAMPOSおよびSQLOUTPARAMTYPEによって指定されます。OUTパラメータを指定する場合、fetchletはPL/SQLを実行し、STATEMENTプロパティを匿名のPL/SQLブロックとして処理することが前提になります。
注意: ARRAY型のSQLOUTPARAMTYPEを使用している場合は、配列を次のように識別する必要があります。
|
OUTパラメータが指定されていない場合、fetchletはSQL問合せを実行していることを想定します。
SQL fetchletへのすべての入力パラメータは文字列であることに注意してください。したがって、他のすべてのデータ型は文字列に変換する必要があります。これは、数値などのデータ型では簡単ですが、日付やタイムスタンプでは簡単ではありません。(DateFormatクラスを使用して)値の文字表現を渡すことにより、絶対的な日付またはタイムスタンプを渡すことができます。現在、SYSDATEやSYSDATE+1などの日付関数を渡す方法はありません。このような場合は、たとえばSQLに日付引数を直接埋め込むことができます。
begin func1(:1, :2, SYSDATE); end;
その他の注意事項は、プロシージャにnull引数を渡す場合です。次のSQLについて考えます。
STATEMENT=begin func1(:1,:2); end; SQLINPARAM1=null SQLOUTPARAMPOS=2 SQLOUTPARAMTYPE=fooret
最初の引数をvarchar2にするとします。これをパラメータ化し、最初の引数としてnullを渡すことにより、実際にはnull値ではなく*string* nullを引数に渡すことになります。null値を渡す場合は、次の処理を行います。
STATEMENT=begin func1(null, :1); end; SQLOUTPARAMPOS=1 SQLOUTPARAMTYPE=fooret
例
次のプロパティは、パラメータなしで問合せ(すべてのユーザーを取得)を実行します。
例21-4 パラメータを指定しない問合せ
MachineName=skini-pc Port=1521 SID=o817 UserName=scott password=tiger STATEMENT=select * from all_users; NUMROWS=30
次のプロパティは、入力パラメータを指定して問合せを実行します(指定したユーザーが所有している指定したタイプのオブジェクトのうち、最初のいくつかを取得します)。
例21-5 入力パラメータを指定した問合せ
MachineName=skini-pc Port=1521 SID=o817 UserName=scott password=tiger STATEMENT=select * from all_objects where owner=:1 and object_type=:2 and rownum<:3tt> NUMROWS=30 SQLINPARAM1=SYSTEM SQLINPARAM2=INDEX SQLINPARAM3=10
例21-6では、カーソルを返し、入力パラメータを受け取るPL/SQLプロシージャを実行します。
例21-6 入力パラメータを指定したPL/SQLプロシージャ
achineName=skini-pc Port=1521 SID=o817 UserName=scott password=tiger STATEMENT=begin :1 := skini_junk.func1(:2); end; NUMROWS=30 SQLINPARAM2=SYSTEM SQLOUTPARAMPOS=1 SQLOUTPARAMTYPE=sql_cursor
例21-7では、文字列の配列を返すPL/SQLプロシージャを指定します。
例21-7 文字列の配列を返すPL/SQLプロシージャ
MachineName=skini-pc Port=1521 SID=o817 UserName=scott password=tiger STATEMENT=begin skini_junk.newproc(:1,:2); end; NUMROWS=30 SQLINPARAM1=SYSTEM SQLOUTPARAMPOS=2 SQLOUTPARAMTYPE=my_string_array
例21-8では、構造体の配列を返すPL/SQLパッケージを指定します。
例21-8 構造体の配列を返すPL/SQLパッケージ
MachineName=skini-pc Port=1521 SID=o817 UserName=scott password=tiger STATEMENT=begin :1 := skini_junk.func2(:2,:3,:4,:5,:6); end; NUMROWS=30 SQLINPARAM2=somename SQLINPARAM3=someplace SQLINPARAM4=someanimal SQLINPARAM5=something SQLINPARAM6=22 SQLOUTPARAMPOS=1 SQLOUTPARAMTYPE=my_struct_array
例21-9では、前述の例で使用されるPL/SQLを参考として示します。
例21-9 例で使用されるPL/SQL
create or replace type my_type as Object ( name varchar2(128), place varchar2(128), animal integer, thing number, thing2 number); / create or replace type my_struct_array as table of my_type; / create or replace type my_string_array as table of varchar2(3000); / create or replace type my_int_array as table of integer; / create or replace package skini_junk as type Jcr is ref cursor; function func1(username in varchar2) return Jcr; function func2(name varchar2, place varchar2, animal integer, thing number, thing2 number) return my_struct_array; procedure newproc(name varchar2, outArray OUT my_string_array); procedure newproc2(numrows in varchar2, outArray OUT my_int_array); end skini_junk; / create or replace package body skini_junk as function func1(username in varchar2) return Jcr is cr Jcr; begin open cr for select object_name, object_type, status from all_objects where owner=upper(username); return cr; end; function func2(name varchar2, place varchar2, animal integer, thing number, thing2 number) return my_struct_array IS ret my_struct_array := my_struct_array(); begin ret.extend(50); for i in 1..50 loop ret(i) := my_type(name || i, place || i, animal+i, thing+i, thing2+i); end loop; return ret; end; procedure newproc(name varchar2, outArray OUT my_string_array) IS begin outArray := my_string_array(); outArray.extend(100); for i in 1..100 loop outArray(i) := name || i; end loop; end; procedure newproc2(numrows in varchar2, outArray OUT my_int_array) IS begin outArray := my_int_array(); outArray.extend(numrows); for i in 1..numrows loop outArray(i) := i; end loop; end; end skini_junk; /
オブジェクト識別子(OID)は、MIB変数インスタンスまたは複数インスタンスのMIB変数に相当します。OIDのリストを前提として、SNMP fetchletは、指定のホストで対応するインスタンスのSNMPエージェントをポーリングします。
入力パラメータ
表21-5 SNMP fetchletの入力パラメータ
パラメータ | 型 | 説明 | 使用 |
---|---|---|---|
hostname |
String |
SNMPエージェントのホスト名。 |
必須。デフォルトはlocalhostです。 次に例を示します。 bigip.host.example.com "148.87.10.5" |
PORT |
String |
SNMPエージェントのポート。 |
オプション。デフォルトは161。 |
COMMUNITY |
String |
SNMPコミュニティ文字列。 |
オプション。デフォルトはpublicです。 |
TIMEOUT |
String |
SNMPタイムアウト。 |
オプション。デフォルトは5秒です。 |
OIDS |
String |
デリミタで区切られた部分文字列のリスト。各部分文字列はOID(数値のドット表記法)で始まり、オプションで*PlacementOIDで終了できます。(詳細は、注意を参照してください。) |
必須。 次に例を示します。 "1.3.6.1.2.1.2.1.1.1.0,1.3.6.1.2.1.2.1.1.3.0,1.3.6.1.2.1.2.1.1.5.0" "1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.2.2.1.10 1.3.6.1.2.1.2.1.2.2.1.16" "1.3.6.1.2.1.2.2.1.3 1.3.6.1.2.1.2.2.1.5 1.3.6.1.2.1.4.20.1.1*1.3.6.1.2.1.4.20.1.2 1.3.6.1.2.1.4.20.1.3*1.3.6.1.2.1.4.20.1.2" |
DELIM |
String |
OIDSの個々の部分文字列を区切るためのデリミタ。 |
オプションであり、デフォルトは空白文字。(ドット)、*(アスタリスク)および0から9まで(数字)はデリミタとして使用できません。 |
TABLE |
String |
このパラメータがTRUEに設定されている場合、OIDS内の各OIDは、複数インスタンスを持つ変数に対応します。FALSEに設定されている場合は、単一変数インスタンスに対応します。 |
オプション。デフォルトはFALSE。 |
PINGMODE |
Boolean |
PINGMODEレスポンス・メトリックの定義に使用されます。 TRUEに設定する場合、成功したGetResponseは、単一行で単一列の表(セルの値は1)を生成します。タイムアウトにより、単一行で単一列の表(値は0)が生成されます。 これは、SNMPベースのターゲットにレスポンス・メトリックを定義する場合に役立ちます。 |
オプション。デフォルトはFALSEです。 |
IGNORE_TIMEOUT_ERR_BOOLEAN |
Boolean |
レスポンスの待機中にPINGMODE以外の呼出しがタイムアウトした場合にエラーを生成するかどうかを指定します。 TRUEに設定すると、レスポンスの待機中にタイムアウトするPINGMODE以外の呼出しは、メトリック収集エラーを生成しません。これは、PINGMODEレスポンス・メトリックを定義するターゲットの合理的な動作です。SNMPエージェントが応答を停止したときにレスポンス・メトリックが可用性の重大度を生成する場合、レスポンス・メトリックで問題を特定する前に実行されるレスポンス以外のメトリックでメトリック・エラーを生成する必要はありません。 |
オプション。デフォルトはTRUEです。 |
MAX_NUM_ROWS_FETCH |
Integer |
TABLE呼出しによって返される最大行数。 構成プロパティSnmpTableMaxNumRowsFetchは、デフォルト値をオーバーライドできます。 |
オプション。デフォルトは1000です。 |
CONTEXT_NAME |
String |
CONTEXT_ENGINE_IDと同様に、これら2つのプロパティでは、SNMPv1およびSNMPv2cで使用されるコミュニティ文字列を置き換える一連のSNMPv3資格証明を指定します。 注意: これら2つのプロパティを指定する場合、COMMUNITYとVERSIONパラメータは無視され、送信されたリクエストはSNMPv3リクエストになります。 |
オプション。デフォルト値なし |
CONTEXT_ENGINE_ID |
String |
このパラメータの詳細は、CONTEXT_NAMEの説明を参照してください。 |
オプション。デフォルト値なし |
VERSION |
String |
SNMPのバージョンを指定します。 次のような場合、VERSIONは、SNMPv2cリクエストを示すv2cに設定されます。
前述の条件が適用されない場合、VERSIONは、SNMPv1リクエストを示すv1に設定されます。 |
オプション。デフォルトはv1です。 |
disallowV1Requests |
Boolean |
このパラメータにより、管理エージェントが特定のターゲットへのリクエストの送信時にのみSNMPv2cを使用するように指定できます。 |
オプション。デフォルトはFALSEです。 |
hasV2Types |
Boolean |
このパラメータは、タイプが64ビット整数値のMIB変数のOIDを含むSNMP QueryDescriptorのグローバル範囲のプロパティです。これらはSNMPv1では表現できません。同じターゲット・インスタンスの他のリクエストがSNMPv1を使用して送信される場合でも、ターゲットタイプの所有者は、このリクエストがSNMPv2cである必要があることを把握しています。 |
オプション。デフォルトはFALSEです。 |
USE_GET_NEXT_ONLY |
Boolean |
VERSIONに記載の条件に従い、SNMP QueryDescriptorがSNMPv2cで、TABLEがTRUEの場合、SNMP fetchletが返す複数行は、SNMPv1で使用されるGetNextリクエストではなくSNMPv2c GetBulkリクエストを使用してフェッチされます。 USE_GET_NEXT_ONLYをTRUEに設定すると、SNMP fetchletによって返される行は、GetNextリクエストを使用してフェッチされます。 |
オプション。デフォルトはFALSEです。 |
エラー処理
ホスト名またはOIDSのいずれかを指定しない場合、MissingParameterException
がスローされます。TABLEがTRUEとFALSEのどちらとも等しくない場合、エージェントとの間でのSNMPメッセージの送受信中にI/Oエラーが発生した場合、またはエージェントがSNMPエラーで応答した場合は、FetchletException
がスローされます。
注意
fetchletによって返される表には、OIDS内のOIDごとに列が含まれます。入力OIDが単一変数インスタンスに対応している場合、表にはこれらのインスタンスを持つ1行のみ含まれます。一方で、OIDが複数のインスタンスの変数に対応する場合、表の各列にはそのOIDのインスタンスが含まれ、各行は別のsubidentifierに対応します。(サブ識別子は、いくつかのMIB変数の特定の変数インスタンスを一意に識別するOID拡張です。)OIDSには、すべてサブ識別子を持つOID、またはすべてサブ識別子を持たないOIDが含まれている必要があります。
たとえば、3つのOID(sysDescr
、sysUpTime
およびsysName
)の変数インスタンスを要求するには、OIDSを
1.3.6.1.2.1.2.1.1.1.0 1.3.6.1.2.1.2.1.1.3.0 1.3.6.1.2.1.2.1.1.5.0にする必要があります。この場合は、すべてのOIDにインスタンス・サブ識別子.0が含まれます。戻り表は、次のようになります(実際の値は異なる場合があります)。
または、一部のMIBに、次の3列および4つのインスタンスが含まれているとします。
ifDescr
、ifInOctets
およびifOutOctets
に対応する3つの列を持つ表を作成するには、OIDSを次のように定義します。
"1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.2.2.1.10 1.3.6.1.2.1.2.1.2.2.1.16"
fetchletは次の表を返します。
図21-6 SNMP fetchlet: ifDescr、ifInOctetsおよびifOutOctets OIDS
行は、それぞれサブ識別子1、2、3、4に対応します。
OIDSのどのOIDも別のplacement OIDで追加できます。配置OIDの変数インスタンスは、返される表には表示されません。かわりに、列内での元のOIDの変数インスタンスの場所を決定します。具体的には、元のOIDのインスタンスのセット内のサブ識別子Sを持つ変数インスタンスIすべてについて、(a)配置OIDに対応する、サブ識別子Sを持つ変数インスタンスXがインスタンスのセット内に存在する必要があり、(b)XはインスタンスIのサブ識別子として使用されます。
たとえば、MIBに、それぞれ4つの変数インスタンスを持つ次の3つの列が含まれているとします。
ifDescr
およびipAdEntNetMask
を含む表を作成するには、ipAdEntIfIndex
のOIDを配置OIDとして使用し、列を位置揃えする必要があります。このため、fetchletへのOIDS入力は、1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.4.20.1.3*1.3.6.1.2.1.2.1.4.20.1.2となります。fetchletの出力は次のようになります。
図21-8 SNMP fetchlet: ifDescrおよびipAdEntNetMaskを含む表
前の例で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だった場合、出力は次のようになります。
HTTPデータfetchletは、URLのコンテンツを取得し、URLのコンテンツをデータとして返します。次の3つのfetchletを使用できます。
URL fetchlet
URL行
URL行トークン
URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツを単一セル表に返します。
行ごとにトークン化され、各行が特定のデリミタでトークン化されたURLの出力を取得するには、「URL行トークンfetchlet」を参照してください。
入力パラメータ
表21-6 URL fetchletの入力パラメータ
名前 | 説明 | 使用 |
---|---|---|
url |
コンテンツを取得するURL |
必須 |
proxyHost |
URL接続を行うために使用するプロキシ・ホスト。 |
オプション |
proxyPort |
URL接続を行うために使用するプロキシ・ポート。 |
オプション |
例
次のURLを例にとります。
http://localhost/nhcities.txt
このコンテンツは次のとおりです。
行1: Nashua, Keene,
行2: Concord
行3: , Conway, Manchester, Milford, Brookline,
行4:
行5: Hollis, Meredith
ここで、指定したURLでURL fetchletを実行します。
fetchletは次の1x1表を返します。
URLのRAWコンテンツが返されます。
エラー処理
URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。
URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツをトークン化します。出力は行ごとにトークン化されます。fetchletは、単一列表にトークンを返します。表のn番目の行は、URLコンテンツのn番目の行を表します。
注意: URLのトークン化されていないRAWコンテンツを取得するには、「URL fetchlet」を参照してください。行ごとにトークン化され、各行が特定のデリミタでトークン化されたURLのコンテンツを取得するには、「URL行トークンfetchlet」を参照してください。 |
表21-7 URL行fetchletの入力パラメータ
名前 | 説明 | 使用 |
---|---|---|
url |
コンテンツを取得するURL |
必須 |
proxyHost |
URL接続を行うために使用するプロキシ・ホスト。 |
オプション |
proxyPort |
URL接続を行うために使用するプロキシ・ポート。 |
オプション |
startsWith |
この文字列で始まる行のみが結果に含まれます。 |
オプションであり、デフォルトは""(すべての行が含まれる) |
例
次のURLを例にとります。
http://localhost/nhcities.txt
このコンテンツは次のとおりです。
行1: Nashua, Keene,
行2: Concord
行3: , Conway, Manchester, Milford, Brookline,
行4:
行5: Hollis, Meredith
ここで、指定したURLでURL fetchletを実行します。
fetchletは次の表を返します。
エラー処理
URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。
注意
行は\nを使用してトークン化されます。
URL fetchletは、与えられたURLのコンテンツを取得し、URLのコンテンツをトークン化します。出力はまず行ごとにトークン化され、次に各行が指定のデリミタ・セットによりトークン化されます。fetchletは、トークンを表に返します。表のn番目の行は、URLコンテンツのn番目の行を表します。表のn番目の列は、指定のデリミタ・セットにより決定された、行のn番目のトークンを表します。
URLのトークン化されていないRAWコンテンツを取得するには、「URL fetchlet」を参照してください。
表21-8 URL行トークンfetchletの入力パラメータ
名前 | 説明 | 使用 |
---|---|---|
url |
コンテンツを取得するURL |
必須 |
delimiter |
行をトークン化するためのデリミタとして機能する文字のセット。 |
オプションであり、デフォルトは""(出力を行に分割) |
proxyHost |
URL接続を行うために使用するプロキシ・ホスト。 |
オプション |
proxyPort |
URL接続を行うために使用するプロキシ・ポート。 |
オプション |
startsWith |
この文字列で始まる行のみが結果に含まれます。 |
オプションであり、デフォルトは""(すべての行が含まれる) |
例
次のURLを例にとります。
http://localhost/nhcities.txt
このコンテンツは次のとおりです。
行1: Nashua, Keene,
行2: Concord
行3: , Conway, Manchester, Milford, Brookline,
行4:
行5: Hollis, Meredith
ここで、指定したURLと、デリミタを表す単一文字","を使用して、URL fetchletを実行します。
fetchletは次の表を返します。
エラー処理
URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。
注意
行は\nを使用してトークン化されます。
デリミタは、1文字または複数文字の組合せになります。たとえば、行をパイプ、プラスおよびアンダースコアで分割する必要がある場合は「|+_」となります。2つ以上のデリミタを出力テキストで組み合せる場合(「||」や「+|+」など)、そのデリミタとデリミタの間には空の文字列トークンがあるかのようになります。これらの空の文字列は、結果表の列を取得します。行を開始するデリミタの前、または行を終了するデリミタの後に空の文字列があることは考慮されません。
印刷不能文字(タブなど)をXMLのデリミタ・セットで表現するには、&#xHH;を使用します。Hは、文字の16進数識別子です。
URLXML fetchletは、与えられたURLのXMLコンテンツを取得し、特定のパターンに基づいて情報を抽出します。パターンは、照合するXMLのチャンクのリストです。戻り表では、パターンの各グラバ(*)が列に順番にリストされ、パターン・チャンクがXMLコンテンツと一致するたびに行が作成されます。
入力パラメータ
表21-9 URLXML fetchletの入力パラメータ
名前 | 説明 | 使用 |
---|---|---|
url |
コンテンツを取得するURL |
必須。 |
pattern |
XMLからの情報の抽出に使用されるパターン。URLのXMLコンテンツに対して比較されるXMLチャンクのリストになります。各チャンクでは、テキストにフラット化して抽出する内容を定義する要素のテキスト部分にグラバー(*)が1つ以上あります。 |
必須。 |
proxyHost |
URL接続を行うために使用するプロキシ・ホスト。 |
オプション。 |
proxyPort |
URL接続を行うために使用するプロキシ・ポート。 |
オプション。 |
ignoreDtd |
TRUEに設定されている場合は、コンテンツXMLにより参照されるDTDファイルを無視する必要があることを指定します。これは、DTDファイルにアクセスできない場合に役立ちます。 |
オプション。 |
generateKey |
trueに設定されている場合は、行ごとに一意のキーが生成されます。キーは、結果の最初の列を占め、数値になります。 |
オプション。 |
throwConnException |
TRUEに設定されている場合は、java.net.ConnectExceptionがスローされます。それ以外の場合は、捕捉されて空の結果セットが返されます。このプロパティをFALSEに設定すると、DMSFetchletと一貫性のある動作が行われます。 |
オプション。デフォルト値はTRUE。 |
例
次のURLを例にとります。
http://localhost/urlxmltestfile.xml
このコンテンツは次のとおりです。
<?xml version="1.0"?> <testfile> <test>Simple text</test> <test><level>A little more complex</level></test> <test></test> <notatest></notatest> <test>Yet more complexity<level>Even a little more complex</level>Will it ever stop?</test> <test1>must match<level>extract me!</level></test1> <test1>must match here<level>extract me, too!</level></test1> </testfile>
与えられたURLおよびパターンでURLXML fetchletを実行します。
<testfile><test>*<level>*</level></test></testfile>
次の表が返されます。
エラー処理
URLまたはパターン・パラメータが指定されていない場合は、MissingParameterExceptionが発生します。
次の場合は、FetchletExceptionが生成されます。
URLの形式が不正な場合
URLのコンテンツの取得でI/Oエラーが発生した場合
URLコンテンツまたはパターンに無効なXMLが含まれている場合
注意
プロキシ・ホストまたはポート、あるいはその両方を設定すると、Java環境全体のjava.netパッケージに対してこれらの設定が変更され、プロキシ設定が変更された場合にスレッド・セーフになりません。
URLタイミングfetchletは、特定のURLタイミングのコンテンツを取得します。ベース・ページ・ソースのみでなく、ページ内のフレームまたはイメージも取得します。
入力パラメータ
表21-10 URLタイミングfetchletの入力パラメータ
パラメータ | 説明 | 使用 |
---|---|---|
url# |
ダウンロードするURL。url0は必須ですが、url0、url1、url2、url3という表記に従って、url0以外にも任意の数のURLを指定できます。 |
必須。 |
proxy_host |
URL接続を行うために使用するプロキシ・ホスト。 |
オプション。URLへのアクセスに使用するプロキシを指定します。proxy_host_override値が指定されている場合は、かわりにその値が使用されます。 |
proxy_port |
URL接続を行うためにプロキシ・ホストで使用されるポート。 |
オプション。 |
dont_proxy_for |
プロキシが使用されないドメイン。 |
オプション。.us.example.com、.uk.example.comのようになります。 |
use_proxy |
プロキシ・オーバーライド入力パラメータとともに使用される場合、use_proxyでは、元のプロキシのかわりに使用するプロキシを指定します。プロキシ・オーバーライド・パラメータを設定しないでfalseに設定した場合は、プロキシが使用されません。 |
オプション。パラメータはtrueまたはfalseに設定できます。 |
proxy_host_override |
URL接続を行うために使用する別のプロキシ・ホスト。 |
オプション。proxy_hostをオーバーライドします。 |
proxy_port_override |
URL接続を行うために使用する別のプロキシ・ポート。 |
オプション。proxy_portをオーバーライドします。 |
dont_proxy_override |
ドメインのプロキシを使用しません。 |
オプション。パラメータはtrueまたはfalseに設定できます。 |
internet_cert_loc |
セキュア(HTTPS)URLへのアクセスに使用する証明書の場所を指すパス。 |
オプション。 |
auth_realm |
Basic認証ログオンのレルム。レルムが認証に対して指定されていない場合、認証は行われず、ページのダウンロードは401レスポンス・コードで失敗します。 |
オプション。 |
auth_user |
BASIC認証のユーザー名。 |
オプション。 |
auth_password |
Basic認証のパスワード。 |
オプション。 |
retries |
最初に失敗した場合にurlを再試行する回数。 |
オプション。デフォルトは1。 |
connection_timeout |
サーバーへの接続の確立で許容される待機時間(ミリ秒単位)。この時間には、名前解決に必要な時間も含まれます。 |
オプション。デフォルトは60000ミリ秒(1分)。 |
read_timeout |
読取りでサーバーの応答を待機するアイドル時間。たとえば、指定したタイムアウト期間中にサーバーからデータを受信しない場合、操作は失敗したとみなされます。 |
オプション。デフォルトは12000ミリ秒(2分)。 |
timeout |
ページ・ダウンロードが失敗とみなされる経過ミリ秒数。サイトが機能していても極端に低速な場合は、これが検出されます。 |
オプション。デフォルトは300000ミリ秒(5分)。 |
status_comparator |
行を組み合せて単一行を作成する場合、status_comparatorパラメータは、すべてのURLが成功した必要があるか(and)、またはいずれかのURLが成功した必要があるか(or)を示します。 |
オプション。デフォルトはand。 |
cache |
URLにアクセスする際にキャッシュを使用するかどうかを示します。キャッシュを使用しないことを指定するには、パラメータをnに設定します。 |
オプション。デフォルトはyNoteです。キャッシュの範囲はリクエストごとになります。複数の取得メトリック・リクエスト間には永続キャッシュがありません。 |
output_format |
使用する出力形式(summary、detailed、repeat_column)を指定します。出力形式の詳細は、「メトリック列および出力モード」を参照してください。 |
必須。summary: すべてのurlについてデフォルトのメトリック・セットを単一行に与えます。detailed: 各urlについてデフォルトのメトリック・セットを与えます。repeat_column: 各urlについてタイミングとともに単一のメトリック行を与えます。 |
metrics |
返す必要のあるメトリック列を指定します。各出力形式について返されるメトリック列の詳細は、表21-12「URLTIMING fetchlet: メトリック列」を参照してください。 |
オプション。fetchletから何をどのような順序で返す必要があるかを指定できます。たとえば、status, status_description, total_response_timeのように指定します。 |
メトリック列および出力モード
情報の形式および返される特定のメトリック情報は、output_formatおよびmetrics入力パラメータによって収集されます。表21-11に、形式カテゴリおよびそれぞれで返されるメトリック(列)をリストします。使用可能なメトリック列の説明は、表21-12「URLタイミングfetchlet: メトリック列」を参照してください。
表21-11 URLタイミングfetchlet: 出力形式
出力形式 | 説明 | メトリック列 |
---|---|---|
summary |
すべてのURLについてデフォルトのメトリック・セットを単一行に返します。 メトリック入力パラメータが指定されている場合は、指定された列のみ返されます。 |
computed_response_time、status、status_description、dns_time、connect_time、redirect_time、first_byte_time、html_time、content_time、total_response_time、rate、max_response_time、avg_response_time、avg_connect_time、avg_first_byte_time、broken_count、broken_content。 |
detailed |
各urlについてデフォルトのメトリック・セットを返します。 メトリック入力パラメータが指定されている場合は、指定された列のみ返されます。 |
url、computed_response_time、status、status_description、dns_time、connect_time、redirect_time、first_byte_time、html_time、content_time、total_response_time、rate、redirect_count、html_bytes、content_bytes、total_bytes、avg_connect_time、avg_first_byte_time、broken_count、broken_details。 |
repeat_column |
各URLについてタイミングとともに単一のメトリック行を返します。 メトリック入力パラメータが指定されている場合、各URLについてこれらの列が返され、その後に全体的なstatusとstatus_descriptionが続きます。(出力は常に単一行であることに注意してください。) |
各URLについてtotal_response_timeが繰り返され、その後に全体的なstatusとstatus_descriptionが続きます。 |
メトリック列
表21-12に、URLタイミングfetchletから返されるメトリック列を示します。
表21-12 URLタイミングfetchlet: メトリック列
列名 | 説明 |
---|---|
status |
すべてのURLの全体的なステータス。デフォルトでは、ANDを使用して全体的なステータスを計算しますが、これはstatus_comparator入力パラメータを使用して変更できます。 |
connect_time |
サーバーに接続してリクエストを送信するための時間。 |
first_byte_time |
リクエストの送信からレスポンスの最初のバイトを読み取るまでの所要時間。 |
total_response_time |
すべてのurlおよび関連するコンテンツ(gif、css、javascriptなど)のフェッチの所要時間。 |
max_response_time |
最も遅いページ時間とも呼ばれます。これは、最も遅いURLの所要時間です。 |
avg_response_time |
URLの平均レスポンス時間。合計レスポンス時間/ページ数(url数)として計算されます。 |
rate |
KB/秒。これは、合計受信バイト数/その受信の合計所要時間で計算されます。 |
html_time |
すべてのページのHTML部分のダウンロードの合計所要時間。この時間では、イメージおよびその他のコンテンツをフェッチするための時間は除外されます。(フレームHTMLをフェッチするための時間は含みます。) |
content_time |
ページ・コンテンツ(gif、JavaScript、cssなど)のダウンロードの所要時間。 |
redirect_time |
指定されたurlのセットのフェッチ中に発生するすべてのリダイレクトの合計所要時間。 |
redirect_count |
リダイレクト数。 |
total_bytes |
合計バイト数。 |
html_bytes |
HTMLの合計バイト数。(フレームHTMLのバイト数を含みます。) |
content_bytes |
コンテンツの合計バイト数。 |
status_description |
これは、ステータスが停止中の場合にのみ存在します。HTTPステータスの説明に対応します。 |
request_count |
行われたリクエスト数。(すべてのHTMLおよびコンテンツ・リクエストを含みます。) |
broken_count |
イメージまたはその他のコンテンツ要素のフェッチ時のエラー数。 |
broken_details |
フェッチできなかったイメージまたはその他のコンテンツのリスト。これは、url[broken list], url[broken list...の形式です。 |
computed_response_time |
この時間は、クライアント(ブラウザなど)がトランザクションのすべてのページのフェッチに要した時間の概算です。この数値は、すべてのページのコンテンツ(gifs、cssなど)が複数のスレッドを使用してフェッチされた場合と同様に計算されます。 |
avg_connect_time |
合計connect_time/行われた収集の合計数。 |
avg_first_byte_time |
最初のバイトの合計時間/行われたリクエスト数(HTMLまたはコンテンツをフェッチするため)。 |
dns_time |
ホスト名の解決に要した時間(実装されておらず、常にゼロを返します)。 |
url |
URLを返します。detailedのoutput_formatでのみ使用できます。 |
例
次のURLを例にとります。
url0=http://www.example.com/
入力パラメータoutput_format=summaryでは、fetchletは次の表(列のヘッダーを除く)を返します。
output_format = summaryおよびmetrics = timetotal_response_time, status, status_descriptionでは、fetchletは次の表(列のヘッダーを除く)を返します。
output_format = summaryおよびmetrics = total_response_time, status, status_descriptionでは、fetchletは次の表(列のヘッダーを除く)を返し、サーバーはエラーになります。
次のURLを例にとります。
url0=http://www.example.com/ url1=http://nedc.us.example.com/
output_format=summaryでは、fetchletは次の表(列のヘッダーを除く)を返します。ここで、数値は両方のurlのフェッチの所要時間です。
output_format=detailedでは、fetchletは次の表(列のヘッダーを除く)を返します。
output_format=repeat_columnでは、fetchletは次の表(列のヘッダーを除く)を返します。
エラー処理
URLパラメータがないか不正な場合、またはメトリックを計算できない場合は、メトリック・エラーになります。
注意
再試行の実行に必要な時間がページの合計時間に加算されます。たとえば、2回の再試行が実行され、成功した場合、合計ページ時間は、成功したページの時間に失敗した2回の再試行の所要時間を加算した時間になります。
推奨される使用方法:
基本監視の場合:
url0=<監視するURL> , output_mode=summaryを使用し、metrics=status, computed_response_time, status_descriptionを指定します。
すべての列を取得する場合:
url0=<監視するurl> , output_mode=summaryを使用します。
ダイナミック・モニタリング・サービス(DMS)fetchletは、Application Server(AS)にアクセスし、DMSから返されるメトリックを収集します。
DMSにより、アプリケーションおよびシステム開発者は、カスタマイズされたコンポーネント固有のパフォーマンス・メトリックを測定およびエクスポートできます。Oracle Management Agentにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをOracle Enterprise Manager Cloud Controlにインポートできます。
DMS fetchletはOracle Management Agentプラグイン・モジュールであり、DMSによりエクスポートされるパフォーマンス・データを管理エージェントがインポートできるようにします。DMS fetchletを使用すると、DMS APIコールを使用してインスツルメント処理されたコンポーネントは、そのパフォーマンス・データをEnterprise Manager Cloud Controlと共有できます。
DMSを使用する場合、コンポーネントは、それ自体を管理エージェントの操作の詳細から隔離できます。コンポーネントは、各自のfetchletをデプロイ(または維持)したり、既存のいずれかのfetchletに組み込むためのTclスクリプトやシェル・スクリプトをデプロイ(または維持)したりする必要はありません。コンポーネントは、パフォーマンス・メトリックを測定またはエクスポートする独自の新しい手段を工夫する必要はありません。パフォーマンス・メトリックは、コンポーネント間で一貫した方法で測定および報告できます。DMS fetchletは、シェル・スクリプトやTclスクリプトをフォークせずに、リモートDMSランタイムに直接接続します。最も重要な点として、DMSが長く複雑なメタデータ・ドキュメントを自動生成するため、面倒でエラーを起こしやすい手動による編集時間が大幅に短縮されます。
入力パラメータ
表21-13 DMS fetchletの入力パラメータ
名前 | 型 | 説明 | 使用 |
---|---|---|---|
oraclehome |
String |
監視されるIASインスタンスがインストールされる最上位ディレクトリ。これは、ローカルIASプロセスの監視にのみ使用されます。リモートIASプロセスを監視する場合、ユーザーはこのパラメータに空の値を指定し、かわりにプロパティopmnremoteportまたはmachine(あるいはその両方)を指定する必要があります。 |
必須。 次に例を示します。 /private/oracle/ias |
version |
String |
ターゲットのASバージョン番号。監視されるASインスタンスのバージョンの区別に使用されます。 |
オプション 次に例を示します。 "9.0.4" |
opmnport |
Integer |
Oracle Process Monitoring and Notification(OPMN)のポート。これは、主にリモートASプロセスの監視に使用されます。プロパティmachineと一緒に指定する必要があります。これが存在するか有効な場合、プロパティoraclehomeおよびhttpportは無視されます。 |
オプション 次に例を示します。 "6200" |
httpport |
Integer |
HTTPポートは、主にスタンドアロンのプロセスの監視に使用されます。プロパティmachineと一緒に指定する必要があります。プロパティopmnportがある場合は無視されます。これが存在するか有効な場合、プロパティoraclehomeは無視されます。 |
オプション 次に例を示します。 "7777" |
machine |
String |
Internet Application Server(AS)インスタンスが実行するホスト名。プロパティopmnportと一緒に指定する必要があります。これが存在しない場合、ローカル・ホストが前提になります。 |
オプション 次に例を示します。 my-sun.us.example.com |
metric |
String |
ターゲットタイプ・メトリックの名前。 |
必須 次に例を示します。 Servlets |
columnOrder |
String |
;で区切られたメトリック列名のリスト。列名は、ターゲット・タイプ・メタデータ・ファイルへの出現順序と同じ順序で指定する必要があります。 name、host、processおよびfullname列は含めないでください。 |
必須 次に例を示します。 processTimes;totalRequest;requestRate |
usecache |
String |
このメトリックをキャッシュするかどうか。有効値はtrue、falseおよびrefreshallであり、デフォルトはtrue。refreshallは、キャッシュ・データを削除してすべてのターゲットから最新データを取得するようDMSに指示します。 |
オプション。 例: false usecacheをfalseに設定すると、DMSキャッシュがバイパスされます。 |
proxyHost |
String |
HTTP接続を行うために使用するプロキシ・ホスト。 |
オプション 次に例を示します。 proxy.us.example.com |
proxyPort |
Integer |
HTTP接続を行うために使用するプロキシ・ポート。 |
オプション 次に例を示します。 "80" |
dontProxyFor |
String |
プロキシが使用されないドメイン。 |
オプション 次に例を示します。 .us.example.comまたは18.219.0 |
useDefaultProxy |
String |
プロキシ・オーバーライド・パラメータとともに使用される場合、この変数では、元のプロキシ以外のプロキシを指定します。プロキシ・オーバーライド・パラメータを設定しないでfalseに設定した場合は、プロキシが使用されません。 |
オプション 次に例を示します。 trueまたはfalse |
proxyHostOverride |
String |
HTTP接続を行うために使用するプロキシ・ホスト。 |
オプション 次に例を示します。 www-proxy.us.example.com |
proxyPortOverride |
Integer |
HTTP接続を行うために使用するプロキシ・ポート。 |
オプション 次に例を示します。 "80" |
authrealm |
String |
Basic認証ログオンのレルム。レルムが認証に対して指定されていない場合、認証は行われず、ページのダウンロードは401レスポンス・コードで失敗します。 |
オプション 次に例を示します。 Please input your flex account login: |
authuser |
String |
Basic認証のユーザー名。 |
オプション superuser |
authpwd |
String |
Basic認証のパスワード。 |
オプション 次に例を示します。 welcome |
エラー処理
oraclehome、metric、columnOrder、opmnportまたはhttpportのいずれかのプロパティが欠落した場合、DMS fetchletはMissingParameterExceptionをスローします。指定されたポートのいずれかが有効ではない場合、FetchletExceptionをスローします。
注意
返されるメトリック表の最初の4列は、常にname、fullname、hostおよびprocessです。したがって、columnOrder文字列にはこれらの列を含めないでください。machineプロパティは、opmnportまたはhttpportプロパティとともに指定する必要があります。この場合、oraclehomeプロパティは無視されます。
Oracle 9i Application Serverのインフラストラクチャのパフォーマンス監視を一貫して行うために、DMSは複数のコンポーネント(Apache、JServ、OSEおよびPortal)で使用されてきました。センサーは、簡単に使用でき、タイミング、カウントおよび分類に関連する詳細のほとんどを隠すため、パフォーマンス測定に関連する作業のほとんどを簡略化します。最後に、DMSは管理エージェントの詳細の多くをコンポーネント開発者および多くの管理エージェント統合作業から隠します。
前述のように、DMSにより、アプリケーションおよびシステム開発者は、カスタマイズされたコンポーネント固有のパフォーマンス・メトリックを測定およびエクスポートできます。Oracle Management Agentにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをEnterprise Manager Cloud Controlにインポートできます。この項では、DMSパフォーマンス・メトリックを管理エージェントと統合する方法について説明します。
手順1: ASのインストール
手順2: Enterprise Manager Cloud Controlのインストール
手順3: DMSでのコンポーネントのインスツルメント処理
Enterprise Manager Cloud Controlに対してDMSメトリックを有効にするには、2つの追加ルールに従う必要があります。
ルール1: 管理エージェントにエクスポートされるすべてのナウンにはタイプが必要。
ナウンのタイプは、Noun.create()メソッドでtypeパラメータを指定するか、Noun.setType(String)メソッドを使用することで設定できます。概念は、すべてのナウンのタイプが管理リポジトリ表に自動的に変換されるということです。特定のタイプのすべてのナウンは、そのタイプの対応する管理リポジトリ表の1行になります。ナウンに含まれるメトリックは、管理リポジトリ表メトリックの列になります。タイプを持たないナウンは、管理エージェントにエクスポートされません。
ルール2: 指定のタイプのすべてのナウンには一貫したセンサー名が必要。
ナウンによって含まれるメトリックは管理リポジトリ表の列になるため、指定のタイプのすべてのナウンに同じセンサーが含まれるようにする必要があります。これにより、対応する管理リポジトリ表の各行が同じ列セットを持つようになります。DMSでは、この制約はチェックされません。
たとえば、次のJavaコード断片は、一貫したセンサーのセットを含むタイプ指定されたナウンの作成方法を示します。DMSにより、これらがMyTypeという名前の管理リポジトリ表に自動的に変換されます。
/* first create the nouns*/ Noun n1 = Noun.create("/myExample/myComponent/noun1", "MyType"); Noun n2 = Noun.create("/myExample/myComponent/noun2", "MyType"); /* next, create the Sensors */ PhaseEvent pe1 = PhaseEvent.create(n1, "criticalPhase", "a critical interval"); PhaseEvent pe2 = PhaseEvent.create(n2, "criticalPhase", "a critical interval"); Event e1 = Event.create(n1, "importantEvt", "an important event"); Event e2 = Event.create(n2, "importantEvt", "an important event"); /* here is a third set that shows the use of Noun.setType(String) */ PhaseEvent pe3 = PhaseEvent.create( "/myExample/myComponent/noun3/criticalPhase", "a critical interval"); Event e3 = PhaseEvent.create( "/myExample/myComponent/noun3/importantEvt", "an important event"); Noun n3 = Noun.get("/myExample/myComponent/noun3"); n3.setType("MyType");
この例では、MyType表に3行と4列が含まれます。2つのセンサーに対応する列の他に、プロセス名を含むDMSパス名を格納するname列および"/myExample/myCom..."を格納するpath列があります。
これらのナウン/センサーがASサイト内の複数のサーブレット・エンジンで作成される場合、AggreSpyは、各サーブレット・エンジンを検索し、すべてのナウン/センサーを単一のMyType表に集計します。
手順4: ターゲット・メタデータ・ドキュメントの生成
ターゲット・メタデータ・ドキュメントはブラウザを使用して生成できます。ブラウザで次のURLを使用して、監視するASサイトにアクセスします。
http://YOUR_AS_HOST:YOUR_AS_PORT/YOUR_SERVLET_PATH/AggreSpy?format=targetmetadata
前述のURLでは、使用しているASインストール環境の実際のホスト、ポートおよびサーブレット・パスを使用する必要があります。通常、サーブレット・パスはデフォルトでservletになります。取得するXMLドキュメントは、ASサイトのターゲット・メタデータ・ドキュメントです。XMLドキュメントの最初のコメントは、ターゲット・メタデータ・ドキュメントを取得できる場所、およびこのドキュメントに対して実行する必要のある操作を説明します。
手順5: ターゲット・メタデータ・ドキュメントのインストール
XMLドキュメントの最初のコメントで説明されている手順に従います。XMLドキュメントを、Enterprise Managerインストール環境のmetadataディレクトリ(OMS_ORACLE_HOME/sysman/admin/metadata/)の下にあるoracle_dms.xmlというファイルに保存します。メトリックのサブセットを監視する場合、またはメトリックを既存のoracle_dms.xmlファイル内のメトリックとマージする場合は、この新しい定義をtarget_name.xmlという別のファイルに保存する必要があります。生成されたメタデータ・ドキュメント内でターゲット・タイプ・エントリを変更する必要もあります。
次に、Enterprise Managerインストール環境の最上位ディレクトリの下にあるtargets.xmlファイルに、ASサイトのターゲット・インスタンス情報を追加する必要があります。読み取ったコメントにXMLタグのブロックが見つかります。これらは次のようになります。
<Target Type='oracle_dms' NAME='DMS_YOUR-IAS-HOST_YOUR-IAS-PORT' VERSION='2.0'> <Property NAME='host' VALUE='YOUR_IAS_HOST' /> <Property NAME='port' VALUE='YOUR_IAS_PORT' /> <Property NAME='dmsPath' VALUE='YOUR_SERVLET_PATH' /> </Target>
このブロックをコピーして、targets.xmlファイルの<targets>タグと</targets>タグの間に貼り付けます。
最後に、新しいターゲット・メタデータ・ファイルおよびターゲット・インスタンス情報をtargets.xmlファイルからEnterprise Manager Cloud Controlに追加するには、次のコマンドを実行する必要があります。
>$ORACLE_HOME/bin/emctl reload
手順6: メトリックの表示
Enterprise Managerのメトリック・ブラウザを使用してメトリックを表示する準備ができました。最初に、ASとコンポーネントがまだ稼働していることを確認します。次に、Oracle Management Agentを再起動します。最後に、ブラウザで次のURLを使用して管理エージェントのインストール環境にアクセスします。
http://YOUR_AGENT_HOST
:YOUR_AGENT_PORT
/emd/browser/main
管理エージェント・ポート情報は、$AGENT_HOME/sysman/config/emd.propertiesファイルのEMD_URL行にあります。
前述のURLでは、使用している管理エージェント・インストール環境の実際のホストおよびポートを使用する必要があります。ASサイトは、ターゲットDMS_YOUR-AS-HOST_YOUR-AS-PORTとしてリストされます。リンクをクリックすると、メトリックIDのリストが表示されます。それぞれのメトリックIDをクリックすることにより、メトリックを参照できます。
JDBCなどのコールレベル・インタフェースにより、SQLデータベース操作および更新コマンドへの外部アクセスが可能になります。Java Database Connectivity(JDBC)fetchletにより、共通JDBCコマンドを実行し、任意のタイプのデータベースのレスポンス時間を取得できます。
入力パラメータ
表21-14 JDBC fetchletの入力パラメータ
名前 | 説明 | 使用 |
---|---|---|
Transaction Name |
(標準) |
必須。 |
Beacon Name |
(標準) |
必須。 |
Connect String |
ユーザーが提供する接続文字列。接続文字列は、ユーザーが接続しようとしているデータベースのベンダーによって指定されたURL形式に従っている必要があります。 次に例を示します。 Oracleが要求している形式: jdbc:oracle:thin:@hostname:port MySQLが要求している形式: jdbc:mysql://hostname:port |
必須。 |
Class Name String |
接続に使用するドライバ・クラス名。 次に例を示します。 oracle.jdbc.driver.OracleDriver ドライバを含む.jarファイルを使用するようにエージェントを構成するオプションは2つあります。
|
必須。 |
Username |
データベースに接続するときに使用するユーザー名。 |
必須。 |
Password |
データベースへの接続時に使用されるパスワード。 |
必須。 |
Role |
ユーザー・ロール。 |
必須。 |
Statement |
実行するSQL文。prepareCall() APIを使用することにより、PL/SQLを使用できます。 |
必須。 |
表21-15 収集されるメトリック列
列 | 説明 |
---|---|
ステータス |
テストのステータス。fetchletによって生成されたSQLExceptionがある場合、ステータスは「停止中」です。 |
合計時間 |
fetchletがテストの実行に要する時間。 |
接続時間 |
DriverManager.getConnection()の完了に要する時間。 |
準備時間 |
conn.prepareStatement()の完了に要する時間。 |
実行時間 |
stmt.executeQuery()の完了に要する時間。 |
フェッチ時間 |
while(rs.next()) { rs.getRow() }の完了に要する時間。 |
クローズ時間 |
結果セット、文、接続のクローズの完了に要する時間。 |
行数 |
フェッチされた行数。 |
行当たりの合計時間 |
|
行当たりのフェッチ時間 |
例
例21-10では、呼出し時にJDBC fetchletに渡されるプロパティを示します。
例21-10 JDBC fetchletに渡されるプロパティ
<QueryDescriptor FETCHLET_ID="JDBC"> <Property NAME="TxnName" SCOPE="GLOBAL">TxnName</Property> <Property NAME="BeaconName" SCOPE="GLOBAL">BeaconName</Property> <Property NAME="connstring" SCOPE="INSTANCE">connString</Property> <Property NAME="username" SCOPE="INSTANCE">username</Property> <Property NAME="password" SCOPE="INSTANCE">password</Property> <Property NAME="statement" SCOPE="GLOBAL">select * from user_tables</Property> <Property NAME="classstring" SCOPE="GLOBAL">oracle.jdbc.none</Property> <Property NAME="role" SCOPE="GLOBAL" OPTIONAL="TRUE">DBA</Property> <Property NAME="useconnpool" SCOPE="GLOBAL" OPTIONAL="TRUE">FALSE</Property> <Property NAME="GetTimingData" SCOPE="GLOBAL">TRUE</Property> </QueryDescriptor>
WBEM fetchletはCIMOMにアクセスし、指定したCIMクラスを使用して、要求された情報を取得します。CIMクラスは、管理リポジトリ表メトリックにマッピングされます。CIMクラスの名前は、返される表メトリックの名前であり、CIMクラスに対して定義されるプロパティは、メトリックの表の列の名前を付けるために使用されます。目的のプロパティは、メトリック定義中に指定する必要があります。
fetchletは、CIMクラスに対してインスタンス化されたインスタンスを管理リポジトリ表メトリックの行として返します。
入力パラメータ
表21-16 WBEM fetchletの入力パラメータ
名前 | 型 | 説明 | 使用 |
---|---|---|---|
hostname |
String |
CIMOMのホスト名。 |
オプションであり、デフォルトはlocalhost。 |
port |
Integer |
CIMOMのポート。 |
オプションであり、デフォルトは5988。 |
namespace |
String |
CIMネームスペース。 |
オプションであり、デフォルトはroot/cimv2。 |
username |
String |
CIMOMが稼働しているホストでのCIMOM認可に使用するユーザー名 |
必須 |
password |
String |
CIMOMが稼働しているホストでのCIMOM認証に使用するパスワード。 |
必須 |
CIMclassname |
String |
インスタンスが返されるCIMクラスの名前。 |
STATUSを除くすべての操作に必須です。STATUS操作は、CIMOMが稼働しているかどうかのみチェックするため、クラス名は不要です。 |
operation |
String |
実行する操作。サポートされる操作には、クラス内のインスタンス数を返すCOUNT、クラスの各インスタンスの指定したプロパティの値を返すVALUES、またはCIMOMに関するステータス情報を提供するSTATUSが含まれます。 |
オプションであり、デフォルトはVALUES。 |
properties |
String |
収集に必要なCIMクラス定義からのプロパティ名。 |
VALUES操作に必要です。操作がVALUESの場合は、これらのうち1からNまでをセミコロンで区切って使用できます。操作がVALUESで、プロパティが提供されていない場合は、エラーが返されます。プロパティは、指定された順序でEMDに渡されます。 |
エラー処理
次のタイプのエラーがWBEM fetchletに対して識別されています。
次の場合にMissingParameterExceptionが発生します。
一致するCIM Classパラメータがない場合
次の場合にfetchlet例外が発生します。
クラス名がCIMOMネームスペースに見つからない場合
ネームスペースが見つからない場合
CIMOMへの接続に有効な資格証明がない場合
CIMOMが稼働していないため、CIMOMへの接続に失敗した場合
CIMクラス・プロパティが存在しない場合
サポートされていない操作が指定された場合
プロパティが指定されていない場合
注意
ポート: 一部のCIMOMクライアント・インタフェースは、一部のクライアントがリスニングしていないときにCIMOMがリスニングしているポートを公開します。両方のケースを扱うために、ポートはデフォルトでポート5988となるオプションの入力パラメータとして公開されます。これは、デフォルトのPegasus CIMOMリスナー・ポートです。SunのWbem Servicesを介して提供されているJava APIは、CIMOMポートを公開しません。
プロトコル: ほとんどのCIMOMは、CIMOMとの通信にRMIまたはHTTPプロトコルをサポートします。行ったテストでは、HTTPプロトコルが安定せず、場合によってはCIMOMで完全には実装されていないことが示されました。このため、プロトコルは現在デフォルトでRMIになります。プロトコルのWBEMサービスCIMOMの実際のパラメータは、CIMClient.CIM_RMIまたはCIMClient.CIM_XMLです。
fetchlet操作: WBEM APIは、定義されているクラス階層とその関連をクライアントが横断できるという点で非常に柔軟性があります。現時点では、EMDからCIMデータへのアクセスに関するオプションは、カウント、クラスのプロパティの取得およびCIMOMステータスに限定されています。これらは、監視について実行する必要のある重要な操作です。追加の要件が発生した場合、オラクル社は必要に応じて新しい操作を追加し、これらをサポートできます。プロトタイプでは、カウント操作のみ実装されています。
認証: ほとんどのCIMOMには、ユーザー識別メカニズムを通じて認証をサポートするためのAPIが用意されています。CIMOMの大多数はAPIを実装していないため、この機能は実際にはno-opです。どの場合でも、オラクル社では、CIMOM実装が標準に遅れをとらないようにfetchletに機能を提供し、必要なサポートを行います。
例
Wbem fetchletでは、3つの基本操作がサポートされます。現時点では、fetchletは一度に1つの操作のみ処理するため、カウント、ステータスおよび値操作を1回のfetchletコールに混在させることはできません。例21-11では、COUNT操作のメタデータを書き込む方法を示しています。
例21-11 COUNT操作のメタデータ
<Metric NAME="Load" TYPE="TABLE"> <Display> <Label NLSID="wbem_cimom_load">Load</Label> </Display> <TableDescriptor> <ColumnDescriptor NAME="Active Clients" TYPE="NUMBER" IS_KEY="FALSE"> <Display> <Label NLSID="wbem_cimom_active_clients">Active CIMOM Clients</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="Wbem"> <Property NAME="username" SCOPE="GLOBAL">guest</Property> <Property NAME="password" SCOPE="GLOBAL">guest</Property> <Property NAME="CIMClassname" SCOPE="GLOBAL">EX_SFLProvider</Property> <Property NAME="operation" SCOPE="GLOBAL">COUNT</Property> </QueryDescriptor> </Metric>
FETCHLET_IDはWbemによって識別されます。必須パラメータusername、passwordおよびCIMClassnameの場合、プロパティ名はfetchletに渡されます。operationはCOUNTとして識別されます。
次の例に、CIMOMを実行するかどうかを判断するResponse Statusメトリックの実装方法を示します。CIMOMへの接続に成功した場合は値1を返し、それ以外は0を返します。
例21-12 レスポンス・ステータス・メトリック
<Metric NAME="Response" TYPE="TABLE"> <Display> <Label NLSID="wbem_cimon_response">Response</Label> </Display> <TableDescriptor> <ColumnDescriptor NAME="Status" TYPE="NUMBER" IS_KEY="FALSE"> <Display> <Label NLSID="wbem_cimom_response_status">Status</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="Wbem"> <Property NAME="username" SCOPE="GLOBAL">guest</Property> <Property NAME="password" SCOPE="GLOBAL">guest</Property> <Property NAME="operation" SCOPE="GLOBAL">STATUS</Property> </QueryDescriptor> </Metric>
デフォルトの操作はVALUES操作です。CIMOMで定義されるクラスの値のフェッチに使用されます。
最後の例では、EX_Teacherクラスにアクセスし、名前列をフェッチします。名前はクラスおよび定義されている新規メトリックのキーであるため、IS_KEYプロパティがtrueに設定されています。CIMクラス・プロパティは、propertiesプロパティに指定されている順序でEnterprise Manager列にマッピングされます。この場合は、Nameという1つのプロパティのみあります。
例21-13 クラスについてフェッチされた単一プロパティ
<Metric NAME="EX_Teacher" TYPE="TABLE"> <Display> <Label NLSID="wbem_EX_Teacher">EX_Teacher Class</Label> </Display> <TableDescriptor> <ColumnDescriptor NAME="Name" TYPE="STRING" IS_KEY="TRUE"> <Display> <Label NLSID="wbem_ex_teacher_name">Name</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="Wbem"> <Property NAME="username" SCOPE="GLOBAL">guest</Property> <Property NAME="password" SCOPE="GLOBAL">guest</Property> <Property NAME="CIMClassname" SCOPE="GLOBAL">EX_Teacher</Property> <Property NAME="properties" SCOPE="GLOBAL">Name</Property> </QueryDescriptor> </Metric>
1つのクラスに対して複数のプロパティがフェッチされた場合は、セミコロンで区切る必要があります。プロパティは、メトリック表定義に対して列記述子が指定されている順序で提供する必要があります。
例21-14 クラスについてフェッチされた複数のプロパティ
<Metric NAME="EX_SFLProvider" TYPE="TABLE"> <Display> <Label NLSID="wbem_EX_SFLProvider">EX_SFLProvider Class</Label> </Display> <TableDescriptor> <ColumnDescriptor NAME="Name" TYPE="STRING" IS_KEY="TRUE"> <Display> <Label NLSID="wbem_ex_sfl_name">Name</Label> </Display> </ColumnDescriptor> <ColumnDescriptor NAME="Win" TYPE="NUMBER" IS_KEY="FALSE"> <Display> <Label NLSID="wbem_ex_sfl_win">Win</Label> </Display> </ColumnDescriptor> <ColumnDescriptor NAME="Lost" TYPE="NUMBER" IS_KEY="FALSE"> <Display> <Label NLSID="wbem_ex_sfl_lost">Lost</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="Wbem"> <Property NAME="username" SCOPE="GLOBAL">guest</Property> <Property NAME="password" SCOPE="GLOBAL">guest</Property> <Property NAME="CIMClassname" SCOPE="GLOBAL">EX_SFLProvider</Property> <Property NAME="properties" SCOPE="GLOBAL">Name;Win;Lost</Property> </QueryDescriptor> </Metric>
JMX fetchletは、MBeanからJava Management Extensions(JMX)の属性を取得して(またはJMX操作を呼び出して)、結果を(表)メトリックとして返します。指定されたObjectNameがObjectNameパターンの場合、複数の行が返されます。各行は、指定したObjectNameパターンに一致するMBeanに対応します。
入力パラメータ
表21-17 JMX fetchletの主な入力パラメータ
名前 | 型 | 説明 | 使用 |
---|---|---|---|
MachineName |
String |
MBeanサーバーのホスト名 |
オプション |
Port |
MBeanサーバーが新しい接続をリスニングするポート |
オプション |
|
UserName |
String |
JMX接続のユーザー名(必須の場合) |
必須 |
password |
String |
JMX接続のパスワード(必須の場合) |
必須 |
protocol |
String |
接続に使用されるプロトコル |
オプション |
service |
String |
接続に使用されるサービス |
オプション |
serviceURL |
String |
JMX接続に使用されるserviceURLこれは、前述のMachineName、Port、protocolおよびserviceプロパティのかわりです。 注意: ミドルウェア・ターゲットの場合、メトリックを管理サーバーまたは管理対象サーバーのどちらから収集する必要があるかに応じて、ファームまたは管理対象サーバーのいずれかのアソシエーションからserviceURLを取得できます。 |
必須(MachineNameとPortが指定されている場合を除く) |
Metric |
String |
MBeanオブジェクト名(MetricService=trueの場合はDMS表名) |
必須 |
columnOrder |
String |
メトリックのTableDescriptorの列定義に対応する、前述のMBeanのセミコロン区切りのJMX属性リスト。 |
必須 |
operation |
String |
呼び出されるJMX操作の名前。この場合、columnOrderは、メトリックに移入される戻りオブジェクトからの値を表します。(jmxcliを使用してこれを生成することをお薦めします)。 |
オプション |
arguments |
String |
JMX操作の引数を表すXML。jmxcliを使用してこれを生成することをお薦めします。 |
オプション |
MetricService |
Boolean |
MetricService=trueの場合、メトリックはOracleに固有のDMSメトリック・サービスで取得されることを示します。この場合、前述のcolumnOrderプロパティは列名のリストになり、'metric'プロパティは実際のDMS表名を示します。 |
オプション |
identityCol |
String |
MBean ObjectNameから抽出されて結果メトリックのキー列として表面化されるMBeanオブジェクト名キー(またはセミコロン区切りのキーのリスト)。値'canonical'を指定する場合、完全なMBeanオブジェクト名の追加キー・メトリック列がfetchletによって返されます。このプロパティは、前述のメトリック・プロパティが、サーバー上の複数のMBeanと一致するObjectNameパターンの場合のみ機能します。 |
オプション |
autoRowID |
String |
自動生成されたキー列の接頭辞。接尾辞は1で始まる連番になります。たとえば、autoRowIDがROW_に設定される場合、位置が0で値がROW_1、ROW_2など(最大で返される行数まで)のキー列が生成されます。これは、通常、それ以外のどの列(選択されたJMX属性)も一意ではなく、MBeanの一致とMBeanのパターンが複数あるときの結果として複数の行が返される場合になります。 |
オプション |
useCache |
Boolean |
MetricService=trueの場合のみ該当し、メトリック・サービス・キャッシュを使用する必要があるかどうかを示します。 |
オプション |
ServerNames |
String |
MetricService=trueの場合のみ該当し、DMSメトリックを取得する必要があるサーバー名のセミコロン区切りのリストになります。これは、すべての管理対象サーバーのメトリックがある管理サーバーからこれらのメトリックを収集する(serviceURLがファーム・アソシエーションからAdminServerを指し示す)場合のみ該当します。 |
オプション |
valueWhenNoMBean |
数値 |
通常はレスポンス・メトリックに使用されます。(前述のメトリック・プロパティで)指定のMBeanパターンに一致するMBeanが見つからない場合、単一行および列としてfetchletが返す値があります。 |
オプション |
valueWhenDown |
数値 |
通常はレスポンス・メトリックに使用されます。接続例外(サーバーの停止を示す)が原因でサーバーへの接続が失敗した場合に単一行および列としてfetchletが返す値があります。 |
オプション |
admlMap |
String |
MetricService=trueの場合のみ該当します。admlパラメータをこのadml表に対して渡す必要があることを示すXMLスニペットになります(jmxcliを使用してこれを生成することをお薦めします)。 |
オプション |
注意:
JMX fetchletは、主にターゲットMBeanServerのMBeanからJMX属性を取得する場合に使用されます。また、同じ種類の複数のMBeanから属性を表形式で取得することもできます(複数の行があり、各行は一致するMBeanを表します)。
たとえば、MBean ObjectNameパターンでサーブレットを指定し(メトリック・プロパティの*:Type=ServletRuntime,*
)、columnOrderでA1;A2;A3と指定する場合、結果のメトリックにはサーブレットごとに1つの行があります。
JMX操作を使用してメトリック・データを取得する必要がある場合(これはメトリックを収集する一般的な方法ではない)、QueryDescriptorプロパティ操作でJMX操作名を指定する必要があり、引数はJMX操作に渡されるパラメータのXML表現になります。
たとえば、次のQueryDescriptorは、引数が単一文字列でvalueがtotalのgetNumUserSessionsというJMX操作の呼出しを示します。
例21-15 JMX操作名の指定
<Metric NAME="GetNumUserSessions" TYPE="TABLE" USAGE_TYPE="HIDDEN"> <Display> <Label NLSID="GetNumUserSession">GetNumUserSession</Label> </Display> <TableDescriptor> <ColumnDescriptor NAME="Get Num User Sessions" TYPE="STRING"> <Display> <Label NLSID="Get Num User Sessions">Get NumUser Sessions</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="JMX"> <Property NAME="serviceURL" SCOPE="ASSOCTGT" ASSOCIATION_NAME="farm">serviceURL</Property> <Property NAME="UserName" SCOPE="ASSOCTGT" OPTIONAL="TRUE" ASSOCIATION_NAME="farm">UserName</Property> <Property NAME="password" SCOPE="ASSOCTGT" OPTIONAL="TRUE" ASSOCIATION_NAME="farm">password</Property> <Property NAME="instName.parameter" SCOPE="INSTANCE">instName</Property> <Property NAME="metric" SCOPE="GLOBAL">oracle.forms.FormsJ2EEapplication.%instName.parameter%:,type=Runtime,*</Property> <Property NAME="operation" SCOPE="GLOBAL">getNumUserSessions</Property> <Property NAME="columnOrder" SCOPE="GLOBAL">getNumUserSessions</Property> <Property NAME="arguments" SCOPE="GLOBAL"> <![CDATA[<arguments> <argument type="java.lang.String"> <value>total</value> </argument> </arguments>]]> </Property> </QueryDescriptor> </Metric>
JMX fetchletのQueryDescriptorには、JMX接続情報が含まれます。通常は、serviceURLの形式になります。serviceURLプロパティがQueryDescriptorで利用できない場合、JMX fetchletとの接続情報を提供するように、MachineName、Port、protocolおよびserviceのプロパティの組合せがQueryDescriptorに存在する必要があります。
Webサービス・コマンドライン・ツールで生成されるターゲット・メタデータ・ファイルの<QueryDescriptor>
要素で、呼出し時にWebサービスfetchletに渡されるプロパティを指定します。
入力パラメータ
表21-18に、サポートされるプロパティを示します。
表21-18 Webサービスfetchletのプロパティ
名前 | 説明 | 使用 | 備考 |
---|---|---|---|
ServiceName |
Webサービス名 |
必須。 有効なネームスペースをサービス名の先頭にする必要があります。 |
参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。 |
PortName |
Webサービスのポート名 |
必須。 有効なネームスペースをポート名の先頭にする必要があります。 |
参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。 |
OperationName |
Webサービスの操作名 |
必須。 有効なネームスペースを操作名の先頭にする必要があります。 |
参照されるすべてのネームスペースは、プロパティNamespaceで指定されます。 |
ServiceEndpoint |
Webサービス・エンドポイント |
必須。 有効なURL。 |
|
WsdlURL |
WebサービスのWSDL URL |
オプション。 有効なURL。 |
RPC/エンコードWebサービスの場合のみ必須 |
ParameterStyle |
SOAPパラメータのマッピング・スタイル |
オプション。 - BARE - WRAPPED |
RPC/エンコードWebサービスまたはREST-ful Webサービスの場合のみオプション |
Payload |
Webサービス操作のリクエスト・ペイロード |
必須。 CDATAセクションを使用して指定する必要があります。 |
|
SOAPBindingStyle |
SOAPバインディング・スタイル |
オプション。 - DOCUMENT - RPC |
RPCまたはエンコードWebサービスの場合のみオプション |
SOAPBindingUse |
SOAPバインディング使用 |
オプション - ENCODED - LITERAL |
RPCまたはエンコードWebサービスの場合のみオプション |
SOAPVersion |
SOAPバージョン |
オプション - SOAP_1_1 - SOAP_1_2 |
RPCまたはエンコードWebサービスの場合のみオプション |
MessageType |
Webサービスのメッセージ・タイプ |
オプション - SOAP - REST |
RPCまたはエンコードWebサービスの場合のみオプション |
SecurityPolicy |
セキュリティ・ポリシー |
必須 - NONE - BASIC_AUTHENTICATION |
|
Namespace |
参照するすべてのネームスペースのセット |
オプション。メトリックで参照されるすべてのネームスペースが含まれます。 注釈[ns0="uri0"][ns1="uri1"]を使用して指定します。 例: [ns0="http://type.abc.com"] [ns1="http://app.abc.com"] |
|
ColType |
収集結果列タイプ |
必須 メトリック列タイプのリスト(カンマ区切り) 例: msgId:STRING,source:STRING,detail:STRING |
|
RowType |
収集結果行タイプ |
必須 メトリック列に対応するXPath式のリスト(カンマ区切り) 例: //ns0:eventResponse/msgId, //ns0:eventResponse/source, |
|
SSLKeyStoreCredential |
SSLキーストア資格証明セット名 |
オプション <CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット |
監視資格証明として定義する必要があります。 |
SSLTrustStoreCredential |
SSLトラストストア資格証明セット名 |
オプション <CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット |
監視資格証明として定義する必要があります。 |
UserCredential |
ユーザー・トークン資格証明セット名 |
オプション <CredentialInfo>で定義されるエイリアス資格証明またはCSFキー資格証明タイプの有効な資格証明セット |
監視資格証明として定義する必要があります。 |
ValueWhenDown |
ターゲットがダウンしているときのデフォルト・レスポンス |
必須(レスポンス・メトリックの場合のみ)。通常のメトリックには必要ありません。レスポンス・メトリックの場合、ターゲットがダウンしていると、この値(指定されている場合)が戻されます。 |
fetchletがConnectionExceptionをキャッチすると、ターゲットはダウンしているとみなされます。 |
例
例21-16に、Remote Procedure Call (RPC)またはエンコードWebサービスのメトリック定義の例を示し、例21-17に、ドキュメント/リテラルのWebサービスのメトリック定義の例を示します。
例21-16 RPCまたはエンコードWebサービスのメトリック定義
<Metric NAME="getVacantRooms" TYPE="TABLE"> <Display> <Label NLSID="NLSID_GET_VACANT_ROOMS">getVacantRooms</Label> </Display> <TableDescriptor> <ColumnDescriptor IS_KEY="TRUE" NAME="roomID" TYPE="STRING"> <Display> <Label NLSID="COL_ROOM_ID">roomID</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="floor" TYPE="STRING"> <Display> <Label NLSID="COL_FLOOR">floor</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="number" TYPE="STRING"> <Display> <Label NLSID="COL_NUMBER">number</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="rate" TYPE="STRING"> <Display> <Label NLSID="COL_RATE">rate</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="roomType" TYPE="STRING"> <Display> <Label NLSID="COL_ROOM_TYPE">roomType</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="smoking" TYPE="STRING"> <Display> <Label NLSID="COL_SMOKING">smoking</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="available" TYPE="STRING"> <Display> <Label NLSID="COL_AVAILABLE">available</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="WSF"> <Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property> <Property NAME="WsdlURL" SCOPE="INSTANCE">wsdlURL</Property> <Property NAME="ServiceEndpoint" SCOPE="INSTANCE">serviceURL</Property> <Property NAME="ServiceName" SCOPE="GLOBAL">ns0:SimpleHotelServiceRE</Property> <Property NAME="PortName" SCOPE="GLOBAL">ns0:HotelService</Property> <Property NAME="OperationName" SCOPE="GLOBAL">getVacantRooms</Property> <Property NAME="MessageType" SCOPE="GLOBAL">SOAP</Property> <Property NAME="SOAPBindingStyle" SCOPE="GLOBAL">RPC</Property> <Property NAME="SOAPBindingUse" SCOPE="GLOBAL">ENCODED</Property> <Property NAME="ParameterStyle" SCOPE="GLOBAL">BARE</Property> <Property NAME="SOAPVersion" SCOPE="GLOBAL">SOAP_1_1</Property> <Property NAME="Namespace" SCOPE="GLOBAL"><![CDATA[[ns1="http://hotel.apps.muws/"][ns0="http://hotel.apps.muws/rpc/"]]]></Property> <Property NAME="RowType" SCOPE="GLOBAL">//ns1:getVacantRoomsResponse/return/item/@roomID,//ns1:getVacantRoomsResponse/return/item/floor, //ns1:getVacantRoomsResponse/return/item/number,//ns1:getVacantRoomsResponse/return/item/rate,//ns1:getVacantRoomsResponse/return/item/roomType, //ns1:getVacantRoomsResponse/return/item/smoking,//ns1:getVacantRoomsResponse/return/item/available</Property> <Property NAME="ColType" SCOPE="GLOBAL">roomID:STRING,floor:STRING,number:STRING,rate:STRING,roomType:STRING,smoking:STRING,available:STRING</Property> <Property NAME="Payload" SCOPE="GLOBAL"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://hotel.apps.muws/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <soap:Body soap:encodingStyle=""> <ns:getVacantRooms/> </soap:Body> </soap:Envelope>]]></Property> </QueryDescriptor> </Metric>
例21-17 docまたはリテラルのWebサービスのメトリック定義
<Metric NAME="square" TYPE="TABLE"> <Display> <Label NLSID="NLSID_SQUARE">square</Label> </Display> <TableDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="arg0" TYPE="STRING"> <Display> <Label NLSID="COL_ARG0">arg0</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="WSF"> <Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property> <Property NAME="ServiceEndpoint" SCOPE="INSTANCE">serviceURL</Property> <Property NAME="ServiceName" SCOPE="GLOBAL">ns0:CalculatorService</Property> <Property NAME="PortName" SCOPE="GLOBAL">ns0:CalculatorPort</Property> <Property NAME="OperationName" SCOPE="GLOBAL">square</Property> <Property NAME="MessageType" SCOPE="GLOBAL">SOAP</Property> <Property NAME="SOAPBindingStyle" SCOPE="GLOBAL">DOCUMENT</Property> <Property NAME="SOAPBindingUse" SCOPE="GLOBAL">LITERAL</Property> <Property NAME="ParameterStyle" SCOPE="GLOBAL">WRAPPED</Property> <Property NAME="SOAPVersion" SCOPE="GLOBAL">SOAP_1_1</Property> <Property NAME="Namespace" SCOPE="GLOBAL"><![CDATA[[ns0="http://tests.jaxws.oracle.com/"] [ns1="http://www.oracle.com/jaxws/tests"]]]></Property> <Property NAME="RowType" SCOPE="GLOBAL">//ns1:squareResponse/arg0</Property> <Property NAME="ColType" SCOPE="GLOBAL">arg0:STRING</Property> <Property NAME="Payload" SCOPE="GLOBAL"><![CDATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body xmlns:ns1="http://www.oracle.com/jaxws/tests"> <ns1:square> <arg0>%square.arg00001%</arg0> </ns1:square> </soap:Body> </soap:Envelope>]]></Property> </QueryDescriptor> </Metric>
BASIC認証が必要な場合、メトリック定義で次のように構成または定義する必要があります。
SecurityPolicyプロパティをBASIC_AUTHENTICATIONに設定します。
<Property NAME="SecurityPolicy" SCOPE="INSTANCE">BASIC_AUTHENTICATION</Property>
次のプロパティを<QueryDescriptor>
要素に追加します。
<Property NAME="UserCredential" SCOPE="GLOBAL"> UserCredentialSet </Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
<Metric>
タグの後の資格証明タイプを定義します。
……… <Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet </Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet </CredentialRef> </QueryDescriptor> </Metric> <CredentialInfo> <CredentialType NAME="AliasCredential"> <Display> <Label NLSID="CRED_TYPE">Alias Credential Type</Label> </Display> <CredentialTypeColumn NAME="Alias"> <Display> <Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="Password"> <Display> <Label NLSID="CRED_PASSWORD">Password for the alias</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialSet NAME="UserCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="AliasCredential"/> </CredentialSet> </CredentialInfo>
例21-18 SSLのキーストアおよびトラストストアの使用
………… <Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">SSLTrustStoreCredentialSet</Property> <Property NAME="SSLKeyStoreCredential" SCOPE="GLOBAL">SSLKeyStoreCredentialSet</Property> NAME="SSLTrustStoreCredentialSet">SSLTrustStoreCredentialSet</CredentialRef> <CredentialRef NAME="SSLKeyStoreCredentialSet">SSLKeyStoreCredentialSet</CredentialRef> </QueryDescriptor> </Metric> <CredentialInfo> <CredentialType NAME="StoreCredential"> <Display> <Label NLSID="CRED_TYPE">Store Credential Type</Label> </Display> <CredentialTypeColumn NAME="StoreLocation"> <Display> <Label NLSID="CRED_STORE_LOCATION">Store Location</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="StoreType"> <Display> <Label NLSID="CRED_STORE_TYPE">Store Type</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="StorePassword"> <Display> <Label NLSID="CRED_STORE_PASSWORD">Store Password</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="StoreCredential"/> </CredentialSet> <CredentialSet NAME="SSLKeyStoreCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="StoreCredential"/> </CredentialSet> </CredentialInfo>
wsmancliコマンドライン・ツールで生成されるターゲット・メタデータ・ファイルの<QueryDescriptor>
要素で、呼出し時にWS-Management fetchletに渡されるプロパティを指定します。
入力パラメータ
表21-19に、サポートされるプロパティの一覧を示します。
例21-19 WS-Management fetchletのプロパティ
名前 | 説明 | 使用 |
---|---|---|
ResourceURI |
リソース・クラス表現またはインスタンス表現のURI(wsman:ResourceURL) |
必須 RFC 3986に従う有効なURI |
To |
サービスのトランスポート・アドレス(wsa:To)。 |
必須 有効なネットワーク・トランスポート・アドレス。 |
Action |
wsa:Actionの場合、リソースに対してどの操作を実行するかを特定します。 |
必須 現在のリリースでサポートされるのは、http://schemas.xmlsoap.org/ws/2004/09/transfer/Getのみです。 |
TransferOperation |
WS-Transfer操作の名前。 |
必須 現在のリリースでサポートされるのはGETのみです。 |
Locale |
クライアントがリクエストする(場合によっては要求する)言語と翻訳先のレスポンス・テキストを指定します(wsman:Locale)。 |
オプション 標準XML属性xml:langの任意の有効な値 |
MaxEnvelopeSize |
クライアントが、合計SOAPエンベロープが指定オクテット数を超えないレスポンスを予期することを示すサイズ(wsman:MaxEnvelopeSize) |
オプション 値は8192より小さくできません。 |
OperationTimeout |
クライアントが指定期間内のレスポンスまたはフォルトを予期することを示す値(wsman:OperationTimeout)。 |
オプション xs:duration形式を使用して値を指定します(http://www.w3.org/2001/XMLSchema:durationを参照)。 |
OptionSet |
リクエストの性質を変更または調整するサービスへの切替えセット(wsman:OptionSet)。 |
オプション 次の注釈を使用して値を指定します。 [<OptionName1>, value:<value1>, type:<type1>, mustComply:<true|false>][<OptionName2>, value:<value2>, type:<type>, mustComply:<true|false>][...] |
ReplyTo |
応答が必要な場合に、すべてのリクエスト・メッセージに表示されるヘッダー(wsa:ReplyTo)。 |
オプション サービスでサポートされているトランスポートを使用する新規接続の有効なアドレス、またはURI http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymousである必要があります(WS-Addressingを参照)。 |
SelectorSet |
アクセスするリソースのインスタンスを識別するセレクタのセット(wsman:SelectorSet) |
必須 次の書式を使用して値を指定します。 [S1, V1][S2, V2]...[Sn, Vn] 内容は次のとおりです。 - S1、S2、...、Snはセレクタ名です。 - V1、V2、...、Vnはセレクタ値です。 |
SecurityPolicy |
セキュリティ・ポリシー |
必須 - NONE - BASIC_AUTHENTICATION |
Namespace |
参照するすべてのネームスペースのセット |
必須 注釈[ns0="uri0"][ns1="uri1"]を使用して指定します。 例: [ns0="http://type.abc.com"][ns1="http://app.abc.com"] |
ColType |
収集結果列タイプ |
必須 メトリック列タイプのリスト(カンマ区切り) 例: msgId:STRING,source:STRING,detail:STRING |
RowType |
収集結果行タイプ |
必須 メトリック列に対応するXPath式のリスト(カンマ区切り) 例: //ns0:eventResponse/msgId,//ns0:eventResponse/source |
SSLKeyStoreCredential |
SSLキーストア資格証明セット名 |
オプション <CredentialInfo>で定義されるストア資格証明タイプの有効な資格証明セット |
SSLTrustStoreCredential |
SSLトラストストア資格証明セット名 |
オプション <CredentialInfo>タグで定義されるストア資格証明タイプの有効な資格証明セット |
UserCredential |
ユーザー・トークン資格証明セット名 |
オプション <CredentialInfo>タグで定義されるエイリアス資格証明またはCSFキー資格証明タイプの有効な資格証明セット |
ValueWhenDown |
ターゲットがダウンしているときのデフォルト・レスポンス |
必須(レスポンス・メトリックの場合のみ)。通常のメトリックには必要ありません。レスポンス・メトリックの場合、ターゲットがダウンしていると、この値(指定されている場合)が戻されます。 fetchletがConnectionExceptionをキャッチすると、ターゲットはダウンしているとみなされます |
例
例21-19に、WS-Management fetchletを使用したメトリック定義の例を示します。
例21-19 WS-Management fetchletを使用する場合のメトリック定義
<Metric NAME="trafficLight" TYPE="TABLE"> <Display> <Label NLSID="NLSID_TRAFFIC_LIGHT">trafficLight</Label> </Display> <TableDescriptor> <ColumnDescriptor IS_KEY="YES" NAME="name" TYPE="STRING"> <Display> <Label NLSID="COL_NAME">name</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="color" TYPE="STRING"> <Display> <Label NLSID="COL_COLOR">color</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="x" TYPE="STRING"> <Display> <Label NLSID="COL_X">x</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="y" TYPE="STRING"> <Display> <Label NLSID="COL_Y">y</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="WSManagementFetchlet"> <Property NAME="SecurityPolicy" SCOPE="INSTANCE">NONE</Property> <Property NAME="ResourceURL" SCOPE="INSTANCE">resourceURL</Property> <Property NAME="To" SCOPE="INSTANCE">To address</Property> <Property NAME="OptionSet" SCOPE="INSTANCE">optionSet</Property> <Property NAME="Locale" SCOPE="INSTANCE">locale</Property> <Property NAME="MaxEnvelopeSize" SCOPE="INSTANCE">maxEnvelopeSize</Property> <Property NAME="OperationTimeout" SCOPE="INSTANCE">operationTimeout</Property> <Property NAME="Namespace" SCOPE="GLOBAL"> <![CDATA[[ns1="http://schemas.wiseman.dev.java.net/traffic/1/light.xsd"] [ns0="http://www.w3.org/2001/XMLSchema"] [wsa="http://www.w3.org/2005/08/addressing"] [env="http://www.w3.org/2003/05/soap-envelope"]]]></Property> <Property NAME="RowType" SCOPE="GLOBAL">//ns1:trafficlight/ns1:name,//ns1:trafficlight/ns1:color,//ns1: <Property NAME="ColType" SCOPE="GLOBAL">name:STRING,color:STRING,x:STRING,y:STRING</Property> <Property NAME="ReplyTo" SCOPE="GLOBAL">http://www.w3.org/2005/08/addressing/role/anonymous</Property> <Property NAME="Action" SCOPE="GLOBAL">http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</Property> <Property NAME="TransferOperation" SCOPE="GLOBAL">GET</Property> <Property NAME="SelectorSet" SCOPE="GLOBAL">[name,Light1]</Property> </QueryDescriptor> </Metric>
BASIC認証が必要な場合、メトリック定義で構成または定義します。
SecurityPolicyプロパティをBASIC_AUTHENTICATIONに設定します。
<Property NAME="SecurityPolicy" SCOPE="INSTANCE">BASIC_AUTHENTICATION</Property>
次のプロパティを<QueryDescriptor>
タグに追加します。
<Property NAME="UserCredential" SCOPE="GLOBAL"> UserCredentialSet </Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef>
<Metric>
タグの後の資格証明タイプを定義します。
……… <Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet </Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet </CredentialRef> </QueryDescriptor> </Metric> <CredentialInfo> <CredentialType NAME="AliasCredential"> <Display> <Label NLSID="CRED_TYPE">Alias Credential Type</Label> </Display> <CredentialTypeColumn NAME="Alias"> <Display> <Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="Password"> <Display> <Label NLSID="CRED_PASSWORD">Password for the alias</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialSet NAME="UserCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="AliasCredential"/> </CredentialSet> </CredentialInfo>
例21-20 SSLのキーストアおよびトラストストアの使用
………… <Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL">SSLTrustStoreCredentialSet</Property> <Property NAME="SSLKeyStoreCredential" SCOPE="GLOBAL">SSLKeyStoreCredentialSet</Property> <CredentialRef NAME="SSLTrustStoreCredentialSet">SSLTrustStoreCredentialSet</CredentialRef> <CredentialRef NAME="SSLKeyStoreCredentialSet">SSLKeyStoreCredentialSet</CredentialRef> </QueryDescriptor> </Metric> <CredentialInfo> <CredentialType NAME="StoreCredential"> <Display> <Label NLSID="CRED_TYPE">Store Credential Type</Label> </Display> <CredentialTypeColumn NAME="StoreLocation"> <Display> <Label NLSID="CRED_STORE_LOCATION">Store Location</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="StoreType"> <Display> <Label NLSID="CRED_STORE_TYPE">Store Type</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="StorePassword"> <Display> <Label NLSID="CRED_STORE_PASSWORD">Store Password</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="StoreCredential"/> </CredentialSet> <CredentialSet NAME="SSLKeyStoreCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="StoreCredential"/> </CredentialSet> </CredentialInfo>
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になるため、様々なメカニズムがレスポンスの処理に適応されます。表21-20では、レスポンス・メディア・タイプごとに異なるメカニズムについて説明します。
表21-20 レスポンス処理のメカニズム
メディア・タイプ | メカニズム |
---|---|
application/xml |
XPath問合せはXMLデータの処理に使用されます。 fetchletのプロパティRowTypeで、列データを取得するための、メトリック列に対応するXPath式のリスト(カンマ区切り)を指定します。 例: <records> <ns2:Record xmlns:ns2="urn:com.office.directory"> <name>Peter</name> <phone>+1 (650) 555-0100</phone> </ns2:Record> <ns2:Record xmlns:ns2="urn:com.office.directory"> <name>John</name> <phone>+1 (650) 555-0185</phone> </ns2:Record> </records> 監視メトリックには2つの列(名前と電話番号)があることが前提です。対応するXPath式は次のようになります。
次に、抽出されたデータの例を示します。 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式は次のようになります。
次に、抽出されたデータの例を示します。 Peter, +1 (650) 555-0100 John, +1 (650) 555-0185 |
text/xml |
テキストは非構造表現であるため、このテキストから特定のデータを抽出する方法はありません。かわりに、レスポンス全体が返されます。 |
入力パラメータ
表21-21に、サポートされるプロパティの一覧を示します。
表21-21 REST fetchletのプロパティ
名前 | 説明 | オプション |
---|---|---|
BaseURI |
RESTful WebサービスのベースURI |
なし |
RequestElementPayload |
文字列形式のリクエスト要素ペイロード(XML/JSON)。XMLの場合、CDATAセクションを使用して指定する必要があります。 |
あり |
RequestMetadata |
XML形式のリクエスト・メタデータ |
なし |
SecurityPolicy |
認証スキームを指定します。NONEまたはBASIC_AUTHENTICATIONのいずれか |
なし |
Namespace |
メトリックで参照するすべてのネームスペースのセット。注釈[ns0="uri0"][ns1="uri1"]...を使用して指定します。 例: [ns0="http://type.abc.com"][ns1="http://app.abc.com"] |
なし |
ColType |
収集結果列タイプ。メトリック列タイプのリスト(カンマ区切り)。 例: msgId:STRING,source:STRING,detail:STRING |
なし |
RowType |
収集結果行タイプ。メトリック列に対応するパス(XPathまたはJsonPath)式のリスト(カンマ区切り)。 例: //ns0:eventResponse/msgId,//ns0:eventResponse/source,//ns0:eventResponse/detail |
なし |
SSLKeyStoreCredential |
SSLキーストア資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。 Location、Type、Password |
あり |
SSLTrustStoreCredential |
SSLトラストストア資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。 Location、Type、Password |
あり |
UserCredential |
ユーザー・トークン資格証明セット名。監視資格証明として定義する必要があり、次の資格証明列が含まれます。 Alias、Password |
あり |
ProxyHost |
URL接続を行うプロキシ・サーバーのホスト名 |
あり |
ProxyPort |
URL接続を行うプロキシ・サーバーのポート番号 |
あり |
例21-21に、ターゲット・メタデータ・ファイルからのfectchlet問合せ記述子の例を示します。ターゲット・メタデータ・ファイルの詳細は、第3章「ターゲット・メタデータ・ファイルの作成」を参照してください。
注意: fetchletのIDはRESTFetchlet になります。 |
例21-21 fetchlet問合せ記述子
<QueryDescriptor FETCHLET_ID="RESTFetchlet"> <Property NAME="SecurityPolicy" SCOPE="INSTANCE">ListAll.SecurityPolicy</Property> <Property NAME="BaseURI" SCOPE="INSTANCE">ListAll.BaseURI</Property> <Property NAME="Namespace" SCOPE="GLOBAL"> <![CDATA[[ns0="urn:com.office.directory"]]]></Property> <Property NAME="RowType" SCOPE="GLOBAL">//ns0:Record/name,//ns0:Record/title, //ns0:Record/phone,//ns0:Record/building,//ns0:Record/floor, //ns0:Record/office</Property> <Property NAME="ColType" SCOPE="GLOBAL">name:STRING,title:STRING,phone:STRING ,building:STRING,floor:STRING,office:STRING</Property> <Property NAME="RequestMetadata" SCOPE="GLOBAL"> <![CDATA[<Resource path="/"> <Resource path="lookup/list"> <Method elementDefined="false" accept="application/xml" name="GET"/> </Resource> </Resource> </Property>]]> <Property NAME="UserCredential" SCOPE="GLOBAL">UserCredentialSet</Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef> </QueryDescriptor>
REST fetchletの自己署名付きSSL証明書を持ったHTTPS URLを呼び出す場合、ターゲット・メタデータ・ファイルに資格証明セットを指定する必要があります。
例21-22
<QueryDescriptor FETCHLET_ID="RESTFetchlet"> ...... <Property NAME="SSLTrustStoreCredential" SCOPE="GLOBAL"> SSLTrustStoreCredentialSet</Property> <CredentialRef NAME="SSLTrustStoreCredentialSet"> SSLTrustStoreCredentialSet</CredentialRef></QueryDescriptor> <CredentialInfo> <CredentialType NAME="StoreCredential"> <Display> <Label NLSID="CRED_TYPE">Store Credential Type</Label> </Display> <CredentialTypeColumn NAME="StoreLocation" IS_SENSITIVE="FALSE"> <Display> <Label NLSID="CRED_STORE_LOCATION">Store Location</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="StoreType" IS_SENSITIVE="FALSE"> <Display> <Label NLSID="CRED_STORE_TYPE">Store Type</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="StorePassword"> <Display> <Label NLSID="CRED_STORE_PASSWORD">Store Password</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialSet NAME="SSLTrustStoreCredentialSet" USAGE="MONITORING" CONTEXT_TYPE="TARGET"> <AllowedCredType TYPE="StoreCredential"/> </CredentialSet> </CredentialInfo>
Enterprise Manager Cloud Controlリリース2 (12.1.0.3)では、fetchletの新しいプロパティSSLTrustServerCertが追加されました。これをTRUEに設定すると、fetchletはサーバー証明書に非検証モードを使用するため、SSLトラスト・ストアを提供または指定する必要はありません。
REST CLIは、ターゲット・メタデータとデフォルトの収集ファイルを生成するためのクライアント・コマンドライン・ツールです。このツールを使用すると、管理エージェントはREST fetchletを呼び出してRESTful Webリソースを監視できます。
次のemctl
コマンドを使用してREST CLIを呼び出します。
emctl restcli
表21-22に、emctl restcli
コマンドで使用可能なコマンドライン引数のリストを示します。
表21-22 REST CLIでサポートされるコマンドライン引数
引数 | 説明 | 例 |
---|---|---|
|
ターゲット・メタデータを生成します。 |
|
|
WADLの場所 |
|
|
WSDLの場所 |
|
|
ホストにログインするユーザー名 |
|
|
プロキシ・サーバーのホスト名 |
|
|
プロキシ・サーバーのポート番号。 |
|
REST CLIを使用するには、次のようにします。
Web Application Description Language(WADL)の場所でREST CLIコマンドを実行します。例:
emctl restcli -wadl=http://host.us.example.com:17382/OfficeDirectoryBA/application.wadl
WADLの場所へのアクセスが保護される場合、ユーザー名とパスワードを入力します。
例21-24に、REST CLIツールを実行するユーザーの例を示します。
REST CLIによって、ターゲットのタイプと場所(出力ディレクトリに、生成されたターゲットと収集メタデータ・ファイルが含まれる場所)を入力するように求められます。
REST CLIでは、監視に使用可能なすべてのリソース・パスがリストされます。リソース・パスとそのいずれかのメソッドを選択して、該当リソースの監視メトリックを定義する必要があります。
さらに、REST CLIによって、収集スケジュールを定義するように求められます。
すべての情報をユーザーから集める場合、ツールによって、(例21-25に示すメタデータのような)ターゲットとデフォルトの収集メタデータ・ファイルが指定の出力ディレクトリに生成されます。
例21-24 REST CLIの実行
Generate Metric Metadata for REST Web Resource Monitoring Enter password for "weblogic" : Reading WADL Document at http://host.us.example.com:17382/OfficeDirectoryBA/application.wadl...done. ==> Enter the name for this target type :OfficeDirectory
==> Enter metadata file name [/scratch/work/metadata/OfficeDirectory.xml] : All resource paths available for monitoring : [1] /add [2] /lookup/list [3] /lookup/phone [4] /lookup/building/people [5] /db/count ==> Enter the index [1-5] to select :2
* Selected Resource Path : /lookup/list All methods available from the selected path : [1] application/xml[Record] GET() [2] application/json[Record] GET() ==> Enter the index [1-2] to select :1
* Selected Resource Method: application/xml[Record] GET() Define new metric group : ==> Enter the name for this metric group [GET] :ListGet_XML
Return value(s) for the selected method : [1] //ns0:Record/name <string> [2] //ns0:Record/title <string> [3] //ns0:Record/phone <string> [4] //ns0:Record/building <string> [5] //ns0:Record/floor <string> [6] //ns0:Record/office <string> ==> Enter the index [1-6] of metric to display :1
==> Enter the name for this metric [name] : ==> Enter the label for this metric [name] : ==> Is this a key metric <y/n>? [n] :y
==> Do you want to add another metric <y/n>? [y] : Return value(s) for the selected method : [1] //ns0:Record/title <string> [2] //ns0:Record/phone <string> [3] //ns0:Record/building <string> [4] //ns0:Record/floor <string> [5] //ns0:Record/office <string> ==> Enter the index [1-5] of metric to display :1
==> Enter the name for this metric [title] : ==> Enter the label for this metric [title] : ==> Is this a key metric <y/n>? [n] : ==> Do you want to create threshold for it <y/n>? [n] : ==> Do you want to add another metric <y/n>? [y] : Return value(s) for the selected method : [1] //ns0:Record/phone <string> [2] //ns0:Record/building <string> [3] //ns0:Record/floor <string> [4] //ns0:Record/office <string> ==> Enter the index [1-4] of metric to display :1
==> Enter the name for this metric [phone] : ==> Enter the label for this metric [phone] : ==> Is this a key metric <y/n>? [n] : ==> Do you want to create threshold for it <y/n>? [n] : ==> Do you want to add another metric <y/n>? [y] : Return value(s) for the selected method : [1] //ns0:Record/building <string> [2] //ns0:Record/floor <string> [3] //ns0:Record/office <string> ==> Enter the index [1-3] of metric to display :1
==> Enter the name for this metric [building] : ==> Enter the label for this metric [building] : ==> Is this a key metric <y/n>? [n] : ==> Do you want to create threshold for it <y/n>? [n] : ==> Do you want to add another metric <y/n>? [y] : Return value(s) for the selected method : [1] //ns0:Record/floor <string> [2] //ns0:Record/office <string> ==> Enter the index [1-2] of metric to display :1
==> Enter the name for this metric [floor] : ==> Enter the label for this metric [floor] : ==> Is this a key metric <y/n>? [n] : ==> Do you want to create threshold for it <y/n>? [n] : ==> Do you want to add another metric <y/n>? [y] : Return value(s) for the selected method : [1] //ns0:Record/office <string> ==> Enter the index [1-1] of metric to display :1
==> Enter the name for this metric [office] : ==> Enter the label for this metric [office] : ==> Is this a key metric <y/n>? [n] : ==> Do you want to create threshold for it <y/n>? [n] : Setup request parameters ==> Do you want to add User/Password Credential <y/n>? [n] :y
==> Do you want to add SSL TrustStore Credential <y/n>? [n] : ==> Do you want to add SSL KeyStore Credential <y/n>? [n] : ==> Is this metric group for periodic collection <y/n>? [y] : The following units are for collection frequency: [1] Min [2] Hr [3] Day ==> Enter the index [1-3] of unit for this collection :1
==> Enter the frequency of collection in Min :5
==> Do you want to add another metric group <y/n>? [n] :y
All resource paths available for monitoring : [1] /add [2] /lookup/list [3] /lookup/phone [4] /lookup/building/people [5] /db/count ==> Enter the index [1-5] to select :3
* Selected Resource Path : /lookup/phone All methods available from the selected path : [1] application/json[PhoneInfo] GET(name) [2] application/xml[PhoneInfo] GET(name) ==> Enter the index [1-2] to select :1
* Selected Resource Method: application/json[PhoneInfo] GET(name) Define new metric group : ==> Enter the name for this metric group [GET] :LookupGet_JSON
Return value(s) for the selected method : [1] $..name <string> [2] $..phone <string> ==> Enter the index [1-2] of metric to display :1
==> Enter the name for this metric [name] : ==> Enter the label for this metric [name] : ==> Is this a key metric <y/n>? [n] :y
==> Do you want to add another metric <y/n>? [y] : Return value(s) for the selected method : [1] $..phone <string> ==> Enter the index [1-1] of metric to display :1
==> Enter the name for this metric [phone] : ==> Enter the label for this metric [phone] : ==> Is this a key metric <y/n>? [n] : ==> Do you want to create threshold for it <y/n>? [n] : Setup request parameters ==> Enter value for query parameter "name" [%LookupGet_JSON.name0000%] :Harry Smith
==> Do you want to add User/Password Credential <y/n>? [n] :y
==> Do you want to add SSL TrustStore Credential <y/n>? [n] : ==> Do you want to add SSL KeyStore Credential <y/n>? [n] : ==> Is this metric group for periodic collection <y/n>? [y] : The following units are for collection frequency: [1] Min [2] Hr [3] Day ==> Enter the index [1-3] of unit for this collection :1
==> Enter the frequency of collection in Min :5
==> Do you want to add another metric group <y/n>? [n] : Files Generated: - Target Metadata file: /scratch/work/metadata/OfficeDirectory.xml - Target Collection file: /scratch/work/metadata/OfficeDirectoryCollection.xml
例21-25 REST CLIで生成されるターゲット・メタデータ
<TargetMetadata META_VER="1.0" TYPE="OfficeDirectory"> <Display> <Label NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</Label> <ShortName NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</ShortName> <Description NLSID="NLSID_OFFICE_DIRECTORY">OfficeDirectory</Description> </Display> <Metric NAME="ListGet_XML" TYPE="TABLE"> <Display> <Label NLSID="NLSID_LIST_GET_XML">ListGet_XML</Label> </Display> <TableDescriptor> <ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING"> <Display> <Label NLSID="COL_NAME">name</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="title" TYPE="STRING"> <Display> <Label NLSID="COL_TITLE">title</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="phone" TYPE="STRING"> <Display> <Label NLSID="COL_PHONE">phone</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="building" TYPE="STRING"> <Display> <Label NLSID="COL_BUILDING">building</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="floor" TYPE="STRING"> <Display> <Label NLSID="COL_FLOOR">floor</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="office" TYPE="STRING"> <Display> <Label NLSID="COL_OFFICE">office</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="JAXRS_Fetchlet"> <Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property> <Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property> <Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">ListGet_XML.SecurityPolicy</Property> <Property NAME="BaseURI" SCOPE="INSTANCE" OPTIONAL="FALSE">ListGet_XML.BaseURI</Property> <Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="urn:com.office.directory"]]]></Property> <Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">//ns0:Record/name,//ns0:Record/title,//ns0:Record/phone,//ns0:Record/building,//ns0:Record/floor,//ns0:Record/office</Property> <Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,title:STRING,phone:STRING,building:STRING, floor:STRING,office:STRING</Property> <Property NAME="RequestMetadata" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[<Resource path="/"> <Resource path="lookup/list"> <Method elementDefined="false" accept="application/xml" name="GET"/> </Resource> </Resource> ]]></Property> <Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet</Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef> </QueryDescriptor> </Metric> <Metric NAME="LookupGet_JSON" TYPE="TABLE"> <Display> <Label NLSID="NLSID_LOOKUP_GET_JSON">LookupGet_JSON</Label> </Display> <TableDescriptor> <ColumnDescriptor IS_KEY="TRUE" NAME="name" TYPE="STRING"> <Display> <Label NLSID="COL_NAME">name</Label> </Display> </ColumnDescriptor> <ColumnDescriptor IS_KEY="FALSE" NAME="phone" TYPE="STRING"> <Display> <Label NLSID="COL_PHONE">phone</Label> </Display> </ColumnDescriptor> </TableDescriptor> <QueryDescriptor FETCHLET_ID="JAXRS_Fetchlet"> <Property NAME="ProxyHost" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyHost</Property> <Property NAME="ProxyPort" SCOPE="INSTANCE" OPTIONAL="TRUE">ProxyPort</Property> <Property NAME="SecurityPolicy" SCOPE="INSTANCE" OPTIONAL="FALSE">LookupGet_JSON.SecurityPolicy</Property> <Property NAME="BaseURI" SCOPE="INSTANCE" OPTIONAL="FALSE">LookupGet_JSON.BaseURI</Property> <Property NAME="Namespace" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[[ns0="urn:com.office.directory"]]]></Property> <Property NAME="RowType" SCOPE="GLOBAL" OPTIONAL="FALSE">$..name,$..phone</Property> <Property NAME="ColType" SCOPE="GLOBAL" OPTIONAL="FALSE">name:STRING,phone:STRING</Property> <Property NAME="RequestMetadata" SCOPE="GLOBAL" OPTIONAL="FALSE"><![CDATA[ <Resource path="/"> <Resource path="lookup/phone"> <Method elementDefined="false" accept="application/xml" name="GET"> <Parameter style="query" value="Harry Son" name="name"/> </Method> </Resource> </Resource> ]]></Property> <Property NAME="UserCredential" SCOPE="GLOBAL" OPTIONAL="FALSE">UserCredentialSet</Property> <CredentialRef NAME="UserCredentialSet">UserCredentialSet</CredentialRef> </QueryDescriptor> </Metric> <CredentialInfo> <CredentialType NAME="CSFKeyCredential"> <Display> <Label NLSID="CRED_TYPE">CSF-Key Credential Type</Label> </Display> <CredentialTypeColumn NAME="CSFKey"> <Display> <Label NLSID="CRED_CSFKEY">Alias CSF Key</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialType NAME="AliasCredential"> <Display> <Label NLSID="CRED_TYPE">Alias Credential Type</Label> </Display> <CredentialTypeColumn NAME="Alias"> <Display> <Label NLSID="CRED_ALIAS">Alias (i.e. username, encryption key, signature key, etc)</Label> </Display> </CredentialTypeColumn> <CredentialTypeColumn NAME="Password"> <Display> <Label NLSID="CRED_PASSWORD">Password for the alias</Label> </Display> </CredentialTypeColumn> </CredentialType> <CredentialSet NAME="UserCredentialSet" USAGE="MONITORING"> <AllowedCredType TYPE="CSFKeyCredential"/> <AllowedCredType TYPE="AliasCredential"/> </CredentialSet> </CredentialInfo> <InstanceProperties> <InstanceProperty NAME="ProxyHost" CREDENTIAL="FALSE" OPTIONAL="TRUE"> <Display> <Label NLSID="PROP_PROXY_HOST">Proxy Server Name</Label> </Display> </InstanceProperty> <InstanceProperty NAME="ProxyPort" CREDENTIAL="FALSE" OPTIONAL="TRUE"> <Display> <Label NLSID="PROP_PROXY_PORT">Proxy Server Port</Label> </Display> </InstanceProperty> <InstanceProperty NAME="ListGet_XML.SecurityPolicy" CREDENTIAL="FALSE" OPTIONAL="FALSE"> <Display> <Label NLSID="PROP_LIST_GET_XML_SECURITY_POLICY">[ListGet_XML] Authentication/Web Service Policy</Label> </Display> </InstanceProperty> <InstanceProperty NAME="ListGet_XML.BaseURI" CREDENTIAL="FALSE" OPTIONAL="FALSE"> <Display> <Label NLSID="PROP_LIST_GET_XML_BASE_URI">[ListGet_XML] Resource Base URI</Label> </Display> </InstanceProperty> <InstanceProperty NAME="LookupGet_JSON.SecurityPolicy" CREDENTIAL="FALSE" OPTIONAL="FALSE"> <Display> <Label NLSID="PROP_LOOKUP_GET_JSON_SECURITY_POLICY">[LookupGet_JSON] Authentication/Web Service Policy</Label> </Display> </InstanceProperty> <InstanceProperty NAME="LookupGet_JSON.BaseURI" CREDENTIAL="FALSE" OPTIONAL="FALSE"> <Display> <Label NLSID="PROP_LOOKUP_GET_JSON_BASE_URI">[LookupGet_JSON] Resource Base URI</Label> </Display> </InstanceProperty> </InstanceProperties> </TargetMetadata>