正規表現を使用して、ポリシーをトリガーする一連のイベントを絞り込む
正規表現の一致を使用することで、イベントポリシーをトリガーするイベントをより正確に定義できます。
正規表現の一致を使用して、イベントポリシーをトリガーするイベントをより正確に制御できます。イベントポリシーを定義するときは、ポリシーをトリガーするイベントを指定します。多くのイベントには、インターフェイス名、ポート番号、エラーコードなど、それぞれの特定のイベントに関する詳細を提供する1つ以上の属性があります。イベントの属性を参照し、属性値が指定された正規表現に一致する場合にのみトリガーするイベントポリシーを定義できます。
イベント属性を正規表現と一致させるには、[edit event-options policy policy-name attributes-match]階層レベルにmatchesステートメントを含めます。評価するイベントと属性を指定します。参照されるイベントは、トリガーイベントまたはイベントポリシーのwithinステートメントに含まれる相関イベントのいずれかである必要があります。次に、ポリシーをトリガーするために属性値が一致する必要がある正規表現を定義します。
[edit event-options policy policy-name] user@host# set events event user@host# set attributes-match event.attribute-name matches regular-expression
正規表現を指定する場合は、拡張(最新)UNIX正規表現のPOSIX標準1003.2で定義された表記を使用します。 表1 は、 matches ステートメントで使用できる正規表現演算子の概要を示しています。説明では、 用語 は 1 つの英数字、または角括弧、括弧、または中括弧で囲まれた一連の文字を指します。
matchesステートメントは大文字と小文字を区別しません。
オペレーター |
一致 |
|---|---|
.(期間) |
任意の文字の 1 つのインスタンス。 |
*(アスタリスク) |
直前の用語のゼロ以上のインスタンス。 |
+(プラス記号) |
直前の項の 1 つ以上のインスタンス。 |
?(疑問符) |
直前の項のゼロまたは1つのインスタンス。 |
|(パイプ) |
パイプ運用担当者の両側に表示される用語の 1 つです。 |
!(感嘆符) |
式で指定された文字列以外の任意の文字列で、式の先頭に感嘆符が表示される場合。感嘆符の使用は、Junos OS固有です。 |
^ (キャレット) |
キャレットが角括弧の外側に表示される行の先頭。 キャレットが角括弧内の最初の文字である場合、角括弧内に続かない文字の1つのインスタンス。 |
$(ドル記号) |
行の終わり。 |
|
囲まれた英数字の 1 つのインスタンス。文字の範囲を示すには、ハイフン( |
|
囲まれた項の評価値の 1 つのインスタンス。括弧は、正規表現での評価の順序を示すために使用されます。 |
テスト環境内で正規表現をテストするには、Junosロガーユーティリティを使用して、適切な属性とメッセージでイベント通知をシミュレートします。詳細については、 Junos Logger Utilityを参照してください。
正規表現の構文の説明は、このドキュメントの範囲外です。詳細については、「 正規表現」を参照してください。
例:正規表現を使用したイベントポリシーの制御
次の例では、SNMP_TRAP_LINK_UPイベントから120秒以内にSNMP_TRAP_LINK_DOWNイベントが発生した場合にイベントポリシーがトリガーされます。ただし、イベントポリシーは、両方のトラップのinterface-name属性が互いに一致し、SNMP_TRAP_LINK_DOWNトラップのinterface-name属性が文字gで始まる場合にのみトリガーされます。したがって、イベントポリシーはge-*インターフェイスイベントに対してのみトリガーされます。このポリシーは、eventdプロセスが他のインターフェイスからトラップを受信してもトリガーされません。
システムログファイルでは、メッセージタグはすべて大文字で表示されます。CLIでは、メッセージタグはすべて小文字で表示されます。
[edit event-options]
policy pol6 {
events snmp_trap_link_down;
within 120 events snmp_trap_link_up;
attributes-match {
snmp_trap_link_up.interface-name equals snmp_trap_link_down.interface-name;
snmp_trap_link_down.interface-name matches "^g";
}
then {
execute-commands {
commands {
"show interfaces {$$.interface-name}";
"show configuration interfaces {$$.interface-name}";
}
output-filename if-info;
destination event-archive;
output-format text;
}
}
}
次の例では、前のイベントポリシーを若干変更しています。このポリシーは、両方のトラップのinterface-name属性が互いに一致する場合にのみトリガーされます。ただし、この場合、SNMP_TRAP_LINK_DOWNのinterface-name属性はge-0/0で始まってはなりません。したがって、イベントポリシーはインターフェイス名ge-0/1/0およびxe-0/2/0に対してトリガーされますが、ge-0/0/0、ge-0/0/1などに対してはトリガーされません。
policy interface-down {
events snmp_trap_link_down;
within 120 events snmp_trap_link_up;
attributes-match {
snmp_trap_link_up.interface-name equals snmp_trap_link_down.interface-name;
snmp_trap_link_down.interface-name matches "!(^ge-0/0.*)";
}
then {
execute-commands {
commands {
"show interfaces {$$.interface-name}";
"show configuration interfaces {$$.interface-name}";
}
output-filename if-info;
destination event-archive;
output-format text;
}
}
}