ヘッダーをスキップ
Oracle® Enterprise Manager拡張ガイド
11gリリース1(11.1.0.1)
B61026-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

8 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

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

入力パラメータ

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

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

図8-1の説明が続きます
「図8-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」を参照してください。

入力パラメータ

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

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

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

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


注意:

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

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

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

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

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


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

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

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

入力パラメータ

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

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

図8-3の説明が続きます
「図8-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を使用してトークン化されます。

デリミタには、単一文字または文字のセットを使用できます。たとえば、行を縦線、プラスおよびアンダースコアで区切る必要がある場合は、"|+_"となります。"||"や"+|+"など、2つ以上のデリミタが同時に出力テキストに存在する場合は、それらのデリミタ間に空の文字列トークンがあるように扱われます。これらの空文字列は、結果表の列を取得します。行で始まるデリミタの前、または行で終わるデリミタの後に空文字列があるとはみなされません。

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

SQL fetchlet

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

入力パラメータ

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

パラメータ 説明 使用

接続情報

MachineName

string

データベース・ホスト。

必須。

Port

integer

データベース・ポート。

必須。

SID

string

データベースSID。

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

ServiceName

string

データベースServiceName。

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

OidRepSchemaName

string

Enterprise Manager管理リポジトリ名。このパラメータは、データベース接続文字列および資格証明情報(MachineName、Port、SID、ServiceName、UserName、password)を管理リポジトリから抽出します。このパラメータを使用すると、各ターゲット・タイプ・メタデータ・ファイルで接続パラメータと資格証明パラメータを指定したり、このターゲット・インスタンス情報をtargets.xmlファイルに公開したりする必要がなくなります。

接続および資格証明情報パラメータが使用されていない場合は必須。

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

string

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

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

SQLOUTPARAMPOS

integer

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

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

SQLOUTPARAMTYPE

string

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

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

transpose

TRUE/FALE

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



注意

SQL fetchletは、libclntsh.soのOracle Call Interface(OCI)を使用します。

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

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

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

SQL fetchletは、データを取得するために無名PL/SQLブロック(これは他のファンクションまたはプロシージャをコールする場合があります)の実行をサポートします。PL/SQLのブロックを実行する場合、データはOUTパラメータを使用してfetchletに返されます。必ず1つの出力パラメータが存在できます。SQL_CURSOR型(PL/SQL REF CURSOR)であるか、オブジェクトの配列を表す名前付きの型である必要があります。名前付きの型の場合、オブジェクトの各フィールドは表の1列を表します。配列の各オブジェクト・インスタンスは表の1行全体を表します。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

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

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

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

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プロシージャを実行します。

MachineName=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プロシージャを指定します。

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パッケージを指定します。

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を参照のために示します。

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エージェントをポーリングします。

入力パラメータ

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

パラメータ 説明 使用

hostname

string

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

必須。bigip.us.oracle.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。


エラー処理

hostnameとOIDSのどちらかが指定されていない場合は、MissingParameterExceptionがスローされます。TABLEがTRUEとFALSEのどちらとも等しくない場合、エージェントとの間でのSNMPメッセージの送受信中にI/Oエラーが発生した場合、またはエージェントがSNMPエラーで応答した場合は、FetchletExceptionがスローされます。

注意

fetchletによって返される表には、OIDS内のOIDごとに列が含まれます。入力OIDが単一変数インスタンスに対応している場合、表にはこれらのインスタンスを持つ1行のみ含まれます。一方、OIDが複数インスタンスを持つ変数に対応する場合、表の各列にはそのOIDのインスタンスが含まれ、各行は異なるサブ識別子に対応します。(サブ識別子は、いくつかのMIB変数の特定の変数インスタンスを一意に識別するOID拡張です。)OIDSには、すべてサブ識別子を持つOID、またはすべてサブ識別子を持たないOIDが含まれている必要があります。

たとえば、3つのOIDsysDescr、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つのインスタンスが含まれているとします。

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

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

