Oracle Enterprise Manager アドバンスト構成 10gリリース5(10.2.0.5.0) B53907-01 |
|
通知システムによって、アラート、ポリシー違反、およびジョブ実行ステータスの変更がEnterprise Manager管理者に通知されます。管理者への通知以外にも、たとえばアラートがトリガーされるとオペレーティング・システム・コマンド(スクリプトを含む)やPL/SQLプロシージャを実行するなどの処理を実行できます。この機能により、特定のアラート条件に対して所定のIT手法を自動的に実施できます。たとえば、データベースの動作(稼働/停止)ステータスの監視時にアラートが生成されたときに、通知システムによってOSスクリプトを介して社内のトラブル・チケットを自動的に開き、担当のITスタッフが適時に応答できるようにします。
また、Enterprise Managerの通知システムでは、Simple Network Management Protocol(SNMP)トラップを使用して、HP OpenViewなどのSNMP対応サード・パーティ・アプリケーションにトラップを送信できます。一部の管理者は、特定のメトリックがしきい値を超えた時点でサード・パーティ・アプリケーションに通知を送信する場合があります。
この章では次の項について説明します。
すべてのEnterprise Manager管理者は、各自の電子メール通知を設定できます。スーパー管理者は、他のEnterprise Manager管理者の通知も設定できます。
Enterprise Managerで電子メール通知の送信を行うには、あらかじめ、通知システムで使用する送信メール(SMTP)サーバーを設定する必要があります。設定後は、自分の電子メール通知を定義できます。スーパー管理者権限を持っている場合は、他のEnterprise Manager管理者の電子メール通知も定義できます。
送信メール(SMTP)サーバーは、「通知メソッド」ページで指定します(図13-1)。Grid Controlコンソールの任意のページで「設定」をクリックし、垂直ナビゲーション・バーで「通知メソッド」をクリックして、「通知メソッド」ページを表示します。
1つ以上の送信メール・サーバー名、(必要な場合は)メール・サーバー認証資格証明(「ユーザー名」、「パスワード」および「パスワードの確認」)、通知メッセージの送信者として表示する名前、および電子メール通知の送信に使用する電子メール・アドレスを指定します。「送信者の電子メール・アドレス」というこのアドレスには、指定する各メール・サーバーで有効なアドレスを指定してください。電子メール通知の送信中に問題が発生した場合は、この電子メール・アドレスにメッセージが送信されます。例13-1は、通知メソッドの入力例です。
電子メール・サーバーの設定後、「メール・サーバーのテスト」をクリックして電子メール設定を検証します。「送信者の電子メール・アドレス」フィールドで指定した電子メール・アカウントによって、電子メール・メッセージが受信されていることを確認してください。
複数のメール・サーバーを定義すると、電子メール通知配信の信頼性が向上し、複数のシステム間に負荷を分散することができます。管理サービスは電子メールの送信に各メール・サーバーを利用し、その動作は$ORACLE_HOME/sysman/config/emoms.properties
ファイルに定義されている次のパラメータで制御されます。
# The maximum number of emails that can be sent in a single connection to an # email server # em.notification.emails_per_connection=20 # # The maximum number of emails that can be sent in a minute # em.notification.emails_per_minute=250
例13-2のデフォルトに基づいて、1番目のメール・サーバーが20通の電子メールを送信すると管理サービスは2番目のメール・サーバーに切り替え、そのメール・サーバーが次の20通の電子メールを送信すると、3番目のメール・サーバーに切り替えます。これによって1つのメール・サーバーに過大な負荷がかからなくなり、全体的な信頼性とスループットが向上します。
繰返し通知を使用すると、アラートが通知されるか、「繰返し通知の最大数」の値に到達するまで、管理者に繰返し通知できます。Enterprise Managerは、すべての通知メソッド(電子メール、OSコマンド、PL/SQLプロシージャ、およびSNMPトラップ)について、繰返し通知をサポートしています。通知メソッドとしてこの機能を有効にするには、「繰返し通知の送信」オプションを選択します。繰返し通知の最大回数を設定するだけでなく、通知の送信周期を設定することもできます。
通知メソッド・レベルで繰返し通知をグローバルに設定すると、十分な柔軟性がもたらされないことがあります。たとえば、メトリック・タイプやアラート重大度に基づいて、繰返し通知設定を変えるとします。Enterprise Managerでは、個々の通知ルールに対して繰返し通知を設定することによって、これが可能になります。ルール・レベルでの繰返し通知の設定は、通知メソッド・レベルで定義された設定よりも優先されます。
PL/SQL、OSコマンド、およびSNMPトラップ通知メソッドについては、繰返し通知をサポートするよう各メソッドを有効にする必要があります。新しい通知メソッドを追加するときに「繰返し通知のサポート」オプションを選択するか、既存のメソッドを編集します。
電子メールで通知を受信するには、Grid Controlコンソールで「プリファレンス」リンクをクリックし、「一般」ページで電子メール・アドレスを指定する必要があります。通知用の電子メール・アドレスを定義するだけでなく、電子メール・アドレスで使用する通知メッセージ形式(長いまたは短い)を関連付けます。
電子メールを設定するには、次の3つの手順を実行します。
手順1: 電子メール・アドレスの定義
手順2: 通知スケジュールの設定
手順3: 通知ルールの電子メールを受信するようにサブスクライブ
電子メール・アドレスには最大128文字を使用できます。電子メール・アドレスの数の上限はありません。
電子メール・アドレスを追加するには、次のようにします。
たとえば、user1@oracle.com
などです。
電子メール・アドレスのメッセージ形式を選択します。「長い書式」では、詳細情報を含むHTML形式の電子メールが送信されます。例13-3は、長い書式を使用する標準的な通知の例です。
「短い書式」(例13-4)では、簡潔なテキスト形式の電子メールが送信されます。この形式は構成可能な文字数に制限されているため、SMSメッセージまたはページとして電子メールが受信されます。メッセージの内容全部を件名か本文のどちらか一方に含めて送信することも、メッセージを件名と本文に分割して送信することもできます。たとえば、件名と本文に分割して送信する場合、件名には重大度タイプ(クリティカルなど)とターゲット名などを含めます。本文には、重大度の発生時刻と重大度メッセージなどを含めます。メッセージの長さに制限があるため、これらの情報の一部が切り捨てられる場合があります。切捨てが行われた場合は、メッセージの最後に省略記号が表示されます。
Name=myhost.com Type=Host Host=myhost.com Metric=Filesystem Space Available (%) Mount Point =/usr Timestamp=06-OCT-2006 16:27:05 US/Pacific Severity=Warning Message=Filesystem / has only 76.07% available space Rule Name=Host Availability and Critical States Rule Owner=SYSMAN例13-4 アラート用の短い書式の電子メール通知
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などのメッセージ・サービスを直接にはサポートしていませんが、かわりに外部ゲートウェイを利用し、電子メールからページへの変換などを実行します。
短い書式の電子メールのサイズおよび書式は、emoms.propertiesファイル内のエントリによって定義されます。
使用するデバイスでサポート可能な最大サイズと、メッセージを件名、本文、その両方のいずれの形式で送信するかを設定する必要があります。
# The maximum size of a short format email # em.notification.short_format_length=155 # The format of the short email. It can be set to subject, body or both. # # When set to subject the entire message is sent in the subject i.e. # EM:<severity>:<target>:<message>:<timestamp> # When set to body the entire message is sent in the body i.e. # EM:<severity>:<target>:<message>:<timestamp> # When set to both the message is split i.e. the subject contains # EM:<severity>:<target> # and the body contains # <message>:<timestamp> # In all cases the message is truncated to the length specified in the # em.notification.short_format_length parameter # em.notification.short_format=both
電子メール通知アドレスの定義が終了したら、通知スケジュールを定義する必要があります。たとえば電子メール・アドレスがuser1@oracle.com、user2@oracle.comおよびuser3@oracle.comの場合、通知スケジュールの各期間についてこれらの1つ以上のアドレスを使用することを選択できます。
通知スケジュールとは、コール時スケジュール(Enterprise Managerにより通知の送信に使用される期間および電子メール・アドレス)を指定するときに使用する反復スケジュールです。各管理者には、通知スケジュールが1つのみ存在します。管理者に通知を送信する必要がある場合、Enterprise Managerにより管理者の通知スケジュールが参照され、使用する電子メール・アドレスが決定されます。スーパー管理者か、通常のEnterprise Manager管理者かによって、通知スケジュールを定義するプロセスは少し異なります。
通知ルールとは、アラート、ポリシー違反、修正処理の実行ステータス、およびジョブ実行ステータスに関する通知を送信する基準を定義する、ユーザー定義のルールです。具体的に各ルールでは、対象となる基準と、これらの通知の送信に使用する通知メソッド(電子メールなど)を指定できます。たとえば、データベースが停止した場合やデータベース・バックアップ・ジョブが失敗した場合に、電子メールが送信され、「ログ・トラブル・チケット」通知メソッドがコールされるようなルールを設定できます。もしくは、ホストのCPUまたはメモリー使用率がクリティカル重大度に達すると、SNMPトラップが他の管理コンソールに送信されるルールを定義することもできます。通知ルールの作成時に、対象とするターゲット、ターゲットの監視メトリック、関連付けるアラート重大度条件(消去、警告、クリティカル)、ポリシー違反、修正アクションの実行ステータス、ジョブ実行ステータスなどの基準を指定し、関連付ける通知メソッドを指定します。
ルールの作成時、作成した通知ルールにサブスクライブするには、「アクション」ページを表示し、「電子メールを送信」オプションを選択します。
Enterprise Manager Grid Controlには、一般的なアラート条件のほとんどに対応する即時利用可能な通知ルールが付属しています。Oracle Management Serviceをインストールするとき、クリティカル・アラートに対する電子メール通知を受信するオプションを選択できます。このオプションを選択した場合、SYSMANユーザーの電子メール・アドレスが指定されていれば、
一般的なターゲット・タイプの可用性状態およびクリティカル状態に対応するデフォルトの通知ルールがいくつか作成され、通知ルールに定義された条件に対する電子メール通知がSYSMAN電子メール・アドレスに送信されるように構成されます。
即時利用可能な通知ルールにアクセスするには、Enterprise Managerコンソールで任意のページ上の「プリファレンス」をクリックし、垂直ナビゲーション・バーで「パブリック・ルール」をクリックします。即時利用可能な通知ルール内に定義されている条件が要件を満たしている場合は、「パブリック・ルール」表で、対象となる通知ルールに対応する行の「サブスクライブ」列をクリックするだけで、ルール内に定義されている条件に対する電子メール通知を受け取るようにサブスクライブできます。「適用」をクリックして、変更を保存します。
表13-1にすべてのデフォルト通知ルールを示します。これらのルールはすべてパブリック・ルールで、SYSMANユーザーが所有しています。
デフォルト通知ルールがニーズに合わない場合は、独自のカスタム・ルールを定義できます。次の手順で、スーパー管理者でない管理者が通知ルールを作成するプロセスを説明します。
独自の通知ルールを作成するには、次のようにします。
スーパーユーザー権限を持つ管理者には「ルール」が表示されますが、スーパーユーザー権限を持つ管理者としてログインしていない場合は、「ルール」リンクが表示されます。
Enterprise Managerには、「通知ルールの作成」ページが表示されます。各ページで、通知ルールを作成するために必要な情報を入力します。
通知ルール・プロパティを指定するとき、権限がない他のユーザーもそのルールを表示し共有できるようにするには、「一般」ページで「パブリックに設定」を選択します。たとえば、これによって他の管理者は、このルールに対する電子メールを受信するように後で指定できます。
通知ルールの指定時には電子メールまたはSNMPトラップしか選択できません。カスタム・コマンドおよびPL/SQLプロシージャの指定は、スーパー管理者のみが使用できるオプションです。ルールに定義されている条件に対する電子メール通知を受け取るには、「アクション」ページを表示し、「電子メールを送信」オプションを選択します。
通知ルールに対して追加のアラート期間条件を設定し、このルールを、一定の期間オープンであり確認されていないアラートにのみ適用できます。これらの条件は、「停止中のターゲット」、「エージェント使用不可」、「メトリック・アラート」、「ポリシー違反」「ブラックアウト開始」、「メトリック・エラーの開始」の各アラートにのみ適用されます。
アラートの追加条件を使用する一般的なシナリオは次のとおりです。
アラート期間の追加条件を指定するには、次の手順を実行します。
スーパー管理者権限を持っている場合は、他のEnterprise Manager管理者の電子メール通知を設定できます。他のEnterprise Manager管理者の電子メール通知を設定するには、次の手順を実行する必要があります。
電子メール通知の送信宛先の各管理者は、有効な電子メール・アドレスを持っている必要があります。
Enterprise Managerでは、管理者の通知スケジュールを編集するときに管理者アドレスを指定することもできます。
各管理者の電子メール通知アドレスを定義し終わったら、それぞれの通知スケジュールを定義する必要があります。初めて電子メール・アドレスを指定したときはデフォルトの24×7の通知スケジュールが作成されますが、適宜、通知スケジュールを再検討して編集する必要があります。
通知スケジュールを設定したら、次は指定した各管理者に適切な通知ルールを割り当てる必要があります。
Enterprise Managerでは、スーパー管理者は、4つのアラート・タイプ(「メトリック・アラート」、「ターゲット可用性」、「ポリシー違反」、および「ジョブ・ステータスの変更」)のグローバル電子メール通知をカスタマイズできます。スーパー管理者は、シンプルなスクリプトに含まれる、事前定義された(属性とラベルと呼ばれる)構成単位を使用し、多様な情報コンテンツの中からアラートの電子メールを選択してカスタマイズできます。
電子メールをカスタマイズするには、次の手順を実行します。
「電子メール・テンプレートの編集」ページでは、Enterprise Managerが電子メール通知を生成するために使用する、電子メール・テンプレートの内容を編集できます。組込みアシスタンスやオンライン・ヘルプによって、スクリプトの書式設定、構文、およびオプションに関する詳しい情報も提供されます。
次のリファレンスでは、電子メールを定義するために使用される疑似言語のセマンティクスとコンポーネント構文をまとめています。疑似言語は、電子メール通知をカスタマイズするためのシンプルかつ柔軟な方法を提供します。次に、疑似言語に関する規則と制限事項をまとめます。
次の表に、電子メールのスクリプトを変更する際に使用されるすべての予約語と演算子を示します。
電子メールの内容の一部としては、どのようなテキストでも指定できます。テキストは電子メールに表示され、Oracle Management Services(OMS)言語設定が変更されなければ翻訳されません。たとえば、生成された電子メールでは、「my Oracle Home」は「my Oracle Home」と表示されます。
事前定義された属性やラベルは、特定のコンテキストの実際の値に置換されます。事前定義された属性やラベルを指定するには、次の構文を使用します。
[PREDEFINED_ATTR]
属性名は、大文字か小文字のどちらかを使用できます。構文解析処理は大文字と小文字を区別します。
事前定義された属性とリテラル・テキストを区別するには、大カッコが使用されます。たとえば、ジョブの電子メール通知では、実際のジョブ名は[JOB_NAME]
に置換されます。メトリック電子メール通知では、実際のメトリック列名は[METRIC_COLUMN]
に置換されます。
エスケープ文字「/」を使用すると、単語を指定し、それを事前定義したラベルや属性として解釈させないこともできます。たとえば、/[NEW/]
は、解析時には事前定義された属性[NEW]
とみなされません。
EQ、NEQ
は、テキストと数値に使用されます。
NULL
は、テキストと数値に使用されます。
GT、LT、GE、LE
は、数値に使用されます。
次の表に、使用可能なスクリプト制御構造を示します。
テキストの行頭にハイフンを「--」のように2つ付けることによって、スクリプトにコメントを追加できます。次に例を示します。
-- Code added on 8/3/2009 [IF REPEAT_COUNT NEQ NULL] . . .
コメントは、テキストの行末に付けることもできます。
[IF SEVERITY_SHORT EQ W] -- for Warning alert
HTMLタグはサポートされていません。
Enterprise Managerが電子メール・スクリプトを解析する際、HTMLタグの「<」および「>」文字はエンコード形式(<と>)に変換されます。これにより、宛先システムでHTMLタグがHTMLとして処理されなくなります。
電子メールのカスタマイズ・テンプレート・スクリプトは3つの主な演算子をサポートしています。
通知メソッドとは、アラートが送信される際のメカニズムを表します。Enterprise Managerのスーパー管理者は、電子メール通知メソッドを構成することで電子メール通知を設定できます。通常、この設定はOracle Management Serviceのインストールの一環としてすでに実行されています。
Enterprise Managerのスーパー管理者は他のカスタム通知メソッドを定義することもできます。たとえば、アラートをサード・パーティのトラブル・チケット・システムに転送する必要がある場合です。サード・パーティのトラブル・チケット・システムでAPIが有効であると想定し、適切なAPIを使用するカスタムOSスクリプトをコールするようにカスタム通知メソッドを作成できます。カスタム通知メソッドには、「ログ・トラブル・チケット」など、ユーザーがわかりやすい名前を付けられます。通知メソッドが一度定義されると、トラブル・チケット・システムへのアラートの送信が必要になった場合はいつでも、管理者は「ログ・トラブル・チケット」というグローバルに有効になった通知メソッドを起動するだけで送信できます。
カスタム通知メソッドは、あらゆるカスタムOSスクリプトまたはカスタムPL/SQLプロシージャに基づいて、もしくはSNMPトラップを送信することで定義できます。
「OSコマンド」、「PL/SQL」および「SNMPトラップ」の通知メソッドを定義できるのはスーパー管理者のみです。しかし、(スーパー管理者が定義した)これらの通知メソッドの通知ルールへの追加は、すべてのEnterprise Manager管理者が実行できます。
「通知メソッド」ページで次の処理を実行できます。
OSスクリプト、PL/SQLプロシージャまたはSNMPトラップに基づく他のカスタム通知メソッドを作成できます。すべての管理者はこれらのメソッドを通知ルールで使用できます。
OSコマンドまたはスクリプトに基づく通知メソッドを定義するには、次の4つの手順を実行します。
通知システムでコールされるOSコマンドまたはスクリプトを指定できます。スクリプト本体で、ターゲットとアラートまたはポリシー違反のコンテキスト情報、修正処理の実行ステータス、およびジョブ実行ステータスを使用できます。メトリック重大度の属性(重大度のレベル、タイプ、通知ルール、ルール所有者など)またはポリシー違反情報をOSコマンドやOSスクリプトに渡すことで、アラートまたはポリシー違反に対する自動レスポンスをカスタマイズできます。たとえば、OSスクリプトで社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開く場合、スクリプトに重大度レベル(クリティカル、警告など)を渡すことによって、該当する詳細とともにトラブル・チケットを開いて問題を提示できます。特定タイプの情報をOSコマンドまたはスクリプトに渡す方法の詳細は、次の各項を参照してください。
管理リポジトリに接続する各管理サービス・ホスト・マシン上にOSコマンドまたはスクリプトをデプロイする必要があります。OSコマンドは管理サービスを起動したユーザーとして実行されます。
OSコマンドまたはスクリプトは、各管理サービス・ホスト・マシン上の同じ場所にデプロイする必要があります。OSコマンドは、たとえば/u1/bin/logSeverity.shのような絶対パスにする必要があります。このコマンドは、管理サービスを起動したユーザーが実行します。OSコマンドの実行中にエラーが発生した場合、終了コード100を返すことによってOSコマンドへの通知送信を再試行するように、通知システムを設定できます。プロシージャの再試行は、最初は1分後、次に2分後、その次は3分後というように行われ、通知の存続期間が1日に達すると、その通知はパージされます。
例13-5には、管理サービスにより中断されることなくOSコマンドが実行される期間を制御する、emoms.propertiesのパラメータが示されています。これによって、OSコマンドが過度に長い時間実行されるため他の通知の転送を妨げることが回避できます。デフォルトでは、コマンドは中断されるまで30秒間実行できます。
# The amount of time in seconds after which an OS Command started by the # Notification System will be killed if it has not exited # em.notification.os_cmd_timeout=30
このOSコマンドを通知ルールでコールできる通知メソッドとして追加します。スーパー管理者としてログインし、垂直ナビゲーション・バーから「設定」をクリックし、「通知メソッド」をクリックします。このページから、OSコマンド・タイプに基づく新規の通知を定義できます。「OSコマンドまたはスクリプトに基づく通知メソッドの追加」を参照してください。
各OSコマンドの通知メソッドには次の情報が必要です。
「OSコマンド」フィールドには、OSコマンドまたはスクリプトのフルパス(例: /u1/bin/myscript.sh
)を入力する必要があります。複数の管理サービスがある環境では、管理サービスが存在する各マシン上のパスとまったく同じパスを入力します。コマンドライン・パラメータはフルパスの後ろに追加できます(例: /u1/bin/myscript.sh arg1 arg2)。
例13-6は、通知メソッドに必要な情報を示しています。
Name Trouble Ticketing Description Notification method to log trouble ticket for a severity occurrence OS Command /private/mozart/bin/logTicket.sh
既存のルールを編集(または新規の通知ルールを作成)してから、「メソッド」ページを表示できます。「拡張通知メソッド」のリストで通知メソッドを選択し、「ルールへのメソッドの割当て」をクリックします。複数のルールを1つのメソッドに割り当てる場合は「ルールのメソッドへの割当て」を、複数のメソッドを1つのルールに割り当てる場合は
「メソッドのルールへの割当て」を参照してください。
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに重大度情報を渡します。
環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。
通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。
スクリプトではこれらの変数の一部またはすべてを参照できます。
例13-7に示すOSスクリプトの例では、ログ・ファイルに環境変数エントリが付加されています。この例のスクリプトでは、ファイル・サーバーの重大度の発生が記録されます。ファイル・サーバーに接続できない場合、終了コード100が返され、Oracle Management Service通知システムで通知が再試行されます。
#!/bin/ksh LOG_FILE=/net/myhost/logs/severity.log if test -f $LOG_FILE then echo $TARGET_NAME $MESSAGE $TIMESTAMP >> $LOG_FILE else exit 100 fi
例13-8には、alertmsg.txtファイルにアラート情報を記録するOSスクリプトが示されています。ファイルは/u1/resultsディレクトリに保存されます。
#!/usr/bin/sh echo "Alert logged:" > /u1/results/alertmsg.txt echo "\n" >> /u1/results/alertmsg.txt echo "target name is " $TARGET_NAME >> /u1/results/alertmsg.txt echo "target type is " $TARGET_TYPE >> /u1/results/alertmsg.txt echo "target is on host " $HOST >> /u1/results/alertmsg.txt echo "metric in alert is " $METRIC >> /u1/results/alertmsg.txt echo "metric index is " $KEY_VALUE >> /u1/results/alertmsg.txt echo "timestamp is " $TIMESTAMP >> /u1/results/alertmsg.txt echo "severity is " $SEVERITY >> /u1/results/alertmsg.txt echo "message is " $MESSAGE >> /u1/results/alertmsg.txt echo "notification rule is " $RULE_NAME >> /u1/results/alertmsg.txt echo "rule owner is " $RULE_OWNER >> /u1/results/alertmsg.txt exit 0
例13-9には、Enterprise Manager Grid ControlからHP OpenViewコンソールにアラートを送信するスクリプトが示されています。メトリック・アラートがトリガーされるとEnterprise Manager Grid Controlではアラートが表示されます。次にHP OpenViewスクリプトがコールされ、opcmsgを起動しHP OpenView管理サーバーに情報を転送します。
/opt/OV/bin/OpC/opcmsg severity="$SEVERITY" app=OEM msg_grp=Oracle
msg_text="$MESSAGE" object="$TARGET"
PL/SQLプロシージャに基づく通知メソッドを定義するには、次の4つの手順を実行します。
受け取られる通知のタイプに応じて、プロシージャには次のうち1つのシグネチャを含める必要があります。
アラートおよびポリシー違反の場合:
PROCEDURE p(severity IN MGMT_NOTIFY_SEVERITY)
ジョブ実行ステータス変更の場合:
PROCEDURE p(job_status_change IN MGMT_NOTIFY_JOB)
修正処理ステータス変更の場合:
PROCEDURE p(ca_status_change IN MGMT_NOTIFY_CORRECTIVE_ACTION)
特定タイプの情報をスクリプトまたはPL/SQLプロシージャに渡す方法の詳細は、次の各項を参照してください。
次の指定プロシージャの1つを使用して、リポジトリ・データベースでPL/SQLプロシージャを作成します。
PROCEDURE p(severity IN MGMT_NOTIFY_SEVERITY) PROCEDURE p(job_status_change IN MGMT_NOTIFY_JOB) PROCEDURE p(ca_status_change IN MGMT_NOTIFY_CORRECTIVE_ACTION)
PL/SQLプロシージャは、(SYSMANなどの)リポジトリ所有者のデータベース・アカウントを使用してリポジトリ・データベース上に作成する必要があります。
プロシージャの実行時にエラーが発生した場合、エラー・コード-20000を使用するユーザー定義例外を返すことによって、通知システムでプロシージャへの通知の送信を再試行できます。例13-11「重大度コードを使用したPL/SQLプロシージャ」を参照してください。この再試行処理は最初1分後に行われ、2分後、3分後などのように続き、通知がパージされるポイントである1日後までそれが続きます。
スーパー管理者としてログインし、垂直ナビゲーション・バーから「設定」をクリックし、「通知メソッド」をクリックします。このページから、PL/SQLプロシージャに基づく新規の通知を定義できます。「PL/SQLプロシージャに基づく通知メソッドの追加」を参照してください。
スキーマ所有者、パッケージ名およびプロシージャ名を含む完全修飾名を必ず使用してください。プロシージャはリポジトリ所有者によって実行されるため、リポジトリ所有者にプロシージャの実行権限があります。
PL/SQLプロシージャに基づく通知メソッドを作成します。メソッドの定義には次の情報が必要です。
完全修飾プロシージャ名(OWNER.PKGNAME.PROCNAMEなど)を入力し、管理リポジトリの所有者がプロシージャの実行権限を持つようにする必要があります。
例13-10は必要な情報の例です。
Name Open trouble ticket Description Notification method to open a trouble ticket in the event PLSQL Procedure ticket_sys.ticket_ops.open_ticket
既存のルールを編集(または新規の通知ルールを作成)してから、「メソッド」ページを表示できます。「拡張通知メソッド」のリストで通知メソッドを選択し、「ルールへのメソッドの割当て」をクリックします。複数のルールを1つのメソッドに割り当てる場合は「ルールのメソッドへの割当て」を、複数のメソッドを1つのルールに割り当てる場合は
「メソッドのルールへの割当て」を参照してください。
Enterprise Manager環境には複数のPL/SQLベースのメソッドが構成されている場合があります。
ターゲットの可用性に関連する重大度のタイプと、メトリック重大度およびポリシー違反の情報がPL/SQLプロシージャに渡される方法については、次の項で説明しています。
メトリック重大度の属性(重大度のレベル、タイプ、通知ルール、ルール所有者など)またはポリシー違反情報をPL/SQLプロシージャに渡すことで、アラートまたはポリシー違反に対する自動レスポンスをカスタマイズできます。
通知システムは、MGMT_NOTIFY_SEVERITYオブジェクトを介してPL/SQLプロシージャにメトリック重大度またはポリシー違反の情報を渡します。このオブジェクトのインスタンスは、アラートまたはポリシー違反ごとに作成されます。アラートまたはポリシー違反が発生すると、通知システムは通知ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡された
MGMT_NOTIFY_SEVERITYオブジェクトのフィールドにアクセスできます。
次の表に、受渡し可能なすべてのメトリック重大度属性を示します。
ターゲットに対する重大度が発生すると、通知システムはMGMT_NOTIFY_SEVERITYオブジェクトのインスタンスを作成し、重大度の値を移入します。表13-6の重大度コードはMGMT_GLOBALパッケージの定数として定義されています。これらのコードを使用すると、MGMT_NOTIFY_SEVERITYオブジェクトのseverity_codeフィールドの重大度タイプを判別できます。
CREATE TABLE alert_log (target_name VARCHAR2(64), alert_msg VARCHAR2(4000), occured DATE); PROCEDURE LOG_CRITICAL_ALERTS(severity IN MGMT_NOTIFY_SEVERITY) IS BEGIN -- Log all critical severities IF severity.severity_code = MGMT_GLOBAL.G_SEVERITY_CRITICAL THEN BEGIN INSERT INTO alert_log (target_name, alert_msg, occured) VALUES (severity.target_name, severity.message, severity.collection_timestamp); EXCEPTION WHEN OTHERS THEN -- If there are any problems then get the notification retried RAISE_APPLICATION_ERROR(-20000, 'Please retry'); END; COMMIT; END IF; END LOG_CRITICAL_ALERTS;
Enterprise Managerは、SNMPを介したサード・パーティ管理ツールとの統合をサポートしています。たとえば、SNMPを使用して、選択済メトリックがしきい値を超えていることをサード・パーティ・アプリケーションに通知できます。
このトラップはSNMPバージョン1のトラップであり、この章の最後にMIB定義に関連して説明があります。「管理情報ベース(MIB)」を参照してください。
総合的な構成情報の詳細は、プラットフォーム固有のドキュメントを参照してください。SNMP構成はプラットフォームごとに異なります。
スーパー管理者としてEnterprise Managerにログインします。垂直ナビゲーション・バーから「設定」をクリックし、「通知メソッド」をクリックして「通知メソッド」ページにアクセスします。このページから、SNMPトラップに基づく新規のメソッドを追加できます。
SNMPマスター・エージェントが実行されているホスト(マシン)の名前およびその他の詳細を、次の例のように指定する必要があります。例13-12では、SNMPホストがユーザーのSNMPトラップを受信します。
Name HP OpenView Console Description Notification method to send trap to HP OpenView console SNMP Trap Host Name machine1.us.oracle.com SNMP Host Port 162 SNMP Community public This SNMP host will receive your SNMP traps.
メトリック重大度情報は、SNMPトラップ内で一連の変数として渡されます。
例13-13はSNMPトラップの例です。情報の各断片は、SNMPトラップに変数として組み込まれて送信されます。
Tue Oct 28 05:00:02 2006 Command: 4 Enterprise: 1.3.6.1.4.1.111.15.2 Agent: 138.1.6.200 Generic Trap: 6 Specific Trap: 1 Time Stamp: 8464:39.99 Count: 11 Name: 1.3.6.1.4.1.111.15.1.1.1.2.1 Kind: OctetString Value: "mydatabase" Name: 1.3.6.1.4.1.111.15.1.1.1.3.1 Kind: OctetString Value: "Database" Name: 1.3.6.1.4.1.111.15.1.1.1.4.1 Kind: OctetString Value: "myhost.com" Name: 1.3.6.1.4.1.111.15.1.1.1.5.1 Kind: OctetString Value: "Owner's Invalid Object Count" Name: 1.3.6.1.4.1.111.15.1.1.1.6.1 Kind: OctetString Value: "Invalid Object Owner" Name: 1.3.6.1.4.1.111.15.1.1.1.7.1 Kind: OctetString Value: "SYS" Name: 1.3.6.1.4.1.111.15.1.1.1.8.1 Kind: OctetString Value: "28-OCT-2006 04:59:10 (US/Eastern GMT)" Name: 1.3.6.1.4.1.111.15.1.1.1.9.1 Kind: OctetString Value: "Warning" Name: 1.3.6.1.4.1.111.15.1.1.1.10.1 Kind: OctetString Value: "12 object(s) are invalid in the SYS schema." Name: 1.3.6.1.4.1.111.15.1.1.1.11.1 Kind: OctetString Value: "Database Metrics" Name: 1.3.6.1.4.1.111.15.1.1.1.12.1 Kind: OctetString Value: "SYSMAN"
既存のルールを編集(または新規の通知ルールを作成)してから、「メソッド」ページを表示できます。「拡張通知メソッド」のリストで通知メソッドを選択し、「ルールへのメソッドの割当て」をクリックします。複数のルールを1つのメソッドに割り当てる場合は「ルールのメソッドへの割当て」を、複数のメソッドを1つのルールに割り当てる場合は
「メソッドのルールへの割当て」を参照してください。
修正処理ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、通知ルール、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対する自動レスポンスをカスタマイズできます。たとえば、クリティカルな修正処理の実行が失敗した場合に、OSスクリプトをコールして、社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開くとします。この場合、ステータス(「問題」や「中断」など)をスクリプトに渡してトラブル・チケットを開き、問題を提示します。
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルに情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。
通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。
通知システムは、MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトを介してPL/SQLプロシージャに修正処理ステータス変更情報を渡します。このオブジェクトのインスタンスは、ステータス変更ごとに作成されます。修正処理が実行されると、通知システムは通知ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡された
MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトのフィールドにアクセスできます。
表13-8に、受渡し可能なすべての修正処理ステータス変更属性を示します。
属性 | データ型 | 追加情報 |
---|---|---|
JOB_NAME |
VARCHAR2(128) |
修正処理の名前。 |
JOB_OWNER |
VARCHAR(256) |
修正処理の所有者。 |
JOB_TYPE |
VARCHAR2(32) |
修正処理のタイプ。 |
JOB_STATUS |
NUMBER |
修正処理の新規ステータス。可能性のあるステータス条件のリストは、表13-9「修正処理ステータス・コード」を参照してください。 |
STATE_CHANGE_GUID |
RAW(16) |
状態変更レコードのGUID。 |
JOB_GUID |
RAW(16) |
修正処理の一意のID。 |
EXECUTION_ID |
RAW(16) |
修正処理実行の一意のID。 |
TARGETS |
SMP_EMD_NVPAIR_ARRAY |
修正処理が実行されるターゲット名とターゲット・タイプが対になった配列。 |
METRIC_NAME |
VARCHAR2(256) |
修正処理の実行を誘発したアラート内のメトリック/ポリシー・ルールの名前。 |
METRIC_COLUMN |
VARCHAR2(64) |
修正処理の実行を誘発したアラート内のメトリックの名前。これは、ポリシー違反に対しては使用されません。 |
METRIC_VALUE |
VARCHAR2(1024) |
修正処理の実行を誘発したアラート内のメトリックの値。 |
SEVERITY_CODE |
NUMBER |
修正処理の実行を誘発したアラートの重大度コード。表13-6「重大度コード」を参照してください。 |
KEY_VALUE_NAME |
VARCHAR2(512) |
一連のオブジェクトを監視するメトリックの場合、KEY_VALUE_NAMEは監視されるオブジェクトのタイプを表します。たとえば表領域オブジェクトを監視する表領域使用率(%)メトリックの場合、KEY_VALUE_NAMEは表領域名です。 |
KEY_VALUE |
VARCHAR2(1290) |
表メトリックの場合、この列には、しきい値が定義されている表内の行に対するキー列の値が含まれます。しきい値が表メトリックに対応していない場合、またはメトリック列内のすべての行にしきい値が適用される場合、この列の値には空白1つが含まれます。 |
KEY_VALUE_GUID |
RAW(16) |
コンポジット・キー値の名前に関連付けられているGUID。 |
CTXT_LIST |
MGMT_NOTIFY_COLUMNS |
修正処理ステータス変更コンテキストの詳細。 |
RULE_OWNER |
VARCHAR2(64) |
PL/SQL通知の送信を誘発した通知ルールの所有者。 |
RULE_NAME |
VARCHAR2(132) |
PL/SQL通知メソッドの起動を誘発した通知ルールの名前。 |
OCCURRED_DATE |
DATE |
ステータス変更が発生した日時。 |
次のステータス・コードは、MGMT_NOTIFY_CORRECTIVE_ACTIONオブジェクトの
job_statusフィールドに使用可能な値です。
CREATE TABLE ca_log (jobid RAW(16), occured DATE); CREATE OR REPLACE PROCEDURE LOG_PROBLEM_CAS(status_change IN MGMT_NOTIFY_CORRECTIVE_ ACTION) IS BEGIN -- Log all failed corrective actions IF status_change.job_status = MGMT_JOBS.FAILED_STATUS THEN BEGIN INSERT INTO ca_log (jobid, occured) VALUES (status_change.job_guid, SYSDATE); EXCEPTION WHEN OTHERS THEN -- If there are any problems then get the notification retried RAISE_APPLICATION_ERROR(-20000, 'Please retry'); END; COMMIT; END IF; END LOG_PROBLEM_CAS;
ジョブ・ステータス変更属性(新規ステータス、ジョブ名、ジョブ・タイプ、通知ルール、ルール所有者など)をPL/SQLプロシージャまたはOSコマンドやスクリプトに渡すことで、ステータス変更に対する自動レスポンスをカスタマイズできます。たとえば、クリティカルなジョブの実行が失敗した場合に、OSスクリプトをコールして、社内サポート用トラブル・チケット・システムに対するトラブル・チケットを開くとします。この場合、ステータス(「問題」や「中断」など)をスクリプトに渡してトラブル・チケットを開き、問題を提示します。
通知システムは、MGMT_NOTIFY_JOBオブジェクトを介してPL/SQLプロシージャにジョブ・ステータス変更情報を渡します。このオブジェクトのインスタンスは、ステータス変更ごとに作成されます。ジョブのステータスが変更されると、通知システムは通知ルールに関連付けられているPL/SQLプロシージャをコールして、移入されたオブジェクトをプロシージャに渡します。これにより、プロシージャは渡されたMGMT_NOTIFY_JOBオブジェクトのフィールドにアクセスできます。
表13-10に、受渡し可能なすべてのジョブ・ステータス属性を示します。
ジョブのステータス変更が発生すると、通知システムはMGMT_NOTIFY_JOBオブジェクトのインスタンスを作成し、ステータス変更の値を移入します。次のステータス・コードはMGMT_JOBSパッケージの定数として定義されています。これらのコードを使用すると、MGMT_NOTIFY_JOBオブジェクトのjob_statusフィールドのステータス・タイプを判別できます。
CREATE TABLE job_log (jobid RAW(16), occured DATE); CREATE OR REPLACE PROCEDURE LOG_PROBLEM_JOBS(status_change IN MGMT_NOTIFY_JOB) IS BEGIN -- Log all failed jobs IF status_change.job_status = MGMT_JOBS.FAILED_STATUS THEN BEGIN INSERT INTO job_log (jobid, occured) VALUES (status_change.job_guid, SYSDATE); EXCEPTION WHEN OTHERS THEN -- If there are any problems then get the notification retried RAISE_APPLICATION_ERROR(-20000, 'Please retry'); END; COMMIT; END IF; END LOG_PROBLEM_JOBS;
通知システムは、システム環境変数を介してOSスクリプトまたは実行可能ファイルにジョブ実行ステータス情報を渡します。環境変数へのアクセスに使用される表記規則は、オペレーティング・システムによって異なります。
通知システムは、スクリプトをコールする前に次の環境変数を設定します。スクリプトはスクリプト・ロジック内でこれらの変数の一部またはすべてを使用します。
Enterprise Managerでは、ターゲット・プロパティ(ターゲットのホーム・ページの「関連リンク」からアクセス可能)を定義できます。ここには、ターゲット固有の環境情報や使用コンテキスト情報を保存できます。ターゲット・プロパティ値をカスタム通知メソッドに渡すと、条件ロジックによって処理されるか、チケット・システムなどのサード・パーティのデバイスに、追加のアラート情報として渡されます。デフォルトでは、Enterprise Managerは定義されたすべてのターゲット・プロパティを通知メソッドに渡します。
通知ルールごとに、通知ルール内の基準に合致したときにコールされる1つ以上の通知メソッドを割り当てることができます。
Enterprise Manager Grid Controlには「通知ルール」ページが表示されます。すでに作成済の通知ルールはすべて「通知ルール」表に一覧表示されます。
各通知メソッドについて、通知の送信にそのメソッドを使用する通知ルールを1つ以上関連付けられます。
Enterprise Manager Grid Controlには「通知ルール」ページが表示されます。すでに作成済の通知ルールはすべて「通知ルール」表に一覧表示されます。
アラートがトリガーされても、その条件を含む通知ルールがないために管理者に通知されないといったケースを減らすため、Enterprise Manager ReportシステムのInformation Publisherを使用できます。これを使用すると、各ターゲットの監視対象となるメトリックと、関連する通知ルールを表示できます。Information Publisherは、そのために作成された即時利用可能レポートを提供します。このレポートは、「レポート定義」ページ(「レポート」タブ)から実行できます。「監視」→「アラートおよびポリシー違反」→「メトリック・アラートと可用性の通知ルール・カバレッジ(ターゲット)」の順に選択します。
Enterprise Manager Grid Controlは、サード・パーティのSNMP対応アプリケーションにSNMPトラップを送信できます。トラップ・コンテンツの詳細は、管理情報ベース(MIB)変数から取得できます。次の項では、Enterprise ManagerのMIB変数を詳しく説明します。
MIBはASN.1規則で記述されたテキスト・ファイルで、SNMPがアクセス可能な情報を含む変数が記述されています。MIBオブジェクトとも呼ばれる、MIBに記述された変数は、SNMPを使用して監視できます。監視対象の各要素について1つのMIBがあります。各モノリシックまたはサブエージェントは対応するMIBを参照して、取出し可能な変数およびその特徴を取得します。MIBのこの情報のカプセル化によって、マスター・エージェントが新規サブエージェントを動的に登録できます。マスター・エージェントが必要なサブエージェントの情報はすべてMIBに含まれています。管理フレームワークおよび管理アプリケーションでもこれらのMIBが同じ用途で参照されます。MIBには標準(またはパブリック)MIBと拡張(プライベートまたはベンダー)MIBがあります。
変数の実際の値はMIB内にはなく、計測というプラットフォーム対応プロセスによって取得されます。すべてのSNMP通信は1つ以上のMIBオブジェクトを参照するため、MIBの概念は非常に重要です。実質的にはMIB変数およびその現在の値が、フレームワークに転送されます。
この項ではMIB変数の説明に使用される形式を説明します。SNMP MIB定義バージョン2のSTATUS要素は、このMIB変数の説明には含まれないので注意してください。OracleではすべてのMIB変数がCURRENTとして実装されるため、この値は変化しません。
SNMP MIB定義バージョン2のSYNTAX要素にマップします。
SNMP MIB定義バージョン2のMAX-ACCESS要素にマップします。
SNMP MIB定義バージョン2のSTATUS要素にマップします。
変数のファンクション、使用方法および正確な導出方法を説明します。(たとえば、変数は特定の構成ファイル・パラメータまたはパフォーマンス表フィールドから導出されます。)適切な場合は、MIB定義バージョン2のDESCRIPTION部分を組み込みます。
変数の論理的な範囲ではなく標準的な範囲を示します。たとえば、多くのMIB変数の整数値の論理的な上限は4294967295ですが、実際にインストールされたものの標準的な範囲はより小さくなります。その一方で、大規模データベースのいくつかの変数値が実際にはこの論理的限界(ラップアラウンド)を超える場合があります。変数値の標準的な範囲を0〜1,000または1,000〜30億に指定することによって、サード・パーティの開発者がその変数の最も便利なグラフィック表示を開発することができます。
標準的なインストールの監視時における変数の重要度を示します。重要度の段階は「高」、「中」、「低」または「通常は使用されない」です。DBAは、ある変数を他の変数よりも厳密に監視することが必要になります。ただしこのカテゴリに当てはまる変数は、アプリケーション、データベース・サイズおよびDBAの目的などに応じてインストールごとに異なる可能性があります。それでも、MIBの他の変数に対する変数の重要度を評価することによって、多くのDBAにとって最も関心のある変数に対し、サード・パーティの開発者が集中的に開発作業を行うことができます。
この変数に関連している、このMIBまたはOracleで実装済の他のMIBの変数を列記します。たとえば、この変数の値は別のMIB変数の値から導出されている可能性があります。また、この変数の値が別の変数の値と反比例している場合もあります。この情報を得ることによって、サード・パーティの開発者が関連するMIB変数の便利なグラフィック表示を開発できます。
管理アプリケーションを使用しているDBAにとって最も役立つように、この変数を表示する方法(単純な値、ゲージまたはアラームとしてなど)を示します。
例13-16はEnterprise Managerで使用される標準的なMIB定義の例です。
ORACLE-ENTERPRISE-MANAGER-4-MIB DEFINITIONS ::= BEGIN IMPORTS TRAP-TYPE FROM RFC-1215 DisplayString FROM RFC1213-MIB OBJECT-TYPE FROM RFC-1212 enterprises FROM RFC1155-SMI; oracle OBJECT IDENTIFIER ::= { enterprises 111 } oraEM4 OBJECT IDENTIFIER ::= { oracle 15 } oraEM4Objects OBJECT IDENTIFIER ::= { oraEM4 1 } oraEM4AlertTable OBJECT-TYPE SYNTAX SEQUENCE OF OraEM4AlertEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information on alerts generated by Oracle Enterprise Manager. This table is not queryable; it exists only to document the variables included in the oraEM4Alert trap. Each trap contains a single instance of each variable in the table." ::= { oraEM4Objects 1 } oraEM4AlertEntry OBJECT-TYPE SYNTAX OraEM4AlertEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information about a particular Oracle Enterprise Manager alert." INDEX { oraEM4AlertIndex } ::= { oraEM4AlertTable 1 } OraEM4AlertEntry ::= SEQUENCE { oraEM4AlertIndex INTEGER, oraEM4AlertTargetName DisplayString, oraEM4AlertTargetType DisplayString, oraEM4AlertHostName DisplayString, oraEM4AlertMetricName DisplayString, oraEM4AlertKeyName DisplayString, oraEM4AlertKeyValue DisplayString, oraEM4AlertTimeStamp DisplayString, oraEM4AlertSeverity DisplayString, oraEM4AlertMessage DisplayString, oraEM4AlertRuleName DisplayString oraEM4AlertRuleOwner DisplayString oraEM4AlertMetricValue DisplayString, oraEM4AlertContext DisplayString } oraEM4AlertIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Index of a particular alert, unique only at the moment an alert is generated." ::= { oraEM4AlertEntry 1 } oraEM4AlertTargetName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the target to which this alert applies." ::= { oraEM4AlertEntry 2 } oraEM4AlertTargetType OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The type of the target to which this alert applies." ::= { oraEM4AlertEntry 3 } oraEM4AlertHostName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the host on which this alert originated." ::= { oraEM4AlertEntry 4 } oraEM4AlertMetricName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the metric or policy which generated this alert." ::= { oraEM4AlertEntry 5 } oraEM4AlertKeyName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the key-column, if present, for the metric which generated this alert." ::= { oraEM4AlertEntry 6 } oraEM4AlertKeyValue OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The value of the key-column, if present, for the metric which generated this alert." ::= { oraEM4AlertEntry 7 } oraEM4AlertTimeStamp OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The time at which this alert was generated." ::= { oraEM4AlertEntry 8 } oraEM4AlertSeverity OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The severity of the alert e.g. Critical." ::= { oraEM4AlertEntry 9 } oraEM4AlertMessage OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The message associated with the alert." ::= { oraEM4AlertEntry 10 } oraEM4AlertRuleName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the notification rule that caused this notification." ::= { oraEM4AlertEntry 11 } oraEM4AlertRuleOwner OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The owner of the notification rule that caused this notification." ::= { oraEM4AlertEntry 12 } oraEM4AlertMetricValue OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The value of the metric which caused this alert to be generated." ::= { oraEM4AlertEntry 13 } oraEM4AlertContext OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "A comma separated list of metric column names and values associated with the metric that caused this alert to be generated." ::= { oraEM4AlertEntry 14 } oraEM4Traps OBJECT IDENTIFIER ::= { oraEM4 2 } oraEM4Alert TRAP-TYPE ENTERPRISE oraEM4Traps VARIABLES { oraEM4AlertTargetName, oraEM4AlertTargetType, oraEM4AlertHostName, oraEM4AlertMetricName, oraEM4AlertKeyName, oraEM4AlertKeyValue, oraEM4AlertTimeStamp, oraEM4AlertSeverity, oraEM4AlertMessage, oraEM4AlertRuleName, oraEM4AlertRuleOwner, oraEM4AlertMetricValue, oraEM4AlertContext } DESCRIPTION "The variables included in the oraEM4Alert trap." ::= 1 oraEM4JobAlertTable OBJECT-TYPE SYNTAX SEQUENCE OF OraEM4JobAlertEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information on alerts generated by Oracle Enterprise Manager. This table is not queryable; it exists only to document the variables included in the oraEM4JobAlert trap. Each trap contains a single instance of each variable in the table." ::= { oraEM4Objects 2 } oraEM4JobAlertEntry OBJECT-TYPE SYNTAX OraEM4AlertEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information about a particular Oracle Enterprise Manager alert." INDEX { oraEM4JobAlertIndex } ::= { oraEM4JobAlertTable 1 } OraEM4JobAlertEntry ::= SEQUENCE { oraEM4JobAlertIndex INTEGER, oraEM4JobAlertJobName DisplayString, oraEM4JobAlertJobOwner DisplayString, oraEM4JobAlertJobType DisplayString, oraEM4JobAlertJobStatus DisplayString, oraEM4JobAlertTargets DisplayString, oraEM4JobAlertTimeStamp DisplayString, oraEM4JobAlertRuleName DisplayString oraEM4JobAlertRuleOwner DisplayString, oraEM4JobAlertMetricName DisplayString, oraEM4JobAlertMetricValue DisplayString, oraEM4JobAlertContext DisplayString, oraEM4JobAlertKeyName DisplayString, oraEM4JobAlertKeyValue DisplayString, oraEM4JobAlertSeverity DisplayString } oraEM4JobAlertIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Index of a particular alert, unique only at the moment an alert is generated." ::= { oraEM4JobAlertEntry 1 } oraEM4JobAlertJobName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the job to which this alert applies." ::= { oraEM4JobAlertEntry 2 } oraEM4JobAlertJobOwner OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The owner of the job to which this alert applies." ::= { oraEM4JobAlertEntry 3 } oraEM4JobAlertJobType OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The type of the job to which this alert applies." ::= { oraEM4JobAlertEntry 4 } oraEM4JobAlertJobStatus OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The status of the job to which this alert applies." ::= { oraEM4JobAlertEntry 5 } oraEM4JobAlertTargets OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "A comma separated list of target to which this alert applies." ::= { oraEM4JobAlertEntry 6 } oraEM4JobAlertTimeStamp OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The time at which this job status changed causing this alert." ::= { oraEM4JobAlertEntry 7 } oraEM4JobAlertRuleName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the notification rule that caused this notification." ::= { oraEM4JobAlertEntry 8 } oraEM4JobAlertRuleOwner OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The owner of the notification rule that caused this notification." ::= { oraEM4JobAlertEntry 9 } oraEM4JobAlertMetricName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the metric or policy which caused the Corrective Action to run that caused this alert." ::= { oraEM4JobAlertEntry 10 } oraEM4JobAlertMetricValue OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The value of the metric which caused the Corrective Action to run that caused this alert." ::= { oraEM4JobAlertEntry 11 } oraEM4JobAlertContext OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "A comma separated list of metric column names and values associated with the metric which caused the Corrective Action to run that caused this alert." ::= { oraEM4JobAlertEntry 12 } oraEM4JobAlertKeyName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the key-column, if present, for the metric which caused the Corrective Action to run that generated this alert." ::= { oraEM4JobAlertEntry 13 } oraEM4JobAlertKeyValue OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The value of the key-column, if present, for the metric which caused the Corrective Action to run that generated this alert." ::= { oraEM4JobAlertEntry 14 } oraEM4JobAlertSeverity OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The severity of the metric which caused the Corrective Action to run that generated this alert e.g. Critical." ::= { oraEM4JobAlertEntry 15 } oraEM4JobAlert TRAP-TYPE ENTERPRISE oraEM4Traps VARIABLES { oraEM4JobAlertJobName, oraEM4JobAlertJobOwner, oraEM4JobAlertJobType, oraEM4JobAlertJobStatus, oraEM4JobAlertTargets, oraEM4JobAlertTimeStamp, oraEM4JobAlertRuleName, oraEM4JobAlertRuleOwner, oraEM4JobAlertMetricName, oraEM4JobAlertMetricValue, oraEM4JobAlertContext, oraEM4JobAlertKeyName, oraEM4JobAlertKeyValue, oraEM4JobAlertSeverity } DESCRIPTION "The variables included in the oraEM4JobAlert trap." ::= 2 END
通知システムの動作は、Enterprise ManagerおよびITインフラストラクチャの様々なコンポーネントに依存しています。このため、通知障害には考えられる原因が多数あります。通知システムに関する問題を特定する際は、次のガイドラインおよび推奨事項を参考にしてください。
通知問題を診断する最初の手順は、通知環境が適切に構成および定義されているか確認することです。
「テスト」ボタンをクリックして、すべてのOSコマンド、PL/SQLおよびSNMPトラップの通知メソッドが有効であることを確認します。これによってテスト通知が送信され、OMSが通知メソッドを呼び出す際の問題が表示されます。メソッドがコールされたことを確認してください。たとえば、OSコマンドの通知によりログ・ファイルに情報が書き込まれるように設定した場合は、OSコマンドの通知によって情報がログ・ファイルに書き込まれていることを確認します。
通知問題に関連するアラートが発生した場合、次のものを確認して通知エラーを調べてください。
通知システムは、sysman/log/emoms.trcファイル内にトレース・メッセージを生成できます。
トレース生成を構成するには、sysman/config/emomslogging.propertiesファイル内に次のフラグを設定します。トレース・レベルはINFO、WARN、DEBUGに設定できます。次に例を示します。
log4j.em.notification=DEBUG
トレース・メッセージには、em.notificationという文字列が含まれます。UNIX環境で作業している場合、grepコマンドを使用してemoms.trcファイル内のメッセージを検索できます。次に例を示します。
grep em.notification emoms.trc
emoms.trcファイル内の次のエントリが通知に関連しています。
通常起動のメッセージ
OMSが起動すると、次のようなタイプのメッセージが表示されます。
2006-11-08 03:18:45,385 [Orion Launcher] INFO em.notification init.1279 - Short format maximum length is 155 2006-11-08 03:18:45,386 [Orion Launcher] INFO em.notification init.1297 - Short format is set to both subject and body 2006-11-08 03:18:45,387 [NotificationMgrThread] INFO em.notification run.1010 - Waiting for connection to EM Repository... 2006-11-08 03:18:46,006 [NotificationMgrThread] INFO em.notification run.1041 - Registering for Administrative Queue Name... 2006-11-08 03:18:46,250 [NotificationMgrThread] INFO em.notification run.1078 - Administrative Queue is ADM21 2006-11-08 03:18:46,250 [NotificationMgrThread] INFO em.notification run.1089 - Creating thread pool: min = 6 max = 24 2006-11-08 03:18:48,206 [NotificationMgrThread] INFO em.notification handleAdminNotification.655 - Handling notifications for EMAIL1
通知配信のメッセージ
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@oracle.com 2006-11-08 03:18:47,006 [DeliveryThread-EMAIL1] INFO em.notification run.227 - Notification handled for SYSMAN/admin@oracle.com
通知システム・エラーのメッセージ
2006-11-08 07:26:30,242 [NotificationMgrThread] ERROR em.notification getConnection.237 - Failed to get a connection Io exception: The Network Adapter could not establish the connection
SMTPゲートウェイが適切に設定されていない:
Failed to send e-mail to my.admin@oracle.com: For e-mail 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.us.oracle.com: Sending failed; nested exception is: javax.mail.MessagingException: Unknown SMTP host: badhost.us.oracle.com;
無効な電子メール・アドレス:
Failed to connect to gateway: rgmemeasmtp.oraclecorp.com: Sending failed; nested exception is: javax.mail.MessagingException: 550 5.7.1 <smpemailtest_ie@oracle.com>... Access denied
電子メールのゲートウェイ構成が有効であるか確認するときはいつでも、「テスト」ボタンを使用してください。送信者の電子メール・アドレスに電子メールが受信されることを確認してください。
OSコマンドまたはスクリプトを実行しようとすると、次のエラーが発生することがあります。「テスト」ボタンを使用して、OSコマンドの構成が有効であるか確認します。エラーが存在する場合、コンソールにそのエラーが表示されます。
パスが無効であるか、ファイルに対する読取り権限がない:
Could not find /bin/myscript (stacb10.us.oracle.com_Management_Service)
(SYSMAN, myrule )
実行可能ファイルに対する実行権限がない:
Error calling /bin/myscript: java.io.IOException: /bin/myscript: cannot execute (stacb10.us.oracle.com_Management_Service) (SYSMAN, myrule )
OSコマンドの実行時間の超過によるタイムアウト:
Timeout occurred running /bin/myscript (stacb10.us.oracle.com_Management_Service) (SYSMAN, myrule )
メモリー不足のため、またはOMSマシン上で実行されているプロセスが多すぎるために発生したエラーは、適宜記録されます。
OSコマンドの構成が有効であるか確認するときはいつでも、「テスト」ボタンを使用してください。
「テスト」ボタンを使用して、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 p(s IN MGMT_NOTIFY_SEVERITY))
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内でカーソルのリークがないように注意する必要があります。この状況が原因で例外が発生すると、配信は失敗し、Grid Controlコンソールのアラートの「詳細」セクションにメッセージが表示されます。
PL/SQLの構成が有効であるか確認するときはいつでも、「テスト」ボタンを使用してください。
|
![]() Copyright © 2003, 2009 Oracle Corporation. All Rights Reserved. |
|