Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

相関イベントを使用してイベントポリシーをトリガーする

2 つ以上の相関イベントが発生したときに実行するイベント ポリシーを構成します。

相関イベントの理解

1 つのイベントでトリガーするようにイベント ポリシーを構成することに加えて、2 つ以上のイベントを関連付けるイベント ポリシーを構成することもできます。指定どおりにイベントが発生した場合、イベントポリシーは設定されたアクションを実行します。例えば、UI_COMMIT_PROGRESSイベント発生後5分以内にUI_CONFIGURATION_ERRORイベントが発生した場合に、特定の動作モードコマンドを発行することができます。別の例として、DCD_INTERFACE_DOWNイベントが 60 秒間隔で 2 回生成された場合、特定のファイルをアップロードできます。

イベントポリシーでイベントを関連付けるには、 [edit event-options] 階層レベルに以下のステートメントを含めます。

events ステートメントでは、複数のトリガーイベントを一覧表示できます。イベント ポリシーでイベントを定義する方法については、「イベント ポリシーとイベント通知の概要」を参照してください。これらのイベントを他のイベントと関連付けるには、withinおよび/またはattributes-matchステートメントを設定します。

within ステートメントは、トリガー・イベントの前に指定された時間間隔内に発生しなければならない (または発生してはならない) 相関イベントを定義します。attributes-matchステートメントを使用すると、イベント自体に加えて、イベントの属性も考慮されます。attributes-matchステートメントは、イベントの属性を他のイベントの属性または正規表現と関連付けることができます。

イベントポリシーは、指定された条件が満たされた場合にのみ、 then ステートメントで設定されたアクションを実行します。次のセクションでは、ステートメントの使用方法について説明します。

時間間隔によるイベントの関連付け

イベント・ポリシーは、別のイベントの後に指定した時間間隔内にトリガー・イベントが発生した場合にのみ実行されるように構成できます。これを行うには、 within seconds events ステートメントを設定します。このポリシーは、 within seconds events ステートメントで定義された相関イベントのいずれかが、最初の events ステートメントで定義されたトリガーイベントのいずれかの前に設定された秒数以内に発生した場合に実行されます。秒数は 60 から 604,800 までです。 not ステートメントは、トリガーイベントの前に設定された時間間隔内に相関イベントが発生しない場合にのみ、ポリシーを実行します。

たとえば、 event3event4event5のいずれかのトリガーイベントが発生したときに、 event1 または event2のいずれかが発生してから60秒以内に、デバイスは次のポリシーを実行します。

時間間隔でイベントを関連付けるようにイベント・ポリシーを構成するには、次のようにします。

  1. 1 つ以上のトリガー イベントを構成します。

  2. トリガーイベントの前に、指定された時間間隔内に発生する必要がある、または発生してはならない相関イベントを設定します。

    • トリガー・イベントの前に指定された時間間隔内に相関イベントが発生する必要があることを指定するには、 not キーワードを省略します。

    • トリガー・イベントの前に指定された時間間隔内に相関イベントが発生し てはならない ことを指定するには、 not キーワードを含めます。

  3. 条件が満たされた場合にイベント・ポリシーが実行するアクションを構成します。

手記:

デバイスは、トリガー イベントの前に相関イベントのいずれかが発生した場合( not キーワードを設定した場合は発生しない場合)に、イベント ポリシーを実行します。トリガーイベントの前に複数の相関イベントが発生する(または発生しない)ように要求するには、複数の within ステートメントを設定します。各ステートメントでは、異なる時間間隔を指定する必要があります。

within ステートメントは、トリガーとなるイベントが特定の時間間隔内に一定回数発生した場合のイベントポリシーの実行もサポートしています。詳細については、「イベント数に基づくイベント ポリシーのトリガー」を参照してください。

イベント属性に基づくイベントの関連付け

多くのイベントには 1 つ以上の属性があり、イベント ポリシーで参照できます。例えば、 UI_COMMIT イベントに関する次のシステムログメッセージを考えてみましょう。

一般的な UI_COMMIT イベント メッセージは User 'username' requested 'command' operation (comment: message) です。

usernamecommandmessageの3つの属性があります。

