Para agregar un nuevo umbral al sistema de monitoreo a NMIS, es importante entender que qué es lo que involucra la creación de un nuevo umbral para esto recomendamos revisar . Para esto, recomendamos consultar 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.
Vista previa de la recopilación de datos CBQoS desde en NMIS.:
Umbral para métricas CBQoS.
Cómo configurar un umbral personalizado para alguna métrica de CBQoS
Actualmente NMIS cuenta con 2 umbrales definidos por defecto , esto para que involucran las siguientes métricas de CBQoS: DropPkt, NoBufDropPkt.
Si se desea agregar un nuevo umbral para alguna otra métrica de CBQoS debe de seguir , deben seguirse los siguientes pasos,Primero, necesitamos :
- Se requiere identificar el elemento (métrica)
- al que se le aplicará el umbral. Se debe comprender que estas métricas de CBQoS se trabajan con archivos "Common-*", por lo tanto
- , se visualizarán los siguientes archivos para realizar la identificación:
Common-cbqos-in.nmis
Code Block | ||||
---|---|---|---|---|
| ||||
%hash = ( 'cbqos-in' => { 'rrd' => { 'cbqos-in' => { 'indexed' => 'true', 'graphtype' => 'cbqos-in', 'threshold' => 'qos_pkt_drop,qos_pkt_drop_no_buf', 'snmp' => { 'DropPkt' => { 'oid' => 'cbQosCMDropPkt64', 'option' => 'counter,U:U' }, 'NoBufDropPkt' => { 'oid' => 'cbQosCMNoBufDropPkt64', 'option' => 'counter,U:U' }, 'PrePolicyPkt' => { 'oid' => 'cbQosCMPrePolicyPkt64', 'option' => 'counter,U:U' }, 'DropByte' => { 'oid' => 'cbQosCMDropByte64', 'option' => 'counter,U:U' }, 'PrePolicyByte' => { 'oid' => 'cbQosCMPrePolicyByte64', 'option' => 'counter,U:U' }, 'PostPolicyByte' => { 'oid' => 'cbQosCMPostPolicyByte64', 'option' => 'counter,U:U' } }, } } } ); |
Common-cbqos-out.nmis
Code Block | ||||
---|---|---|---|---|
| ||||
%hash = ( 'cbqos-out' => { 'rrd' => { 'cbqos-out' => { 'indexed' => 'true', 'graphtype' => 'cbqos-out', 'threshold' => 'qos_pkt_drop,qos_pkt_drop_no_buf', 'snmp' => { 'DropPkt' => { 'oid' => 'cbQosCMDropPkt64', 'option' => 'counter,U:U' }, 'NoBufDropPkt' => { 'oid' => 'cbQosCMNoBufDropPkt64', 'option' => 'counter,U:U' }, 'PrePolicyPkt' => { 'oid' => 'cbQosCMPrePolicyPkt64', 'option' => 'counter,U:U' }, 'DropByte' => { 'oid' => 'cbQosCMDropByte64', 'option' => 'counter,U:U' }, 'PrePolicyByte' => { 'oid' => 'cbQosCMPrePolicyByte64', 'option' => 'counter,U:U' }, 'PostPolicyByte' => { 'oid' => 'cbQosCMPostPolicyByte64', 'option' => 'counter,U:U' } }, } } } ); |
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:
Code Block |
---|
'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.
.
Code Block | ||
---|---|---|
| ||
'qos_cmdrop_Byte64' => { #latam 'event' => 'Proactive QoS Drop Byte', 'title' => "Proactive QoS Drop Byte", 'unit' => 'packets', 'item' => 'DropByte', 'control_regex' => 'class.+|.*rpvm.*|ce', 'select' => { 'default' => { 'value' => { 'fatal' => '240', 'critical' => '80', 'major' => '40', 'minor' => '0.00', 'warning' => '0.000' } } } }, |
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.
Code Block | ||||
---|---|---|---|---|
| ||||
'qos_pkt_drop' => { 'event' => 'Proactive QoS Packet Drops', 'title' => "QoS Packet Drops", 'unit' => 'packets', 'item' => 'DropPkt', 'control_regex' => 'Critical|Voice|Video|.*rpvm.*|class.+|ce', 'control_regex_comment' => 'Use the control regex field to limit which CBQoS Classes will match.', 'control_regex_example' => 'class-default$|Voice$', 'select_comment' => 'the values below are number of packets', 'select' => { 'default' => { 'value' => { 'fatal' => '240', 'critical' => '80', 'major' => '40', 'minor' => '0.00', 'warning' => '0.000' } } } }, 'qos_pkt_drop_no_buf' => { #nmis 'event' => 'Proactive QoS no buffer Packet Drops', #nmis 'title' => "QoS no buffer Packet Drops", 'unit' => 'packets', 'item' => 'NoBufDropPkt', 'control_regex' => 'Critical|Voice|Video|.*rpvm.*|class.+|ce', 'select' => { 'default' => { 'value' => { 'fatal' => '240', 'critical' => '80', 'major' => '40', 'minor' => '0.00', 'warning' => '0.000' } } } }, |
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.
Code Block | ||
---|---|---|
| ||
'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:
Code Block | ||
---|---|---|
| ||
'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.
Code Block |
---|
/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.
Info |
---|
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). |
Code Block |
---|
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 |
Code Block |
---|
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/
Code Block | ||
---|---|---|
| ||
'qos_cmdrop_Byte64--45--H14830785' => { 'element' => 'GigabitEthernet0/2.9999: class-default--rpvm.ce.pb22.out--ce.cd', 'event' => 'Proactive QoS Drop Byte', 'index' => '45', 'level' => 'Minor', 'level_select' => 'default', 'method' => 'Threshold', 'property' => 'qos_cmdrop_Byte64', 'status' => 'error', 'type' => 'cbqos-out', 'updated' => 1652815808, 'value' => '0.00' }, 'qos_cmdrop_Byte64--45--H14834881' => { 'element' => 'GigabitEthernet0/2.9999: class-default--rpvm.ce.pb22.out--ce.rt', 'event' => 'Proactive QoS Drop Byte', 'index' => '45', 'level' => 'Minor', 'level_select' => 'default', 'method' => 'Threshold', 'property' => 'qos_cmdrop_Byte64', 'status' => 'error', 'type' => 'cbqos-out', 'updated' => 1652815808, 'value' => '0.00' }, |