Utiliser des événements corrélés pour déclencher une stratégie d’événements
Configurez une stratégie d’événements à exécuter lorsque deux événements corrélés ou plus se produisent.
Comment représenter les événements déclencheurs et corrélés dans une stratégie d’événements
Dans les arguments de script d’événement et les instructions de stratégie d’événement prises en charge telles que l’instruction execute-commands , vous pouvez utiliser des variables de stratégie d’événement pour faire la différence entre un événement déclencheur et un événement corrélatif. Le déclenchement et la corrélation d’événements sont configurés dans les instructions suivantes au niveau de la [edit event-options policy policy-name] hiérarchie :
- Événement déclencheur : configuré dans l’instruction
events - Événement corrélatif : configuré dans l’instruction
within seconds events
Vous pouvez utiliser des variables de stratégie d’événement des formes suivantes pour représenter les événements déclencheurs et corrélés :
-
{$$.attribute-name}: la notation du double signe dollar ($$) représente l’événement qui déclenche la stratégie. Lorsqu’elle est combinée avec un nom d’attribut, la variable se résout en la valeur de l’attribut associé à l’événement déclencheur. Par exemple,{$$.interface-name}correspond au nom d’interface associé à l’événement déclencheur. -
{$event.attribute-name}: le signe dollar unique avec la notation du nom de l’événement ($event) représente l’événement le plus récent qui correspond àevent. Lorsqu’elle est combinée avec un nom d’attribut, la variable se résout en la valeur de l’attribut associé à cet événement. Par exemple, lorsqu’une stratégie émet lashow interfaces {$COSD_CHAS_SCHED_MAP_INVALID.interface-name}commande, la{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}variable est résolue par le nom d’interface associé à l’événement le plus récentCOSD_CHAS_SCHED_MAP_INVALIDmis en cache par le processus d’événement. -
{$*.attribute-name}: le signe dollar avec l’astérisque ($*) représente l’événement le plus récent qui correspond à l’un des événements corrélés. La variable correspond à la valeur de l’attribut associé à l’événement le plus récent qui correspond à l’un des événements corrélés spécifiés dans la configuration de la stratégie.
Dans les stratégies d’événements, vous pouvez référencer des événements spécifiques à l’aide de variables de stratégie d’événements. Tenez compte de la politique d’événement suivante :
[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;
}
}
}
Dans la show interfaces {$$.interface-name} commande, la valeur de l’attribut interface-name d’événement e1, e2, ou e3 est substituée à la {$$.interface-name} variable.
Dans la show interfaces {$e4.interface-name} commande, la valeur de l’attribut interface-name de l’événement le plus récent e4 est substituée à la {$e4.interface-name} variable.
Dans la show interfaces {$*.interface-name} commande, la valeur de l’attribut interface-name de l’événement le plus récent e4, e5ou e6 , est substituée à la {$*.interface-name} variable. Si l’une des situations suivantes e1: , e2, ou e3 se produit dans les 60 secondes suivant e4, e5ou e6, la valeur de l’attribut interface-name correspondant à l’événement corrélatif (e4, e5, ou e6) est substituée à la {$*.interface-name} variable. Si l’événement correspondant n’a pas d’attribut interface-name , le logiciel n’exécute pas la show interfaces {$*.interface-name} commande.
Si e1 cela se produit dans les 60 secondes suivant les deux e4 et e5, alors la valeur de l’attribut interface-name pour e4 est substituée à la {$*.interface-name} variable. Cela est dû au fait que le processus d’événements (eventd) recherche les événements corrélés dans l’ordre séquentiel, comme configuré dans l’instruction within . Dans ce cas, la commande est e4 > e5 > e6.
Exemple : corrélation d’événements en fonction de la réception d’autres événements dans un intervalle de temps spécifié
Dans cet exemple, la stratégie d’événements émet un ensemble de commandes et télécharge le fichier de sortie résultant sur un site d’archivage. La stratégie s’exécute si l’un des événements déclencheurs, event3, event4ou event5, se produit dans les 60 secondes suivant l’apparition de l’un des événements corrélés, event1 ou event2, . Le pseudocode de la stratégie est le suivant :
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;
}
La stratégie d’événements spécifie deux sites d’archivage dans la configuration. L’appareil tente d’effectuer le transfert vers le premier site d’archivage de la liste et ne se déplace vers le site suivant que si le transfert échoue. La configuration de la stratégie d’événement est la suivante :
[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;
}
}
}
Exemple : Corrélation d’événements en fonction d’attributs d’événement
Dans la stratégie d’événement suivante, les deux événements sont corrélés si leurs valeurs d’attribut d’événement correspondent. La correspondance des attributs des deux événements permet de s’assurer que les deux événements sont liés. Dans ce cas, les adresses d’interface et les noms d’interface physique (ifd) doivent correspondre.
L’erreur RPD_KRT_IFDCHANGE se produit lorsque le processus du protocole de routage (rpd) envoie une demande au noyau pour modifier l’état d’une interface et que la demande échoue. L’erreur RPD_RDISC_NOMULTI se produit lorsqu’une interface est configurée pour la détection de routeur, mais qu’elle ne prend pas en charge les opérations de multicast IP comme requis.
Dans cet exemple, rpd_rdisc_nomulti.interface-name peut être so-0/0/0.0, et rpd_krt_ifdchange.ifd-index peut être 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 ...
}
}