attributes-matchステートメントを使用すると、equalsmatches、およびstarts-with比較を使用してイベント属性を目的の値と比較することにより、より正確なイベントポリシーマッチングを構築できます。ステートメントは、イベントを次のように関連付けます。

  • event1.attribute-name equals event2.attribute-name- event1 属性と event2 属性が同じ値を持つ場合にのみ、ポリシーを実行します。

  • event.attribute-name matches regular-expression- event 属性値が指定された正規表現と一致する場合にのみ、ポリシーを実行します。詳細については、「正規 表現を使用して、ポリシーをトリガーするイベントのセットを絞り込む」を参照してください。

  • event1.attribute-name starts-with event2.attribute-name- event1 属性値が event2 属性の値で始まる場合にのみ、ポリシーを実行します。

attributes-match ステートメントで参照されるイベントは、トリガーイベント、またはイベントポリシーの within ステートメントに含まれる関連イベントのいずれかである必要があります。attributes-matchステートメントが以下の場合、1つ以上のwithinステートメントを定義する必要があります。

  • equalsまたはstarts-withの比較を含む

  • トリガー・イベントではないイベントの節を含む matches 比較が含まれます。

attributes-matchステートメントには、複数のequalsmatches、およびstarts-with比較ステートメントを含めることができます。システムは、論理 AND 演算子を使用して複数の比較ステートメントを評価します。したがって、イベント ポリシーを実行するには、attributes-match条件がすべて true と評価される必要があります。

たとえば、複数のリアルタイム パフォーマンス監視(RPM)プローブを設定し、そのうちの 1 つのプローブが所有者名 Connectivity を使用し、 Management という名前のテストがあるとします。イベントポリシーでプローブの ping_test_failed イベントを参照する場合、イベントを生成したRPMプローブテストを区別する必要があります。以下のイベント・ポリシーは、 ping_test_failed ・イベントの test-owner 属性と test-name 属性で一致し、イベント・ポリシーが正しいプローブに対してのみトリガーされるようにします。イベント ポリシーは、両方の一致条件が true の場合にのみ実行されます。

同様に、次のイベント・ポリシーは、 messages 属性を持つ非標準のSYSTEMイベントでトリガーされます。 attributes-match ステートメントでは、イベントポリシーを呼び出すには、 matches ステートメントがすべて true である必要があります。

attributes-match ステートメント内でイベントポリシー変数を使用して、トリガーとなるイベント属性と相関するイベント属性を区別できます。トリガーイベントは、[edit event-options policy policy-name events]階層レベルで設定するイベントです。二重ドル記号 ($$) 表記は、ポリシーをトリガーしているイベントを表し、{$$.attribute-name}トリガーとなるイベントの属性の値に解決されます。イベントを相関させる場合、イベント名 ($event) 表記の 1 つのドル記号は、イベント名と一致する最新のイベントを表し、{$event.attribute-name}、そのイベントに関連付けられた属性の値に解決されます。

例えば、以下のイベントポリシーは、5 分間に 4 つ以上のコミットが実行され、1 つ以上の相関イベントのユーザー名がトリガーイベントのユーザー名と同じ場合、 then ステートメントのアクションを実行します。

特定のイベントについて参照できる属性を検索するには、次のようなさまざまな方法があります。

システムログエクスプローラアプリケーションを使用すると、特定のオペレーティングシステムとリリースの標準システムログメッセージを検索できます。メッセージの詳細には、そのイベントで参照できる属性が含まれます。

または、CLI の help syslog event 動作モードコマンドは、特定のイベントで参照できる属性のリストも表示します。コマンドの出力では、イベント属性を山括弧(<>)で囲んで示しています。次の出力は、 ACCT_ACCOUNTING_SMALL_FILE_SIZE イベントに参照可能な 3 つの属性 ( filenamefile-sizerecord-size) があることを示しています。

手記:

パイプ (|) 記号を使用して、検索の出力をフィルター処理できます。パイプ記号の使用の詳細については、 CLIユーザーガイドを参照してください。

また、次の例に示すように、[edit event-options policy policy-name]階層レベルで set attributes-match event? 設定モードコマンドを発行して、イベント属性を表示することもできます。

手記:

この set コマンドでは、イベント名と疑問符(?)の間にスペースは使用されていません。

トリガー イベントと関連付けイベントをイベント ポリシーで表現する方法

イベントスクリプト引数とサポートされているイベントポリシーステートメント( execute-commands ステートメントなど)では、イベントポリシー変数を使用して、 トリガーとなるイベント相関するイベントを区別できます。イベントのトリガーと関連付けは、 [edit event-options policy policy-name] 階層レベルの以下のステートメントで設定します。

  • トリガーイベント - events ステートメントで設定
  • 相関イベント - within seconds events ステートメントで設定

