メトリック重大度の属性(重大度のレベル、タイプ、通知ルール、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、アラートに対して自動化されたレスポンスをカスタマイズできます。たとえば、OSスクリプトで社内のサポート用トラブル・チケット・システムに関するトラブル・チケットを開く場合は、スクリプトに重大度レベル(クリティカル、警告など)を渡してトラブル・チケットを開き、問題を重大化させる必要があります。違反レベル、通知ルール、ルール所有者などのポリシー違反に関する情報も、メトリック重大度と同じメカニズムを使用して、PL/SQLプロシージャに渡すことができます。
通知システムは、MGMT_NOTIFY_SEVERITYオブジェクトを介して重大度情報をPL/SQLプロシージャに渡します。このオブジェクトのインスタンスは、アラートごとに作成されます。アラートが発生すると、通知システムは通知ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトを渡します。これにより、プロシージャは渡されたMGMT_NOTIFY_SEVERITYオブジェクトのフィールドにアクセスできます。
次の表に、受渡しできるすべてのメトリックの重大度属性を示します。
| 属性 |
データ型 |
追加情報 |
|---|---|---|
| target_name |
VARCHAR2(64) |
ターゲット名。 |
| target_type |
VARCHAR2(64) |
ターゲット・タイプ。 |
| timezone | VARCHAR2(64) | ターゲットの地域のタイムゾーン。 |
| host_name |
VARCHAR2(128) |
ターゲットがあるホスト名。 |
| metric_name |
VARCHAR2(64) |
アラートの原因となったメトリック名またはポリシー名。 |
| metric_description |
VARCHAR2(128) |
メトリックまたはポリシーの説明。 |
| metric_column |
VARCHAR2(64) |
表メトリックの場合、メトリック列には、定義する表の列名が含まれます。定義するメトリックが表メトリックでない場合、この列の値はスペース1個となります。これはポリシー違反には使用されません。 |
| metric_value |
VARCHAR2(1024) |
メトリックの値。 |
| key_value_name |
VARCHAR2(512) | キーの値の名前(例: マウント・ポイント)。 |
| key_value_guid |
VARCHAR2(256) | 複合キーの値の名前に関連付けられているGUID。 |
| key_value |
VARCHAR2(1290) |
表メトリックの場合、この列には、しきい値を定義する表にある行のキー列の値が含まれます。しきい値が表メトリックに関するものではない場合、またはしきい値がメトリック列の行すべてに適用される場合、この列の値はスペース1個となります。 |
| ctxt_list |
MGMT_NOTIFY_COLUMNS |
アラート・コンテキストの詳細。 |
| collection_timestamp |
DATE |
ターゲットのステータス変更が最後に検出され、管理リポジトリに記録された時刻。 |
| severity_code |
NUMBER |
重大度レベルを識別する数値コード。後述の「重大度コード」の表を参照してください。 |
| message |
VARCHAR2(4000) |
アラート条件の追加情報を提供するために、アラートの作成時に生成されるオプションのメッセージ。 |
| severity_guid |
RAW(16) |
重大度または違反のGUID。 |
| metric_guid | RAW(16) | メトリックまたはポリシーのGUID。 |
| target_guid | RAW(16) | ターゲットのGUID。 |
| rule_owner |
VARCHAR2(64) |
通知が送信される原因となる通知ルールの名前。 |
| rule_name |
VARCHAR2(132) |
通知が送信される原因となる通知ルールの所有者。 |
ターゲットに対する重大度が発生すると、通知システムはMGMT_NOTIFY_SEVERITYオブジェクトのインスタンスを作成し、重大度の値を移入します。次の重大度コードがMGMT_GLOBALパッケージに制約として定義されています。これらのコードを使用すると、MGMT_NOTIFY_SEVERITYオブジェクトのseverity_codeフィールドの重大度タイプを判別できます。
| 名前 |
データ型 |
値 |
|---|---|---|
| G_SEVERITY_COMMENT |
NUMBER(2) |
10 |
| G_SEVERITY_CLEAR |
NUMBER(2) |
15 |
| G_SEVERITY_WARNING |
NUMBER(2) |
20 |
| G_SEVERITY_CRITICAL |
NUMBER(2) |
25 |
| G_SEVERITY_UNREACHABLE_CLEAR |
NUMBER(3) |
115 |
| G_SEVERITY_UNREACHABLE_START |
NUMBER(3) |
125 |
| G_SEVERITY_BLACKOUT_END |
NUMBER(3) |
215 |
| G_SEVERITY_BLACKOUT_START |
NUMBER(3) |
225 |
| G_SEVERITY_ERROR_END |
NUMBER(3) |
315 |
| G_SEVERITY_ERROR_START |
NUMBER(3) |
325 |
| G_SEVERITY_NO_BEACONS |
NUMBER(3) |
425 |
| G_SEVERITY_UNKNOWN | NUMBER(3) | 515 |
CREATE TABLE alert_log (target_name VARCHAR2(64),
alert_msg VARCHAR2(4000),
occured DATE);
CREATE OR REPLACE PROCEDURE LOG_CRITICAL_ALERTS(severity IN MGMT_NOTIFY_SEVERITY)
IS
BEGIN
-- すべてのクリティカルの重大度をログ出力
IF severity.severity_code = MGMT_GLOBAL.G_SEVERITY_CRITICAL
THEN
BEGIN
INSERT INTO alert_log (target_name, alert_msg, occured)
VALUES (severity.target_name, severity.message,
severity.collection_timestamp);
EXCEPTION
WHEN OTHERS
THEN
-- 問題の発生時に再試行の通知を取得する場合
RAISE_APPLICATION_ERROR(-20000, 'Please retry');
END;
COMMIT;
END IF;
END LOG_CRITICAL_ALERTS;
次のプロシージャ指定を使用して、リポジトリ・データベースにPL/SQLプロシージャを作成します。
PROCEDURE p(severity IN MGMT_NOTIFY_SEVERITY)
プロシージャの実行時にエラーが発生した場合、エラー・コード-20000を使用するユーザー定義例外を返すことによって、通知システムでプロシージャへの通知の送信を再試行できます。前述の例を参照してください。この再試行処理は最初1分後に行われ、2分後、3分後などのように続き、通知がパージされるポイントである1日後までそれが続きます。
このPL/SQLプロシージャを、通知ルールでコールできる通知メソッドとして追加します。「PL/SQLプロシージャの追加」を参照してください。
スキーマ所有者、パッケージ名およびプロシージャ名を含む完全修飾名を必ず使用してください。プロシージャはリポジトリ所有者によって実行されるため、リポジトリ所有者にプロシージャの実行権限があります。
PL/SQLプロシージャを通知ルールに関連付けます。
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに重大度情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムに応じて異なります。
UNIX: $ENV_VARIABLE
MS Windows: %ENV_VARIABLE%
通知システムは、スクリプトをコールする前に次の環境変数を設定します。
| 環境変数 |
説明 |
|---|---|
| TARGET_NAME |
重大度が発生したターゲットの名前。 |
| TARGET_TYPE |
重大度が発生したターゲットのタイプ。ターゲットは、監視可能なサービスとして定義されます。 |
| HOST |
ターゲットがあるマシンの名前。 |
| METRIC |
重大度を生成しているメトリック。 |
| METRIC_VALUE |
しきい値を超えたときのメトリック値。ポリシー違反用には設定しないでください。 |
| POLICY_RULE |
しきい値を超えたときのポリシー名。メトリック重大度用には設定しないでください。 |
| KEY_VALUE_NAME | キーの値の名前(例: マウント・ポイント)。 |
| KEY_VALUE |
表メトリックの場合、この値はしきい値を定義する表内の行のキー列を表します。この情報を使用して、収集される特定の値が一意に識別されます。ターゲット名、ターゲット・タイプおよびメトリック名とともに、メトリック値を一意に識別できます。 |
| VIOLATION_CONTEXT |
アラート・コンテキストを示す名前/値ペアのカンマで区切られたリスト。 |
| TIMESTAMP |
重大度が発生した時刻。 |
| SEVERITY |
重大度のタイプ。たとえば、ターゲットの可用性に関連する重大度タイプは、次のとおりです。
その他のメトリックは次のいずれかの重大度になります。
|
| MESSAGE |
条件をトリガーした対象の詳細を示すアラート・メッセージ。 |
| RULE_NAME |
重大度を発生させた通知ルールの名前。 |
| RULE_OWNER |
ルールを所有するEnterprise Manager管理者名。 |
スクリプトでは、これらの変数の一部またはすべてを参照できます。
リポジトリ・ホスト・マシンでOSコマンドを作成します。
管理リポジトリに接続する各管理サービス・マシンでOSコマンドを作成します。OSコマンドは絶対パス名であり、各管理サービス・ホスト・マシン上のパスとまったく同じパスにします(例: /u1/bin/logSeverity.sh)。コマンドは管理サービスを起動したユーザーとして実行されます。OSコマンドの実行時にエラーが発生した場合、終了コード100を返すことによって、通知システムでOSコマンドへの通知の送信を再試行できます。この再試行処理は最初1分後に行われ、2分後、3分後などのように続き、通知がパージされるポイントである1日後までそれが続きます。
次のemoms.propertiesのパラメータは、管理サービスにより中断されることなくOSコマンドが実行される期間を制御します。これによって、OSコマンドが過度に長い時間実行されるため他の通知の転送を妨げることが回避できます。デフォルトでは、コマンドは中断されるまで30秒間実行できます。次を参照してください(これらすべてのパラメータを説明するその他のdocにポインタを追加)。
# The amount of time in seconds after which an OS Command started by the
# Notification System will be killed if it has not exited
# em.notification.os_cmd_timeout=30
このOSコマンドを、通知ルールでコールできる通知メソッドとして追加します。「OSコマンドの追加」を参照してください。
通知ルールを定義(通知対象となるターゲットと通知を受け取る条件を選択)し、そのルールにOSコマンドを関連付けます。「通知ルールの定義」を参照してください。
Copyright (C) 1996, 2007, Oracle. All rights reserved.