ifDescr、ifInOctetsおよびifOutOctetsに対応する3つの列を持つ表を作成するには、OIDSを次のように定義する必要があります。

"1.3.6.1.2.1.2.1.2.2.1.2 1.3.6.1.2.1.2.1.2.2.1.10 1.3.6.1.2.1.2.1.2.2.1.16"

fetchletは次の内容を返します。

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

図8-6の説明が続きます
「図8-6 SNMP fetchlet: ifDescr、ifInOctetsおよびifOutOctets OIDS」の説明

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

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

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

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

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

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

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

図8-9 SNMP fetchlet: 別のOID

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

URLタイミングfetchlet

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

入力パラメータ

表8-6 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.oracle.com、.uk.oracle.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に設定します。

オプション。デフォルトはy。注意: キャッシュの有効範囲はリクエストごとです。複数のメトリック取得リクエストに永続的なキャッシュはありません。

output_format

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

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

metrics

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

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


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

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

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


メトリック列

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

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

列名 説明

status

すべてのURLの全体的なステータス。デフォルトでは、ANDを使用して全体的なステータスを計算しますが、これはstatus_comparator入力パラメータを使用して変更できます。

connect_time

サーバーに接続してリクエストを送信するための時間。

first_byte_time

リクエストの送信からレスポンスの最初のバイトを読み取るまでの所要時間。

total_response_time

すべてのurlおよび関連するコンテンツ(gif、css、javascript etc)のフェッチの所要時間。

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.oracle.com/ 

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

図8-10 サマリー出力形式

サマリー出力形式
「図8-10 サマリー出力形式」の説明

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

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

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

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

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

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

次のURLを例にとります。

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

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

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

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

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

図8-14 2つのURLに対する詳細出力

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

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

図8-15 繰返し列の出力形式

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

エラー処理

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

注意

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

推奨される使用方法:

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

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

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

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

Oracle管理エージェント統合に対してDMSを使用する利点

DMSを使用すると、コンポーネントは管理エージェントの動作詳細から自身を隔絶できます。コンポーネントは、独自のfetchletをデプロイ(またはメンテナンス)したり、Tclスクリプトやシェル・スクリプトをデプロイ(またはメンテナンス)して既存のfetchletの1つにプラグインしたりする必要はありません。コンポーネントは、パフォーマンス・メトリックを測定またはエクスポートする新たな固有の方法を考案する必要はありません。パフォーマンス・メトリックは、コンポーネント間で一貫した方法で測定およびレポートできます。DMS fetchletは、リモートDMSランタイムに直接アクセスします。このときに、フォーキング・シェル・スクリプトやTclスクリプトは不要です。最も重要なのは、DMSにより長く複雑なメタデータ・ドキュメントが自動的に作成されるため、退屈でエラーの生じやすい手動編集にかかる時間の多くを節約できることです。

入力パラメータ

表8-9 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.oracle.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.oracle.com

proxyPort

Integer

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

オプション。

次に例を示します。

"80"

dontProxyFor

String

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

オプション。

次に例を示します。

.us.oracle.comまたは18.219.0

useDefaultProxy

String

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

オプション。

次に例を示します。

trueまたはfalse

proxyHostOverride

String

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

オプション。

次に例を示します。

www-proxy.us.oracle.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プロパティは無視されます。

DMS fetchlet/Oracle管理エージェント統合の方法

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

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

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

手順1: ASのインストール

手順2: Enterprise Manager Grid Controlのインストール

手順3: DMSでのコンポーネントのインスツルメント処理

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

>$ORACLE_HOME/bin/emctl reload

手順6: メトリックの表示

Enterprise Managerのメトリック・ブラウザを使用してメトリックを表示する準備ができました。メトリック・ブラウザの設定の詳細は、「メトリック・ブラウザのアクティブ化」を参照してください。最初に、ASとコンポーネントがまだ稼働していることを確認します。次に、Oracle管理エージェントを再起動します。最後に、ブラウザで次の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をクリックすることにより、メトリックを参照できます。

