Script para Nagios: Comprobar la CPU en Mikrotik por SNMP

La monitorización es un apartado importante y mucho más cuando se trata de un router. La saturación de la CPU puede ocasionar grandes problemas como pérdidas de rutas o de paquetes, por lo que todo dejará de funcionar como debería. Para ello vamos a usar un script personalizado para Nagios.

El script el cual cree para comprobar con Nagios el estado de la CPU de los equipos Mikrotik que administro. Hace uso del protocolo SNMP para obtener los valores necesarios para realizar el cálculo. Es válido para otros dispositivos siempre que no cambie el OID del SNMP.

#!/bin/sh

#########################################################################
#                     Comprobador de estado de CPU
#                             www.alferez.es
#
# Usage: check_mikrotik_cpu HOST COMMUNITY WARNING_VALUE CRITICAL_VALUE
#
#########################################################################

if [ "$#" -ne 4 ]
then
	echo "Error: Faltan parametros."
	echo "$0 HOST COMMUNITY WARNING_VALUE CRITICAL_VALUE"
	exit 1
fi

HOST=$1
COMMUNITY=$2
WARNING=$3
CRITICAL=$4
VERSION=2c
TOTAL=0
CONTADOR=0



for VALOR in $(snmpwalk -c $COMMUNITY $HOST -v $VERSION 1.3.6.1.2.1.25.3.3.1.2 | awk '{print $NF}')
do
	CONTADOR=$((CONTADOR+1))
	TOTAL=$((TOTAL+$VALOR))
done

TOTAL=$((TOTAL/$CONTADOR))

if [ "$TOTAL" -gt "$CRITICAL" ]
then
	SALIDA="CRITICAL: La carga de CPU es $TOTAL %"
	ESTADO=2
else
	if [ "$TOTAL" -gt "$WARNING" ]
	then
		SALIDA="WARNING: La carga de CPU es $TOTAL %"
		ESTADO=1
	else
		SALIDA="OK: La carga de CPU es $TOTAL %"amp/
		ESTADO=0
	fi
fi

echo $SALIDA
exit $ESTADO

Lógicamente ni que decir tiene que el SNMP tiene que estar activo y configurado en el dispositivo que necesitemos comprobar.

El funcionamiento es muy simple, nos pide los parámetros los cuales se los tenemos que pasar en la ejecución:

  • HOST: Dirección del Dispositivo
  • COMMUNITY: Community configurada para leer el valor
  • WARNING_VALUE: Valor a partir del cual el estado de la CPU será devuelto en Nagios como Warning.
  • CRITICAL_VALUE: Valor a partir del cual el estado de la CPU será devuelto en Nagios como Critical.

Como los dispositivos pueden tener desde 1 hasta 72 CPUs (en el caso de los Mikrotik) lo que hago es aprovechar los datos que el propio SNMP nos devuelve para saber el número de CPU que tenemos. Contamos las unidades que tenemos y la suma total del resultado, luego se realiza la media y se calcula el uso de la CPU.

La forma de ejecutarlo sería:

check_mikrotik_cpu 192.168.1.1 routerpublic 60 75

En el ejemplo anterior sería el router con la dirección 192.168.1.1 y que tiene la community SNMP routerpublic el que queremos comprobar. Si obtenemos un valor menor a 60 sería OK, de 60 a 75 sería Warning y superando 75 sería Crítical.

Podéis usar este script con el docker de Nagios, ya que tiene el paquete de snmp compilado y funciona correctamente, pero podéis usarlo en cualquier otro sistema siempre que tengáis este paquete compilado.