相関イベントを使用してイベント・ポリシーをトリガーする
概要 関連付けられた 2 つ以上のイベントが発生した場合に実行するイベント ポリシーを構成します。
イベント ポリシー内のイベントのトリガーと関連付けを表す方法
イベント・スクリプトの引数および ステートメントなどの 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}
アスタリスク($*
)表記のドル記号は、相関するイベントのいずれかに一致する最新のイベントを表します。この変数は、ポリシー構成で指定された相関イベントのいずれかに一致する最新のイベントに関連付けられた属性の値に解決されます。
イベント ポリシーでは、イベント ポリシー変数を使用して特定のイベントを参照できます。以下のイベント ポリシーを検討してください。
[edit event-options] policy p1 { events [ e1 e2 e3 ]; within 60 events [ e4 e5 e6 ]; then { execute-commands { commands { "show interfaces {$$.interface-name}"; "show interfaces {$e4.interface-name}"; "show interfaces {$*.interface-name}"; } output-filename command-output.txt; destination some-dest; } } }
show interfaces {$$.interface-name}
コマンドでは、イベント e1
、 e2
、または e3
の属性のinterface-name
値を 変数に{$$.interface-name}
置き換えます。
show interfaces {$e4.interface-name}
コマンドでは、最新e4
のイベントのinterface-name
属性の値が 変数に{$e4.interface-name}
置き換てられます。
show interfaces {$*.interface-name}
コマンドでは、最新e4
の interface-name
、 、 e5
または e6
イベントの属性の値が 変数に{$*.interface-name}
置き換てられます。、 、または のいずれか e1
1 つが、 、 e5
、または e6
の後 e4
60 秒以内に発生した場合、その相関イベント (e4
、 、 e5
またはe6
) の属性のinterface-name
値が変数に{$*.interface-name}
置き換e3
まれます。 e2
相関イベントに属性がないinterface-name
場合、ソフトウェアは コマンドをshow interfaces {$*.interface-name}
実行しません。
と の両方e4
の60秒以内に発生した場合e1
、 の属性e4
のinterface-name
値は 変数に{$*.interface-name}
置き換われます。e5
これは、イベントプロセス(eventd)が ステートメントでwithin
設定された順にイベントを関連付けるために検索するためです。この場合、順序はe4
> e5
>e6
。
例:指定された期間内に他のイベントを受信した場合に基づいてイベントを関連付ける
この例のイベント・ポリシーは、一連のコマンドを発行し、結果の出力ファイルをアーカイブ・サイトにアップロードします。ポリシーは、 、 、event4
または event5
が発生した後event3
event1
event2
60秒以内に実行されます。ポリシーの疑似コードは次のとおりです。
if this event is (event3 or event4 or event5) and (event1 or event2 has been received within the last 60 seconds) then { run a set of commands; log the output of these commands to a location; }
イベント ポリシーは、構成内の 2 つのアーカイブ サイトを指定します。デバイスは、転送に失敗した場合にのみ次のサイトに移動して、リスト内の最初のアーカイブ サイトへの転送を試みます。イベントポリシーの設定は次のとおりです。
[edit event-options] policy 1 { events [ event3 event4 event5 ]; within 60 events [ event1 event2 ]; then { execute-commands { commands { "command"; } output-filename my_cmd_out; destination policy-1-command-dest; } } } destinations { policy-1-command-dest { archive-sites { scp://robot@my.big.com/a/b; scp://robot@my.little.com/a/b; } } }
例:イベント属性に基づくイベントの関連付け
以下のイベント ポリシーでは、イベント属性値が一致する場合、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 である可能性があります。
[edit event-options] policy 1 { events rpd_rdisc_nomulti; within 500 events rpd_krt_ifdchange; attributes-match { rpd_rdisc_nomulti.interface-address equals rpd_krt_ifdchange.address; rpd_rdisc_nomulti.interface-name starts-with rpd_krt_ifdchange.ifd-index; } then { ... actions ... } }