Enterprise Managerのデータ取得は、事前定義済のfetchletを通じて処理されます。fetchletは、入力として引数(たとえば、スクリプト、SQL文、ターゲット・インスタンスのプロパティ)を受け取り、書式設定されたデータを返すパラメータ化されたデータ・アクセス・メカニズムです。各fetchletは、特定のタイプのデータ・アクセスを処理します。Enterprise Managerに付属のfetchletは、SQL、SNMP(Simple Network Management Protocol)、HTTP、DMS(ダイナミック・モニタリング・サービス)などの最も一般的なデータ・アクセス方法に対してデータ取得機能を提供します。より複雑なデータ・アクセス要件を処理するために、Enterprise Managerには、開発者がカスタム・メトリック収集メソッドを実装できるようにするOSコマンドfetchletも用意されています。
Enterprise Managerには次のfetchletが付属しています。
WBEM fetchlet
オペレーティング・システム(OS)コマンドfetchletでは、標準出力(stdout)データ・ストリームを返すOSコマンドを(個別に、またはスクリプトから)実行することにより、メトリック・データを取得できます。
次の3つのOSコマンドfetchletを使用できます。
OS fetchlet(RAW)
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表を返します。
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」を参照してください。
入力パラメータ
表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を実行すると、次の単一列表が生成されます。
内容がない場合は、\nにより、行2と行4の間に空白行が挿入されます。
注意: コマンドは、シェルで実行されている場合と同様には実行されません。したがって、パイプ、出力リダイレクションおよびバックグラウンド処理を含む共通シェル・シンボルは動作しません。コマンドを標準入力から読み取ることはできません。 fetchletは中断し、コマンドの終了を待機します。 コマンドの標準出力が取得され、標準エラーが取得されて標準出力に追加されます。 行は\nを使用してトークン化されます。 |
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を実行すると、デリミタを表す単一文字"|"により次の表が生成されます。
エラー処理
コマンドの起動に関する問題(コマンド・プログラムが見つからない)が発生すると、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文を特定のユーザーとして実行し、表結果を返します。
入力パラメータ
表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を使用している場合は、配列を次のように識別する必要があります。
|
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; /
オブジェクト識別子(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つのインスタンスが含まれているとします。
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
行は、それぞれサブ識別子1、2、3、4に対応します。
OIDS内の任意のOIDを別の配置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の出力は次のようになります。
図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だった場合、出力は次のようになります。
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は次の表(列のヘッダーを除く)を返します。
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.oracle.com/ url1=http://nedc.us.oracle.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管理エージェントにより、ソフトウェア・コンポーネントはランタイム・パフォーマンス・データをOracle Enterprise Manager Grid Controlにインポートできます。
DMS fetchletはOracle管理エージェントプラグイン・モジュールであり、DMSによりエクスポートされるパフォーマンス・データを管理エージェントがインポートできるようにします。DMS fetchletを使用すると、DMS APIコールを使用してインスツルメント処理されたコンポーネントは、そのパフォーマンス・データをEnterprise Manager Grid Controlと共有できます。
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プロパティは無視されます。
Oracle 9i Application Serverのインフラストラクチャのパフォーマンス監視を一貫して行うために、DMSは複数のコンポーネント(Apache、JServ、OSEおよびPortal)で使用されてきました。センサーは、簡単に使用でき、タイミング、カウントおよび分類に関連する詳細のほとんどを隠すため、パフォーマンス測定に関連する作業のほとんどを簡略化します。最後に、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は、URLのコンテンツを取得し、URLのコンテンツをデータとして返します。次の3つのfetchletを使用できます。
URL fetchlet
URL行
URL行トークン
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表を返します。
URLのRAWコンテンツが返されます。
エラー処理
URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。
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は次の表を返します。
エラー処理
URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。
注意
行は\nを使用してトークン化されます。
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は次の表を返します。
エラー処理
URLパラメータが指定されていない場合は、MissingParameterExceptionが発生します。
URLの形式が不正であるか、URLのコンテンツの取得でI/Oエラーが発生した場合は、FetchletExceptionが発生します。
注意
行は\nを使用してトークン化されます。
デリミタには、単一文字または文字のセットを使用できます。たとえば、行を縦線、プラスおよびアンダースコアで区切る必要がある場合は、"|+_"となります。"||"や"+|+"など、2つ以上のデリミタが同時に出力テキストに存在する場合は、それらのデリミタ間に空の文字列トークンがあるように扱われます。これらの空文字列は、結果表の列を取得します。行で始まるデリミタの前、または行で終わるデリミタの後に空文字列があるとはみなされません。
印刷不能文字(タブなど)をXMLのデリミタ・セットで表現するには、&#xHH;を使用します。Hは、文字の16進数識別子です。
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>
次の表が返されます。
エラー処理
URLまたはパターン・パラメータが指定されていない場合は、MissingParameterExceptionが発生します。
次の場合は、FetchletExceptionが生成されます。
URLの形式が不正な場合
URLのコンテンツの取得でI/Oエラーが発生した場合
URLコンテンツまたはパターンに無効なXMLが含まれている場合
注意
プロキシ・ホストまたはポート、あるいはその両方を設定すると、Java環境全体のjava.netパッケージに対してこれらの設定が変更され、プロキシ設定が変更された場合にスレッド・セーフになりません。
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が発生します。
一致する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コールに混在させることはできません。次の例では、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などのコールレベル・インタフェースにより、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つあります。
|
必須 |
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 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型のオブジェクトを返します。