修正処理ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、通知ルール、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対して自動化されたレスポンスをカスタマイズできます。たとえば、クリティカルな修正処理の実行が失敗したときに、社内のサポート用トラブル・チケット・システムに関するトラブル・チケットを開くためにOSスクリプトをコールする場合があります。この場合、スクリプトに「問題」または「中断」などのステータスを渡してトラブル・チケットを開き、問題を重大化させる必要があります。修正処理は、メトリック重大度およびポリシー違反に応じて実行できます。
通知システムは、MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトを介して修正処理ステータス変更情報をPL/SQLプロシージャに渡します。このオブジェクトのインスタンスは、ステータス変更ごとに作成されます。修正処理がステータスを変更すると、通知システムは通知ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトを渡します。これにより、プロシージャは渡されたMGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのフィールドにアクセスできます。
次の表に、受渡しできるすべてのジョブ・ステータスの変更属性を示します。
| 属性 |
データ型 |
追加情報 |
|---|---|---|
| job_name |
VARCHAR2(128) |
ジョブ名 |
| job_owner |
VARCHAR2(256) |
ジョブの所有者 |
| job_type | VARCHAR2(32) | ジョブのタイプ |
| job_status |
NUMBER |
ジョブの新規ステータス |
| state_change_guid |
RAW(16) |
状態変更レコードのGUID |
| job_guid |
RAW(16) |
ジョブの一意のID |
| execution_id |
RAW(16) |
実行の一意のID |
| targets |
SMP_EMD_NVPAIR_ARRAY |
ジョブが実行される対象のターゲット名/ターゲット・タイプのペアの配列 |
| metric_name |
VARCHAR2(256) |
修正処理が実行される原因となった、アラートのメトリック/ポリシー・ルールの名前。 |
| metric_column |
VARCHAR2(64) |
修正処理が実行される原因となった、アラートのメトリック列の名前。これはポリシー違反には使用されません。 |
| metric_value |
VARCHAR2(1024) |
修正処理が実行される原因となった、アラートのメトリック列の値。 |
| severity_code |
NUMBER |
修正処理が実行される原因となった、アラートの重大度コード。 |
| key_value_name |
VARCHAR2(512) |
キーの値の名前(例: マウント・ポイント)。 |
| key_value |
VARCHAR2(1290) |
表メトリックの場合、この列には、しきい値を定義する表にある行のキー列の値が含まれます。しきい値が表メトリックに関するものではない場合、またはしきい値がメトリック列の行すべてに適用される場合、この列の値はスペース1個となります。 |
| key_value_guid |
RAW(16) |
複合キーの値の名前に関連付けられているGUID。 |
| ctxt_list |
MGMT_NOTIFY_COLUMNS |
アラート・コンテキストの詳細。 |
| rule_owner |
VARCHAR2(64) |
通知が送信される原因となる通知ルールの名前。 |
| rule_name |
VARCHAR2(132) |
通知が送信される原因となる通知ルールの所有者。 |
修正処理に対するステータス変更が発生すると、通知システムはMGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのインスタンスを作成し、ステータス変更の値を移入します。次のステータス・コードがMGMT_JOBSパッケージに制約として定義されています。これらのコードを使用すると、MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのjob_statusフィールドのステータスのタイプを判別できます。
| 名前 |
データ型 |
値 |
|---|---|---|
| SCHEDULED_STATUS |
NUMBER(2) |
1 |
| EXECUTING_STATUS |
NUMBER(2) |
2 |
| ABORTED_STATUS |
NUMBER(2) |
3 |
| FAILED_STATUS |
NUMBER(2) |
4 |
| COMPLETED_STATUS |
NUMBER(2) |
5 |
| SUSPENDED_STATUS |
NUMBER(2) |
6 |
| AGENTDOWN_STATUS |
NUMBER(2) |
7 |
| STOPPED_STATUS |
NUMBER(2) |
8 |
| SUSPENDED_LOCK_STATUS |
NUMBER(2) |
9 |
| SUSPENDED_EVENT_STATUS |
NUMBER(2) |
10 |
| SUSPENDED_BLACKOUT_STATUS |
NUMBER(2) |
11 |
| STOP_PENDING_STATUS |
NUMBER(2) | 12 |
| SUSPEND_PENDING_STATUS |
NUMBER(2) | 13 |
| INACTIVE_STATUS |
NUMBER(2) | 14 |
| QUEUED_STATUS |
NUMBER(2) | 15 |
| FAILED_RETRIED_STATUS |
NUMBER(2) | 16 |
| WAITING_STATUS |
NUMBER(2) | 17 |
| SKIPPED_STATUS |
NUMBER(2) | 18 |
| REASSIGNED_STATUS |
NUMBER(2) | 20 |
CREATE TABLE ca_log (jobid RAW(16),
occured DATE);
CREATE OR REPLACE PROCEDURE LOG_PROBLEM_CAS(status_change IN MGMT_NOTIFY_CORRECTIVE_ACTION)
IS
BEGIN
-- Log all failed corrective actions
IF status_change.job_status = MGMT_JOBS.FAILED_STATUS
THEN
BEGIN
INSERT INTO ca_log (jobid, occured)
VALUES (status_change.job_guid, SYSDATE);
EXCEPTION
WHEN OTHERS
THEN
-- If there are any problems then get the notification retried
RAISE_APPLICATION_ERROR(-20000, 'Please retry');
END;
COMMIT;
END IF;
END LOG_PROBLEM_CAS;
次のプロシージャ指定を使用して、リポジトリ・データベースにPL/SQLプロシージャを作成します。
PROCEDURE p(status_change IN MGMT_NOTIFY_CORRECTIVE_ACTION)
プロシージャの実行時にエラーが発生した場合、エラー・コード-20000を使用するユーザー定義例外を返すことによって、通知システムでプロシージャへの通知の送信を再試行できます。前述の例を参照してください。この再試行処理は最初1分後に行われ、2分後、3分後などのように続き、通知がパージされるポイントである1日後までそれが続きます。
このPL/SQLプロシージャを、通知ルールでコールできる通知メソッドとして追加します。「PL/SQLプロシージャの追加」を参照してください。
スキーマ所有者、パッケージ名およびプロシージャ名を含む完全修飾名を必ず使用してください。プロシージャはリポジトリ所有者によって実行されるため、リポジトリ所有者にプロシージャの実行権限があります。
PL/SQLプロシージャを通知ルールに関連付けます。
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに重大度情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムに応じて異なります。
UNIX: $ENV_VARIABLE
MS Windows: %ENV_VARIABLE%
通知システムは、スクリプトをコールする前に次の環境変数を設定します。
| 環境変数 |
説明 |
|---|---|
| JOB_NAME |
ジョブの名前 |
| JOB_OWNER |
ジョブの所有者 |
| JOB_TYPE |
ジョブのタイプ |
| JOB_STATUS |
ジョブのステータス |
| TIMESTAMP |
重大度が発生した時刻 |
| NUM_TARGETS |
ターゲットの数 |
| TARGET_NAMEn |
n番目のターゲットの名前(例: TARGET_NAME1、TARGET_NAME2) |
| TARGET_TYPEn |
n番目のターゲットのタイプ(例: TARGET_TYPE1、TARGET_TYPE2)。 |
| METRIC |
修正処理が実行される原因となった、アラートのメトリックの名前。ポリシー違反には設定されません。 |
| POLICY_RULE |
修正処理が実行される原因となった、アラートのポリシー・ルールの名前。メトリック重大度には設定されません。 |
| METRIC_VALUE |
修正処理が実行される原因となった、アラートのメトリック列の値。 |
| VIOLATION_CONTEXT |
アラート・コンテキストを示す名前/値ペアのカンマで区切られたリスト。 |
| KEY_VALUE_NAME |
キーの値の名前(例: マウント・ポイント)。 |
| KEY_VALUE |
表メトリックの場合、この値はしきい値を定義する表内の行のキー列を表します。この情報を使用して、収集される特定の値が一意に識別されます。ターゲット名、ターゲット・タイプおよびメトリック名とともに、メトリック値を一意に識別できます。 |
| SEVERITY |
重大度のタイプ。たとえば、ターゲットの可用性に関連する重大度タイプは、次のとおりです。
その他のメトリックは次のいずれかの重大度になります。
|
| 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.