HTTPデータfetchlet

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

URL fetchlet(RAW)

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

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

入力パラメータ

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

図8-16 URL fetchletの出力

図8-16の説明が続きます
「図8-16 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」を参照してください。

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

図8-17 URL行fetchletの出力

図8-17の説明が続きます
「図8-17 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」を参照してください。

表8-12 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と、デリミタを表す単一文字","を実行します。

fetchletは次の表を返します。

図8-18 URL行トークンの出力

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

エラー処理

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

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

注意

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

デリミタには、単一文字または文字のセットを使用できます。たとえば、行を縦線、プラスおよびアンダースコアで区切る必要がある場合は、"|+_"となります。"||"や"+|+"など、2つ以上のデリミタが同時に出力テキストに存在する場合は、それらのデリミタ間に空の文字列トークンがあるように扱われます。これらの空文字列は、結果表の列を取得します。行で始まるデリミタの前、または行で終わるデリミタの後に空文字列があるとはみなされません。

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

URLXML fetchlet

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

入力パラメータ

表8-13 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>

次の表が返されます。

図8-19 URLXML fetchletの出力

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

エラー処理

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

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

注意

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

WBEM fetchlet

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

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

入力パラメータ

表8-14 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が発生します。

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

注意

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

例8-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が稼働しているかどうかを判断するためのレスポンス・ステータス・メトリックの実装方法を示します。これは、CIMOMへの接続に成功した場合に値1を返し、それ以外の場合は0を返します。

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

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

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

JDBC fetchlet

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

入力パラメータ

表8-15 JDBC fetchletの入力パラメータ

名前 説明 使用

Transaction Name

(標準)

必須

Beacon Name

(標準)

必須

Connect String

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

次に例を示します。

Oracleが要求している形式:

jdbc:oracle:thin:@hostname:port

MySQLが要求している形式:

jdbc:mysql://hostname:port

必須

Class Name String

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

次に例を示します。

oracle.jdbc.driver.OracleDriver

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

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

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

必須

Username

データベースへの接続時に使用されるユーザー名。

必須

Password

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

必須

Role

ユーザー・ロール。

必須

Statement

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

必須


表8-16 収集されるメトリック列

説明

ステータス

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

合計時間

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

接続時間

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

準備時間

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

実行時間

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

フェッチ時間

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

クローズ時間

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

行数

フェッチされた行数。

行当たりの合計時間


行当たりのフェッチ時間



OJMX/SOAP fetchlet

OJMX fetchletは、管理対象J2EEサーバー上のJMXエージェントと通信し、指定された操作を実行します。

入力パラメータ

表8-17 JMX fetchletの入力パラメータ

名前 説明

metricType

String

このメトリックのタイプがWebサービス(GWS)であることをfetchletに通知します。

requestBodyElement

String

Webサービス・リクエスト本文として使用されるときのWebサービス操作の名前を提供します。

documentType

String

SOAPエンコーディングを指定します。たとえば、rpc/encodedやdoc/literalなどです。

soapVersion

String

fetchletがWebサービスとの通信に使用する必要のあるSOAPのバージョン(デフォルトは1.2)。

targetNamespace

String

Webサービスのターゲット・ネームスペース。

ColumnOrder

String []

結果のWebサービス・レスポンスの列を取得するためのXPathsのカンマ区切りリスト。

rowData

String []

XPath接頭辞のカンマ区切りリスト。対応するcolumnOrder Xpathsに追加されるときに、Webサービスからの応答に配列が返される場合に各行のメトリック列の値を提供します。

URI

String

WebサービスのURI。

soapAction

String

WSDLからのWebサービスのSOAPアクション。

returnType

String

Webサービス起動の戻り値の型。

arguments

XML

Webサービス起動に渡す値。


出力

OJMX fetchletは、取得した情報を含むMetricResult型のオブジェクトを返します。