次の形式のイベントポリシー変数を使用して、イベントのトリガーと関連付けを表すことができます。

  • {$$.attribute-name}- 二重ドル記号($$)表記は、ポリシーをトリガーするイベントを表します。変数を属性名と組み合わせると、トリガーとなるイベントに関連付けられた属性の値に解決されます。例えば、 {$$.interface-name} は、トリガーとなるイベントに関連付けられたインターフェイス名に解決されます。

  • {$event.attribute-name}- イベント名($event)表記が付いた 1 つのドル記号は、 event に一致する最新のイベントを表します。変数を属性名と組み合わせると、そのイベントに関連付けられた属性の値に解決されます。例えば、ポリシーが show interfaces {$COSD_CHAS_SCHED_MAP_INVALID.interface-name} コマンドを発行すると、 {$COSD_CHAS_SCHED_MAP_INVALID.interface-name} 変数は、イベントプロセスによってキャッシュされた最新の COSD_CHAS_SCHED_MAP_INVALID イベントに関連付けられたインターフェイス名に解決されます。

  • {$*.attribute-name}- アスタリスク($*)表記の付いたドル記号は、相関するイベントのいずれかに一致する最新のイベントを表します。変数は、ポリシー構成で指定された相関イベントのいずれかと一致する最新のイベントに関連付けられた属性の値に解決されます。

イベント ポリシーでは、イベント ポリシー変数を使用して特定のイベントを参照できます。次のイベント・ポリシーについて考えてみます。

show interfaces {$$.interface-name} コマンドでは、イベント e1e2、または e3interface-name 属性の値が {$$.interface-name} 変数に代入されます。

show interfaces {$e4.interface-name}コマンドでは、最新のe4イベントのinterface-name属性の値が{$e4.interface-name}変数に代入されます。

show interfaces {$*.interface-name}コマンドでは、最新のe4e5、またはe6イベントのinterface-name属性の値が{$*.interface-name}変数に代入されます。e4e5、またはe6後60秒以内にe1e2、またはe3のいずれかが発生した場合、その相関イベント(e4e5、またはe6)のinterface-name属性の値が{$*.interface-name}変数に代入されます。相関イベントに interface-name 属性がない場合、ソフトウェアは show interfaces {$*.interface-name} コマンドを実行しません。

e4e5の両方から60秒以内にe1が発生した場合、e4interface-name属性の値が{$*.interface-name}変数に代入されます。これは、イベントプロセス(eventd)が、within ステートメントで設定された順番に、相関するイベントを検索するためです。この場合、順序はe4 > e5 > e6です。

例: 指定した時間間隔内の他のイベントの受信に基づくイベントの関連付け

この例のイベント ポリシーは、一連のコマンドを発行し、結果の出力ファイルをアーカイブ サイトにアップロードします。ポリシーは、 event3event4event5のいずれかのトリガー イベント( event1 または event2)が発生してから 60 秒以内に発生した場合に実行されます。ポリシーの疑似コードは次のとおりです。

イベント ポリシーでは、構成で 2 つのアーカイブ サイトを指定します。デバイスはリスト内の最初のアーカイブ サイトへの転送を試み、転送が失敗した場合にのみ次のサイトに移動します。イベント ポリシーの構成は次のとおりです。

例:イベント属性に基づくイベントの関連付け

次のイベント ポリシーでは、イベント属性値が一致する場合、2 つのイベントが相関関係にあります。両方のイベントの属性を一致させることで、2 つのイベントが確実に関連します。この場合、インターフェイス アドレスと物理インターフェイス(ifd)名が一致する必要があります。

RPD_KRT_IFDCHANGEエラーは、ルーティングプロトコルプロセス(rpd)がカーネルにインターフェイスの状態を変更するリクエストを送信し、そのリクエストが失敗した場合に発生します。RPD_RDISC_NOMULTIエラーは、インターフェイスがルーター検出用に設定されているが、インターフェイスが要求どおりIPマルチキャスト操作をサポートしていない場合に発生します。

この例では、 rpd_rdisc_nomulti.interface-name は so-0/0/0.0、 rpd_krt_ifdchange.ifd-index は so-0/0/0 となります。