Verwenden korrelierter Ereignisse zum Auslösen einer Ereignisrichtlinie
Konfigurieren Sie eine Ereignisrichtlinie, die ausgeführt wird, wenn zwei oder mehr korrelierte Ereignisse eintreten.
Darstellung von auslösenden und korrelierten Ereignissen in einer Ereignisrichtlinie
In Ereignisskriptargumenten und unterstützten Ereignisrichtlinienanweisungen wie der execute-commands
Anweisung können Sie Ereignisrichtlinienvariablen verwenden, um zwischen einem auslösenden Ereignis und einem korrelierenden Ereignis zu unterscheiden. Auslösende und korrelierende Ereignisse werden in den folgenden Anweisungen auf Hierarchieebene [edit event-options policy policy-name]
konfiguriert:
- Auslösendes Ereignis – Konfiguriert in der
events
Anweisung - Korrelierendes Ereignis – Konfiguriert in der
within seconds events
Anweisung
Sie können Ereignisrichtlinienvariablen der folgenden Formen verwenden, um auslösende und korrelierende Ereignisse darzustellen:
-
{$$.attribute-name}
Das doppelte Dollarzeichen ($$
) stellt das Ereignis dar, das die Richtlinie auslöst. In Kombination mit einem Attributnamen wird die Variable in den Wert des Attributs aufgelöst, das dem auslösenden Ereignis zugeordnet ist. Wird z. B. in den Schnittstellennamen aufgelöst,{$$.interface-name}
der dem auslösenden Ereignis zugeordnet ist. -
{$event.attribute-name}
—Das einzelne Dollarzeichen mit der Notation "Ereignisname" ($event
) steht für das letzte Ereignis, das mit übereinstimmtevent
. In Kombination mit einem Attributnamen wird die Variable in den Wert des Attributs aufgelöst, das diesem Ereignis zugeordnet ist. Wenn der Befehl z. B. von einer Richtlinie ausgegebenshow interfaces {$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
wird, wird die Variable{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
in den Schnittstellennamen aufgelöst, der dem letztenCOSD_CHAS_SCHED_MAP_INVALID
Ereignis zugeordnet ist, das vom Ereignisprozess zwischengespeichert wurde. -
{$*.attribute-name}
Das Dollarzeichen mit dem Sternchen ($*
) steht für das letzte Ereignis, das mit einem der korrelierenden Ereignisse übereinstimmt. Die Variable wird in den Wert des Attributs aufgelöst, das dem letzten Ereignis zugeordnet ist, das mit einem der korrelierten Ereignisse übereinstimmt, die in der Richtlinienkonfiguration angegeben sind.
In Ereignisrichtlinien können Sie mithilfe von Ereignisrichtlinienvariablen auf bestimmte Ereignisse verweisen. Beachten Sie die folgende Ereignisrichtlinie:
[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}
Im Befehl wird der Wert des interface-name
Attributs von event e1
, e2
oder e3
die {$$.interface-name}
Variable ersetzt.
show interfaces {$e4.interface-name}
Im Befehl wird die {$e4.interface-name}
Variable durch den Wert des interface-name
Attributs des letzten e4
Ereignisses ersetzt.
show interfaces {$*.interface-name}
Im Befehl wird die {$*.interface-name}
Variable durch den Wert des interface-name
Attributs des letzten e4
e5
, oder e6
Ereignisses ersetzt. Wenn einer von e1
, e2
oder e3
innerhalb von 60 Sekunden nach e4
, e5
oder e6
auftritt, wird der Wert des Attributs interface-name
für dieses korrelierende Ereignis (e4
, e5
oder e6
) durch die {$*.interface-name}
Variable ersetzt. Wenn das korrelierende Ereignis kein interface-name
Attribut hat, führt die Software den show interfaces {$*.interface-name}
Befehl nicht aus.
Wenn e1
innerhalb von 60 Sekunden nach und e4
e5
auftritt, wird die {$*.interface-name}
Variable durch den Wert des interface-name
Attributs for e4
ersetzt. Dies liegt daran, dass der Ereignisprozess (eventd) in sequenzieller Reihenfolge nach korrelierenden Ereignissen sucht, wie in der Anweisung within
konfiguriert. In diesem Fall ist e4
der Auftrag > e5
> e6
.
Beispiel: Korrelieren von Ereignissen basierend auf dem Empfang anderer Ereignisse innerhalb eines bestimmten Zeitintervalls
Die Ereignisrichtlinie in diesem Beispiel gibt eine Reihe von Befehlen aus und lädt die resultierende Ausgabedatei auf eine Archivwebsite hoch. Die Richtlinie wird ausgeführt, wenn eines der auslösenden Ereignisse event3
, event4
oder event5
innerhalb von 60 Sekunden nach dem Eintreten eines der korrelierenden Ereignisse event1
oder event2
eintritt. Der Pseudocode für die Richtlinie lautet wie folgt:
if trigger 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; }
Die Ereignisrichtlinie gibt zwei Archivstandorte in der Konfiguration an. Das Gerät versucht, an den ersten Archivstandort in der Liste zu übertragen und wird nur dann zum nächsten Standort verschoben, wenn die Übertragung fehlschlägt. Die Konfiguration der Ereignisrichtlinie lautet:
[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; } } }
Beispiel: Korrelieren von Ereignissen basierend auf Ereignisattributen
In der folgenden Ereignisrichtlinie werden die beiden Ereignisse korreliert, wenn ihre Ereignisattributwerte übereinstimmen. Durch den Abgleich der Attribute beider Ereignisse wird sichergestellt, dass die beiden Ereignisse miteinander in Beziehung stehen. In diesem Fall müssen die Schnittstellenadressen und die Namen der physischen Schnittstellen (ifd) übereinstimmen.
Der RPD_KRT_IFDCHANGE
Fehler tritt auf, wenn der Routing-Protokollprozess (rpd) eine Anforderung an den Kernel sendet, um den Status einer Schnittstelle zu ändern, und die Anforderung fehlschlägt. Der RPD_RDISC_NOMULTI
Fehler tritt auf, wenn eine Schnittstelle für die Routererkennung konfiguriert ist, die Schnittstelle jedoch nicht die erforderlichen IP-Multicast-Vorgänge unterstützt.
In diesem Beispiel rpd_rdisc_nomulti.interface-name
könnte so-0/0/0.0 und rpd_krt_ifdchange.ifd-index
so-0/0/0 sein.
[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 ... } }