Para agregar un nuevo umbral al sistema de monitoreo NMIS es importante entender que es lo que involucra la creación de un nuevo umbral para esto recomendamos revisar la siguiente información:
Tutorial: NMIS8, agregar un nuevo umbral
Procedimiento para configurar thresholds en NMIS
Basic and Advanced Thresholds in NMIS8
Actualmente NMIS tiene la capacidad de recopilar datos de CBQoS de equipos Cisco, por lo que esta integración ha representado una gran mejora al sistema de monitoreo NMIS.
Vista previa de la recopilación de datos CBQoS desde NMIS.
Umbral para métricas CBQoS.
Actualmente NMIS cuenta con 2 umbrales definidos por defecto, esto para las siguientes métricas: DropPkt, NoBufDropPkt.
Si se desea agregar un nuevo umbral para otra métrica de CBQoS debe de seguir los siguientes pasos,
Primero, necesitamos identificar el elemento (métrica) que necesitamos para aplicarle el umbral, entendemos que estas métricas CBQoS se trabajan con archivos "Common-" por lo tanto procedemos a abrir los archivos correspondientes y elegimos la métrica para aplicar el nuevo umbral.
Common-cbqos-in.nmis
Common-cbqos-out.nmis
Para fines prácticos trabajaremos sobre la métrica DropByte que corresponde al la OID "cbQosCMDropByte64" (1.3.6.1.4.1.9.9.166.1.15.1.1.17).
En ambos archivos (Common-cbqos-in.nmis, Common-cbqos-out.nmis) agregaremos el elemento "umbral" de la siguiente manera:
'threshold' => 'qos_pkt_drop,qos_pkt_drop_no_buf,qos_cmdrop_Byte64',
En este caso particular, hemos denominado el umbral "qos_cmdrop_Byte64" tomando como referencia la OID, este nombre es personalizado, se recomienda sea relacionado a la métrica, sin embargo, esto no es una regla, al finalizar la edición procedemos a guardar los cambios.
Agregamos los valores de umbral a /usr/local/nmis8/models/Common-threshold.nmis, utilizando el nombre especificado anteriormente. El nombre del evento debe incluir "Proactive" al principio, una vez que se termine de integrar el umbral procedemos a guardar los cambios.
.
Nota: recordar que NMIS ya cuenta con 2 umbrales definidos por defecto, por lo tanto podemos observar el siguiente código, aquí especifica que estos umbrales emplean regex para poder aplicarse solamente con los strings con los que coincida, este regex va a variar según el dispositivo.
A continuación vamos a proceder a agregar la extracción de las estadísticas a: usr/local/nmis8/models/Common-stats.nmis
Agregándolo dentro de la sección "type", recordar que ya se tiene definidos dos métricas, solo tocaría integrar la métrica (DropByte) que se esta manejando siempre respetando la estructura, al finalizar guardamos los cambios.
'cbqos-in' => [ 'DEF:DropPkt=$database:DropPkt:MAX', 'DEF:NoBufDropPkt=$database:NoBufDropPkt:MAX', 'DEF:DropByte=$database:DropByte:MAX', 'PRINT:DropPkt:MAX:DropPkt=%1.2lf', 'PRINT:NoBufDropPkt:MAX:NoBufDropPkt=%1.2lf', 'PRINT:DropByte:MAX:DropByte=%1.2lf' ], 'cbqos-out' => [ 'DEF:DropPkt=$database:DropPkt:MAX', 'DEF:NoBufDropPkt=$database:NoBufDropPkt:MAX', 'DEF:DropByte=$database:DropByte:MAX', 'PRINT:DropPkt:MAX:DropPkt=%1.2lf', 'PRINT:NoBufDropPkt:MAX:NoBufDropPkt=%1.2lf', 'PRINT:DropByte:MAX:DropByte=%1.2lf' ],
Para que funcione el umbral definido anteriormente requerimos integrar los detalles del evento en el archivo /nmis8/conf/Event.nmis, quedando de la siguiente manera:
'Proactive QoS Drop Byte' => { 'CancelingEvent' => 'Proactive QoS Drop Byte Closed', 'Description' => 'The QoS system has had to drop packets Byte due to congestion.', 'Event' => 'Proactive QoS Drop Byte', 'Log' => 'true', 'Notify' => 'true', 'Stateful' => 'true', 'Status' => 'true' },
Una vez que hemos creado el umbral, es hora de probar. La mejor manera de probar si funciona como se desea es ejecutando: /usr/local/nmis8/bin/nmis.pl y usamos debug = 1.
/usr/local/nmis8/bin/nmis.pl type=threshold debug=1 force=true node=name_node
Como podemos ver, el resultado muestra que el umbral se ha aplicado.
Nota: Puse un valor bajo en umbral para poder actívalo y ver el funcionamiento. Si necesita forzar su umbral para que se active, use un valor más bajo en la implementación de su umbral (por ejemplo: 0.01 o 0.000).
14:31:27 thresholdProcess,Proactive QoS Packet Drops, Minor, GigabitEthernet0/0.6: mark.ce.mt, value=0.00 reset=0 14:31:27 thresholdProcess,Proactive QoS no buffer Packet Drops, Minor, GigabitEthernet0/0.6: mark.ce.mt, value=0.00 reset=0 14:31:27 thresholdProcess,Proactive QoS Drop Byte, Minor, GigabitEthernet0/0.6: mark.ce.mt, value=0.00 reset=0 14:31:27 thresholdProcess,Proactive QoS Packet Drops, Minor, GigabitEthernet0/0.6: mark.ce.rt, value=0.00 reset=0 14:31:27 thresholdProcess,Proactive QoS no buffer Packet Drops, Minor, GigabitEthernet0/0.6: mark.ce.rt, value=0.00 reset=0 14:31:27 thresholdProcess,Proactive QoS Drop Byte, Minor, GigabitEthernet0/0.6: mark.ce.rt, value=0.00 reset=0
14:29:17 runThrHld, processing threshold qos_cmdrop_Byte64 14:29:17 runThrHld, MATCHED threshold qos_cmdrop_Byte64 control_regex MATCHED class-default--rpvm.ce.pb22.out--ce.mt 14:29:17 getThresholdLevel, Start threshold=qos_cmdrop_Byte64, index=45 item=class-default--rpvm.ce.pb22.out--ce.mt 14:29:17 getThresholdLevel, found threshold=qos_cmdrop_Byte64 entry=default 14:29:17 getThresholdLevel, threshold=qos_cmdrop_Byte64, item=DropByte, value=0.00 14:29:17 getThresholdLevel, result threshold=qos_cmdrop_Byte64, level=Minor, value=0.00, thrvalue=0.00, reset=0 14:29:17 runThrHld#9581->Sys::parseString#1561-> parseString:: string to parse 'Proactive QoS Drop Byte' 14:29:17 runThrHld#9581->Sys::parseString#1683-> node=grupo_omk_cdmx_latam_ide_rt01_node_03_03, nodeModel=CiscoRouter, nodeType=router, nodeVendor=Cisco Systems, sysObjectName=cisco2951 ifDescr=gigabitethernet0-2-1992, ifType=l2vlan, ifSpeed=10000000, ifMaxOctets=1250000, index=45, item= 14:29:17 runThrHld#9581->Sys::parseString#1742-> parseString:: result is str=Proactive QoS Drop Byte 14:29:17 thresholdProcess, Proactive QoS Drop Byte, Minor, GigabitEthernet0/2.1992: class-default--rpvm.ce.pb22.out--ce.mt, value=0.00 reset=0 14:29:17 notify, Start of Notify 14:29:17 thresholdProcess#9786->NMIS::notify#4322->NMIS::eventAdd#4064->NMIS::eventUpdate#3565->func::setFileProt#906->func::setFileProtDiag#856-> setting owner of /usr/local/nmis8/var/events/grupo_omk_cdmx_latam_ide_rt01_node_03_03/current/proactive_qos_drop_byte-gigabitethernet0_2.1992__class-default--rpvm.ce.pb22.out--ce.mt.json to nmis:nmis 14:29:17 thresholdProcess#9786->NMIS::notify#4322->NMIS::eventAdd#4064->NMIS::eventUpdate#3565->func::setFileProt#906->func::setFileProtDiag#886-> setting permissions of /usr/local/nmis8/var/events/grupo_omk_cdmx_latam_ide_rt01_node_03_03/current/proactive_qos_drop_byte-gigabitethernet0_2.1992__class-default--rpvm.ce.pb22.out--ce.mt.json to 0660 14:29:17 eventAdd, event added, node=GRUPO_OMK_CDMX_LATAM_IDE_RT01_NODE_03_03, event=Proactive QoS Drop Byte, level=Minor, element=GigabitEthernet0/2.1992: class-default--rpvm.ce.pb22.out--ce.mt, details=Value=0.00 Threshold=0.00 14:29:17 notify, Finished
Estos datos se verán reflejados en los archivos .json propios del nodo dentro del directorio /nmis8/var/