通知システムによって、特定のインシデント、イベントまたは問題が発生したときにEnterprise Manager管理者に通知できます。
注意:
この章では、インシデント管理に精通していることを前提とします。インシデント管理を介したITインフラストラクチャのモニタリングと管理の詳細は、「インシデント管理の使用」を参照してください。
管理フレームワークの重要な部分として、通知は、特定のインシデント、イベントまたは問題の発生時にオペレーティング・システム・コマンド(スクリプトを含む)やPL/SQLプロシージャの実行などのアクションも実行できます。この機能により、ITプラクティスを自動化できます。たとえば、インシデント(データベースの動作(稼働/停止)ステータスのモニタリングなど)が発生したときに、通知システムによってOSスクリプトを介して社内のトラブル・チケットを自動的に開き、担当のITスタッフが適時に応答できるようにします。
また、Enterprise Managerの通知システムでは、Simple Network Management Protocol(SNMP)トラップを使用して、HP OpenViewなどのSNMP対応サード・パーティ・アプリケーションにEnterprise Managerで発行されたイベントのトラップを送信できます。一部の管理者は、特定のメトリックがしきい値を超えた時点でサード・パーティ・アプリケーションに通知を送信する場合があります。
この章の内容は次のとおりです。
すべてのEnterprise Manager管理者は、各自の電子メール通知を設定できます。スーパー管理者は、他のEnterprise Manager管理者の通知も設定できます。
Enterprise Managerで電子メール通知の送信を行うには、あらかじめ、通知システムで使用する送信メール(SMTP)サーバーを指定する必要があります。設定後は、自分の電子メール通知を定義できます。スーパー管理者権限を持っている場合は、他のEnterprise Manager管理者の通知も定義できます。
送信メール(SMTP)サーバーは、「通知メソッド」ページで指定します。「通知メソッド」ページを表示するには、「設定」メニューから、「通知」、「メール・サーバー」の順に選択します。
注意:
Enterprise Managerの通知システムを構成するには、スーパー管理者権限が必要です。これには、次のものが含まれます。
SMTPサーバーの設定
通知メソッドの定義
通知電子メール形式のカスタマイズ
1つ以上の送信メール・サーバー名、(必要な場合は)メール・サーバー認証資格証明(「ユーザー名」、「パスワード」および「パスワードの確認」)、通知メッセージの送信者として表示する名前、および電子メール通知の送信に使用する電子メール・アドレスを指定します。送信者のメール・アドレスと呼ばれるこのアドレスは、指定する各メール・サーバー上で有効なアドレスである必要があります。電子メール通知の送信時に問題が発生した場合は、この電子メール・アドレスにメッセージが送信されます。例3-1は通知メソッド・エントリの例を示しています。
注意:
このページで指定する電子メール・アドレスは、通知の送信先の電子メール・アドレスではありません。この電子メール・アドレス(通知の送信先)は「パスワード」および「電子メール」ページで指定する必要があります。「設定」メニューから、「プリファレンス」、「Enterprise Managerのパスワードおよび電子メール」の順に選択します。
標準的な使用方法として、各ユーザーは独自の電子メール・アドレスを持つ必要があります。
電子メール・サーバーの構成後、「メール・サーバーのテスト」をクリックして電子メール設定を検証します。「送信者の電子メール・アドレス」フィールドで指定した電子メール・アカウントで、電子メール・メッセージが受信されていることを確認する必要があります。
複数のメール・サーバーを定義すると、電子メール通知配信の信頼性が向上します。少なくとも1つの電子メール・サーバーが稼働している場合は、電子メール通知が配信されます。通知の負荷はOMSによって複数の電子メール・サーバーに分散され、20通の電子メールが送信された後でOMSがこれらのサーバーを切り替えます(サーバーは可用性に従って割り当てられます)。切替えは、oracle.sysman.core.notification.emails_per_connection emomsプロパティで制御されます。
SLB使用時のCloud ControlコンソールURLの設定
サーバー・ロード・バランサ(SLB)がOMSインスタンス用に構成された複数OMS環境がある場合、Enterprise Managerからの電子メールが、電子メールの発信元である特定のOMS URLではなく、SLB URLを介してEnterprise Managerコンソールにユーザーを向けるように、コンソールURLを更新する必要があります。
コンソールURLを変更する手順:
例3-1 メール・サーバーの設定
送信メール(SMTP)サーバー - smtp01.example.com:587, smtp02.example.com
ユーザー名 - myadmin
パスワード - ******
パスワードの確認 - ******
送信者ID - Enterprise Manager
送信者の電子メール・アドレス - mgmt_rep@example.com
セキュアな接続を使用: いいえ: 電子メールは暗号化されません。SSL: 電子メールはSecure Sockets Layer protocolを使用して暗号化されます。使用可能な場合はTLS: メール・サーバーがTransport Layer Security(TLS)プロトコルをサポートしている場合、電子メールはTLSを使用して暗号化されます。サーバーがTLSをサポートしない場合、電子メールは自動的にプレーン・テキストで送信されます。
電子メールで通知を受信するには、「パスワード」および「電子メール」ページ(「設定」メニューから、「プリファレンス」、「Enterprise Managerのパスワードおよび電子メール」の順に選択)で自分の電子メール・アドレスを指定する必要があります。通知用の電子メール・アドレスを定義するのみでなく、電子メール・アドレスで使用する通知メッセージ形式(長い、短い、ページャ)を関連付けます。
電子メールを設定するには、次の3つの手順を実行します。
手順1: 電子メール・アドレスの定義。
手順2: 通知スケジュールの設定
手順3: 電子メールを受信するためのインシデント・ルールのサブスクライブ。
例3-2 メトリック・アラート用の長い電子メール通知
Target type=Host Target name=machine6140830.example.com Message=Filesystem / has 54.39% available space, fallen below warning (60) or critical (30) threshold. Severity=Warning Event reported time=Apr 28, 2011 2:33:55 PM PDT Event Type=Metric Alert Event name=Filesystems:Filesystem Space Available (%) Metric Group=FilesystemsMetric=Filesystem Space Available (%)Metric value=54.39Key Value=/Key Column 1=Mount PointRule Name=NotifRuleSet1,Event rule1 Rule Owner=SYSMAN
例3-3 アラート用の短い書式の電子メール通知
Subject is : EM:Unreachable Start:myhost Body is : Nov 16, 2006 2:02:19 PM EST:Agent is Unreachable (REASON = Connection refused) but the host is UP
「電子メール(短い形式)」および「ページャ(短い形式)」形式の詳細
Enterprise Managerでは、ページングやSMSなどのメッセージ・サービスを直接はサポートしていませんが、かわりに外部のゲートウェイを使用し、電子メールからページへの変換などを実行しています。Enterprise Manager 12c以上では、通知システムで、ページまたは電子メールとして電子メール・アドレスを明示的にタグ付けできるようになりました。この2つの通知方法の明示的なシステムの違いにより、インシデント・ルールの複数アクション機能を利用できます。たとえば、電子メールとページの違いは、イベント重大度が警告の場合に電子メールを送信し、重大度がクリティカルの場合にページを表示する場合に必要です。この機能をサポートするために、短い形式の電子メールの省略バージョンを送信するページャ形式が使用可能になりました。
注意:
ページャを受け取るには、「インシデント・ルール」の「ページ通知」オプションに管理者を追加する必要があります。
電子メール通知アドレスの定義後、通知スケジュールを定義する必要があります。たとえば、電子メール・アドレスがuser1@myco.com、user2@myco.comおよびuser3@myco.comの場合、通知スケジュールの各期間について、これらの電子メール・アドレスの中から1つ以上を選択して使用できます。ユーザー・プリファレンス(「Enterprise Managerのパスワードおよび電子メール」ページ)で指定した電子メール・アドレスのみを通知スケジュールで使用できます。
注意:
最初に電子メール・アドレスを入力すると、常時毎週の通知スケジュールが自動的に設定されます。モニタリング要件に合わせてこのスケジュールを確認し、変更できます。
通知スケジュールとは、コール時スケジュール(Enterprise Managerにより通知の送信に使用される期間および電子メール・アドレス)を指定するときに使用する反復スケジュールです。各管理者には、通知スケジュールが1つのみ存在します。管理者に通知を送信する必要がある場合、Enterprise Managerにより管理者の通知スケジュールが参照され、使用する電子メール・アドレスが決定されます。スーパー管理者であるか、通常のEnterprise Manager管理者であるかによって、通知スケジュールを定義するプロセスは若干異なります。
通常のEnterprise Manager管理者が自分の通知スケジュールを定義する手順は、次のとおりです。
インシデント・ルールとは、インシデントを構成する特定のイベントについて通知を送信する基準を指定する、ユーザー定義のルールです。インシデント・ルール・セットは、名前が示すように、同じインシデントに関連付けられている1つ以上のルールから構成されます。
インシデント・ルールの作成時に、関心のあるターゲット、ルールを適用するイベントのタイプなどの基準を指定します。具体的に、指定されたルールでは、対象となる基準と、これらの通知の送信に使用する通知メソッド(電子メールなど)を指定できます。たとえば、データベースが停止した場合やデータベース・バックアップ・ジョブが失敗した場合に、電子メールが送信され、ログ・トラブル・チケット通知メソッドがコールされるようなルールを設定できます。または、ホストのCPUまたはメモリー使用率がクリティカル重大度に到達した場合に、SNMPトラップが他の管理コンソールに送信されるルールを定義することもできます。単一のルールで、特定の条件に基づく複数のアクションを実行できるという事実により、通知の柔軟性がさらに向上します。例: マシンのメモリー使用状況などの条件をモニタリングする場合、警告のインシデント重大度(メモリー使用率が80%)に対して管理者に電子メールを送信し、重大度がクリティカル(メモリー使用率が99%)の場合は管理者に即時にページを表示します。
「設定」メニューで「インシデント」、「インシデント・ルール」の順に選択します。
インシデント・ルール - すべてのエンタープライズ・ルール・ページで、該当するインシデントのエスカレーション・ルールを含むルール・セットをクリックし、「編集」をクリックします。ルールはルール・セットのコンテキストで作成されます。
注意: 既存のルール・セットがない場合は、「ルール・セットの作成」をクリックしてルール・セットを作成します。次に、ルール・セットの作成の一環としてルールを作成します。
ルール・セットの編集ページの「ルール」セクションで、変更するエスカレーション・ルールをハイライトして「編集」をクリックします。
アクションの追加ページに移動します。
インシデントをエスカレートするアクションを選択し、「編集」をクリックします。
「通知」セクションで、「電子メールCC」リストにDBAを追加します。
「続行」をクリックしてルール・セットの編集ページに戻り、「保存」をクリックします。
即時利用可能なインシデント・ルール
Enterprise Managerには、最も一般的なモニタリング条件に対応する次の2つのインシデント・ルール・セットが付属しています。
すべてのターゲットのインシデント管理ルールセット
自己更新のイベント管理ルールセット
即時利用可能なインシデント・ルールで定義された条件が要件を満たす場合は、前の項で説明したサブスクライブ手順を使用して、ルールに定義されている条件の電子メール通知を受信するようにサブスクライブできます。
すべてのターゲットに設定されている即時利用可能なインシデント・ルールは、デフォルトで警告アラートの電子メールを生成しません。
独自のインシデント・ルールの作成
独自のカスタム・ルールを定義できます。次の手順では、スーパー管理者ではない管理者がインシデント・ルールを作成するプロセスを説明します。
独自のインシデント・ルールを作成する手順は、次のとおりです。
スーパー管理者権限を持っている場合は、他のEnterprise Manager管理者のために電子メール通知を設定できます。他のEnterprise Manager管理者のために電子メール通知を設定するには、次の手順を実行する必要があります。
手順1: 各管理者アカウントに電子メール・アドレスが関連付けられていることの確認
電子メール通知の送信宛先の各管理者は、有効な電子メール・アドレスを持っている必要があります。
「設定」メニューから、「セキュリティ」、「管理者」の順に選択します。
管理者ごとに、電子メール・アドレスを定義します。これにより、指定されたすべての電子メール・アドレスを使用するこのユーザー向けに常時通知スケジュールが設定されます。デフォルトでは、これにより、タイプが電子メール(長い形式)に設定された電子メールIDが追加されます。ここでは「電子メール・タイプ」オプションを指定することはできません。
Enterprise Managerでは、管理者の通知スケジュールを編集する際に、管理者のアドレスも指定できます。
手順2: 管理者の通知スケジュールの定義
各管理者の電子メール通知アドレスを定義後、それぞれの通知スケジュールを定義する必要があります。初めて電子メール・アドレスを指定した際には、デフォルトの常時通知スケジュールが作成されますが、通知スケジュールの内容を再確認し、必要に応じて編集する必要があります。
「設定」メニューから、「通知」、「通知スケジュール」の順に選択します。
垂直ナビゲーション・バーの「スケジュール」をクリックします(「通知」の下にあります)。「通知スケジュール」が表示されます。
編集する通知スケジュールを所有する管理者を指定し、「変更」をクリックします。
「スケジュール定義の編集」をクリックします。スケジュール定義の編集: 期間ページが表示されます。必要に応じて、ローテーション・スケジュールを変更します。
「続行」をクリックします。「スケジュール定義の編集: 電子メール・アドレス」ページが表示されます。
「スケジュール定義の編集: 電子メール・アドレス」ページ上の指示に従って、通知スケジュールを変更します。
終了後、「終了」をクリックします。
管理者ごとに、手順3から手順7までを繰り返します。
手順3: 管理者へのインシデント・ルールの割当て
通知スケジュールを設定後、指定した管理者ごとに適切なインシデント・ルールを割り当てる必要があります。
Enterprise Managerでは、スーパー管理者は、すべてのイベント、インシデント、問題、およびインストールされている特定のイベント・タイプに対して、グローバルな電子メール通知をカスタマイズできます。「デフォルト・イベント電子メール・テンプレート」をカスタマイズすることで、すべてのイベントのデフォルトの動作を変更できます。また、イベント・タイプのテンプレートをカスタマイズすることで、特定のイベント・タイプの動作をさらにカスタマイズできます。たとえば、メトリック・アラート・イベント・タイプのメトリック・アラート・イベント・テンプレートをカスタマイズできます。スーパー管理者は、簡単なスクリプトで事前定義済の基本要素(属性とラベル)を使用して様々な情報コンテンツを選択し、アラートの電子メールをカスタマイズできます。
電子メールをカスタマイズするには、次の操作を実行します。
電子メール・テンプレートのカスタマイズ・ページから、Enterprise Managerが電子メール通知の生成に使用する電子メール・テンプレートの内容を変更できます。「電子メール・テンプレートの編集」ページからは、組込みのアシスタントやオンライン・ヘルプを利用して、スクリプトの書式設定、構文およびオプションに関する広範囲な情報を参照できます。
次のリファレンスでは、電子メールを定義するために使用される、疑似言語の語義およびコンポーネントの構文を簡潔に示します。疑似言語により、電子メール通知をカスタマイズするための単純な、ただし柔軟な方法が提供されます。次に、疑似言語の変換/制限のサマリーを示します。
--で始まる個別の行を使用して、コメント(または任意の自由形式テキスト)を追加できます。コメントは、行の終わりに付加することもできます。
属性を使用できます。
IF、ELSE、ENDIF制御構造を使用できます。ANDまたはORによって、複数の条件を使用することもできます。ネストされたIF文はサポートされていません。
書式設定の目的でスペースを挿入できます。実際の電子メールでは、行頭のスペースは無視されます。行頭にスペースを挿入するには、[SP]属性を使用します。
エスケープするには/を使用し、属性名、演算子またはIF句を追加するには、[または]を使用します。
HTMLはサポートされません。
予約語および予約演算子
次の表に、電子メール・スクリプトの変更で使用されるすべての予約語と予約演算子を示します。
表3-1 予約語および予約演算子
予約語および予約演算子 | 説明 |
---|---|
IF、ELSIF、ENDIF、ELSE |
IF-ELSE構造の中で使用されます。 |
AND、OR |
ブール演算子 - IF-ELSE構造でのみ使用されます。 |
NULL |
属性に関して、NULL値をチェック - IF-ELSE構造でのみ使用されます。 |
| |
パイプ演算子 - 属性のリスト内で最初の非NULL値を示すのに使用されます。 次に例を示します。
|
EQ、NEQ |
EqualおよびNot-Equal演算子 - NULL、STRING、NUMERIC値に適用できます。 |
/ |
エスケープ文字 - 予約語および予約演算子をエスケープするのに使用します。エスケープ文字は、それに続く文字が別の意味で解釈されることを表します。 |
[、] |
区切り文字は、属性名とIF節の境界を決定します。 |
構文の要素
リテラル・テキスト
電子メールのコンテンツの一部としてテキストを指定できます。このテキストは電子メールに表示されますが、Oracle Management Services (OMS)の言語設定が変更されていると、翻訳はされません。たとえば、'my Oracle Home'は、生成後の電子メールでは'my Oracle Home'と表示されます。
事前定義された属性
事前定義された属性/ラベルは、特定のコンテキストで実際の値に置き換えられます。事前定義された属性/ラベルを指定するには、次の構文を使用します。
[PREDEFINED_ATTR]
属性名は、大文字でも小文字でも構いません。構文解析のプロセスでは、大/小文字が区別されません。
一組の大カッコを使用して、事前定義された属性とリテラル・テキストとを区別します。たとえば、ジョブの電子メール通知の場合、実際のジョブ名は[EXECUTION_STATUS]
で置き換えられます。メトリック・アラート通知の場合、[METIRC_COLUMN]
は実際のメトリック列の名前で置換されます。
エスケープ文字"/"を使用して、単語を指定し、それらを事前定義されたラベル/属性として解析されないようにできます。たとえば、/[NEW/]
は、解釈される際、事前定義された属性である[NEW]
とはみなされません。
演算子
EQ、NEQ
- テキストおよび数値に使用します。
NULL
: テキストおよび数値に使用します。
GT、LT、GE、LE
- 数値に使用します。
制御構造
次の表に、使用可能なスクリプト制御構造を示します。
表3-2 制御構造
制御構造 | 説明 |
---|---|
パイプ"|" |
2つ以上の属性を'|'文字で区切ることができます。次に例を示します。 この例では、現在のアラート・コンテキスト内で使用可能な属性のみが実際の値に置換され、電子メールで使用されます。複数の属性が該当する場合、一番左の属性のみが使用されます。 |
IF |
テキスト・ブロックが条件文になります。1レベルのIFおよびELSIFのみサポートされます。ネストされたIF構造はサポートされていません。 NULL値にEQ/NEQ演算子を使用すると、IFまたはELSIF評価ですべての属性が使用できます。他の演算子は、"SEVERITY"と"REPEAT_COUNT"でのみ使用可能です。 IFブロック内では、値を引用符" "で囲む必要があります。Enterprise Managerでは、"EQ"とその他のキーワード("and"、"or"など)の位置に基づいて属性名およびその値を抽出します。次に例を示します。 [IF REPEAT_COUNT EQ “1" AND SEVERITY EQ “CRITICAL" THEN] 前述の文は、アラートの属性が次の条件に一致する場合に真になります。
IFブロックの例: [IF EXECUTION_STATUS NEQ NULL] [JOB_NAME_LABEL]=[EXECUTION_STATUS] [JOB_OWNER_LABEL]=[JOB_OWNER] [ENDIF] [IF SEVERITY_CODE EQ CRITICAL ] [MTRIC_NAME_LABEL]=[METRIC_GROUP] [METRIC_VALUE_LABEL]=[METRIC_VALUE] [TARGET_NAME_LABEL]=[TARGET_NAME] [KEY_VALUES] [ENDIF] IFとELSEIFブロックの例: [IF SEVERITY_CODE EQ CRITICAL] statement1[ELSIF SEVERITY_CODE EQ WARNING] statement2[ELSIF SEVERITY_CODE EQ CLEAR] statement3[ELSE] statement4[ENDIF] |
コメント
1行のテキストの先頭に、ハイフンを2つ(--)付加することによって、スクリプトにコメントを追加できます。次に例を示します。
-- Code added on 8/3/2009 [IF REPEAT_COUNT NEQ NULL] . . .
コメントは、テキスト行の最後にも配置できます。
[IF SEVERITY_SHORT EQ W] -- for Warning alert
カスタマイズの内容に含まれるHTMLタグ
HTMLタグの使用はサポートされません。
Enterprise Managerでは、電子メール・スクリプトを解析する際、HTMLタグに含まれる"<"および">"の文字をエンコードした形式(<および>)に変換します。これにより、宛先のシステムでは、HTMLタグがHTMLとして扱われなくなります。
例
電子メールのカスタマイズ・テンプレート・スクリプトでは、次の3つの主要な演算子をサポートします。
比較演算子: EQ/NEQ/GT/LT/GE/LE論理演算子: AND/ORパイプライン演算子: |
繰返し通知を使用すると、インシデントが通知されるか、「繰返し通知の最大数」の値に到達するまで、繰り返し通知できます。Enterprise Managerでは、すべての通知メソッド(電子メール、OSコマンド、PL/SQLプロシージャおよびSNMPトラップ)向けの繰返し通知をサポートします。
繰返し通知のグローバル構成
通知メソッドで繰返し通知を(グローバルに)有効にするには、「通知メソッド」ページの「繰返し通知の送信」オプションを選択します。繰返し通知の最大回数の設定に加えて、通知送信の時間間隔も設定できます。
注意:
Oracleデータベース・バージョン10以上では、aq_tm_processes init.oraパラメータを変更しないことをお薦めします。ただし、このパラメータを変更する必要がある場合は、繰返し通知機能の値を1以上にする必要があります。Enterprise Managerリポジトリ・データベース・バージョンが9.2の場合は、aq_tm_processes init.oraパラメータを少なくとも1に設定して、繰返し通知の機能を有効化します。
インシデント・ルールを通じた繰返し通知の構成
通知メソッド・レベルでグローバルに繰返し通知を設定する場合、柔軟性が不十分な可能性があります。たとえば、イベント・タイプに基づいて異なる繰返し通知設定を使用する場合などが考えられます。Enterprise Managerでは、個別のインシデント・ルール・セットまたはルール・セット内の個別のルールに繰返し通知を設定することでこれを実現します。ルール・レベルで設定した繰返し通知は、通知メソッド・レベルで定義されたものより優先されます。
注意:
繰返し通知は、「繰返し通知の送信」オプションが「通知メソッド」ページで有効化されている場合のみ送信されます。
電子メール以外の繰返し通知
電子メール以外の繰返し通知(PL/SQL、OSコマンドおよびSNMPトラップの通知メソッド)では、各メソッドを有効にして繰返し通知をサポートする必要があります。新しい通知メソッドを追加、または既存のメソッドを編集する際に、「繰返し通知のサポート」オプションを選択できます。
通知メソッドは、通知が送信されるメカニズムです。Enterprise Managerスーパー管理者は、電子メール通知メソッドを構成することで電子メール通知を設定できます。多くの場合、これはOracle Management Serviceのインストールの一環としてすでに設定されています。
Enterprise Managerスーパー管理者は、他のカスタム通知メソッドを定義することもできます。たとえば、イベント通知をサード・パーティのトラブル・チケット・システムに転送することが必要な場合があります。サード・パーティのトラブル・チケット・システムへのAPIが使用可能であると想定した場合、カスタム通知メソッドを作成して、適切なAPIを持つカスタムOSスクリプトをコールできます。カスタム通知メソッドは、「トラブル・チケットのログ」など、ユーザーフレンドリな形式で名前を付けることができます。カスタム・メソッドが定義されると、管理者は、トラブル・チケット・システムにアラートを送信する必要があるたびに、「トラブル・チケットのログ」というグローバルに使用可能な通知を呼び出すのみで済みます。
カスタム通知メソッドは、カスタムOSスクリプトまたは任意のカスタムPL/SQLプロシージャに基づいて、またはSNMPトラップを送信することで定義できます。4番目のタイプの通知メソッド(Javaコールバック)は、Oracle内部機能をサポートするために存在し、Enterprise Manager管理者が作成または編集することはできません。
「OSコマンド」、「PL/SQL」および「SNMPトラップ」の通知メソッドを定義できるのはスーパー管理者のみです。ただし、Enterprise Managerの管理者は誰でも、(スーパー管理者が定義した)これらの通知メソッドをインシデント・ルールにアクションとして追加できます。
「通知メソッド」ページでは、次の内容を実行できます。
通知システムは、インシデント・ルールがOSコマンド拡張通知アクションと一致した場合にカスタム・スクリプトを呼び出すことができます。カスタム・スクリプトは、環境変数を通じて、一致するイベント、インシデントおよび問題の通知を受信します。
環境変数の値の長さは、デフォルトで512文字に制限されています。デフォルト制限を変更するには、oracle.sysman.core.notification.oscmd.max_env_var_lengthという名前のemomsプロパティを構成します。
注意:
OSコマンドに基づく通知メソッドは、スーパー管理者権限を持つ管理者が構成する必要があります。
注意:
通知を受信するために「sudo」などのOSコマンドを実行すると、コマンドにはOMSアカウントの読取り権限がないため失敗します。OMSアカウントには、通知を送信するためにOSコマンドに対する読取り権限が必要です。
権限の問題を解決するには、コマンドをOMS管理者アカウントが読取り可能なラッパー・スクリプトに埋め込みます。コマンドがラッパー・スクリプトに含まれたら、OSコマンドのかわりにこのスクリプトを指定します。
カスタム・スクリプトの登録
カスタム・スクリプトを使用するには、最初にそのスクリプトを通知システムに登録する必要があります。これは、次の4つの手順で実行します。
例3-4 oracle.sysman.core.notification.os_cmd_timeout emomsプロパティの変更
emctl set property -name oracle.sysman.core.notification.os_cmd_timeout value 30
例3-5 OSコマンド通知メソッド
Name Trouble Ticketing Description Notification method to log trouble ticket for a severity occurrence OS Command /private/mozart/bin/logTicket.sh
手順1: OSコマンドまたはスクリプトの定義
インシデント・ルールがOSコマンド拡張通知アクションと一致する場合に通知システムによってコールされるOSコマンドまたはスクリプトを指定できます。スクリプト本体で、インシデント、イベントまたは問題のコンテキスト情報、修正処理の実行ステータス、およびジョブ実行ステータスを使用できます。このコンテキスト情報をOSコマンド/スクリプトに渡すと、自動化されたレスポンス固有イベント条件をカスタマイズできます。たとえば、OSスクリプトで社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開く場合、スクリプトに重大度レベル(クリティカル、警告など)を渡すことによって、該当する詳細とともにトラブル・チケットを開いて問題を提示できます。特定タイプの情報をOSコマンドまたはスクリプトに渡す方法の詳細は、次の各項を参照してください。
手順2: 各管理サービス・ホスト上へのスクリプトのデプロイ
管理リポジトリに接続する各管理サービス・ホスト・マシン上に、OSコマンドまたはスクリプトをデプロイする必要があります。OSコマンドは、管理サービスを開始したユーザーで実行されます。OSコマンドまたはスクリプトは、各管理サービス・ホスト・マシン上の同じ場所にデプロイする必要があります。
注意:
スクリプトとOSコマンドは、両方とも絶対パスを使用して指定する必要があります。たとえば、/u1/bin/logSeverity.shなどです。
このコマンドは、管理サービスを開始したユーザーによって実行されます。OSコマンドの実行中にエラーが発生した場合は、終了コード100を返すことで、OSコマンドへの通知の送信を再試行するように通知システムに指示できます。プロシージャの再試行は、最初は1分後に、次は2分後、3分後に、最後は30分後に行われます。これ以降、プロシージャの再試行は、通知が24時間経過するまで、30分ごとに行われます。その後、通知はパージされます。
例3-4に、管理サービスにより中断されることなくOSコマンドを実行できる期間を制御するemoms.propertiesのパラメータを示します。これによって、OSコマンドが過度に長い時間実行されるため他の通知の転送を妨げることが回避できます。デフォルトでは、コマンドは中断されるまで30秒間実行できます。oracle.sysman.core.notification.os_cmd_timeout emomsプロパティを構成して、デフォルトのタイムアウト値を変更できます。
手順3: OSコマンドまたはスクリプトを新規の通知メソッドとして登録
このOSコマンドをインシデント・ルールでコールできる通知メソッドとして追加します。スーパー管理者としてログインします。「設定」メニューから、「通知」、「通知メソッド」の順に選択します。このページから、「OSコマンド」タイプに基づいて新しい通知を定義します。「OSコマンドおよびスクリプトを使用した通知の送信」を参照してください。
各OSコマンドの通知メソッドには次の情報が必要です。
名前
説明
他の管理者がこのメソッドの機能を理解できるようにするため、名前と説明は両方とも明快で直観的なものにします。
OSコマンド
「OSコマンド」フィールドには、OSコマンドまたはスクリプトをフルパスで入力する必要があります(例: /u1/bin/myscript.sh
)。複数の管理サービスを使用している環境では、管理サービスが存在する各マシン上のパスとまったく同じパスを入力します。フルパスの後にコマンドライン・パラメータを追加できます(例: /u1/bin/myscript.sh arg1 arg2)。
例3-5は、通知メソッドに必要な情報を示しています。
注意:
システムごとに複数のOSコマンドが構成されている場合があります。
手順4: 通知メソッドのインシデント・ルールへの割当て。
既存のルールを編集(または新規のインスタンス・ルールを作成)後、メソッド・ページを表示できます。「設定」メニューから、「インシデント」、「インシデント・ルール」の順に選択します。インシデント・ルール・ページから、使用可能なすべてのルール・セットにアクセスできます。
OSコマンドまたはスクリプトにイベント、インシデントおよび問題情報を渡す方法の詳細は、「OSコマンドまたはスクリプトへのイベント、インシデント、問題情報の受渡し」を参照してください。
例3-6に示すOSスクリプトの例では、ログ・ファイルに環境変数エントリが付加されています。この例のスクリプトでは、ファイル・サーバーの重大度の発生が記録されます。ファイル・サーバーに接続できない場合、終了コード100が返され、Oracle Management Service通知システムで通知が再試行されます。
例3-6 OSコマンド・スクリプトの例
#!/bin/ksh LOG_FILE=/net/myhost/logs/event.log if test -f $LOG_FILE then echo $TARGET_NAME $MESSAGE $EVENT_REPORTED_TIME >> $LOG_FILE else exit 100 fi
例3-7には、oscmdNotify.logファイルにインシデントとイベントの両方のアラート情報を記録するOSスクリプトが示されています。ファイルは/net/myhost/logsディレクトリに保存されます。
例3-7 アラート・ロギング・スクリプト
#!/bin/sh# LOG_FILE=/net/myhost/logs/oscmdNotify.log echo '-------------' >> $LOG_FILE echo 'issue_type=' $ISSUE_TYPE >> $LOG_FILE echo 'notif_type=' $NOTIF_TYPE >> $LOG_FILE echo 'message=' $MESSAGE >> $LOG_FILE echo 'message_url' = $MESSAGE_URL >>$LOG_FILE echo 'severity=' $SEVERITY >> $LOG_FILE echo 'severity_code' = $SEVERITY_CODE >>$LOG_FILE echo 'ruleset_name=' $RULESET_NAME >> $LOG_FILE echo 'rule_name=' $RULE_NAME >> $LOG_FILE echo 'rule_owner=' $RULE_OWNER >> $LOG_FILE echo 'repeat_count=' $REPEAT_COUNT >> $LOG_FILE echo 'categories_count' = $CATEGORIES_COUNT >>$LOG_FILE echo 'category_1' = $CATEGORY_1 >>$LOG_FILE echo 'category_2' = $CATEGORY_2 >>$LOG_FILE echo 'category_code_1' = $CATEGORY_CODE_1 >>$LOG_FILE echo 'category_code_2' = $CATEGORY_CODE_2 >>$LOG_FILE echo 'category_codes_count' = $CATEGORY_CODES_COUNT >>$LOG_FILE # event if [ $ISSUE_TYPE -eq 1 ] then echo 'host_name=' $HOST_NAME >> $LOG_FILE echo 'event_type=' $EVENT_TYPE >> $LOG_FILE echo 'event_name=' $EVENT_NAME >> $LOG_FILE echo 'event_occurrence_time=' $EVENT_OCCURRENCE_TIME >> $LOG_FILE echo 'event_reported_time=' $EVENT_REPORTED_TIME >> $LOG_FILE echo 'sequence_id=' $SEQUENCE_ID >> $LOG_FILE echo 'event_type_attrs=' $EVENT_TYPE_ATTRS >> $LOG_FILE echo 'source_obj_name=' $SOURCE_OBJ_NAME >> $LOG_FILE echo 'source_obj_type=' $SOURCE_OBJ_TYPE >> $LOG_FILE echo 'source_obj_owner=' $SOURCE_OBJ_OWNER >> $LOG_FILE echo 'target_name' = $TARGET_NAME >>$LOG_FILE echo 'target_url' = $TARGET_URL >>$LOG_FILE echo 'target_owner=' $TARGET_OWNER >> $LOG_FILE echo 'target_type=' $TARGET_TYPE >> $LOG_FILE echo 'target_version=' $TARGET_VERSION >> $LOG_FILE echo 'lifecycle_status=' $TARGET_LIFECYCLE_STATUS >> $LOG_FILE echo 'assoc_incident_escalation_level' = $ASSOC_INCIDENT_ESCALATION_LEVEL >>$LOG_FILE echo 'assoc_incident_id' = $ASSOC_INCIDENT_ID >>$LOG_FILE echo 'assoc_incident_owner' = $ASSOC_INCIDENT_OWNER >>$LOG_FILE echo 'assoc_incident_acknowledged_by_owner' = $ASSOC_INCIDENT_ACKNOWLEDGED_BY_OWNER >>$LOG_FILE echo 'assoc_incident_acknowledged_details' = $ASSOC_INCIDENT_ACKNOWLEDGED_DETAILS >>$LOG_FILE echo 'assoc_incident_priority' = $ASSOC_INCIDENT_PRIORITY >>$LOG_FILE echo 'assoc_incident_status' = $ASSOC_INCIDENT_STATUS >>$LOG_FILE echo 'ca_job_status' = $CA_JOB_STATUS >>$LOG_FILE echo 'event_context_attrs' = $EVENT_CONTEXT_ATTRS >>$LOG_FILE echo 'last_updated_time' = $LAST_UPDATED_TIME >>$LOG_FILE echo 'sequence_id' = $SEQUENCE_ID >>$LOG_FILE echo 'test_date_attr_noref' = $TEST_DATE_ATTR_NOREF >>$LOG_FILE echo 'test_raw_attr_noref' = $TEST_RAW_ATTR_NOREF >>$LOG_FILE echo 'test_str_attr1' = $TEST_STR_ATTR1 >>$LOG_FILE echo 'test_str_attr2' = $TEST_STR_ATTR2 >>$LOG_FILE echo 'test_str_attr3' = $TEST_STR_ATTR3 >>$LOG_FILE echo 'test_str_attr4' = $TEST_STR_ATTR4 >>$LOG_FILE echo 'test_str_attr5' = $TEST_STR_ATTR5 >>$LOG_FILE echo 'test_str_attr_ref' = $TEST_STR_ATTR_REF >>$LOG_FILE echo 'total_occurrence_count' = $TOTAL_OCCURRENCE_COUNT >>$LOG_FILE fi # incident if [ $ISSUE_TYPE -eq 2 ] then echo 'action_msg=' $ACTION_MSG >> $LOG_FILE echo 'incident_id=' $INCIDENT_ID >> $LOG_FILE echo 'incident_creation_time=' $INCIDENT_CREATION_TIME >> $LOG_FILE echo 'incident_owner=' $INCIDENT_OWNER >> $LOG_FILE echo 'incident_acknowledged_by_owner' = $INCIDENT_ACKNOWLEDGED_BY_OWNER >>$LOG_FILE echo 'incident_status' = $INCIDENT_STATUS >>$LOG_FILE echo 'last_modified_by=' $LAST_MODIFIED_BY >> $LOG_FILE echo 'last_updated_time=' $LAST_UPDATED_TIME >> $LOG_FILE echo 'assoc_event_count=' $ASSOC_EVENT_COUNT >> $LOG_FILE echo 'adr_incident_id=' $ADR_INCIDENT_ID >> $LOG_FILE echo 'occurrence_count=' $OCCURRENCE_COUNT >> $LOG_FILE echo 'escalated=' $ESCALATED >> $LOG_FILE echo 'escalated_level=' $ESCALATED_LEVEL >> $LOG_FILE echo 'priority=' $PRIORITY >> $LOG_FILE echo 'priority_code' = $PRIORITY_CODE >>$LOG_FILE echo 'ticket_id=' $TICKET_ID >> $LOG_FILE echo 'ticket_status=' $TICKET_STATUS >> $LOG_FILE echo 'ticket_url=' $TICKET_ID_URL >> $LOG_FILE echo 'total_duplicate_count=' $TOTAL_DUPLICATE_COUNT >> $LOG_FILE echo 'source_count=' $EVENT_SOURCE_COUNT >> $LOG_FILE echo 'event_source_1_host_name' = $EVENT_SOURCE_1_HOST_NAME >>$LOG_FILE echo 'event_source_1_target_guid' = $EVENT_SOURCE_1_TARGET_GUID >>$LOG_FILE echo 'event_source_1_target_name' = $EVENT_SOURCE_1_TARGET_NAME >>$LOG_FILE echo 'event_source_1_target_owner' = $EVENT_SOURCE_1_TARGET_OWNER >>$LOG_FILE echo 'event_source_1_target_type' = $EVENT_SOURCE_1_TARGET_TYPE >>$LOG_FILE echo 'event_source_1_target_url' = $EVENT_SOURCE_1_TARGET_URL >>$LOG_FILE echo 'event_source_1_target_lifecycle_status' = $EVENT_SOURCE_1_TARGET_LIFECYCLE_STATUS >>$LOG_FILE echo 'event_source_1_target_version' = $EVENT_SOURCE_1_TARGET_VERSION >>$LOG_FILE fi exit 0
例3-8には、Enterprise Manager Cloud ControlからHP OpenViewコンソールにアラートを送信するスクリプトが示されています。メトリック・アラートがトリガーされるとEnterprise Manager Cloud Controlではアラートが表示されます。次にHP OpenViewスクリプトがコールされ、opcmsgを起動し、HP OpenView管理サーバーに情報を転送します。
例3-8 HP OpenViewスクリプト
/opt/OV/bin/OpC/opcmsg severity="$SEVERITY" app=OEM msg_grp=Oracle msg_text="$MESSAGE" object="$TARGET_NAME"
この項では、13cより前のOSコマンド通知シェル環境変数を12c OSコマンド・シェル環境変数にマップする方法を説明します。
注意:
12cより前の通知ルールは、イベント・レベル・ルールにのみマップされます。インシデント・レベル・ルールへのマッピングは許可されていません。
注意:
ポリシー違反は、Enterprise Manager 12cリリース以上ではサポートされなくなりました。
次の表は、event_typeがmetric_alertの場合のOSコマンド・シェル環境変数のマッピングです。
表3-3 12cより前/13cのmetric_alert環境変数のマッピング
12cより前の環境変数 | 対応する13cの環境変数 |
---|---|
ACKNOWLEDGED |
ASSOC_INCIDENT_ACKNOWLEDGED_BY_OWNER |
ACKNOWLEDGED_BY |
ASSOC_INCIDENT_OWNER |
CYCLE_GUID |
CYCLE_GUID |
HOST |
HOST_NAME |
KEY_VALUE |
注意: 後述の詳細な説明を参照してください。 |
KEY_VALUE_NAME |
注意: 後述の詳細な説明を参照してください。 |
MESSAGE |
MESSAGE |
METRIC |
METRIC_COLUMN |
NOTIF_TYPE |
NOTIF_TYPE。第2.3.5項のマップを使用します。 |
REPEAT_COUNT |
REPEAT_COUNT |
RULE_NAME |
RULESET_NAME |
RULE_OWNER |
RULE_OWNER |
SEVERITY |
SEVERITY |
TARGET_NAME |
TARGET_NAME |
TARGET_TYPE |
TARGET_TYPE |
TIMESTAMP |
EVENT_REPORTED_TIME |
METRIC_VALUE |
VALUE |
VIOLATION_CONTEXT |
EVENT_CONTEXT_ATTRS |
VIOLATION_GUID |
SEVERITY_GUID |
POLICY_RULE |
マッピングなし。Enterprise Manager 12cリリース以上では使用中止になりました。 |
KEY_VALUE_NAMEおよびKEY_VALUEを取得するには、次の手順を実行します。
$NUM_KEYS変数がnullの場合、$KEY_VALUE_NAMEと$KEY_VALUEはnullです。
$NUM_KEYSが1の場合
KEY_VALUE_NAME=$KEY_COLUMN_1
KEY_COLUMN_1_VALUE
$NUM_KEYSが1より大きい場合
KEY_VALUE_NAME="$KEY_COLUMN_1;$KEY_COLUMN_2;..;KEY_COLUMN_x"
KEY_VALUE="$KEY_COLUMN_1_VALUE;$KEY_COLUMN_2_VALUE;..;KEY_COLUMN_x_VALUE "
xは$NUM_KEYSの値で、";"はセパレータです。
次の表は、event_typeが"target_availability"の場合のOSコマンド・シェル環境変数のマッピングです。
表3-4 12cより前/12cのtarget_availability環境変数のマッピング
12cより前の環境変数 | 対応する13cの環境変数 |
---|---|
TARGET_NAME |
TARGET_NAME |
TARGET_TYPE |
TARGET_TYPE |
METRIC |
ステータス |
CYCLE_GUID |
CYCLE_GUID |
VIOLATION_CONTEXT |
EVENT_CONTEXT_ATTRS |
SEVERITY |
TARGET_STATUS |
HOST |
HOST_NAME |
MESSAGE |
MESSAGE |
NOTIF_TYPE |
NOTIF_TYPE。第2.3.5項のマップを使用します。 |
TIMESTAMP |
EVENT_REPORTED_TIME |
RULE_NAME |
RULESET_NAME |
RULE_OWNER |
RULE_OWNER |
REPEAT_COUNT |
REPEAT_COUNT |
KEY_VALUE |
"" |
KEY_VALUE_NAME |
"" |
次の表は、event_typeがjob_status_changeの場合のOSコマンド・シェル環境変数のマッピングです。
表3-5 12cより前/13cのjos_status_change環境変数のマッピング
12cより前の環境変数 | 対応する13cの環境変数 |
---|---|
JOB_NAME |
SOURCE_OBJ_NAME |
JOB_OWNER |
SOURCE_OBJ_OWNER |
JOB_TYPE |
SOURCE_OBJ_SUB_TYPE |
JOB_STATUS |
EXECUTION_STATUS |
NUM_TARGETS |
$ TARGET_NAMEがnullでない場合は1、それ以外の場合は0 |
TARGET_NAME1 |
TARGET_NAME |
TARGET_TYPE1 |
TARGET_TYPE |
TIMESTAMP |
EVENT_REPORTED_TIME |
RULE_NAME |
RULESET_NAME |
RULE_OWNER |
RULE_OWNER |
修正処理の通知受信時の次の環境変数のマッピングは、「メトリック・アラート・イベント・タイプの移行」の項を参照してください。
KEY_VALUE
KEY_VALUE_NAME
METRIC
METRIC_VALUE
RULE_NAME
RULE_OWNER
SEVERITY
TIMESTAMP
VIOLATION_CONTEXT
他の環境変数のマッピングには、次のマップを使用します。
表3-6 12cより前/13cの修正処理環境変数のマッピング
12cより前の環境変数 | 対応する13cの環境変数 |
---|---|
NUM_TARGETS |
1 |
TARGET_NAME1 |
TARGET_NAME |
TARGET_TYPE1 |
TARGET_TYPE |
JOB_NAME |
CA_JOB_NAME |
JOB_OWNER |
CA_JOB_OWNER |
JOB_STATUS |
CA_JOB_STATUS |
JOB_TYPE |
CA_JOB_TYPE |
ユーザー定義PL/SQLプロシージャは、一致するイベント、インシデントおよび問題の通知を受信できます。
注意:
Enterprise Managerをリリース12cより前から12cにアップグレードする場合、13cより前の既存のPL/SQL拡張通知メソッドが変更なしで機能を続けます。ただし、プロシージャを更新して新しいシグネチャを使用する必要があります。
Enterprise Manager 13cで作成された新しいPL/SQL拡張通知メソッドでは、次の項に記載されている新しいシグネチャを使用する必要があります。
PL/SQLプロシージャに基づく通知メソッドを定義するには、次の4つの手順を実行します。
PL/SQLベースの通知メソッドの作成は、次の4つの手順で構成されます。
例3-9 PL/SQLプロシージャで必要な情報
Name Open trouble ticket Description Notification method to open a trouble ticket in the event PLSQL Procedure ticket_sys.ticket_ops.open_ticket
例3-10 PL/SQLスクリプト
-- Assume log_table is created by following DDL -- CREATE TABLE log_table (message VARCHAR2(4000)) ; -- Define PL/SQL notification method for Events CREATE OR REPLACE PROCEDURE log_table_notif_proc(s IN GC$NOTIF_EVENT_MSG) IS l_categories gc$category_string_array; l_category_codes gc$category_string_array; l_attrs gc$notif_event_attr_array; l_ca_obj gc$notif_corrective_action_job; BEGIN INSERT INTO log_table VALUES ('notification_type: ' || s.msg_info.notification_type); INSERT INTO log_table VALUES ('repeat_count: ' || s.msg_info.repeat_count); INSERT INTO log_table VALUES ('ruleset_name: ' || s.msg_info.ruleset_name); INSERT INTO log_table VALUES ('rule_name: ' || s.msg_info.rule_name); INSERT INTO log_table VALUES ('rule_owner: ' || s.msg_info.rule_owner); INSERT INTO log_table VALUES ('message: ' || s.msg_info.message); INSERT INTO log_table VALUES ('message_url: ' || s.msg_info.message_url); INSERT INTO log_table VALUES ('event_instance_guid: ' || s.event_payload.event_instance_guid); INSERT INTO log_table VALUES ('event_type: ' || s.event_payload.event_type); INSERT INTO log_table VALUES ('event_name: ' || s.event_payload.event_name); INSERT INTO log_table VALUES ('event_msg: ' || s.event_payload.event_msg); INSERT INTO log_table VALUES ('source_obj_type: ' || s.event_payload.source.source_type); INSERT INTO log_table VALUES ('source_obj_name: ' || s.event_payload.source.source_name); INSERT INTO log_table VALUES ('source_obj_url: ' || s.event_payload.source.source_url); INSERT INTO log_table VALUES ('target_name: ' || s.event_payload.target.target_name); INSERT INTO log_table VALUES ('target_url: ' || s.event_payload.target.target_url); INSERT INTO log_table VALUES ('severity: ' || s.event_payload.severity); INSERT INTO log_table VALUES ('severity_code: ' || s.event_payload.severity_code); INSERT INTO log_table VALUES ('event_reported_date: ' || to_char(s.event_payload.reported_date, 'D MON DD HH24:MI:SS')); l_categories := s.event_payload.categories; IF l_categories IS NOT NULL THEN FOR c IN 1..l_categories.COUNT LOOP INSERT INTO log_table VALUES ('category ' || c || ' - ' || l_categories(c)); END LOOP; END IF; l_category_codes := s.event_payload.category_codes; IF l_categories IS NOT NULL THEN FOR c IN 1..l_category_codes.COUNT LOOP INSERT INTO log_table VALUES ('category_code ' || c || ' - ' || l_category_codes(c)); END LOOP; END IF; l_attrs := s.event_payload.event_attrs; IF l_attrs IS NOT NULL THEN FOR c IN 1..l_attrs.COUNT LOOP INSERT INTO log_table VALUES ('EV.ATTR name=' || l_attrs(c).name || ' value=' || l_attrs(c).value || ' nls_value=' || l_attrs(c).nls_value); END LOOP; END IF; COMMIT ; END ; /
例3-11 表にイベントを記録するPL/SQLスクリプト
CREATE TABLE event_log ( notification_type VARCHAR2(32), repeat_count NUMBER, ruleset_name VARCHAR2(256), rule_owner VARCHAR2(256), rule_name VARCHAR2(256), message VARCHAR2(4000), message_url VARCHAR2(4000), event_instance_guid RAW(16), event_type VARCHAR2(20), event_name VARCHAR2(512), event_msg VARCHAR2(4000), categories VARCHAR2(4000), source_obj_type VARCHAR2(120), source_obj_name VARCHAR2(256), source_obj_url VARCHAR2(4000), severity VARCHAR2(128), severity_code VARCHAR2(32), target_name VARCHAR2(256), target_type VARCHAR2(128), target_url VARCHAR2(4000), host_name VARCHAR2(256), timezone VARCHAR2(64), occured DATE, ca_guid RAW(16), ca_name VARCHAR2(128), ca_owner VARCHAR2(256), ca_type VARCHAR2(256), ca_status VARCHAR2(64), ca_status_code NUMBER, ca_job_step_output VARCHAR2(4000), ca_execution_guid RAW(16), ca_stage_change_guid RAW(16) ) ; CREATE OR REPLACE PROCEDURE log_event(s IN GC$NOTIF_EVENT_MSG) IS l_categories gc$category_string_array; l_ca_obj gc$notif_corrective_action_job; l_categories_new VARCHAR2(1000); BEGIN -- save event categories l_categories := s.event_payload.categories; IF l_categories IS NOT NULL THEN FOR c IN 1..l_categories.COUNT LOOP l_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||','); END LOOP; END IF; -- save event message IF s.msg_info.notification_type = 'NOTIF_CA' AND s.event_payload.corrective_action IS NOT NULL THEN l_ca_obj := s.event_payload.corrective_action; INSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid) VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name,s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, s.event_payload.occurrence_date, l_ca_obj.JOB_GUID, l_ca_obj.JOB_NAME, l_ca_obj.JOB_OWNER, l_ca_obj.JOB_TYPE, l_ca_obj.JOB_STATUS, l_ca_obj.JOB_STATUS_CODE, l_ca_obj.JOB_STEP_OUTPUT, l_ca_obj.JOB_EXECUTION_GUID, l_ca_obj.JOB_STATE_CHANGE_GUID); ELSE INSERT INTO event_log (notification_type, repeat_count, ruleset_name, rule_name, rule_owner, message, message_url, event_instance_guid, event_type, event_name, event_msg, categories, source_obj_type, source_obj_name, source_obj_url, severity, severity_code, target_name, target_type, target_url, host_name, timezone, occured, ca_guid, ca_name, ca_owner, ca_type, ca_status, ca_status_code, ca_job_step_output, ca_execution_guid, ca_stage_change_guid) VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_name, s.msg_info.rule_owner, s.msg_info.message, s.msg_info.message_url, s.event_payload.event_instance_guid, s.event_payload.event_type, s.event_payload.event_name, s.event_payload.event_msg, l_categories_new, s.event_payload.source.source_type, s.event_payload.source.source_name, s.event_payload.source.source_url, s.event_payload.severity, s.event_payload.severity_code, s.event_payload.target.target_name, s.event_payload.target.target_type, s.event_payload.target.target_url, s.event_payload.target.host_name, s.event_payload.target.target_timezone, s.event_payload.occurrence_date, null,null,null,null,null,null,null,null,null); END IF; COMMIT; END log_event; /
例3-12 表にインシデントを記録するPL/SQLスクリプト
CREATE TABLE incident_log ( notification_type VARCHAR2(32), repeat_count NUMBER, ruleset_name VARCHAR2(256), rule_owner VARCHAR2(256), rule_name VARCHAR2(256), message VARCHAR2(4000), message_url VARCHAR2(4000), incident_id VARCHAR2(128), ticket_url VARCHAR2(4000), assoc_event_cnt NUMBER, severity VARCHAR2(128), severity_code VARCHAR2(32), priority VARCHAR2(128), priority_code VARCHAR2(32), status VARCHAR2(32), categories VARCHAR2(1000), target_name VARCHAR2(256), target_type VARCHAR2(128), host_name VARCHAR2(256), timezone VARCHAR2(64), occured DATE ) ; CREATE OR REPLACE PROCEDURE log_incident(s IN GC$NOTIF_INCIDENT_MSG) IS l_src_info_array GC$NOTIF_SOURCE_INFO_ARRAY; l_src_info GC$NOTIF_SOURCE_INFO; l_categories gc$category_string_array; l_target_obj GC$NOTIF_TARGET; l_target_name VARCHAR2(256); l_target_type VARCHAR2(256); l_target_timezone VARCHAR2(256); l_hostname VARCHAR2(256); l_categories_new VARCHAR2(1000); BEGIN -- Save Incident categories IF l_categories IS NOT NULL THEN FOR c IN 1..l_categories.COUNT LOOP l_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||','); END LOOP; END IF; -- GET target info l_src_info_array := s.incident_payload.incident_attrs.source_info_arr; IF l_src_info_array IS NOT NULL THEN FOR I IN 1..l_src_info_array.COUNT LOOP IF l_src_info_array(I).TARGET IS NOT NULL THEN l_target_name := l_src_info_array(I).TARGET.TARGET_NAME; l_target_type := l_src_info_array(I).TARGET.TARGET_TYPE; l_target_timezone := l_src_info_array(I).TARGET.TARGET_TIMEZONE; l_hostname := l_src_info_array(I).TARGET.HOST_NAME; END IF; END LOOP; END IF; -- save Incident notification message INSERT INTO incident_log(notification_type, repeat_count, ruleset_name, rule_owner, rule_name, message, message_url, incident_id, ticket_url, assoc_event_cnt, severity, severity_code, priority, priority_code, status, categories, target_name, target_type, host_name, timezone, occured) VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_owner, s.msg_info.rule_name, s.msg_info.message, s.msg_info.message_url, s.incident_payload.incident_attrs.id, s.incident_payload.ticket_url, s.incident_payload.assoc_event_count, s.incident_payload.incident_attrs.severity, s.incident_payload.incident_attrs.severity_code, s.incident_payload.incident_attrs.priority, s.incident_payload.incident_attrs.priority_code, s.incident_payload.incident_attrs.STATUS, l_categories_new, l_target_name, l_target_type, l_hostname,l_target_timezone, s.incident_payload.incident_attrs.creation_date); COMMIT; END log_incident; /
例3-13 表に問題を記録するPL/SQLスクリプト
CREATE TABLE problem_log ( notification_type VARCHAR2(32), repeat_count NUMBER, ruleset_name VARCHAR2(256), rule_owner VARCHAR2(256), rule_name VARCHAR2(256), message VARCHAR2(4000), message_url VARCHAR2(4000), problem_key VARCHAR2(850), assoc_incident_cnt NUMBER, problem_id NUMBER, owner VARCHAR2(256), severity VARCHAR2(128), severity_code VARCHAR2(32), priority VARCHAR2(128), priority_code VARCHAR2(32), status VARCHAR2(32), categories VARCHAR2(1000), target_name VARCHAR2(256), target_type VARCHAR2(128), host_name VARCHAR2(256), timezone VARCHAR2(64), occured DATE ) ; CREATE OR REPLACE PROCEDURE log_problem(s IN GC$NOTIF_PROBLEM_MSG) IS l_src_info_array GC$NOTIF_SOURCE_INFO_ARRAY; l_src_info GC$NOTIF_SOURCE_INFO; l_categories gc$category_string_array; l_target_obj GC$NOTIF_TARGET; l_target_name VARCHAR2(256); l_target_type VARCHAR2(256); l_target_timezone VARCHAR2(256); l_hostname VARCHAR2(256); l_categories_new VARCHAR2(1000); BEGIN -- Save Problem categories l_categories := s.problem_payload.problem_attrs.categories; IF l_categories IS NOT NULL THEN FOR c IN 1..l_categories.COUNT LOOP l_categories_new := (l_categories_new|| c || ' - ' || l_categories(c)||','); END LOOP; END IF; -- GET target info l_src_info_array := s.problem_payload.problem_attrs.source_info_arr; IF l_src_info_array IS NOT NULL THEN FOR I IN 1..l_src_info_array.COUNT LOOP IF l_src_info_array(I).TARGET IS NOT NULL THEN l_target_name := l_src_info_array(I).TARGET.TARGET_NAME; l_target_type := l_src_info_array(I).TARGET.TARGET_TYPE; l_target_timezone := l_src_info_array(I).TARGET.TARGET_TIMEZONE; l_hostname := l_src_info_array(I).TARGET.HOST_NAME; END IF; END LOOP; END IF; -- save Problem notification message INSERT INTO problem_log(notification_type, repeat_count, ruleset_name, rule_owner, rule_name, message, message_url, problem_key, assoc_incident_cnt, problem_id, owner, severity, severity_code, priority, priority_code, status, categories, target_name, target_type, host_name, timezone, occured) VALUES (s.msg_info.notification_type, s.msg_info.repeat_count, s.msg_info.ruleset_name, s.msg_info.rule_owner, s.msg_info.rule_name, s.msg_info.message, s.msg_info.message_url, s.problem_payload.problem_key, s.problem_payload.ASSOC_INCIDENT_COUNT, s.problem_payload.problem_attrs.id, s.problem_payload.problem_attrs.owner, s.problem_payload.problem_attrs.severity, s.problem_payload.problem_attrs.severity_code, s.problem_payload.problem_attrs.PRIORITY, s.problem_payload.problem_attrs.PRIORITY_CODE, s.problem_payload.problem_attrs.status, l_categories_new, l_target_name, l_target_type, l_hostname,l_target_timezone, s.problem_payload.problem_attrs.CREATION_DATE); COMMIT; END log_problem; /
手順1: PL/SQLプロシージャの定義
受け取られる通知のタイプに応じて、プロシージャには次のうち1つのシグネチャを含める必要があります。
イベントの場合:
PROCEDURE event_proc(event_msg IN gc$notif_event_msg)
インシデントの場合:
PROCEDURE incident_proc(incident_msg IN gc$notif_incident_msg)
問題の場合:
PROCEDURE problem_proc(problem_msg IN gc$notif_problem_msg)
注意:
ユーザーがインシデント・ルールの作成または編集時に通知メソッドを選択するには、スーパー管理者権限を持つ管理者が、PL/SQLプロシージャに基づく通知メソッドをあらかじめ構成しておく必要があります。
特定タイプの情報をスクリプトまたはPL/SQLプロシージャに渡す方法の詳細は、次の各項を参照してください。
手順2: 管理リポジトリ上でのPL/SQLプロシージャの作成。
次の指定プロシージャの1つを使用して、リポジトリ・データベースでPL/SQLプロシージャを作成します。
PROCEDURE event_proc(event_msg IN gc$notif_event_msg)
PROCEDURE incident_proc(incident_msg IN gc$notif_incident_msg)
PROCEDURE problem_proc(problem_msg IN gc$notif_problem_msg)
PL/SQLプロシージャは、(SYSMANなどの)リポジトリ所有者のデータベース・アカウントを使用してリポジトリ・データベース上に作成する必要があります。
プロシージャの実行時にエラーが発生した場合、エラー・コード-20000を使用するユーザー定義例外を返すことによって、通知システムでプロシージャへの通知の送信を再試行できます。このプロシージャは、最初は1分後に再試行され、その後は2分後、3分後と、パージされるポイントである1日後までこの再試行が続行されます。
手順3: PL/SQLプロシージャを新規の通知メソッドとして登録。
スーパー管理者としてログインします。「設定」メニューから、「通知」、「通知メソッド」の順に選択して、通知メソッド・ページにアクセスします。このページから、PL/SQLプロシージャに基づく新規の通知を定義できます。「PL/SQLプロシージャを使用した通知の送信」を参照してください。
スキーマ所有者、パッケージ名およびプロシージャ名を含む完全修飾名を必ず使用してください。プロシージャはリポジトリ所有者によって実行されるため、リポジトリ所有者にプロシージャの実行権限があります。
PL/SQLプロシージャに基づく通知メソッドを作成します。メソッドの定義には次の情報が必要です。
名前
説明
PL/SQLプロシージャ
完全修飾プロシージャ名(OWNER.PKGNAME.PROCNAMEなど)を入力し、管理リポジトリの所有者がプロシージャの実行権限を持つようにする必要があります。
例3-9は必要な情報の例です。
図3-1に、Enterprise Manager UIからPL/SQLベースの通知メソッドを追加する方法を示します。
図3-1 PL/SQLプロシージャの追加
手順4: 通知メソッドのインシデント・ルールへの割当て。
既存のルールを編集(または新規のインシデント・ルールを作成)できます。「設定」メニューから、「インシデント」、「インシデント・ルール」の順に選択します。インシデント・ルール・ページが表示されます。ここから、拡張通知メソッドに見つかった新しいPL/SQLプロシージャを指定するアクションをルールに追加できます。
Enterprise Manager環境には複数のPL/SQLベースのメソッドが構成されている場合があります。
インシデント、イベントおよび問題情報をPL/SQLプロシージャに渡す方法の詳細は、「PL/SQLプロシージャへの情報の受渡し」を参照してください。
12cより前の通知をEnterprise Manager 12cのイベント通知にマップします。イベント・タイプmetric_alert、target_availabilityおよびjob_status_alertは、12cより前の通知機能に対応します。
注意:
ポリシー違反は、Enterprise Manager 12c以上では使用できなくなりました。
この項では、Enterprise Manager 13c PL/SQL通知ペイロードと12cより前のPL/SQL通知ペイロードのマッピングについて説明します。この情報を使用して、13c PL/SQL通知ペイロードを使用するように既存の12cより前のPL/SQLユーザー・コールバック・プロシージャを更新できます。ポリシー違反は13cリリースではサポートされなくなりました。
イベント・タイプがmetric_alertの場合
gc$notif_event_payload .event_type='metric_alert'の場合は次のマップを使用します。
表3-8 メトリック・アラートのマッピング
MGMT_NOTIFY_SEVERITY | 13cの通知ペイロード |
---|---|
TARGET_NAME |
gc$notif_target.target_name |
TARGET_TYPE |
gc$notif_target.target_type |
TIMEZONE |
gc$notif_target.target_timezone |
HOST_NAME |
gc$notif_target.host_name |
MERTIC_NAME |
gc$notif_event_attr_arrayのname='metric_guid_id'のgc$notif_event_attr.value。 |
METRIC_DESCRIPTION |
gc$notif_event_attr_arrayのname='metric_description'のgc$notif_event_attr.value。 |
METRIC_COLUMN |
gc$notif_event_attr_arrayのname='metric_column'のgc$notif_event_attr.value。 |
METRIC_VALUE |
gc$notif_event_attr_arrayのname='value'のgc$notif_event_attr.value。 |
KEY_VALUE |
gc$notif_event_attr_arrayのgc$notif_event_attr.name='num_keys'の値がnullではなく、0より大きい場合に、複数のキー・ベース・メトリックに適用されます。 後述の詳細な説明を参照してください。 |
KEY_VALUE_NAME |
gc$notif_event_attr_arrayのgc$notif_event_attr.name='num_keys'の値がnullではなく、0より大きい場合に、複数のキー・ベース・メトリックに適用されます。 後述の詳細な説明を参照してください。 |
KEY_VALUE_GUID |
gc$notif_event_attr_arrayのname='key_ value'のgc$notif_event_attr.value。 |
CTXT_LIST |
gc$notif_event_context_array |
COLLECTION_TIMESTAMP |
gc$notif_event_payload. reported_date |
SEVERITY_CODE |
gc$notif_event_payload.severity_codeから導出されます。表3-9を参照してください。 |
MESSAGE |
gc$notif_msg_info.message |
SEVERITY_GUID |
gc$notif_event_attr_arrayのname='severity_guid'のgc$notif_event_attr.value。 |
METRIC_GUID |
gc$notif_event_attr_arrayのname='metric_guid'のgc$notif_event_attr.value。 |
TARGET_GUID |
gc$notif_target.target_guid |
RULE_OWNER |
gc$notif_msg_info.rule_owner |
RULE_NAME |
gc$notif_msg_info.ruleset_name |
次の例は、Enterprise Manager 13cの通知ペイロードから、類似した12cより前のKEY_VALUEおよびKEY_VALUE_NAMEを取得する方法を示しています。
例3-14 KEY_VALUEおよびKEY_VALUE_NAMEの抽出
-- Get the pre-12c KEY_VALUE and KEY_VALUE_NAME from an Enterprise Manager 13c -- notification payload -- parameters -- IN Parameters: -- event_msg : The event notification payload -- OUT Parameters -- key_value_name_out : the KEY_VALUE_NAME backward compitable to pre-12c -- notification payload -- key_value_out : the KEY_VALUE backward compitable to pre-12c -- notification payload -- CREATE OR REPLACE PROCEDURE get_pre_12c_key_value( event_msg IN GC$NOTIF_EVENT_MSG, key_value_name_out OUT VARCHAR2, key_value_out OUT VARCHAR2) IS l_key_columns MGMT_SHORT_STRING_ARRAY := MGMT_SHORT_STRING_ARRAY(); l_key_column_values MGMT_MEDIUM_STRING_ARRAY := MGMT_MEDIUM_STRING_ARRAY(); l_key_value VARCHAR2(1790) := NULL; l_num_keys NUMBER := 0; l_attrs gc$notif_event_attr_array; l_key_value_name VARCHAR2(512); BEGIN l_attrs := event_msg.event_payload.event_attrs; key_value_name_out := NULL; key_value_out := NULL; IF l_attrs IS NOT NULL AND l_attrs.COUNT > 0 THEN l_key_columns.extend(7); l_key_column_values.extend(7); FOR c IN 1..l_attrs.COUNT LOOP CASE l_attrs(c).name WHEN 'num_keys' THEN BEGIN l_num_keys := to_number(l_attrs(c).value); EXCEPTION WHEN OTHERS THEN -- should never happen, but guard against it l_num_keys := 0; END; WHEN 'key_value' THEN l_key_value := substr(l_attrs(c).nls_value,1,1290); WHEN 'key_column_1' THEN l_key_columns(1) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_2' THEN l_key_columns(2) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_3' THEN l_key_columns(3) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_4' THEN l_key_columns(4) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_5' THEN l_key_columns(5) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_6' THEN l_key_columns(6) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_7' THEN l_key_columns(7) := substr(l_attrs(c).nls_value,1,64); WHEN 'key_column_1_value' THEN l_key_column_values(1) := substr(l_attrs(c).nls_value,1,256); WHEN 'key_column_2_value' THEN l_key_column_values(2) := substr(l_attrs(c).nls_value,1,256); WHEN 'key_column_3_value' THEN l_key_column_values(3) := substr(l_attrs(c).nls_value,1,256); WHEN 'key_column_4_value' THEN l_key_column_values(4) := substr(l_attrs(c).nls_value,1,256); WHEN 'key_column_5_value' THEN l_key_column_values(5) := substr(l_attrs(c).nls_value,1,256); WHEN 'key_column_6_value' THEN l_key_column_values(6) := substr(l_attrs(c).nls_value,1,256); WHEN 'key_column_7_value' THEN l_key_column_values(7) := substr(l_attrs(c).nls_value,1,256); ELSE NULL; END CASE; END LOOP; -- get key_value and key_value_name when l_num_keys > 0 IF l_num_keys > 0 THEN -- get key value name IF l_key_columns IS NULL OR l_key_columns.COUNT = 0 THEN key_value_name_out := NULL; ELSE l_key_value_name := NULL; FOR i in l_key_columns.FIRST..l_num_keys LOOP IF i > 1 THEN l_key_value_name := l_key_value_name || ';'; END IF; l_key_value_name := l_key_value_name || l_key_columns(i); END LOOP; key_value_name_out := l_key_value_name; END IF; -- get key_value IF l_num_keys = 1 THEN key_value_out := l_key_value; ELSE l_key_value := NULL; IF l_key_column_values IS NULL OR l_key_column_values.COUNT = 0 THEN key_value_out := NULL; ELSE FOR i in l_key_column_values.FIRST..l_num_keys LOOP IF i > 1 THEN l_key_value := l_key_value || ';'; END IF; l_key_value := l_key_value || l_key_column_values(i); END LOOP; -- max length for key value in pre-12c = 1290 key_value_out := substr(l_key_value,1,1290); END IF; END IF; END IF; -- l_num_keys > 0 END IF; -- l_attrs IS NOT NULL END get_pre_12c_key_value; /
イベント・タイプがmetric_alertの場合:
イベント・タイプがmetric_alertの場合、重大度コードについて、13cから12cより前への次のマッピングを使用します。
表3-9 重大度コードのマッピング
13cの重大度コード | 12cより前の重大度コード |
---|---|
GC_EVENT_RECEIVER.FATAL 32 |
MGMT_GLOBAL.G_SEVERITY_CRITICAL 25 |
GC_EVENT_RECEIVER.CRITICAL 16 |
MGMT_GLOBAL.G_SEVERITY_CRITICAL 25 |
GC_EVENT_RECEIVER.WARNING 8 |
MGMT_GLOBAL.G_SEVERITY_WARNING 20 |
GC_EVENT_RECEIVER.CLEAR 0 |
MGMT_GLOBAL.G_SEVERITY_CLEAR 15 |
イベント・タイプがtarget_availabilityの場合:
gc$notif_event_payload .event_type='target_availability'の場合は次のマップを使用します。
表3-10 ターゲット可用性のマッピング
MGMT_NOTIFY_SEVERITY | 13cの通知ペイロード |
---|---|
TARGET_NAME |
gc$notif_target.target_name |
TARGET_TYPE |
gc$notif_target.target_type |
TIMEZONE |
gc$notif_target.target_timezone |
HOST_NAME |
gc$notif_target.host_name |
MERTIC_NAME |
固定値"Response"を使用します。 |
METRIC_DESCRIPTION |
NULL |
METRIC_COLUMN |
固定値"Status"を使用します。 |
METRIC_VALUE |
gc$notif_event_attr_arrayのname='target_status'のgc$notif_event_attr.value。 |
KEY_VALUE |
NULL |
KEY_VALUE_NAME |
NULL |
KEY_VALUE_GUID |
NULL |
CTXT_LIST |
gc$notif_event_context_array |
COLLECTION_TIMESTAMP |
gc$notif_event_payload. reported_date |
SEVERITY_CODE |
gc$notif_event_attr_arrayのname='avail_severity'のgc$notif_event_attr.value。 |
MESSAGE |
gc$notif_msg_info.message |
SEVERITY_GUID |
gc$notif_event_attr_arrayのname='severity_guid'のgc$notif_event_attr.value。 |
METRIC_GUID |
gc$notif_event_attr_arrayのname='metric_guid_id'のgc$notif_event_attr.value。 |
TARGET_GUID |
gc$notif_target.target_guid |
RULE_OWNER |
gc$notif_msg_info.rule_owner |
RULE_NAME |
gc$notif_msg_info.ruleset_name |
gc$notif_event_payload .event_type='job_status_change'の場合は次のマップを使用します。
表3-11 ジョブ・ステータス変更のマッピング
MGMT_NOTIFY_JOB | 13cの通知ペイロード |
---|---|
JOB_NAME |
gc$notif_source.source_name |
JOB_OWNER |
gc$notif_source.source_owner |
JOB_TYPE |
gc$notif_source.source_sub_type |
JOB_STATUS |
gc$notif_event_attr_arrayのname='execution_status_code'のgc$notif_event_attr.value。 |
STATE_CHANGE_GUID |
gc$notif_event_attr_arrayのname='state_change_guid'のgc$notif_event_attr.value。 |
JOB_GUID |
gc$notif_source.source_guid |
EXECUTION_ID |
gc$notif_event_attr_arrayのname='execution_id'のgc$notif_event_attr.value。 |
TARGETS |
gc$notif_target.target_name、gc$notif_target.target_type |
RULE_OWNER |
gc$notif_msg_info.rule_owner |
RULE_NAME |
gc$notif_msg_info.ruleset_name |
OCCURRED_DATE |
gc$notif_event_payload. reported_date |
gc$notif_msg_info.notification_typeがNOTIF_CAに設定されている場合は、修正処理関連ペイロードが移入されます。
次の属性のマッピングについては、表3-8でMGMT_NOTIFY_SEVERITYオブジェクトに対して提供されているマッピング情報を使用してください。
MERTIC_NAME
METRIC_COLUMN
METRIC_VALUE
KEY_VALUE
KEY_VALUE_NAME
KEY_VALUE_GUID
CTXT_LIST
RULE_OWNER
RULE_NAME
OCCURRED_DATE
MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのジョブ関連属性のマッピングには、次のマップを使用します。
表3-12 修正処理のマッピング
MGMT_NOTIFY_CORRECTIVE_ACTION | 13cの通知ペイロード |
---|---|
JOB_NAME |
gc$ notif_corrective_action_job.job_name |
JOB_OWNER |
gc$ notif_corrective_action_job.job_owner |
JOB_TYPE |
gc$ notif_corrective_action_job.job_type |
JOB_STATUS |
gc$ notif_corrective_action_job.status_code |
STATE_CHANGE_GUID |
gc$ notif_corrective_action_job. job_state_change_guid |
JOB_GUID |
gc$ notif_corrective_action_job. job _guid |
EXECUTION_ID |
gc$ notif_corrective_action_job. job_execution_guid |
OCCURRED_DATE |
gc$ notif_corrective_action_job.occurred_date |
TARGETS |
ターゲットは1つまでです。関連付けられたターゲットには、gc$notif_target.target_name、gc$notif_target.target_typeの値を使用します。 |
Enterprise Managerは、Simple Network Management Protocol (SNMP)を介したサード・パーティ管理ツールとの統合をサポートしています。たとえば、SNMPを使用して、選択済メトリックがしきい値を超えていることをサード・パーティ・アプリケーションに通知できます。
注意:
OMSによって送信されたトラップをサード・パーティ・システムで解釈するには、最初にomstrap.v1ファイルをサード・パーティのSNMPコンソールにロードする必要があります。このファイルおよびその場所の詳細は、「MIB定義」を参照してください。
Enterprise Manager 13cバージョンのMIBファイルは、10gおよび11gのMIBコンテンツを組み込んでおり、以前のEnterprise Managerのリリースとの下位互換性を保持しています。
Enterprise ManagerはSNMPバージョン1およびバージョン3の両方のトラップをサポートしています。トラップは、MIB定義(「Enterprise Manager MIBの定義」を参照)によって記述されます。MIBの動作の詳細は、「管理情報ベース(MIB)」を参照してください。Enterprise Manager 13cを使用している場合、「Enterprise Manager MIBの変数の解釈」および「Enterprise Manager MIBの定義」を参照してください。12cより前のリリースのEnterprise Managerからアップグレードする場合、特定のリリースのマッピングについては、「SNMPトラップのマッピング」を参照してください。
Enterprise Manager 13cでは、SNMPトラップはイベント通知に対してのみ配信されます。SNMPトラップ通知は、インシデントまたは問題に対してはサポートされません。
注意:
ユーザーがインシデント・ルールの作成または編集時に1つ以上のSNMPトラップ通知メソッドを選択するには、スーパー管理者権限を持つ管理者が、SNMPトラップに基づく通知メソッドをあらかじめ構成しておく必要があります。
SNMPバージョン3は、バージョン1と同じ基本アーキテクチャを共有していますが、SNMP管理およびセキュリティに多数の拡張機能を追加しています。Enterprise Managerに関する主な拡張機能は、認証とプライバシの両方、さらには認証とアクセス制御を提供する追加のセキュリティ・レベルに関連します。
ユーザーに基づくセキュリティ・レベル(USM)
USMは、SNMPメッセージの処理時にSNMPエンジンが従うセキュリティ関連プロシージャを定義します。Enterprise Manager SNMP V3サポートは、この追加されたSNMPメッセージ・レベルのセキュリティ拡張機能を利用して、セキュアなメッセージング環境を提供します。
USMは次の2つの主なセキュリティ脅威に対して保護します。
情報の変更: 変更の脅威とは、一部の認可されていないエンティティが、認可されているプリンシパルにかわって、オブジェクトの値の改ざんなどの認可されていない管理操作を有効にするような方法で、生成された送信中のSNMPメッセージを変更するような危険性です。
マスカレード: マスカレードの脅威とは、一部のユーザーには認可されていない管理操作が、適切な認可を持つ別のユーザーのふりをすることによって試行されるような危険性です。
両方のSNMPバージョンで、SNMPトラップを使用してEnterprise Manager拡張通知を設定する基本的な方法は次のように同じままです。
SNMPトラップに基づく通知メソッドを定義します。
通知メソッドをインシデント・ルールに割り当てます。
SNMP V3トラップ通知メソッドを定義するプロシージャは、V1の場合とは若干異なります。Enterprise Managerリリース12.1.0.4以降、SNMP V3トラップ通知メソッドに関する主要情報と構成機能は、個別のインタフェースにより統合されています。SNMP V3トラップのインタフェースを使用して、SNMP通知メソッドを作成し、SNMPトラップを送信するようにOMSを有効にし、SNMPトラップ通知のユーザー・セキュリティ設定を定義する処理を実行できます。
SNMPトラップ通知メソッドを作成する前に、SNMPトラップ通知を処理するために環境で1つ以上のOMSを有効にする必要があります。SNMP V3の場合、OMSは、ネットワークにデプロイされたすべてのSNMPエージェントをモニタリングしているSNMPマネージャにトラップを送信するSNMPエージェントとして機能します。
OMSがSNMPトラップ通知を送信するように有効にしたら、次の手順は、インシデント・ルールで使用できる通知メソッドの作成です。
「設定」メニューから、「通知」、「SNMPv3トラップ」の順に選択します。スタート・ガイド・ページが表示されます。
注意:
既存の通知メソッドを編集する場合、「通知メソッド」領域から目的のメソッドを選択して「編集」をクリックします。
「構成」タブをクリックします。構成ページが表示されます。
「通知メソッド」領域から、「作成」をクリックします。SNMPv3トラップ: 通知メソッドの作成ページが表示されます。
必要な通知メソッドの定義パラメータを入力します。注意: この時点で、繰返し通知を有効にできます。
ユーザー・セキュリティ・モデルの新しいエンティティを作成する場合、「ユーザー・セキュリティ・モデル」領域で、「新規作成」オプションが選択されていることを確認します。
資格証明を一意に識別する「ユーザー名」を指定します。SNMP V3を使用すると、複数のユーザー名をSNMPエージェントおよびSNMPマネージャ・アプリケーションに設定できます。
ドロップダウン・メニューから「セキュリティ・レベル」を選択します。使用可能なパラメータは、セキュリティ・レベルに応じて使用可能になります。次の3つのレベルから選択します。
AuthPriv (認証 + プライバシ): 送信者のIDは、受信者によって確認される必要があります(認証)。SNMP V3メッセージは、送信者によって暗号化され、受信者によって復号化される必要があります(プライバシ)。
AuthNoPriv (認証のみ): 受信者は、メッセージを受け取る前に送信者のIDを認証する必要があります。
NoAuthNoPriv (セキュリティなし): 送信者のID確認もメッセージの暗号化も使用されません。
AuthPrivおよびAuthNoPrivセキュリティ・レベルの場合、目的の「認証プロトコル」を選択します。次の2つの認証プロトコルが使用可能です。
Secure Hash Algorithm(SHA)
メッセージ・ダイジェスト・アルゴリズム(MD5)
メッセージが認証されている場合、認証プロトコルを使用してメッセージ・ダイジェストを作成します。
プライバシ・プロトコル(AuthPrivセキュリティ・レベルに使用)がメッセージの暗号化/復号化に使用されます。USMはデータ暗号化規格(DES)を使用します。プライバシ・パスワードがプライバシ・プロトコルと組み合せて使用されます。暗号化/復号化が成功するためにSNMPエージェントとSNMPマネージャの両方のプライバシ・パスワードが一致する必要があります。
ユーザー・セキュリティ・モデル・エントリをすでに事前定義している場合、「既存のものを使用」オプションを選択し、ドロップダウン・メニューからUSMエントリのいずれかを選択します。ユーザー名別にUSMエントリがリストされます。
注意:
USM資格証明はOMSと外部トラップ受信者で同一であることを確認してください。一致しない場合、Enterprise ManagerはSNMPトラップをまだ送信しますが、トラップは受信されません。USM資格証明が無効の場合でもEnterprise ManagerはSNMPトラップを送信しますが、正しくない資格証明がSNMP受信者側で認証エラーになるためトラップは受信されません。このタイプの認証エラーは、Enterprise Managerコンソールからは見えません。
必要な通知メソッドおよびUSMパラメータを入力したら、「保存」をクリックします。新しく作成された認証メソッドは構成ページの「通知メソッド」領域に表示されます。
注意:
SNMP V3トラップ通知メソッドを定義したら、ルールに追加する必要があります。手順は、「サード・パーティ・システムにSNMPトラップを送信するルールの作成」を参照してください。
使用可能なSNMP V3トラップ通知メソッドを表示するには、次の手順を実行します。
手順1: SNMPトラップに基づく新規の通知メソッドの定義。
スーパー管理者としてEnterprise Managerにログインします。「設定」メニューから、「通知」、「スクリプトとSNMPv1トラップ」の順に選択します。
SNMPマスター・エージェントが実行されているホスト(マシン)の名前およびその他の詳細を、次の例のように指定する必要があります。示したように、SNMPホストがユーザーのSNMPトラップを受信します。
図3-2 SNMPトラップの必要情報
注意:
設定をテストするための「SNMPトラップのテスト」ボタンがあります。
メトリック重大度情報は、SNMPトラップ内で一連の変数として渡されます。
手順2: 通知メソッドのルールへの割当て
既存のルールを編集(または新規インシデント・ルールを作成)し、拡張通知メソッドをサブスクライブするアクションをルールに追加できます。SNMPトラップを使用したインシデント・ルールの設定手順については、「サード・パーティ・システムへSNMPトラップを送信するルールの作成」を参照してください。
SNMPトラップ実装のサンプル
このシナリオでは、送信されるSNMPトラップからの一意の問題を識別するとします。同じ問題に関連するすべてのイベントは同じイベント順序の一部であることに留意してください。各イベント順序には一意の識別番号があります。
イベント順序は、検出されてイベントが発生した時点から、解決されて対応するクリア・イベントが生成されるまでの、特定の問題の存続期間を表す関連イベントの順序です。たとえば、ホストのCPU使用率が80%を超えると警告のメトリック・アラート・イベントが発生します。これにより、「ホストのCPU使用率が通常レベルを超えた」という問題を表すイベント順序が開始します。CPU使用率が90%を超えると同じ問題に対して別のクリティカル・イベントが発生し、イベントが同じイベント順序に追加されます。しばらくして、CPU使用率が通常レベルに戻ると、クリア・イベントが発生します。この時点で、問題が解決され、イベント順序が終了します。
このシナリオでのSNMPトラップの送信を例3-15に示します。情報の各断片は、SNMPトラップに変数として組み込まれて送信されます。
この例は、イベントのライフサイクル中のOIDの使用方法を示しています。ここで、あるイベントについて、そのイベントがオープン中は、イベント順序のOIDはイベント重大度が変更されても同じままです。
イベント順序のOIDは次のとおりです。
1.3.6.1.4.1.111.15.3.1.1.42.1: C77AE9E578F00773E040F00A6D242F90
イベントの重大度コードのOID:
1.3.6.1.4.1.111.15.3.1.1.6.1: CRITICAL
イベントがクリアされると、これらのOIDは同じイベント順序で異なる重大度コードを持つことを示します。
イベント順序のOIDは次のとおりです。
1.3.6.1.4.1.111.15.3.1.1.42.1: C77AE9E578F00773E040F00A6D242F90
イベントの重大度コードのOID:
1.3.6.1.4.1.111.15.3.1.1.6.1: CLEAR
SNMP OID値の長さは、デフォルトで2560バイトに制限されます。emomsプロパティoracle.sysman.core.notification.snmp.max_oid_lengthを構成してデフォルト制限を変更します。
例3-15 SNMPトラップ
**************V1 TRAP***[1]***************** Community : public Enterprise :1.3.6.1.4.1.111.15.2 Generic :6 Specific :3 TimeStamp :67809 Agent adress :10.240.36.109 1.3.6.1.4.1.111.15.3.1.1.2.1: NOTIF_NORMAL 1.3.6.1.4.1.111.15.3.1.1.3.1: CPU Utilization is 92.658%, crossed warning (80) or critical (90) threshold. 1.3.6.1.4.1.111.15.3.1.1.4.1: https://sampleserver.oracle.com:5416/em/redirect?pageType=sdk-core-event-console-detailEvent&issueID=C77AE9E578F00773E040F00A6D242F90 1.3.6.1.4.1.111.15.3.1.1.5.1: Critical 1.3.6.1.4.1.111.15.3.1.1.6.1: CRITICAL 1.3.6.1.4.1.111.15.3.1.1.7.1: 0 1.3.6.1.4.1.111.15.3.1.1.8.1: 1.3.6.1.4.1.111.15.3.1.1.9.1: 1.3.6.1.4.1.111.15.3.1.1.10.1: Aug 17, 2012 3:26:36 PM PDT 1.3.6.1.4.1.111.15.3.1.1.11.1: Capacity 1.3.6.1.4.1.111.15.3.1.1.12.1: Capacity 1.3.6.1.4.1.111.15.3.1.1.13.1: Metric Alert 1.3.6.1.4.1.111.15.3.1.1.14.1: Load:cpuUtil 1.3.6.1.4.1.111.15.3.1.1.15.1: 281 1.3.6.1.4.1.111.15.3.1.1.16.1: 1.3.6.1.4.1.111.15.3.1.1.17.1: No 1.3.6.1.4.1.111.15.3.1.1.18.1: New 1.3.6.1.4.1.111.15.3.1.1.19.1: None 1.3.6.1.4.1.111.15.3.1.1.20.1: 0 1.3.6.1.4.1.111.15.3.1.1.21.1: sampleserver.oracle.com 1.3.6.1.4.1.111.15.3.1.1.22.1: https://sampleserver.oracle.com:5416/em/redirect?pageType=TARGET_HOMEPAGE&targetName=sampleserver.oracle.com&targetType=host 1.3.6.1.4.1.111.15.3.1.1.23.1: Host 1.3.6.1.4.1.111.15.3.1.1.24.1: sampleserver.oracle.com 1.3.6.1.4.1.111.15.3.1.1.25.1: SYSMAN 1.3.6.1.4.1.111.15.3.1.1.26.1: 1.3.6.1.4.1.111.15.3.1.1.27.1: 5.8.0.0.0 1.3.6.1.4.1.111.15.3.1.1.28.1: Operating System=Linux, Platform=x86_64, 1.3.6.1.4.1.111.15.3.1.1.29.1: 1.3.6.1.4.1.111.15.3.1.1.30.1: 1.3.6.1.4.1.111.15.3.1.1.31.1: 1.3.6.1.4.1.111.15.3.1.1.32.1: 1.3.6.1.4.1.111.15.3.1.1.33.1: 1.3.6.1.4.1.111.15.3.1.1.34.1: 1.3.6.1.4.1.111.15.3.1.1.35.1: 1.3.6.1.4.1.111.15.3.1.1.36.1: 1.3.6.1.4.1.111.15.3.1.1.37.1: 1.3.6.1.4.1.111.15.3.1.1.38.1: 1.3.6.1.4.1.111.15.3.1.1.39.1: SnmpNotifRuleset 1.3.6.1.4.1.111.15.3.1.1.40.1: SnmpNotifRuleset,SnmpNotifEvent 1.3.6.1.4.1.111.15.3.1.1.41.1: SYSMAN 1.3.6.1.4.1.111.15.3.1.1.42.1: C77AE9E578F00773E040F00A6D242F90 1.3.6.1.4.1.111.15.3.1.1.43.1: 1.3.6.1.4.1.111.15.3.1.1.44.1: 1.3.6.1.4.1.111.15.3.1.1.45.1: 1.3.6.1.4.1.111.15.3.1.1.46.1: CPU Utilization is 92.658%, crossed warning (80) or critical (90) threshold., Incident created by rule (Name = Incident management Ruleset for all targets, Incident creation Rule for metric alerts.; Owner = <SYSTEM>). 1.3.6.1.4.1.111.15.3.1.1.61.1: Metric GUID=0C71A1AFAC2D7199013837DA35522C08 1.3.6.1.4.1.111.15.3.1.1.62.1: Severity GUID=C77AE9E578EC0773E040F00A6D242F90 1.3.6.1.4.1.111.15.3.1.1.63.1: Cycle GUID=C77AE9E578EC0773E040F00A6D242F90 1.3.6.1.4.1.111.15.3.1.1.64.1: Collection Name=LoadLinux 1.3.6.1.4.1.111.15.3.1.1.65.1: Metric Group=Load 1.3.6.1.4.1.111.15.3.1.1.66.1: Metric=CPU Utilization (%) 1.3.6.1.4.1.111.15.3.1.1.67.1: Metric Description= 1.3.6.1.4.1.111.15.3.1.1.68.1: Metric value=92.658 1.3.6.1.4.1.111.15.3.1.1.69.1: Key Value= 1.3.6.1.4.1.111.15.3.1.1.70.1: 1.3.6.1.4.1.111.15.3.1.1.71.1: 1.3.6.1.4.1.111.15.3.1.1.72.1: 1.3.6.1.4.1.111.15.3.1.1.73.1: 1.3.6.1.4.1.111.15.3.1.1.74.1: 1.3.6.1.4.1.111.15.3.1.1.75.1: 1.3.6.1.4.1.111.15.3.1.1.76.1: 1.3.6.1.4.1.111.15.3.1.1.77.1: 1.3.6.1.4.1.111.15.3.1.1.78.1: 1.3.6.1.4.1.111.15.3.1.1.79.1: 1.3.6.1.4.1.111.15.3.1.1.80.1: 1.3.6.1.4.1.111.15.3.1.1.81.1: 1.3.6.1.4.1.111.15.3.1.1.82.1: 1.3.6.1.4.1.111.15.3.1.1.83.1: 1.3.6.1.4.1.111.15.3.1.1.84.1: Number of keys=0 1.3.6.1.4.1.111.15.3.1.1.85.1: **************END V1 TRAP******************
注意:
Enterprise Manager 12cより前のリリースから12c以上へアップグレードする場合、以前のリリースのEnterprise Manager (12cより前)を使用して定義されたSNMP拡張通知メソッドは、変更しなくても機能を続けます。
Enterprise Manager 11g以前では、次の2つのタイプのSNMPトラップがありました。
アラート
ジョブ・ステータス
Enterprise Manager 12c以上では、メトリック・アラート、ターゲット可用性、コンプライアンス標準違反、ジョブ・ステータス変更などの、すべての使用可能なイベント・タイプを網羅する、1つの包括的なSNMPトラップ・タイプになりました。12cより前から12cへのSNMPトラップ・マッピングの詳細は、「SNMPトラップのマッピング」を参照してください。トラップは、古いEnterprise Manager MIB定義に準拠します。そのため、Enterprise Manager 12cより前のトラップは引き続き送信されます。詳細は、「SNMPトラップのマッピング」を参照してください。
また、Enterprise Manager 12cでは、SNMPトラップのサイズは、すべてのイベント・タイプに対応し、より包括的な情報を提供するするために増加しました。デフォルトでは、SNMPパケットの最大サイズは5120バイトです。サード・パーティ・システムで受信できるSNMPトラップのサイズに制限がある場合、Enterprise Managerが送信するデフォルトのSNMPトラップのサイズを変更できます。デフォルトのパケット・サイズを変更するには、このemoms oracle.sysman.core.notification.snmp_packet_length
パラメータを設定し、OMSをバウンスします。
注意:
SNMPトラップのパケット・サイズを制限する場合に、oracle.sysman.core.notification.snmp_packet_lengthパラメータを3072 bytes (3K)より低く設定しないことをお薦めします。
Enterprise Manager 12c MIBにはEnterprise Manager 12c以前のすべてのMIB定義が含まれます。そのため、サード・パーティ・システムにEnterprise Manager 12c MIBがあれば、Enterprise Manager 12c以前のサイトとEnterprise Manager 12cのサイトの両方からSNMPトラップを受信できます。リリース・マッピングの詳細は、「SNMPトラップのマッピング」を参照してください。
Enterprise Manager Cloud Controlは、サード・パーティのSNMP対応アプリケーションにSNMPトラップを送信できます。トラップ・コンテンツの詳細は、管理情報ベース(MIB)変数から取得できます。次の項では、Enterprise ManagerのMIB変数を詳しく説明します。
MIBはASN.1表記で記述されたテキスト・ファイルで、SNMPがアクセスできる情報を含む変数を説明します。MIBオブジェクトとも呼ばれるMIBに記述されている変数は、SNMPを使用してモニターできるアイテムです。モニターされる要素ごとに1つのMIBがあります。各モノリシックまたはサブエージェントは、取得できる変数とその特性を調べるために、それぞれのMIBを調べます。この情報のMIBへのカプセル化により、マスター・エージェントは新しいサブエージェントを動的に登録できます。マスター・エージェントがサブエージェントについて知る必要のあるすべての情報が、そのMIBに含まれています。管理フレームワークと管理アプリケーションも、同じ目的でこれらのMIBを調べます。MIBは、標準(パブリックとも呼びます)または固有(プライベートまたはベンダーとも呼びます)のいずれかです。
変数の実際の値はMIB内にはなく、計測というプラットフォーム対応プロセスによって取得されます。すべてのSNMP通信は1つ以上のMIBオブジェクトを参照するため、MIBの概念は非常に重要です。実質的にはMIB変数およびその現在の値が、フレームワークに転送されます。
SNMP MIBファイルは次の場所にあります。
OMS_HOME/network/doc/omstrap.v1
注意:
omstrap.v1ファイルはSNMP V1とSNMP V3の両方と互換性があります。
ファイルomstrap.v1はOMS MIBです。
詳細は、「Enterprise Manager MIBの変数の解釈」を参照してください。
omstrap.v1のハードコピーは、「Enterprise Manager MIBの定義」で参照できます。
SNMP OID値の長さは、デフォルトで2560バイトに制限されます。emomsプロパティoracle.sysman.core.notification.snmp.max_oid_lengthを構成してデフォルト制限を変更します。
Enterprise Manager 12cでは、SNMPトラップはイベント通知に対してのみ配信されます。SNMPトラップ通知は、インシデントまたは問題に対してはサポートされません。
注意:
以前のバージョンのEnterprise Manager(12cより前)を使用して定義されたSNMP拡張通知メソッドは、変更しなくても機能を続けます。トラップは、古いEnterprise Manager MIB定義に準拠します。
この項ではMIB変数の説明に使用される形式を説明します。SNMP MIB定義バージョン1のSTATUS要素は、このMIB変数の説明には含まれないので注意してください。OracleではすべてのMIB変数がCURRENTとして実装されるため、この値は変化しません。
SNMP MIB定義バージョン1のSYNTAX要素にマップします。
SNMP MIB定義バージョン1のMAX-ACCESS要素にマップします。
SNMP MIB定義バージョン1のSTATUS要素にマップします。
変数のファンクション、使用方法および正確な導出方法を説明します。(たとえば、変数は特定の構成ファイル・パラメータまたはパフォーマンス表フィールドから導出されます。)適切な場合は、MIB定義バージョン1のDESCRIPTION部分を組み込みます。
変数の論理的な範囲ではなく標準的な範囲を示します。たとえば、多くのMIB変数の整数値の論理的な上限は4294967295ですが、実際にインストールされたものの標準的な範囲はより小さくなります。その一方で、大規模データベースのいくつかの変数値が実際にはこの論理的限界(ラップアラウンド)を超える場合があります。変数値の標準的な範囲を0から1,000または1,000から30億に指定することによって、サード・パーティの開発者がその変数の最も便利なグラフィック表示を開発することができます。
標準的なインストールのモニタリング時における変数の重要度を示します。重要度の段階は「高」、「中」、「低」または「通常は使用されない」です。DBAは、ある変数を他の変数よりも厳密にモニターすることが必要になります。ただしこのカテゴリに当てはまる変数は、アプリケーション、データベース・サイズおよびDBAの目的などに応じてインストールごとに異なる可能性があります。それでも、MIBの他の変数に対する変数の重要度を評価することによって、多くのDBAにとって最も関心のある変数に対し、サード・パーティの開発者が集中的に開発作業を行うことができます。
この変数に関連している、このMIBまたはOracleで実装済の他のMIBの変数を列記します。たとえば、この変数の値は別のMIB変数の値から導出されている可能性があります。また、この変数の値が別の変数の値と反比例している場合もあります。この情報を得ることによって、サード・パーティの開発者が関連するMIB変数の便利なグラフィック表示を開発できます。
管理アプリケーションを使用しているDBAにとって最も役立つように、この変数を表示する方法(単純な値、ゲージまたはアラームとしてなど)を示します。
修正処理ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対する自動レスポンスをカスタマイズできます。たとえば、クリティカルな修正処理の実行が失敗した場合に、OSスクリプトをコールして、社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開くとします。この場合、ステータス(「問題」や「中断」など)をスクリプトに渡してトラブル・チケットを開き、問題を提示します。
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。
UNIX: $ENV_VARIABLE
MS Windows: %ENV_VARIABLE%
通知システムは、スクリプトをコールする前に次の環境変数を設定します。通知システムは、修正処理実行用の環境変数$NOTIF_TYPE = NOTIF_CAを設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。
次の表に、修正処理の環境変数をリストします。これらは、イベントに対して修正処理が完了したときに移入されます。
表3-13 修正処理環境変数
環境変数 | 説明 |
---|---|
CA_JOB_STATUS |
修正処理ジョブの実行ステータス。 |
CA_JOB_NAME |
修正処理の名前。 |
CA_JOB_OWNER |
修正処理の所有者。 |
CA_JOB_STEP_OUTPUT |
値は修正処理の実行からのテキスト出力です。 |
CA_JOB_TYPE |
修正処理ジョブのタイプ。 |
通知システムは、修正処理のステータス変更情報をPL/SQLプロシージャPROCEDURE p(event_msg IN gc$notif_event_msg)
に渡します。event_msg. msg_info. notification_typeがGC$NOTIFICATIONNOTIF_CAと等しい場合、インスタンスgc$notif_corrective_action_jobオブジェクトはevent_msg.event_payload. corrective_actionで定義されます。修正処理が実行されると、通知システムはインシデント・ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡されたオブジェクトのフィールドにアクセスできます。詳細は、表3-44を参照。
次のステータス・コードは、MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのjob_statusフィールドに使用可能な値です。
表3-14 修正処理ステータス・コード
名前 | データ型 | 値 |
---|---|---|
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 |
ジョブ・ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対する自動レスポンスをカスタマイズできます。たとえば、クリティカルなジョブの実行が失敗した場合に、OSスクリプトをコールして、社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開くとします。この場合、ステータス(「問題」や「中断」など)をスクリプトに渡してトラブル・チケットを開き、問題を提示します。ジョブ実行ステータス情報は、イベント・タイプの1つ(job_status_changeイベント)であり、「OSコマンドおよびスクリプトを使用した通知の送信」および「PL/SQLプロシージャを使用した通知の送信」で説明しているように、その内容はOSコマンドとPL/SQLペイロード内にあります。
通知システムは、event_typeがjob_status_changeと等しいevent_msg.event_payloadオブジェクトを介してPL/SQLプロシージャにジョブ・ステータス変更情報を渡します。このオブジェクトのインスタンスは、ステータス変更ごとに作成されます。ジョブがステータスを変更すると、通知システムはインシデント・ルールに関連付けられているPL/SQL p(event_msg IN gc$notif_event_msg)
プロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡されたevent_msg.event_payloadオブジェクトのフィールドにアクセスできます。
表3-15に、受渡し可能なすべての修正処理ステータス変更の属性を示します。
表3-15 ジョブ・ステータス属性
属性 | データ型 | 詳細情報 |
---|---|---|
event_msg.event_payload.source.source_name |
VARCHAR2(128) |
ジョブの名前。 |
event_msg.event_payload.source.source_owner |
VARCHAR2(256) |
ジョブの所有者。 |
event_msg.event_payload.source.source_sub_type |
VARCHAR2(32) |
ジョブのタイプ。 |
event_attrs(i).name=' execution_status'のevent_msg.event_payload. event_attrs(i).value |
NUMBER |
ジョブの新しいステータス。 |
event_attrs(i).name='state_change_guid'のevent_msg.event_payload. event_attrs(i).value |
RAW(16) |
状態変更レコードのGUID。 |
event_msg.event_payload.source.source_guid |
RAW(16) |
ジョブの一意のID。 |
event_attrs(i).name=' execution_id'のevent_msg target.event_payload. event_attrs(i).value |
RAW(16) |
実行の一意のID。 |
event_msg.event_payload.target |
gc$notif_target |
ターゲット情報オブジェクト。 |
event_msg.msg_info.rule_owner |
VARCHAR2(64) |
通知の送信を誘発する通知ルールの名前。 |
event_msg.msg_info.rule_name |
VARCHAR2(132) |
通知の送信を誘発する通知ルールの所有者。 |
event_msg.event_payload. reported_date |
DATE |
ステータス変更が発生した日時。 |
ジョブのジョブ・ステータス変更が発生すると、通知システムはevent_attrs(i).name=' execution_status'のevent_msg.event_payload. event_attrs(i).valueオブジェクトのインスタンスを作成し、ステータス変更の値を移入します。次のステータス・コードは、MGMT_JOBSパッケージに定数として定義され、event_attrs(i).name=' execution_status'のevent_msg.event_payload. event_attrs(i).valueオブジェクトのjob_statusフィールドのステータス・タイプを判断するために使用できます。
表3-16 ジョブ・ステータス・コード
名前 | データ型 | 値 |
---|---|---|
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 |
例3-16 ステータス・コード(Job)を使用するPL/SQLプロシージャ
CREATE TABLE job_log (jobid RAW(16), status_code NUMBER(2), occured DATE); CREATE OR REPLACE PROCEDURE LOG_JOB_STATUS_CHANGE(event_msg IN GC$NOTIF_EVENT_MSG) IS l_attrs gc$notif_event_attr_array; exec_status_code NUMBER(2) := NULL; occured_date DATE := NULL; job_guid RAW(16) := NULL; BEGIN IF event_msg.event_payload.event_type = 'job_status_change' THEN l_attrs := event_msg.event_payload.event_attrs; IF l_attrs IS NOT NULL THEN FOR i IN 1..l_attrs.COUNT LOOP IF l_attrs(i).name = 'exec_status_code' THEN exec_status_code := TO_NUMBER(l_attrs(i).value); END IF; END LOOP; END IF; occured_date := event_msg.event_payload.reported_date; job_guid := event_msg.event_payload.source.source_guid; -- Log all jobs' status BEGIN INSERT INTO job_log (jobid, status_code, occured) VALUES (job_guid, exec_status_code, occured_date); EXCEPTION WHEN OTHERS THEN -- If there are any problems then get the notification retried RAISE_APPLICATION_ERROR(-20000, 'Please retry'); END; COMMIT; ELSE null; -- it is not a job_status_change event, ignore END IF; END LOG_JOB_STATUS_CHANGE; /
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルにジョブ実行ステータス情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。
UNIX: $ENV_VARIABLE
MS Windows: %ENV_VARIABLE%
通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。
表3-17 環境変数
環境変数 | 説明 |
---|---|
SOURCE_OBJ_NAME |
ジョブの名前。 |
SOURCE_OBJ_OWNE |
ジョブの所有者。 |
SOURCE_OBJ_SUB_TYPE |
ジョブのタイプ。 |
EXEC_STATUS_CODE |
ジョブ・ステータス。 |
EVENT_REPORTED_TIME |
重大度が発生した時刻。 |
TARGET_NAME |
ターゲットの名前。 |
TARGET_TYPE |
ターゲットのタイプ。 |
RULE_NAME |
重大度発生の原因となった通知ルールの名前。 |
RULE_OWNER |
通知ルールを所有するEnterprise Manager管理者の名前。 |
Enterprise Managerでは、ターゲットに固有の環境または使用コンテキスト情報の格納に使用できるターゲット・プロパティ(ターゲットのホームページからアクセス)を定義できます。ターゲット・プロパティ値はカスタム通知メソッドに渡され、そこで条件ロジックを使用して処理するか、チケット・システムなどのサード・パーティ・デバイスに追加のアラート情報として単純に渡すことができます。デフォルトでは、Enterprise Managerは定義されているすべてのターゲット・プロパティを通知メソッドに渡します。
注意:
短い電子メール書式が使用されている場合は、ターゲット・プロパティは通知メソッドに渡されません。
この項には、次のリファレンス情報が含まれます。
EMOMSプロパティを使用して、短い電子メールのサイズと形式を制御できます。次の表に、通知システムのemomsプロパティをリストします。
表3-18 通知のemomsプロパティ
プロパティ名 | デフォルト値 | 説明 |
---|---|---|
oracle.sysman.core.notification.emails_per_minute |
250 |
1分当たりの電子メール配信制限。通知システムは、この値を使用して、1分当たりの電子メール配信の数を抑制します。顧客は、電子メール・サーバーをオーバーフローさせない必要がある場合には値を低く設定し、電子メール・サーバーが大量の電子メールを処理できる場合には高い値を設定する必要があります。 |
oracle.sysman.core.notification.cmds_per_minute |
100 |
1分当たりのOSコマンド配信制限。通知システムは、この値を使用して、1分当たりのOSコマンド配信の数を抑制します。 |
oracle.sysman.core.notification.os_cmd_timeout |
30 |
OSコマンド配信タイムアウト(秒単位)。この値は、OSプロセスがOSコマンド配信を実行できる時間の長さを示します。OSコマンド・スクリプトの実行の完了に長時間かかる場合は、この値を大きく設定します。 |
oracle.sysman.core.notification.plsql_per_minute |
250 |
1分当たりのPL/SQL配信制限。通知システムは、この値を使用して、1分当たりのPL/SQL配信の数を抑制します。 |
em.notification.java_per_minute |
500 |
1分当たりのJAVA配信制限。通知システムは、この値を使用して、1分当たりのJava配信の数を抑制します。 |
em.notification.ticket_per_minute |
250 |
1分当たりのチケット配信制限。通知システムは、この値を使用して、1分当たりのチケット配信の数を抑制します。 |
oracle.sysman.core.notification.traps_per_minute |
250 |
1分当たりのSNMP配信制限。通知システムは、この値を使用して、1分当たりのSNMPトラップの数を制御します。 |
oracle.sysman.core.notification.locale.plsql |
OMSロケール |
このプロパティは、詳細PL/SQL通知で配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。 有効なロケールは次のとおりです。
|
oracle.sysman.core.notification.locale.email |
OMSロケール |
このプロパティは、電子メールで配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。 有効なロケールは次のとおりです。
|
oracle.sysman.core.notification.locale.oscmd |
OMSロケール |
このプロパティは、OSコマンドで配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。 有効なロケールは次のとおりです。
|
oracle.sysman.core.notification.locale.snmp |
OMSロケール |
このプロパティは、SNMPトラップで配信されるロケールを指定します。顧客は、このプロパティを定義して、OMSがインストールされているデフォルト・ロケールを上書きできます。 有効なロケールは次のとおりです。
|
oracle.sysman.core.notification.oscmd.max_env_var_length |
512 |
OS Common環境変数値の最大の長さ。 |
oracle.sysman.core.notification.snmp.max_oid_length |
2560 |
SNMP OID値の最大の長さ。 |
oracle.sysman.core.notification.min_delivery_threads |
6 |
初期のスレッド・プール内のアクティブ・スレッドの最小数およびシステムのアクティビティが少ないときに実行されているアクティブ・スレッドの数。大きい値を設定すると、より多くのシステム・リソースが使用され、より多くの通知が配信されます。 |
oracle.sysman.core.notification.max_delivery_threads |
24 |
システムのアクティビティが多いときのスレッド・プール内のアクティブ・スレッドの最大数。この値は、em.notification.min_delivery_threadsより大きくする必要があります。大きい値を設定すると、より多くのシステム・リソースが使用され、より多くの通知が配信されます。 |
oracle.sysman.core.notification.short_format_length |
>=1 (155) |
短い電子メール形式の合計文字数のサイズ制限。顧客は、電子メールまたはページャのコンテンツ・サイズ制限に合わせて、このプロパティ値を変更する必要があります。短い形式の電子メールの通知では、電子メールの件名は最大80文字に制限されます。 |
oracle.sysman.core.notification.snmp_packet_length |
<=1 (5120) |
SNMPプロトコル・データ単位の最大サイズ。 |
oracle.sysman.core.notification.email_content_transfer_encoding |
8-bit、7-bit(QP)、7-bit(BASE64)(8-bit) |
電子メールをエンコードできる文字セット。Oracleでは、8-bit、7-bit(QP)、7-bit(BASE64)の3つの文字セットがサポートされます。 |
oracle.sysman.core.notification.emails_per_connection |
>=1 (20) |
次に使用可能な電子メール・ゲートウェイに切り替える前に、同じ電子メール・ゲートウェイに配信される電子メールの最大数(顧客が複数の電子メール・ゲートウェイを構成していると仮定した場合)。このプロパティは、電子メール・ゲートウェイのロード・バランシングに使用されます。 |
oracle.sysman.core.notification.short_format |
both、subject、body (both) |
件名と本文の両方、件名のみ、または本文のみで短い形式を使用します。 |
oracle.sysman.core.notification.send_prior_status_after_agent_unreachable_clears |
True |
デフォルトでは、ターゲットのステータスが変更されていなくても、モニタリング・エージェントが使用不可ステータスでなくなるたびにターゲットのステータスを示す通知が送信されます。このemomsプロパティを使用して、重複するターゲット・ステータス通知を有効化(True)/無効化(False)します。 重複するターゲット・ステータス通知を無効化するには、このプロパティをFalseに設定します。
重複するターゲット・ステータス通知を有効化するには、このプロパティをTrueに設定します。
|
使用するデバイスでサポート可能な最大サイズと、メッセージを件名、本文、その両方のいずれの形式で送信するかを設定する必要があります。
emomsプロパティは、Enterprise Managerコマンドライン制御emctl
get/set/delete/list
プロパティ・コマンドを使用して変更できます。
注意:
次のコマンドは、変更を有効にするためにOMSの再起動を必要とします。
プロパティ・コマンドの取得
emctl get [-sysman_pwd "sysman password"]-name oracle.sysman.core.notification.short_format_length
プロパティ・コマンドの設定
emctl set property -name oracle.sysman.core.notification.short_format_length -value 155
短い形式の電子メール用のEmomsプロパティ・エントリ
emctl set property -name oracle.sysman.core.notification.short_format_length -value 155 emctl set property -name oracle.sysman.core.notification.short_format -value both
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに情報を渡します。
環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。
UNIX: $ENV_VARIABLE
Windows: %ENV_VARIABLE%
通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。
表3-19 汎用的な環境変数
環境変数 | 説明 |
---|---|
NOTIF_TYPE |
通知のタイプと有効な値 NOTIF_NORMAL、 NOTIF_RETRY、 NOTIF_DURATION、 NOTIF_REPEAT、 NOTIF_CA、 NOTIF_RCA |
REPEAT_COUNT |
通知が送信された回数 (この通知より前)。 |
RULESET_NAME |
この通知をトリガーしたルールセットの名前。 |
RULE_NAME |
この通知をトリガーしたルールの名前。 |
RULE_OWNER |
この通知をトリガーしたルールセットの所有者。 |
MESSAGE |
イベント、インシデントまたは問題のメッセージ。 |
MESSAGE_URL |
このメッセージのEMコンソールURL。 |
表3-20 カテゴリ関連の環境変数
環境変数 | 説明 |
---|---|
CATEGORIES_COUNT |
この通知内のカテゴリ数。1つのカテゴリがイベント、インシデントまたは問題に関連付けられている場合、この値は1です。イベント、インシデントまたは問題にカテゴリが関連付けられていない場合は0です。 |
CATEGORY_CODES_COUNT |
この通知内のカテゴリ・コード数。 |
CATEGORY_n |
カテゴリは、OMSサーバーで定義されているロケールに基づいて翻訳されます。接尾辞"_n"の有効値は1から$CATEGORIES_COUNTです。 |
CATEGORY_CODE_n |
カテゴリのコード。接尾辞"_n"の有効値は1から$CATEGORY_CODES_COUNTです。 |
表3-21に、ユーザー定義ターゲット・プロパティに共通の環境変数を示します。これらは、(a)イベントに関連ターゲットがある場合、(b)インシデントまたは問題に単一のイベント・ソースと関連ターゲットがある場合に移入されます。
表3-21 ユーザー定義ターゲット・プロパティ環境変数
環境変数 | 説明 |
---|---|
ORCL_GTP_COMMENT |
コメント |
ORCL_GTP_CONTACT |
連絡先 |
ORCL_GTP_COST_CENTER |
コスト・センター |
ORCL_GTP_DEPARTMENT |
部門 |
ORCL_GTP_DEPLOYMENT_TYPE |
デプロイメント・タイプ |
ORCL_GTP_LINE_OF_BUS |
ライン・オブ・ビジネス |
ORCL_GTP_LOCATION |
場所 |
表3-22 イベント通知固有の環境変数
環境変数 | 説明 |
---|---|
EVENT_NAME |
イベント名。 |
EVENT_REPORTED_TIME |
イベント報告日。 |
EVENT_SOURCE_COUNT |
このイベントに関連付けられているソース数。 |
EVENT_TYPE |
イベント・タイプ。 |
EVENT_OCCURRENCE_TIME |
イベントの発生時刻。 |
EVENT_TYPE_ATTRS |
イベント・タイプに固有の属性のリスト。 |
EVENT_CONTEXT_ATTRS |
イベントのコンテキスト・データ。 |
LAST_UPDATED_TIME |
最終更新時間 |
SEQUENCE_ID |
一意のイベント順序識別子。イベント順序は、1つ以上のイベントで構成される場合があります。この順序のすべてのイベントは、同じイベント順序IDを持ちます。 |
SEVERITY |
翻訳されたイベントの重大度。 |
SEVERITY_CODE |
イベント重大度のコード。可能な値は次のとおりです。 FATAL、CRITICAL、WARNING、MINOR_WARNING、INFORMATIONALおよびCLEAR |
ACTION_MSG |
イベントを解決するために実行するアクションを説明するメッセージ。 |
TOTAL_OCCURRENCE_COUNT |
重複発生の合計数 |
RCA_DETAILS |
RCAがこのイベントに関連付けられているかどうか。 |
CURRENT_OCCURRENCE_COUNT |
現在の収集期間におけるイベントの合計発生数。この属性は、重複解除済イベントにのみ適用されます。 |
CURRENT_FIRST_OCCUR_DATE |
現在の収集期間においてイベントが最初に発生したときのタイムスタンプ。この属性は、重複解除済イベントにのみ適用されます。 |
CURRENT_LAST_OCCUR_DATE_DESC |
現在の収集期間においてイベントが最後に発生したときのタイムスタンプ。この属性は、重複解除済イベントにのみ適用されます。 |
表3-23に、イベントに関連付けられているインシデントの環境変数を示します。これらは、イベントがインシデントに関連付けられている場合に移入されます。
表3-23 関連付けられているインシデント環境変数
環境変数 | 説明 |
---|---|
ASSOC_INCIDENT_ACKNOWLEDGED_BY_OWNER |
関連インシデントが所有者によって確認された場合はyesに設定します。 |
ASSOC_INCIDENT_ACKNOWLEDGED_DETAILS |
関連インシデントの確認の詳細。例: No - 確認されていない場合。Yes By userName - 確認されている場合 |
ASSOC_INCIDENT_STATUS |
関連インシデント・ステータス |
ASSOC_INCIDENT_ID |
関連インシデントID |
ASSOC_INCIDENT_PRIORITY |
関連インシデントの優先度。サポートされる値は、「緊急」、「非常に高」、「高」、「中」、「低」、「なし」です。 |
ASSOC_INCIDENT_OWNER |
関連インシデントの所有者(存在する場合)。 |
ASSOC_INCIDENT_ESCALATION_LEVEL |
関連インシデントのエスカレーション・レベルの値は0から5です。 |
表3-24に、ソース・オブジェクトに関連する共通の環境変数を示します。これらは、$SOURCE_OBJ_TYPEがTARGETでない場合に移入されます。
表3-24 ソース・オブジェクト関連の環境変数
環境変数 | 説明 |
---|---|
SOURCE_OBJ_TYPE |
ソース・オブジェクトのタイプ。例: JOB、TEMPLATE。 |
SOURCE_OBJ_NAME |
ソース・オブジェクト名。 |
SOURCE_OBJ_NAME_URL |
ソースのイベント・コンソールURL。 |
SOURCE_OBJ_SUB_TYPE |
ソース・オブジェクトのサブタイプ。たとえば、ジョブ・ステータス変更イベントの基礎となるジョブ・タイプを提供します。 |
SOURCE_OBJ_OWNER |
ソース・オブジェクトの所有者。 |
表3-25に、特定の問題に関連付けられた、ターゲットに共通の環境変数を示します。これらは、問題がターゲットに関連する場合に移入されます。
表3-25 ターゲット関連の環境変数
環境変数 | 説明 |
---|---|
TARGET_NAME |
ターゲットの名前 |
TARGET_TYPE |
ターゲットのタイプ |
TARGET_OWNER |
ターゲットの所有者 |
HOST_NAME |
ターゲットがデプロイされるホストの名前。 |
TARGET_URL |
ターゲットのEnterprise ManagerコンソールURL。 |
TARGET_LIFECYCLE_STATUS |
ターゲットのライフ・サイクル・ステータス。 有効な値: Production、Mission Critical、Stage、Test、Development。 定義されていない場合はnullです。 |
TARGET_VERSION |
ターゲットのターゲット・バージョン |
イベントは、複数のタイプに分類されます。たとえば、mertc_alertイベント・タイプはメトリック・アラートのモデル化に使用されます。SQL問合せを使用して、デプロイメントおよびイベント固有のペイロードのイベント・タイプをリストできます。次のSQLサンプルを使用して、Enterprise Managerに登録されているすべての内部イベント・タイプ名をリストできます。
Select event_class as event_type, upper(name) as env_var_name from em_event_class_attrs where notif_order != 0 and event_class is not null union select event_class as event_type, upper(name) || '_NLS' as env_var_name from em_event_class_attrs where notif_order != 0 and event_class is not null and is_translated = 1 order by event_type, env_var_name;
各イベント・タイプに固有の環境変数ペイロードには、OSスクリプトを通じてアクセスできます。次の表に、最もクリティカルなイベント・タイプの通知属性をリストします。
表3-26 メトリック・アラート・イベント・タイプに固有の環境変数
環境変数 | 説明 |
---|---|
COLL_NAME |
メトリックを収集するコレクションの名前。 |
COLL_NAME_NLS |
メトリックを収集するコレクションの翻訳された名前 |
KEY_COLUMN_X |
キー列Xの内部名(Xは1から7の数値)。 |
KEY_COLUMN_X_NLS |
キー列Xの翻訳された名前(Xは1から7の数値)。 |
KEY_COLUMN_X_VALUE |
キー列Xの値(Xは1から7の数値)。 |
KEY_VALUE |
メトリック・アラート・イベントに対応するメトリックのモニター対象オブジェクト。 |
METRIC_COLUMN |
メトリック列の名前 |
METRIC_COLUMN_NLS |
メトリック列の翻訳された名前。 |
METRIC_DESCRIPTION |
メトリックの簡単な説明。 |
METRIC_DESCRIPTION_NLS |
メトリックの翻訳された簡単な説明。 |
METRIC_GROUP |
メトリックの名前。 |
METRIC_GROUP_NLS |
メトリックの翻訳された名前 |
NUM_KEYS |
メトリック内のキー・メトリック列の数。 |
SEVERITY_GUID |
このメトリック・アラートに関連付けられている重大度レコードのGUID。 |
CYCLE_GUID |
メトリック・アラートが最初に生成されたときからクリアされるまでの、メトリック・アラート・サイクルの一意の識別子。 |
VALUE |
イベントがトリガーされたときのメトリックの値。 |
表3-27 ターゲット可用性イベント・タイプに固有の環境変数
環境変数 | 説明 |
---|---|
AVAIL_SEVERITY |
ターゲットのステータスが現在の可用性ステータスに変更された要因である遷移重大度。 AVAIL_SEVERITYに指定できる値
|
AVAIL_SUB_STATE |
現在のステータスに対するターゲットのサブステータス。 |
CYCLE_GUID |
メトリック・アラートが最初に生成されたときからクリアされるまでの、メトリック・アラート・サイクルの一意の識別子。 |
METRIC_GUID |
レスポンス・メトリックのメトリックGUID。 |
SEVERITY_GUID |
この可用性ステータスに関連付けられている重大度レコードのGUID。 |
TARGET_STATUS |
ターゲットの現在の可用性のステータス。 |
TARGET_STATUS_NLS |
ターゲットの翻訳された現在の可用性のステータス。 |
表3-28 ジョブ・ステータスの変更イベント・タイプに固有の環境変数
環境変数 | 説明 |
---|---|
EXECUTION_ID |
ジョブ実行の一意のID。 |
EXECUTION_LOG |
実行された最後のステップのジョブ出力。 |
EXECUTION_STATUS |
ジョブ実行の内部ステータス。 |
EXECUTION_STATUS_NLS |
ジョブ実行の翻訳されたステータス。 |
EXEC_STATUS_CODE |
ジョブ実行の実行ステータス・コード。可能な値は、表3-16を参照してください。 |
STATE_CHANGE_GUID |
最新ステータス変更の一意のID |
SQL問合せを使用して、デプロイされているイベント・タイプと各イベント・タイプに固有のペイロードをリストできます。次のSQLを使用して、Enterprise Managerに登録されているすべての内部イベント・タイプ名をリストできます。
select class_name as event_type_name from em_event_class;
次のSQLは、metric_alertイベント・タイプに固有の環境変数をリストします。
select env_var_name from ( Select event_class as event_type, upper(name) as env_var_name from em_event_class_attrs where notif_order != 0 and event_class is not null union select event_class as event_type, upper(name) || '_NLS' as env_var_name from em_event_class_attrs where notif_order != 0 and event_class is not null and is_translated = 1) where event_type = 'metric_alert';
Enterprise Managerコンソールから、イベント・タイプに固有の通知属性の説明を直接取得することもできます。
「設定」メニューから、「通知」、「電子メール形式のカスタマイズ」の順に選択します。
イベント・タイプを選択します。
「カスタマイズ」をクリックします。
「事前定義済属性の表示」をクリックします。
接尾辞_NLSで終わる環境変数は、特定の属性の翻訳された値を提供します。たとえば、METRIC_COLUMN_NLS環境変数は、メトリック列属性の翻訳された値を提供します。翻訳された値は、OMSのロケールになります。
表3-29 インシデント固有の環境変数
環境変数 | 説明 |
---|---|
SEVERITY |
翻訳されたインシデント重大度。有効な値: 「致命的」、「クリティカル」、「警告」、「情報」、「クリア」 |
SEVERITY_CODE |
重大度のコード。 可能な値は次のとおりです。 FATAL、CRITICAL、WARNING、MINOR_WARNING、INFORMATIONALおよびCLEAR |
INCIDENT_REPORTED_TIME |
インシデント報告時間 |
INCIDENT_ACKNOWLEDGED_BY_OWNER |
インシデントが所有者によって確認された場合はyesに設定します。 |
INCIDENT_ID |
インシデントID |
INCIDENT_OWNER |
インシデント所有者 |
ASSOC_EVENT_COUNT |
このインシデントに関連付けられているイベント数。 |
INCIDENT_STATUS |
インシデント・ステータス。2つの内部修正解決ステータスがあります。 NEW CLOSED ユーザーはステータスを追加で定義できます。 |
ESCALATED |
インシデントはエスカレートされます。 |
ESCALATED_LEVEL |
インシデントのエスカレートされたレベル。 |
PRIORITY |
インシデント優先度。翻訳された優先度名です。有効な値: 「緊急」、「非常に高」、「高」、「中」、「低」、「なし」 |
PRIOTITY_CODE |
インシデント優先度コード EMで定義されている内部値です。 PRIORITY_URGENT PRIORITY_VERY_HIGH PRIORITY_HIGH PRIORITY_MEDIUM PRIORITY_LOW PRIORITY_NONE |
TICKET_STATUS |
外部チケットのステータス(存在する場合)。 |
TICKET_ID |
外部チケットのID(存在する場合)。 |
LAST_UPDATED_TIME |
インシデントの最終更新時間 |
ADR_INCIDENT_ID |
自動診断リポジトリ(ADR)・インシデントID: ADRインシデントの一意の数値識別子。ADRインシデントは、問題の発生を示します。 |
ADR_IMPACT |
自動診断リポジトリ(ADR)・インシデントの影響。 |
ADR_ECID |
関連する自動診断リポジトリ(ADR)・インシデントに関連付けられた実行コンテキストID (ECID)。ECIDは、Oracleソフトウェア・スタックによって1回のコールにタグを付け、追跡するために使用するグローバルに一意の識別子です。スタックの複数の層にわたって発生する可能性のある問題を対応付けるために使用されます。 |
ASSOC_PROBLEM_KEY |
自動診断リポジトリ(ADR)・インシデントに関連付けられた問題のキー。問題はOracle製品におけるクリティカルなエラーです。Problemのキーは、問題を説明するテキスト文字列です。エラー・コードと、場合によってはその他のエラー固有の値が含まれます。 |
表3-30に、インシデントが問題に関連付けられているときに関連する問題の環境変数を示します。
表3-30 インシデントが関連付けられている問題の環境変数
環境変数 | 説明 |
---|---|
ASSOC_PROBLEM_ACKNOWLEDGED_BY_OWNER |
この問題が所有者によって確認された場合はyesに設定します。 |
ASSOC_PROBLEM_STATUS |
関連する問題のステータス |
ASSOC_PROBLEM_ID |
関連する問題のID |
ASSOC_PROBLEM_PRIORITY |
関連する問題の優先度 |
ASSOC_PROBLEM_OWNER |
関連する問題の所有者(存在する場合)。 |
ASSOC_PROBLEM_ESCALATION_LEVEL |
関連する問題のエスカレーション・レベルの値は0から5です。 |
表3-31 問題に固有の環境変数
環境変数 | 説明 |
---|---|
SEVERITY |
翻訳された問題重大度。 |
SEVERITY_CODE |
重大度のコード。 可能な値は次のとおりです。 FATAL、CRITICAL、WARNING、MINOR_WARNING、INFORMATIONALおよびCLEAR |
PROBLEM_REPORTED_TIME |
問題報告時間。 |
PROBLEM_ACKNOWLEDGED_BY_OWNER |
問題が所有者によって確認された場合はyesに設定します。 |
PROBLEM_ID |
Problem ID |
PROBLEM_KEY |
問題キー |
PROBLEM_OWNER |
問題所有者 |
ASSOC_INCIDENT_COUNT |
この問題に関連付けられているインシデント数。 |
PROBLEM_STATUS |
インシデント・ステータス。次のとおりです。 STATUS_NEW STATUS_CLOSED 他の任意のユーザー定義ステータス。 |
ESCALATED |
インシデントはエスカレートされます。エスカレートされている場合はYes、それ以外の場合はNoです。 |
ESCALATED_LEVEL |
インシデントのエスカレートされたレベル。 |
PRIORITY |
インシデント優先度。翻訳された優先度名です。 |
PRIOTITY_CODE |
インシデント優先度コード Enterprise Managerで定義されている内部値です。 PRIORITY_URGENT PRIORITY_VERY_HIGH PRIORITY_HIGH PRIORITY_MEDIUM PRIORITY_LOW PRIORITY_NONE |
LAST_UPDATED_TIME |
最終更新時間 |
SR_ID |
Oracleサービス・リクエストID(存在する場合)。 |
BUG_ID |
OracleバグID(関連付けられているバグが存在する場合)。 |
インシデントまたは問題は、複数のイベント・ソースに関連付けることができます。イベント・ソースには、ターゲット、ソース・オブジェクトまたはその両方があります。
イベント・ソースの数は、EVENT_SOURCE_COUNT環境変数によって設定されます。EVENT_SOURCE_COUNT情報を使用して、関連する環境変数をループして複数のイベント・ソースに関する情報をフェッチするスクリプトを作成できます。すべてのイベント・ソースの環境変数にはEVENT_SOURCE_という接頭辞が付きます。ソース・オブジェクトの環境変数には、SOURCE_<attribute_name>という接尾辞が付きます。たとえば、EVENT_SOURCE_1_SOURCE_TYPEは、最初のイベント・ソースのソース・オブジェクト・タイプを提供します。ターゲットの環境変数には、TARGET_<attribute_name>という接尾辞が付きます。たとえば、EVENT_SOURCE_1_TARGET_NAMEは、最初のイベント・ソースのターゲット名を提供します。
次の表に、x番目のイベント・ソースのソース・オブジェクトの環境変数をリストします。
表3-32 x番目のイベント・ソースのソース・オブジェクト
環境変数 | 説明 |
---|---|
EVENT_SOURCE_x_SOURCE_GUID |
ソース・オブジェクトのGUID。 |
EVENT_SOURCE_x_SOURCE_TYPE |
ソース・オブジェクト・タイプ |
EVENT_SOURCE_x_SOURCE_NAME |
ソース・オブジェクト名。 |
EVENT_SOURCE_x_SOURCE_OWNER |
ソース・オブジェクトの所有者。 |
EVENT_SOURCE_x_SOURCE_SUB_TYPE |
ソース・オブジェクトのサブタイプ。 |
EVENT_SOURCE_x_SOURCE_URL |
EMコンソールへのソース・オブジェクトURL。 |
表3-33に、x番目のイベント・ソースのターゲットの環境変数を示します。
表3-33 x番目のイベント・ソースのターゲット
環境変数 | 説明 |
---|---|
EVENT_SOURCE_x_TARGET_GUID |
ターゲットGUID |
EVENT_SOURCE_x_TARGET_NAME |
ターゲット名 |
EVENT_SOURCE_x_TARGET_OWNER |
ターゲット所有者 |
EVENT_SOURCE_x_TARGET_VERSION |
ターゲット・バージョン |
EVENT_SOURCE_x_TARGET_LIFE_CYCLE_STATUS |
ターゲットのライフ・サイクル・ステータス |
EVENT_SOURCE_x_TARGET_TYPE |
ターゲット・タイプ |
EVENT_SOURCE_x_HOST_NAME |
ターゲット・ホスト名 |
EVENT_SOURCE_x_TARGET_URL |
EMコンソールへのターゲットURL。 |
イベント、インシデントおよび問題情報(ペイロード)をPL/SQLプロシージャに渡すと、これらの条件に対する自動レスポンスをカスタマイズできます。3つの通知ペイロード・タイプすべてに、gc$notif_msg_info
という共通要素があります。これは、すべてのタイプの通知に適用される汎用情報を提供します。また、3つのペイロードそれぞれに、特定の問題タイプに固有のペイロードを提供する固有の要素が1つあります。
gc$notif_event_msg (イベント通知のペイロード)
gc$notif_event_msgには、イベント・ペイロード・オブジェクトとメッセージ情報オブジェクトの2つのオブジェクトが含まれます。
表3-34 イベント通知ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
EVENT_PAYLOAD |
gc$notif_event_payload |
イベント通知ペイロード。詳細は、gc$notif_event_payloadタイプの定義を参照してください。 |
MSG_INFO |
gc$notif_msg_info |
通知メッセージ。詳細は、gc$notif_msg_infoの定義を参照してください。 |
gc$notif_incident_msg (インシデント通知のペイロード)
gc$notif_incident_msgタイプには、インシデント・ペイロードとメッセージ情報の2つのオブジェクトが含まれます。このオブジェクトは、インシデント通知メッセージの配信ペイロードを表し、インシデント通知に関連付けられているすべてのデータを含み、ユーザーのカスタムPL/SQLプロシージャでアクセスできます。
表3-35 インシデント通知ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
INCIDENT_PAYLOAD |
gc$notif_incident_payload |
インシデント通知ペイロード。詳細は、gc$notif_incident_payloadタイプの定義を参照してください。 |
MSG_INFO |
gc$notif_msg_info |
エンベロープ・レベルの通知情報。詳細は、gc$notif_msg_infoタイプの定義を参照してください。 |
gc$notif_problem_msg (問題通知のペイロード)
このオブジェクトは、問題通知メッセージの配信ペイロードを表し、問題通知に関連付けられているすべてのデータを含み、ユーザーのカスタムPL/SQLプロシージャでアクセスできます。
表3-36 問題通知ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
PROBLEM_PAYLOAD |
gc$notif_problem_payload |
問題通知ペイロード。詳細は、gc$notif_problem_payloadタイプの定義を参照してください。 |
MSG_INFO |
gc$notif_msg_info |
通知メッセージ。詳細は、gc$notif_msg_infoタイプの定義を参照してください。 |
gc$notif_msg_info (イベント/インシデント/問題に共通のペイロード)
このオブジェクトには、イベント、インシデントまたは問題配信ペイロードのnotification_type、ルール・セット、ルール名などの汎用通知情報が含まれます。
表3-37 イベント、インシデント、問題に共通のペイロード
属性 | データ型 | 説明 |
---|---|---|
NOTIFICATION_TYPE |
VARCHAR2(32) |
通知のタイプ。次のいずれかの値です。 GC$NOTIFICATION.NOTIF_NORMAL GC$NOTIFICATION.NOTIF_RETRY GC$NOTIFICATION.NOTIF_REPEAT GC$NOTIFICATION.NOTIF_DURATION GC$NOTIFICATION.NOTIF_CA GC$NOTIFICATION.NOTIF_RCA |
REPEAT_COUNT |
NUMBER |
繰返し通知回数 |
RULESET_NAME |
VARCHAR2(256) |
通知をトリガーしたルール・セットの名前 |
RULE_NAME |
VARCHAR2(256) |
通知をトリガーしたルールの名前 |
RULE_OWNER |
VARCHAR2(256) |
ルール・セットを所有するEMユーザー |
MESSAGE |
VARCHAR2(4000) |
イベント/インシデント/問題に関するメッセージ。 |
MESSAGE_URL |
VARCHAR2(4000) |
イベント/インシデント/問題の詳細を提供するEnterprise Managerコンソール・ページへのリンク。 |
gc$notif_event_payload (イベント通知に固有のペイロード)
このオブジェクトは、イベント通知に固有のペイロードを表します。
表3-38 イベント、インシデントおよび問題に共通のペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
EVENT_INSTANCE_GUID |
RAW(16) |
イベント・インスタンスのグローバル一意識別子。 |
EVENT_SEQUENCE_GUID |
RAW(16) |
イベント順序のグローバル一意識別子。 |
TARGET |
gc$notif_target |
関連ターゲット情報オブジェクト。詳細は、gc$notif_targetタイプの定義を参照してください。 |
SOURCE |
gc$notif_source |
ターゲットでない関連ソース情報オブジェクト。詳細は、gc$notif_sourceタイプの定義を参照してください。 |
EVENT_ATTRS |
gc$notif_event_attr_array |
イベントで指定された属性のリスト。詳細は、gc$notif_event_attrタイプの定義を参照してください。 |
CORRECTIVE_ACTION |
gc$notif_corrective_action_job |
修正処理ジョブの実行完了時にオプションで移入される修正処理情報。 |
EVENT_TYPE |
VARCHAR2(20) |
イベント・タイプ: 「メトリック・アラート」など。 |
EVENT_NAME |
VARCHAR2(512) |
イベント名。 |
EVENT_MSG |
VARCHAR2(4000) |
イベント・メッセージ。 |
REPORTED_DATE |
DATE |
イベント報告日。 |
OCCURRENCE_DATE |
DATE |
イベント発生日。 |
SEVERITY |
VARCHAR2(128) |
イベントの重大度。翻訳された重大度名です。 |
SEVERITY_CODE |
VARCHAR2(32) |
イベントの重大度コード。Enterprise Managerで使用されている内部重大度名です。 |
ASSOC_INCIDENT |
gc$notif_issue_summary |
関連インシデントのサマリー。イベントがインシデントに関連付けられている場合に移入されます。詳細は、gc$notif_issue_summaryタイプの定義を参照してください。 |
ACTION_MSG |
VARCHAR2(4000) |
イベントを解決するために実行するアクションを説明するメッセージ。 |
RCA_DETAIL |
VARCHAR2(4000) |
根本原因分析の詳細。RCA詳細出力のサイズは、4000文字の長さに制限されます。 |
EVENT_CONTEXT_DATA |
gc$notif_event_context_array |
イベントのコンテキスト・データ。詳細は、gc$notif_event_contextタイプの定義を参照してください。 |
CATEGORIES |
gc$category_string_array |
イベントが属するカテゴリをリストします。カテゴリは、OMSサーバーで定義されているロケールに基づいて翻訳されます。通知システムは最大10個のカテゴリを送信します。 |
CATEGORY_CODES |
gc$category_string_array |
カテゴリのコード。配列のサイズは最大10です。 |
gc$notif_incident_payload (インシデント通知に固有のペイロード)
インシデント固有の属性、関連する問題およびチケット情報を含みます。
表3-39 インシデント通知ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
INCIDENT_ATTRS |
gc$notif_issue_attrs |
インシデント固有の属性。詳細は、gc$notif_issue_attrsタイプの定義を参照してください。 |
ASSOC_EVENT_COUNT |
NUMBER |
このインシデントに関連付けられているイベントの総数。 |
TICKET_STATUS |
VARCHAR2(64) |
外部チケットのステータス(存在する場合)。 |
TICKET_ID |
VARCHAR2(128) |
外部チケットのID(存在する場合)。 |
TICKET_URL |
VARCHAR2(4000) |
外部チケットのURL(存在する場合)。 |
ASSOC_PROBLEM |
gc$notif_issue_summary |
関連付けられている問題がある場合、問題のサマリー。詳細は、gc$notif_issue_summaryタイプの定義を参照してください。 |
gc$notif_problem_payload (問題に固有のペイロード)
問題に固有の属性、キー、サービス・リクエスト(SR)およびバグ情報が含まれます。
表3-40 問題ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
PROBLEM_ATTRS |
gc$notif_issue_attrs |
問題固有の属性。詳細は、gc$notif_issue_attrsタイプの定義を参照してください。 |
PROBLEM_KEY |
VARCHAR2(850) |
問題キー(生成されている場合)。 |
ASSOC_INCIDENT_COUNT |
NUMBER |
この問題に関連付けられているインシデント数。 |
SR_ID |
VARCHAR2(64) |
Oracleサービス・リクエストID(存在する場合)。 |
SR_URL |
VARCHAR2(4000) |
Oracleサービス・リクエストのURL(存在する場合)。 |
BUG_ID |
VARCHAR2(64) |
OracleバグID(関連付けられているバグが存在する場合)。 |
gc$notif_issue_attrs (インシデントと問題に共通のペイロード)
インシデントと問題に共通の詳細を提供します。関連付けられているID、重大度、優先度、ステータス、カテゴリ、所有者による確認、ソース情報などの詳細が含まれます。
表3-41 インシデントと問題に共通のペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
ID |
NUMBER(16) |
インシデントまたは問題のID。 |
SEVERITY |
VARCHAR2(128) |
問題の重大度。翻訳されています。 |
SEVERITY_CODE |
VARCHAR2(32) |
問題の重大度コード。可能な値は、重大度の降順に定義されています。 GC$EVENT.FATAL GC$EVENT.CRITICAL GC$EVENT.WARNING GC$EVENT.MINOR_WARNING GC$EVENT.INFORMATIONAL GC$EVENT.CLEAR |
PRIORITY |
VARCHAR2(128) |
問題の優先度。翻訳された優先度名です。 |
PRIORITY_CODE |
VARCHAR2(32) |
問題の優先度。EMで定義されている内部値です。可能な値は、優先度の降順に定義されています。 GC$EVENT.PRIORITY_URGENT GC$EVENT.PRIORITY_VERY_HIGH GC$EVENT.PRIORITY_HIGH GC$EVENT.PRIORITY_MEDIUM GC$EVENT.PRIORITY_LOW GC$EVENT.PRIORITY_NONE |
STATUS |
VARCHAR2(32) |
問題のステータス。可能な値は次のとおりです。 GC$EVENT.STATUS_NEW GC$EVENT.STATUS_CLOSED 他の任意のユーザー定義ステータス。 |
ESCALATION_LEVEL |
NUMBER(1) |
問題のエスカレーション・レベル。値は0から5です。 |
OWNER |
VARCHAR(256) |
問題の所有者。所有者が存在しない場合はNULLに設定します。 |
ACKNOWLEDGED_BY_OWNER |
NUMBER(1) |
この問題が所有者によって確認された場合は1に設定します。 |
CREATION_DATE |
DATE |
問題作成日。 |
CLOSED_DATE |
DATE |
問題がクローズされた日付。クローズされていない場合はnullです。 |
CATEGORIES |
gc$category_string_array |
イベントが属するカテゴリをリストします。カテゴリは、OMSサーバーで定義されているロケールに基づいて翻訳されます。通知システムは最大10個のカテゴリを送信します。 |
CATEGORY_CODES |
gc$category_string_array |
カテゴリのコード。通知システムは最大10個のカテゴリ・コードを送信します。 |
SOURCE_INFO_ARR |
gc$notif_source_info_array |
この問題に関連付けられているソース情報の配列。詳細は、$gcnotif_source_infoタイプの定義を参照してください。 |
LAST_MODIFIED_BY |
VARCHAR2(256) |
最終更新者。 |
LAST_UPDATED_DATE |
DATE |
最終更新日。 |
gc$notif_issue_summary (インシデントおよび問題ペイロードに共通)
それぞれイベント・ペイロード内の関連するインシデントのサマリー、またはインシデント・ペイロード内の関連する問題のサマリーを表します。
表3-42 ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
ID |
NUMBER |
発行ID(インシデントIDまたは問題ID)。 |
SEVERITY |
VARCHAR(128) |
問題の重大度レベル。翻訳された重大度名です。 |
SEVERITY_CODE |
VARCHAR2(32) |
次のいずれかの値を持つ問題重大度コード。 GC$EVENT.FATAL GC$EVENT.CRITICAL GC$EVENT.WARNING GC$EVENT.MINOR_WARNING GC$EVENT.INFORMATIONAL GC$EVENT.CLEAR |
PRIORITY |
VARCHAR2(128) |
現在の優先度。翻訳された優先度名です。 |
PRIORITY_CODE |
VARCHAR2(32) |
次のいずれかの値を持つ問題優先度コード。GC$EVENT.PRIORITY_URGENT GC$EVENT.PRIORITY_VERY_HIGH GC$EVENT.PRIORITY_HIGH GC$EVENT.PRIORITY_MEDIUM GC$EVENT.PRIORITY_LOW GC$EVENT.PRIORITY_NONE |
STATUS |
VARCHAR2(64) |
問題のステータス。可能な値は次のとおりです。 GC$EVENT.STATUS_NEW GC$EVENT.STATUS_CLOSED GC$EVENT.WIP(処理中) GC$EVENT.RESOLVED 他の任意のユーザー定義ステータス |
ESCALATION_LEVEL |
VARCHAR2(2) |
0から5の範囲の問題エスカレーション・レベル。デフォルトは0です。 |
OWNER |
VARCHAR2(256) |
問題の所有者。所有者が存在しない場合はNULLに設定します。 |
ACKNOWLEDGED_BY_OWNER |
NUMBER(1) |
この問題が所有者によって確認された場合は1に設定します。 |
gc$category_string_array
gc$category_string_arrayは、イベント、インシデントまたは問題が関連付けられているカテゴリを含む文字列配列です。通知システムは最大10カテゴリを提供します。
gc$notif_event_context_array
gc$notif_event_context_arrayは、イベント検出時に取得された追加の診断データに関する情報を提供します。通知システムは、取得したイベント・コンテキストから最大200個の要素を提供します。この配列の各要素のタイプは、gc$notif_event_contextです。
gc$notif_event_context: このオブジェクトは、診断値を含む可能性のある、イベントの生成時にソース・システムによって取得される追加のコンテキスト情報であるイベント・コンテキスト・データの詳細を表します。イベントのコンテキストは、キーと値のセット、およびデータ・タイプ(数値または文字列のみ)から構成される必要があります。
表3-43 イベント・コンテキスト・タイプ
属性 | データ型 | 詳細情報 |
---|---|---|
NAME |
VARCHAR2(256) |
イベント・コンテキスト名。 |
TYPE |
NUMBER(1) |
格納される値のデータ・タイプ (0) - 数値データの場合 (1) - 文字列データの場合。 |
VALUE |
NUMBER |
数値。 |
STRING_VALUE |
VARCHAR2(4000) |
文字列値。 |
gc$notif_corrective_action_job
修正処理ジョブの実行に関する情報を提供します。修正処理は、メトリック・アラートおよびターゲット可用性イベントでのみサポートされます。
表3-44 修正処理ジョブに固有の属性
属性 | データ型 | 詳細情報 |
---|---|---|
JOB_GUID |
RAW(16) |
修正処理ジョブのグローバル一意識別子。 |
JOB_NAME |
VARCHAR2(128) |
値は修正処理の名前です。メトリック・アラートおよびターゲット可用性イベントに適用されます。 |
JOB_OWNER |
VARCHAR2(256) |
修正処理ジョブの所有者。 |
JOB_TYPE |
VARCHAR2(256) |
修正処理ジョブのタイプ。 |
JOB_STATUS |
VARCHAR2(64) |
修正処理ジョブの実行ステータス。 |
JOB_STATUS_CODE |
NUMBER |
修正処理ジョブの実行ステータス・コード。Enterprise Managerで定義されている内部値です。ステータス・コードの詳細は、表3-14を参照してください。 |
JOB_STEP_OUTPUT |
VARCHAR2(4000) |
値は修正処理の実行からのテキスト出力です。これは最後の4000文字に切り捨てられます。 |
JOB_EXECUTION_GUID |
RAW(16) |
修正処理ジョブ実行のグローバル一意識別子。 |
JOB_STATE_CHANGE_GUID |
RAW(16) |
修正処理ジョブ変更のグローバル一意識別子。 |
OCCURRED_DATE |
DATE |
修正処理ジョブの発生日。 |
gc$notif_source_info_array
インシデントまたは問題に関連する可能性のある複数のソースへのアクセスを提供します。注意: 通知システムは、インシデントまたは問題に関連付けられている最大200のソースを提供します。
CREATE OR REPLACE TYPE gc$notif_source_info_array AS VARRAY(200) OF gc$notif_source_info;
gc$notif_source_info
ターゲットまたはソース、あるいはその両方を含むソース情報の参照に使用される通知ソース情報。
表3-45 ソース情報タイプ
属性 | データ型 | 詳細情報 |
---|---|---|
TARGET |
gc$notif_target |
イベントがターゲットに関連する場合に移入されます。詳細は、gc$notif_targetタイプの定義を参照してください。 |
SOURCE |
gc$notif_source |
イベントが(ターゲットでない)ソースに関連する場合に移入されます。詳細は、gc$notif_sourceタイプの定義を参照してください。 |
gc$notif_source
ジョブ・ターゲット以外のソース・オブジェクトの参照に使用されます。
表3-46 ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
SOURCE_GUID |
RAW(16) |
ソースのグローバル一意識別子。 |
SOURCE_TYPE |
VARCHAR2(120) |
TARGET、JOB、TEMPLATEなど、ソース・オブジェクトのタイプ。 |
SOURCE_NAME |
VARCHAR2(256) |
ソース・オブジェクト名。 |
SOURCE_OWNER |
VARCHAR2(256) |
ソース・オブジェクトの所有者。 |
SOURCE_SUB_TYPE |
VARCHAR2(256) |
ソース・オブジェクトのサブタイプ。たとえばTARGETでは、ホストやデータベースなどのターゲット・タイプになります。 |
SOURCE_URL |
VARCHAR2(4000) |
ソースのイベント・コンソールURL。 |
gc$notif_target
ターゲット情報オブジェクトは、ターゲット情報を提供するために使用されます。
表3-47 ターゲット情報
属性 | データ型 | 詳細情報 |
---|---|---|
TARGET_GUID |
RAW(16) |
ターゲットのグローバル一意識別子。 |
TARGET_NAME |
VARCHAR2(256) |
ターゲットの名前。 |
TARGET_OWNER |
VARCHAR2(256) |
ターゲットの所有者。 |
TARGET_LIFECYCLE_STATUS |
VARCHAR2(1024) |
ターゲットのライフ・サイクル・ステータス。 |
TARGET_VERSION |
VARCHAR2(64) |
ターゲットのターゲット・バージョン。 |
TARGET_TYPE |
VARCHAR2(128) |
ターゲットのタイプ。 |
TARGET_TIMEZONE |
VARCHAR2(64) |
ターゲットの地域タイム・ゾーン。 |
HOST_NAME |
VARCHAR2(256) |
ターゲットがデプロイされるホストの名前。 |
TARGET_URL |
VARCHAR2(4000) |
ターゲットのEMコンソールURL。 |
UDTP_ARRAY |
gc$notif_udtp_array |
ユーザーが定義したターゲット・プロパティのリスト。ターゲットに関連付けられているイベントに対して移入されます。単一のソース(gc$notif_source_info)に関連付けられている場合に、インシデントと問題に対して移入されます。 |
gc$notif_udtp_array
最大サイズが20のgc$notif_udtpタイプの配列。
CREATE OR REPLACE TYPE gc$notif_udtp_array AS VARRAY(20) OF gc$notif_udtp
;
gc$notif_udtp
ユーザー定義のターゲット・プロパティを参照するために使用されます。UDTPは、プロパティ・キー名とプロパティ値のセットで構成される必要があります。
表3-48 ペイロード
属性 | データ型 | 詳細情報 |
---|---|---|
NAME |
VARCHAR2(64) |
プロパティの名前。 |
VALUE |
VARCHAR2(1024) |
プロパティ値。 |
LABEL |
VARCHAR(256) |
プロパティ・ラベル。 |
NLS_ID |
VARCHAR(64) |
プロパティのNLS ID |
gc$notif_event_attr_array
gc$notif_event_attrの配列は、イベント固有の属性を参照するために使用されます。配列の最大サイズは25です。配列の各要素は、gc$notif_event_attrタイプです(イベント・タイプ固有の属性を参照するために使用されます)。
表3-49 イベント属性タイプ
属性 | データ型 | 詳細情報 |
---|---|---|
NAME |
VARCHAR2(64) |
イベント・タイプに固有の属性の内部名。 |
VALUE |
VARCHAR2(4000) |
値。 |
NLS_VALUE |
VARCHAR2(4000) |
属性の翻訳された値。 |
SQL問合せを使用して、デプロイされているイベント・タイプとそれぞれに固有のペイロードをリストできます。次のSQLを使用して、Enterprise Managerに登録されているすべての内部イベント・タイプ名をリストできます。
Select event_class as event_type, upper(name) as env_var_name from em_event_class_attrs where notif_order != 0 and event_class is not null order by event_type, env_var_name;
属性名は、名前を比較に使用する前に大文字に変換しておく必要があります。
gc$notif_event_attr_arrayデータベース・タイプからアクセスできる各イベント・タイプに固有の属性変数のペイロードがあります。次の表に、最もクリティカルなイベント・タイプの通知属性をリストします。属性名は、名前を比較に使用する前に大文字に変換しておく必要があります。
表3-50 メトリック・アラート・イベント・タイプに固有の環境変数
環境変数 | 説明 |
---|---|
COLL_NAME |
メトリックを収集するコレクションの名前。 |
KEY_COLUMN_X |
キー列Xの内部名(Xは1から7の数値)。 |
KEY_COLUMN_X_VALUE |
キー列Xの値(Xは1から7の数値)。 |
KEY_VALUE |
メトリック・アラート・イベントに対応するメトリックのモニター対象オブジェクト。 |
METRIC_COLUMN |
メトリック列の名前 |
METRIC_DESCRIPTION |
メトリックの簡単な説明。 |
METRIC_GROUP |
メトリックの名前。 |
NUM_KEYS |
メトリック内のキー・メトリック列の数。 |
SEVERITY_GUID |
このメトリック・アラートに関連付けられている重大度レコードのGUID。 |
VALUE |
イベントがトリガーされたときのメトリックの値。 |
表3-51 ターゲット可用性イベント・タイプに固有の環境変数
環境変数 | 説明 |
---|---|
AVAIL_SEVERITY |
ターゲットのステータスが現在の可用性ステータスに変更された要因である遷移重大度(0-6)。 AVAIL_SEVERITYに指定できる値
|
AVAIL_SUB_STATE |
現在のステータスに対するターゲットのサブステータス。 |
CYCLE_GUID |
メトリック・アラートが最初に生成されたときからクリアされるまでの、メトリック・アラート・サイクルの一意の識別子。 |
METRIC_GUID |
レスポンス・メトリックのメトリックGUID。 |
SEVERITY_GUID |
この可用性ステータスに関連付けられている重大度レコードのGUID。 |
TARGET_STATUS |
ターゲットの現在の可用性のステータス。 |
表3-52 ジョブ・ステータスの変更イベント・タイプに固有の環境変数
環境変数 | 説明 |
---|---|
EXECUTION_ID |
ジョブ実行の一意のID。 |
EXECUTION_LOG |
実行された最後のステップのジョブ出力。 |
EXECUTION_STATUS |
ジョブ実行の内部ステータス。 |
EXEC_STATUS_CODE |
ジョブ実行の実行ステータス・コード。可能な値は、表3-16を参照してください。 |
STATE_CHANGE_GUID |
最新ステータス変更の一意のID |
例3-17 PL/SQLスクリプト: イベント・タイプのペイロード要素
-- log_table table is created by following DDL to demostrate how to access -- event notification payload GC$NOTIF_EVENT_MSG. CREATE TABLE log_table (message VARCHAR2(4000)) ; -- Define PL/SQL notification method for Events CREATE OR REPLACE PROCEDURE log_table_notif_proc(s IN GC$NOTIF_EVENT_MSG) IS l_categories gc$category_string_array; l_category_codes gc$category_string_array; l_attrs gc$notif_event_attr_array; l_ca_obj gc$notif_corrective_action_job; BEGIN INSERT INTO log_table VALUES ('notification_type: ' || s.msg_info.notification_type); INSERT INTO log_table VALUES ('repeat_count: ' || s.msg_info.repeat_count); INSERT INTO log_table VALUES ('ruleset_name: ' || s.msg_info.ruleset_name); INSERT INTO log_table VALUES ('rule_name: ' || s.msg_info.rule_name); INSERT INTO log_table VALUES ('rule_owner: ' || s.msg_info.rule_owner); INSERT INTO log_table VALUES ('message: ' || s.msg_info.message); INSERT INTO log_table VALUES ('message_url: ' || s.msg_info.message_url); INSERT INTO log_table VALUES ('event_instance_guid: ' || s.event_payload.event_instance_guid); INSERT INTO log_table VALUES ('event_type: ' || s.event_payload.event_type); INSERT INTO log_table VALUES ('event_name: ' || s.event_payload.event_name); INSERT INTO log_table VALUES ('event_msg: ' || s.event_payload.event_msg); INSERT INTO log_table VALUES ('source_obj_type: ' || s.event_payload.source.source_type); INSERT INTO log_table VALUES ('source_obj_name: ' || s.event_payload.source.source_name); INSERT INTO log_table VALUES ('source_obj_url: ' || s.event_payload.source.source_url); INSERT INTO log_table VALUES ('target_name: ' || s.event_payload.target.target_name); INSERT INTO log_table VALUES ('target_url: ' || s.event_payload.target.target_url); INSERT INTO log_table VALUES ('severity: ' || s.event_payload.severity); INSERT INTO log_table VALUES ('severity_code: ' || s.event_payload.severity_code); INSERT INTO log_table VALUES ('event_reported_date: ' || to_char(s.event_payload.reported_date, 'D MON DD HH24:MI:SS')); IF s.event_payload.target.TARGET_LIFECYCLE_STATUS IS NOT NULL THEN INSERT INTO log_table VALUES ('target lifecycle_status: ' || s.event_payload.target.TARGET_LIFECYCLE_STATUS); END IF; -- Following block illustrates the list of category codes to which the event -- belongs. l_category_codes := s.event_payload.category_codes; IF l_categories IS NOT NULL THEN FOR c IN 1..l_category_codes.COUNT LOOP INSERT INTO log_table VALUES ('category_code ' || c || ' - ' || l_category_codes(c)); END LOOP; END IF; -- -- Each event type has a specific set of attributes modeled. Examples of -- event types include metric_alert, target_availability, job_status_change. -- Following block illustrates how to access the attributes for job_status change -- event type -- IF s.event_payload.event_type = 'job_staus_chage' THEN l_attrs := s.event_payload.event_attrs; IF l_attrs IS NOT NULL THEN FOR c IN 1..l_attrs.COUNT LOOP INSERT INTO log_table VALUES ('EV.ATTR name=' || l_attrs(c).name || ' value=' || l_attrs(c).value || ' nls_value=' || l_attrs(c).nls_value); END LOOP; END IF; END IF; -- Following block illustrates how to access corrective action job's attributes IF s.msg_info.notification_type = GC$NOTIFICATION.NOTIF_CA AND s.event_payload.corrective_action IS NOT NULL THEN l_ca_obj := s.event_payload.corrective_action; INSERT INTO log_table VALUES ('CA JOB_GUID: ' || l_ca_obj.JOB_GUID); INSERT INTO log_table VALUES ('CA JOB_NAME: ' || l_ca_obj.JOB_NAME); INSERT INTO log_table VALUES ('CA JOB_OWNER: ' || l_ca_obj.JOB_OWNER); INSERT INTO log_table VALUES ('CA JOB_TYPE: ' || l_ca_obj.JOB_TYPE); INSERT INTO log_table VALUES ('CA JOB_STATUS: ' || l_ca_obj.JOB_STATUS); INSERT INTO log_table VALUES ('CA JOB_STATUS_CODE: ' || l_ca_obj.JOB_STATUS_CODE); INSERT INTO log_table VALUES ('CA JOB_STEP_OUTPUT: ' || l_ca_obj.JOB_STEP_OUTPUT); INSERT INTO log_table VALUES ('CA JOB_EXECUTION_GUID: ' || l_ca_obj.JOB_EXECUTION_GUID); INSERT INTO log_table VALUES ('CA JOB_STATE_CHANGE_GUID: ' || l_ca_obj.JOB_STATE_CHANGE_GUID); INSERT INTO log_table VALUES ('CA OCCURRED_DATE: ' || l_ca_obj.OCCURRED_DATE); END IF; COMMIT ; END ; /
通知システムの動作は、Enterprise ManagerおよびITインフラストラクチャの様々なコンポーネントに依存しています。このため、通知障害には考えられる原因が多数あります。通知システムに関する問題を特定する際は、次のガイドラインおよび推奨事項を参考にしてください。
通知問題を診断する最初の手順は、通知環境が適切に構成および定義されているか確認することです。
OSコマンド、PL/SQLおよびSNMPトラップ通知
「テスト」ボタンをクリックして、すべてのOSコマンド、PL/SQLおよびSNMPトラップの通知メソッドが有効であることを確認します。これによってテスト通知が送信され、OMSが通知メソッドを呼び出す際の問題が表示されます。メソッドがコールされたことを確認してください。たとえば、OSコマンドの通知によりログ・ファイルに情報が書き込まれるように設定した場合は、OSコマンドの通知によって情報がログ・ファイルに書き込まれていることを確認します。
電子メール通知
「設定」の「通知メソッド」ページで、電子メール・ゲートウェイが設定されていることを確認します。送信者の電子メール・アドレスは有効である必要があります。「テスト」ボタンをクリックすると、電子メールが送信者の電子メール・アドレスに送信されます。この電子メールが受信されることを確認します。「テスト」ボタンでは通知スケジュールはすべて無視されますので注意してください。
電子メール・アドレスが設定されていることを確認します。「テスト」ボタンをクリックすると、指定したアドレスに電子メールが送信されるため、この電子メールを受信したことを確認する必要があります。「テスト」ボタンでは通知スケジュールはすべて無視されますので注意してください。
電子メール・スケジュールが定義されていることを確認します。通知スケジュールが定義されていない場合、電子メールは送信されません。
対象となる状態と一致するインシデント・ルールが定義されていることを確認し、そのルールに電子メールおよび通知メソッドが割り当てられていることを確認します。
通知問題に関連するアラートが発生した場合、次のものを確認して通知エラーを調べてください。
通知システム内の重大なエラーは、MGMT_SYSTEM_ERROR_LOG表にシステム・エラーとして記録されます。「設定」メニューから、「管理サービスとリポジトリ」を選択し、これらのエラーを表示します。
配信エラーがないか確認します。インシデント・マネージャから表示できます。「エンタープライズ」メニューから、「モニタリング」、「インシデント・マネージャ」の順に選択します。この詳細情報に、通知が配信されなかった理由が示されます。
通知システムは、sysman/log/emoms.trcファイル内にトレース・メッセージを生成できます。
トレースを構成するには、emctl set property
コマンドを使用してlog4j.category.oracle.sysman.em.notificationプロパティのフラグを設定します。トレース・レベルはINFO、WARN、DEBUGに設定できます。次に例を示します。
emctl set property -name log4j.category.oracle.sysman.em.notification -value DEBUG -module logging
注意: システムからSYSMANパスワードが要求されます。
トレース・メッセージには、em.notificationという文字列が含まれます。UNIX環境で作業している場合、grep
コマンドを使用してemoms.trcおよびemoms_pbs.trcファイル内のメッセージを検索できます。次に例を示します。
grep em.notification emoms.trc emoms_pbs.trc
トレース・ファイル内の調べる箇所
emoms.trcファイル内の次のエントリが通知に関連しています。
通常起動のメッセージ
OMSが起動すると、次のようなタイプのメッセージが表示されます。
2011-08-17 13:50:29,458 [EventInitializer] INFO em.notification init.167 - Short format maximum length is 155 2011-08-17 13:50:29,460 [EventInitializer] INFO em.notification init.185 - Short format is set to both subject and body 2011-08-17 13:50:29,460 [EventInitializer] INFO em.notification init.194 - Content-Transfer-Encoding is 8-bit 2011-08-17 13:50:29,460 [EventInitializer] DEBUG em.notification registerAdminMsgCallBack.272 - Registering notification system message call back 2011-08-17 13:50:29,461 [EventInitializer] DEBUG em.notification registerAdminMsgCallBack.276 - Notification system message callback is registered successfully 2011-08-17 13:50:29,713 [EventInitializer] DEBUG em.notification upgradeEmailTemplates.2629 - Enter upgradeEmailTemplates 2011-08-17 13:50:29,735 [EventInitializer] INFO em.notification upgradeEmailTemplates.2687 - Email template upgrade is not required since no customized templates exist. 2011-08-17 13:49:28,739 [EventCoordinator] INFO events.EventCoordinator logp.251 - Creating event worker thread pool: min = 4 max = 15 2011-08-17 13:49:28,791 [[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO emdrep.pingHBRecorder initReversePingThreadPool.937 - Creating thread pool for reverse ping : min = 10 max = 50 2011-08-17 13:49:28,797 [[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG emdrep.HostPingCoordinator logp.251 - Creating thread pool of worker thread for host ping: min = 1 max = 10 2011-08-17 13:49:28,799 [[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG emdrep.HostPingCoordinator logp.251 - Creating thread pool for output of worker's output for host ping: min = 2 max = 20 2011-08-17 13:49:30,327 [ConnectorCoordinator] INFO connector.ConnectorPoolManager logp.251 - Creating Event thread pool: min = 3 max = 10 2011-08-17 13:51:48,152 [NotificationMgrThread] INFO notification.pbs logp.251 - Creating thread pool: min = 6 max = 24 2011-08-17 13:51:48,152 [NotificationMgrThread] INFO em.rca logp.251 - Creating RCA thread pool: min = 3 max = 20
通知配信のメッセージ
2006-11-08 03:18:45,387 [NotificationMgrThread] INFO em.notification run.682 - Notification ready on EMAIL1 2006-11-08 03:18:46,006 [DeliveryThread-EMAIL1] INFO em.notification run.114 - Deliver to SYSMAN/admin@myco.com 2006-11-08 03:18:47,006 [DeliveryThread-EMAIL1] INFO em.notification run.227 - Notification handled for SYSMAN/admin@myco.com
通知システム・エラーのメッセージ
2011-08-17 14:02:23,905 [NotificationMgrThread] DEBUG notification.pbs logp.251 - Notification ready on EMAIL1 2011-08-17 14:02:23,911 [NotificationMgrThread] DEBUG notification.pbs logp.251 - Notification ready on PLSQL4 2011-08-17 14:02:23,915 [NotificationMgrThread] DEBUG notification.pbs logp.251 - Notification ready on OSCMD14 2011-08-17 14:02:19,057 [DeliveryThread-EMAIL1] INFO notification.pbs logp.251 - Deliver to To: my.admin@myco.com; issue type: 1; notification type: 1 2011-08-17 14:02:19,120 [DeliveryThread-OSCMD14] INFO notification.pbs logp.251 - Deliver to SYSMAN, OSCMD, 8; issue type: 1; notification type: 1 2011-08-17 14:02:19,346 [DeliveryThread-PLSQL4] INFO notification.pbs logp.251 - Deliver to SYSMAN, LOG_JOB_STATUS_CHANGE, 9; issue type: 1; notification type: 1 2011-08-17 14:02:19,977 [DeliveryThread-PLSQL4] DEBUG notification.pbs logp.251 - Notification handled for SYSMAN, LOG_JOB_STATUS_CHANGE, 9 2011-08-17 14:02:20,464 [DeliveryThread-EMAIL1] DEBUG notification.pbs logp.251 - Notification handled for To: my.admin@myco.com 2011-08-17 14:02:20,921 [DeliveryThread-OSCMD14] DEBUG notification.pbs logp.251 - Notification handled for SYSMAN, OSCMD, 8
SMTPゲートウェイが適切に設定されていない:
Failed to send email to my.admin@myco.com: For email notifications to be sent, your Super Administrator must configure an Outgoing Mail (SMTP) Server within Enterprise Manager. (SYSMAN, myrule)
無効なホスト名:
Failed to connect to gateway: badhost.oracle.com: Sending failed; nested exception is: javax.mail.MessagingException: Unknown SMTP host: badhost.example.com;
無効な電子メール・アドレス:
Failed to connect to gateway: rgmemeasmtp.mycorp.com: Sending failed; nested exception is: javax.mail.MessagingException: 550 5.7.1 <smpemailtest_ie@example.com>... Access denied
電子メールのゲートウェイ構成が有効であるか確認する場合は、常に「テスト」ボタンを使用してください。送信者の電子メール・アドレスに電子メールが受信されることを確認してください
OSコマンドまたはスクリプトを実行しようとすると、次のエラーが発生することがあります。「テスト」ボタンを使用して、OSコマンドの構成が有効であるか確認します。エラーが存在する場合、コンソールにそのエラーが表示されます。
パスが無効であるか、ファイルに対する読取り権限がない:
Could not find /bin/myscript (machineb10.oracle.com_Management_Service) (SYSMAN, myrule )
実行可能ファイルに対する実行権限がない:
Error calling /bin/myscript: java.io.IOException: /bin/myscript: cannot execute (machineb10.oracle.com_Management_Service) (SYSMAN, myrule )
OSコマンドの実行時間の超過によるタイムアウト:
Timeout occurred running /bin/myscript (machineb10.oracle.com_Management_Service) (SYSMAN, myrule )
メモリー不足のため、またはOMSマシン上で実行されているプロセスが多すぎるために発生したエラーは、適宜記録されます。
「テスト」ボタンを使用して、OSコマンドの構成が有効であるか確認します。
「テスト」ボタンを使用して、SNMPトラップの構成が有効であるか確認します。
SNMPトラップがサード・パーティのSNMPコンソールに到達できない場合でも、このことはUDP経由で送信されるため、OMSはエラーを報告しません。SNMPトラップがサード・パーティのSNMPコンソールに到達しようとしているときに問題が発生した場合、可能性のあるSNMPトラップの問題には、SNMPコンソールを実行しているマシンのホスト名、ポート、コミュニティが無効であるか、ファイアウォールの問題などのネットワークの問題が考えられます。
SNMPトラップ問題として他に考えられるのは、無効なホスト名、ポート、SNMPコンソールを実行しているマシンのコミュニティなどがあります。
PL/SQLプロシージャを実行しようとすると、次のエラーが発生することがあります。「テスト」ボタンを使用して、プロシージャが有効であるか確認します。エラーが存在する場合、コンソールにそのエラーが表示されます。
プロシージャ名が無効であるか、完全修飾名でない。例: SCOTT.PKG.PROC
Error calling PL/SQL procedure plsql_proc: ORA-06576: not a valid function or procedure name (SYSMAN, myrule)
プロシージャが適切なシグネチャでない。例: PROCEDURE event_proc(s IN GC$NOTIF_EVENT_MSG)
Error calling PL/SQL procedure plsql_proc: ORA-06553: PLS-306: wrong number or types of arguments in call to 'PLSQL_PROC' (SYSMAN, myrule)
プロシージャに不具合があり、例外が発生
Error calling PL/SQL procedure plsql_proc: ORA-06531: Reference to uninitialized collection (SYSMAN, myrule)
PL/SQL内でカーソルのリークがないように注意する必要があります。この状況が原因で例外が発生すると、配信は失敗し、Cloud Controlコンソールのアラートの「詳細」セクションにメッセージが表示されます。
PL/SQLの構成が有効であるか確認するときはいつでも、「テスト」ボタンを使用してください。
Enterprise Managerでは、即時に表示される重要なシステム・メッセージを、管理環境全体でEnterprise Managerコンソールにブロードキャストできます。これらのメッセージは、特定のユーザーまたはすべてのEnterprise Managerユーザーに送信できます。この機能は、管理対象インフラストラクチャの一部が更新された場合またはシステム緊急時に、Enterprise Managerが停止することをユーザーに通知する際に便利です。
注意:
スーパー管理者のみ、システム・ブロードキャストを送信できます。
システム・ブロードキャスト・プリファレンスの設定
システム・ブロードキャストを送信する前に、まずブロードキャスト・プリファレンスを設定する必要があります。
スーパー管理者としてEnterprise Managerにログインします。
<USERNAME>メニューから「プリファレンス」、「システム・ブロードキャスト」の順に選択します。System Broadcast User Preferences UIが表示されます。
必要なブロードキャスト・メッセージ・プリファレンスを選択して、「保存」をクリックします。
システム・ブロードキャスト・メッセージを送信する際には、これらのプリファレンスが使用されます。
注意:
「システム・ブロードキャストを表示する秒数」設定は、「スーパー管理者によって送信されたシステム・ブロードキャストを自動的に閉じません」オプションが無効になっている場合のみ機能します。
システム・ブロードキャストの作成
プリファレンスを設定したら、EM CLI動詞end_system_broadcastを使用してシステム・ブロードキャスト・メッセージを送信します。
emcli send_system_broadcast -toOption="ALL|SPECIFIC" [-to="comma separated user names"] [-messageType="INFO|CONF|WARN|ERROR|FATAL" (default is INFO)] -message="message details"
オプション
toOption
値ALLを入力して、Enterprise Managerコンソールにログインしているすべてのユーザーにブロードキャスト・メッセージを送信します。またはSPECIFICを入力して、-toで指定したユーザーにシステム・ブロードキャストを送信します。
to
ブロードキャスト・メッセージを受信するユーザーのカンマ区切りリスト。このオプションは、-toOptionがSPECIFICに設定されている場合にのみ使用できます。
messageType
システム・ブロードキャストのタイプ。次のいずれかのタイプを指定できます
INFO (情報)
CONF (確認)
WARN (警告)
ERROR
FATAL
message
システム・ブロードキャストで送信するメッセージ。メッセージの長さは最大200文字です。
例:
この例では、緊急パッチ適用操作を実行するために、1時間以内にEnterprise Managerを停止することを知らせる情報メッセージをブロードキャストします。
emcli send_system_broadcast -messageType="INFO" -toOption="ALL" -message="Enterprise Manager will be taken down in an hour for an emergency patch"