Versions Compared

Key

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

Prerrequisitos

Para agregar un nuevo umbral a NMIS, es importante entender qué es lo que involucra.

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


Introducción

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 en NMIS:


Cómo configurar un umbral personalizado para métricas de CBQoS

Actualmente NMIS cuenta con 2 umbrales definidos por defecto que involucran las siguientes métricas de CBQoS: DropPkt y NoBufDropPkt.


Para agregar un nuevo umbral para alguna otra métrica de CBQoS, deben seguirse los siguientes pasos:

  • Identificar el elemento (métrica) al que se le aplicará el umbral: las métricas de CBQoS trabajan con archivos "Common-*", por lo tanto, se visualizarán los siguientes archivos para realizar la identificación:

Common-cbqos-in.nmis

Code Block
titleCommon-cbqos-in.nmis
%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
%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, se trabajará sobre la métrica DropByte, que corresponde a la OID "cbQosCMDropByte64" (1.3.6.1.4.1.9.9.166.1.15.1.1.17).


  • En ambos archivos (Common-cbqos-in.nmis y 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 , y se recomienda sea relacionado a la métrica, sin embargo, esto no es una regla, al .

Al finalizar la edición procedemos a guardar los cambios.


  • Agregamos los valores de umbral
a
  • al archivo /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'
            }
          }
        }
      },


Info

Nota: Hay que recordar que NMIS ya cuenta con 2 umbrales definidos por defecto

, por lo tanto podemos observar el siguiente código, aquí

. En la siguiente parte del código se especifica que estos umbrales emplean

regex para poder aplicarse solamente con

un 'control_regex', que se aplica solamente a los strings con los que coincida

, este regex va a variar según el

. Este regex debe ser ajustado dependiendo los nombres de QoS de cada dispositivo.


Code Block
title/nmis8/models/Common-threshold.nmis
collapsetrue
      '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:
  • al archivo /usr/local/nmis8/models/Common-stats.nmis
Agregándolo
  • , dentro de la sección "type"
, recordar
  • . Recordar que ya se tiene definidos dos métricas, solo
tocaría
  • resta integrar la métrica
(
  • "DropByte
)
  • " que se
esta
  • está manejando, siempre respetando la estructura
, al finalizar
  • por defecto del archivo. 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
  • funcionen el evento y el umbral definido anteriormente, requerimos integrar los detalles del evento en el archivo /usr/local/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
  • realizar algunas pruebas. La mejor manera
de probar si funciona como se desea es ejecutando: /usr/local/nmis8/bin/nmis.pl y usamos
  • es ejecutando un type=threshold al equipo deseado, usando un debug=1.
Code Block
/usr/local/nmis8/bin/nmis.pl type=threshold debug=1 force=true node=namenombre_nodenodo


Como podemos ver, el resultado la ejecución muestra que el umbral se ha aplicado.

InfoNota

:

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


Info

Nota: Se utilizó un valor bajo en las pruebas del umbral para poder forzar el evento y observar el funcionamiento. Si necesita forzar su umbral para que se active, use un valor más bajo (por ejemplo: 0.01 o 0.000).


Estos datos se Estos datos se verán reflejados en los archivos .json propios del nodo de cada uno de los nodos a los que se les aplique el umbral, dentro del directorio /usr/local/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'
      },


  • Para finalizar, así se observarían los eventos generados en NMIS:

Image Modified