Usar eventos correlacionados para activar una política de eventos
RESUMEN Configure una directiva de eventos para que se ejecute cuando se produzcan dos o más eventos correlacionados.
Cómo representar eventos desencadenantes y correlacionados en una directiva de eventos
En los argumentos de script de eventos y las instrucciones de política de eventos admitidas, como la instrucción, puede utilizar variables de execute-commands
directiva de eventos para diferenciar entre un evento desencadenador y un evento correlacionado. Los eventos desencadenadores y correlacionados se configuran en las siguientes instrucciones en el nivel jerárquico [edit event-options policy policy-name]
:
- Evento desencadenante: configurado en la
events
instrucción - Evento correlacionado: configurado en la
within seconds events
instrucción
Puede usar variables de política de eventos de las siguientes formas para representar eventos desencadenantes y correlacionados:
-
{$$.attribute-name}
: la notación del signo de dólar doble ($$
) representa el evento que activa la política. Cuando se combina con un nombre de atributo, la variable se resuelve en el valor del atributo asociado al evento desencadenante. Por ejemplo,{$$.interface-name}
se resuelve en el nombre de interfaz asociado al evento desencadenante. -
{$event.attribute-name}
: el signo de un dólar con la notación del nombre del evento ($event
) representa el evento más reciente que coincide conevent
. Cuando se combina con un nombre de atributo, la variable se resuelve en el valor del atributo asociado a ese evento. Por ejemplo, cuando una política emite elshow interfaces {$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
comando, la{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
variable se resuelve en el nombre de interfaz asociado con el evento más recienteCOSD_CHAS_SCHED_MAP_INVALID
almacenado en caché por el proceso de eventos. -
{$*.attribute-name}
—El signo de dólar con la notación asterisco ($*
) representa el evento más reciente que coincide con cualquiera de los eventos correlacionados. La variable se resuelve en el valor del atributo asociado al evento más reciente que coincide con cualquiera de los eventos correlacionados especificados en la configuración de directiva.
En las directivas de eventos, puede hacer referencia a eventos específicos mediante variables de directiva de eventos. Tenga en cuenta la siguiente política de eventos:
[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; } } }
En el show interfaces {$$.interface-name}
comando, el valor del interface-name
atributo de evento e1
, e2
, o e3
se sustituye por la {$$.interface-name}
variable.
En el show interfaces {$e4.interface-name}
comando, el valor del interface-name
atributo del evento más reciente e4
se sustituye por la {$e4.interface-name}
variable.
En el show interfaces {$*.interface-name}
comando, el valor del interface-name
atributo del evento , e5
, o e6
más reciente e4
se sustituye por la {$*.interface-name}
variable. Si se produce uno de , , o dentro de e1
los {$*.interface-name}
60 segundos posteriores e4
a , e5
, o e6
, la variable sustituye el valor del interface-name
atributo para ese evento correlacionado (e4
, e5
, o e6
).e3
e2
Si el evento correlacionado no tiene un interface-name
atributo, el software no ejecuta el show interfaces {$*.interface-name}
comando.
Si e1
se produce dentro de los 60 segundos de ambos e4
y , entonces e5
el valor del interface-name
atributo para e4
se sustituye por la {$*.interface-name}
variable. Esto se debe a que el proceso de eventos (eventd) busca correlacionar eventos en orden secuencial tal como se configura en la within
instrucción. En este caso, el pedido es e4
> e5
> e6
.
Ejemplo: correlacionar eventos en función de la recepción de otros eventos dentro de un intervalo de tiempo especificado
La directiva de eventos de este ejemplo emite un conjunto de comandos y carga el archivo de salida resultante en un sitio de archivo. La política se ejecuta si uno de los eventos desencadenantes, event3
, , o event5
, se produce dentro de los 60 segundos posteriores a que ocurra uno de los eventos correlacionados, event1
o event2
, . event4
El pseudocódigo de la directiva es el siguiente:
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 directiva de eventos especifica dos sitios de archivado en la configuración. El dispositivo intenta transferirse al primer sitio de archivo de la lista y se mueve al siguiente sitio solo si se produce un error en la transferencia. La configuración de la directiva de eventos es:
[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; } } }
Ejemplo: correlacionar eventos basados en atributos de eventos
En la siguiente directiva de eventos, los dos eventos se correlacionan si sus valores de atributo de evento coinciden. La coincidencia de los atributos de ambos eventos garantiza que los dos eventos estén relacionados. En este caso, las direcciones de interfaz deben coincidir y los nombres de interfaz física (ifd) deben coincidir.
El RPD_KRT_IFDCHANGE
error se produce cuando el proceso de protocolo de enrutamiento (rpd) envía una solicitud al kernel para cambiar el estado de una interfaz y la solicitud falla. El RPD_RDISC_NOMULTI
error se produce cuando se configura una interfaz para la detección del enrutador, pero la interfaz no admite operaciones de multidifusión IP según sea necesario.
En este ejemplo, rpd_rdisc_nomulti.interface-name
podría ser so-0/0/0.0 y rpd_krt_ifdchange.ifd-index
podría ser 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 ... } }