Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.


Gallery
reversetrue
titleNMIS GUI

Image Removed

Image Removed

...


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

Code Block
titleCommon-cbqos-in.nmis
collapsetrue
%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
titleCommon-cbqos-out.nmis
collapsetrue
%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.

Image Added

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
title/nmis8/models/Common-threshold.nmis
      '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
title/nmis8/models/Common-threshold.nmis
      '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
title/nmis8/models/Common-stats.nmis
      '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
title/nmis8/conf/Events.nmis
  '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
collapsetrue
      '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'
      },



Image Added