API de notificación DE JET
La API de notificación JET le permite suscribirse a eventos y designar una función de devolución de llamada para recibir eventos cuando se producen. Estas interfaces de Python proporcionan una interfaz al sistema de notificaciones MQTT que, para idiomas distintos de Python, se deben manejar fuera de JET (consulte Programación de notificaciones JET para idiomas que no sean python). Para obtener más información acerca de MQTT y Python, consulte https://mosquitto.org/ .
Formato JSON de mensajes de notificación JET
La notificación JET se entrega en formato JSON. El mensaje JSON tiene dos partes: el encabezado y los atributos. El encabezado es común para todos los eventos. Contiene el ID del evento, el nombre de host, la hora, la gravedad y la facilidad del evento. Los atributos contienen información sobre el evento y varían según el nombre del tema del evento.
Todos los eventos rtsock del kernel tendrán info
la gravedad y KERNEL
la facilidad. Para los eventos syslog, la gravedad y la instalación serán iguales que las de los mensajes syslog de Junos OS.
El siguiente es un archivo JSON de evento de ejemplo.
“jet-event”: { “event-id”: “KERNEL_EVENT_IFD_ADD” “hostname”: “mydevice”, “time”: “2016-01-07”, “severity”: “info”, “facility”: “KERNEL”, “attributes”: { “name”: “ge-0/0/0”, “snmp-id”: 520, “flags”: 8 } }
Consulte Aplicaciones package JET para obtener más información sobre JSON.
Suscripción a eventos
Las aplicaciones desarrolladas con JET pueden suscribirse a los eventos enumerados en el Cuadro 1. Un tema es un punto de conexión al que se conectan los clientes. Un tema actúa como el centro de distribución central para publicar y suscribir mensajes. Los temas son cadenas simples y jerárquicas, codificadas en UTF-8, delimitadas por una barra diagonal.
Eventos |
Tema |
Información de eventos que se devuelve |
---|---|---|
Interfaz física (IFD) |
|
nombre, snmp-id, indicadores |
Interfaz lógica (IFL) |
|
nombre, subunidades, snmp-id, indicadores |
Familia (IFF) |
|
nombre, subunidades, familia, nombre de tabla, indicadores |
Dirección |
|
nombre, subunidades, familia, dirección local, dirección de destino, dirección de difusión, indicadores |
Firewall |
|
nombre, versión, id de cliente, tipo de filtro, protocolo, nombre de interfaz, indicadores |
Ruta |
|
nombre de la tabla, nombre del enrutador lógico, familia de direcciones, tipo de ruta, prefijo de ruta, arrayof(nexthop-address), indicadores |
Tabla de rutas |
|
nombre, nombre del enrutador lógico, familia de direcciones, indicadores |
Syslog |
/junos/events/syslog/event-id |
arrayof(pares atributo-valor) |
Notificación de PROGRAMACIÓN JET para idiomas que no sean python
Muchos de los idiomas de alto nivel tienen una biblioteca MQTT disponible. Una aplicación JET puede utilizar la biblioteca correspondiente para conectarse al nodo de integración MQTT que se ejecuta en Junos OS y suscribirse a eventos. Por ejemplo, aquí hay un programa JAVA de ejemplo que se conecta a un corredor MQTT y se suscribe a eventos: Ejemplo de mensajería MQTT en Java.
Para obtener más información sobre las bibliotecas MQTT de ejemplo para diferentes idiomas, consulte la Tabla 2.
Nombre del idioma |
Vínculo de licencia |
---|---|
C, Mosquitto |
|
C++, Mosquitto |
|
Python, Mosquitto |
|
Ruby, Ruby-mqtt |
|
Java, Eclipse Paho Java |
|
Vaya, Eclipse Paho Go |
|
C#, MqttDotNet |