Script para Nagios: Comprobar la CPU en Mikrotik por SNMP

Aquí os dejo un script el cual cree para comprobar con Nagios el estado de la CPU de los equipos Mikrotik que administro. Hace uso de SNMP para obtener los valores y 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 %"
		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:

  • 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 un contador que suma el estado de cada una de las CPUs y hace la media.

 

Podéis usar este script con el docker de Nagios, ya que tiene el paquete de snmp compilado y funciona correctamente.