Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

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

相関イベントの理解

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

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

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

within ステートメントは、トリガー・イベントの前に指定された時間間隔内に発生しなければならない (または発生してはならない) 相関イベントを定義します。attributes-match ステートメントは、イベントの属性を別のイベントの属性または正規表現に関連付けます。イベント ポリシーは、指定された条件が満たされた場合にのみ、then ステートメントで構成されたアクションを実行します。以下のセクションでは、 ステートメントの使用方法について説明します。

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

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

例えば、相関イベント(event1またはevent2)が発生してから60秒以内に、トリガーイベント(event3event4、またはevent5)の1つが発生した場合、デバイスは次のポリシーを実行します。

時間間隔でイベントを関連付けるイベント ポリシーを構成するには:

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

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

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

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

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

手記:

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

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

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

attributes-match ステートメントは、2 つのイベントを次のように関連付けます。

  • 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 ステートメントに equals オプションまたは starts-with オプションが含まれている場合、または[edit event-options policy policy-name events]階層レベルで指定されていないイベントの句を含む matches オプションが含まれている場合は、同じイベント ポリシーで 1 つ以上の within ステートメントも定義する必要があります。

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

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

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

  • システムログエクスプローラを使用します。

  • CLI で help syslog event 動作モード コマンドを使用します。

  • 属性を設定する場合、設定モードで状況依存のヘルプを使用します。

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

または、CLI で help syslog event operational mode コマンドを使用すると、特定のイベントで参照できる属性のリストも表示されます。コマンド出力では、イベント属性が山括弧(<>)で囲まれて示されます。次の出力は、 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) 表記の単一ドル記号は、 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 ステートメントで構成された順序で、相関するイベントを検索するためです。この場合、順序は

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

この例のイベント ポリシーは、一連のコマンドを発行し、結果の出力ファイルをアーカイブ サイトにアップロードします。このポリシーは、トリガー イベント( event3event4、または event5)の 1 つが、相関イベント( 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 である可能性があります。