El nagios ya tiene varios plugins que se pueden descargar desde la página oficial.
No obstante en muchos casos tenemos que realizar chequeos especificos que no se pueden realizar con los plugins genericos.
Por eso y porque un compañero vino hoy a preguntar como carajo hacía para hacer un chequeo que le habíamos pedido (Pepo, nuestro experimento fue un exito).
Los script pueden realizarse en cualquier lenguaje que pueda ejecutarse desde consola.
La lógica se puede hacer con un script común teniendo en cuenta que lo mas importante es lo que muestra en la salida y el exit que tenga siguiendo las relaciones de :
exit 0 - OK
exit 1 - WARNING
exit 2 - CRITICAL
Un ejemplo en bash para chequear si se están almacenando correctamente las imagenes de un determinado dispositivo:
#/bin/bash
#Le paso como argumento el nombre del monitor
MONITOR=$1
CMINIMA=$2
DIR_TEMP="/home/commands/tmp";
USER="root"
PASS="password"
BD="base"
#Obtengo el ID de la Camara
IDCAM=`echo "SELECT Id FROM tabla1 WHERE Name = '${MONITOR}'" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
#Con el ID de la camara saco el ultimo evento cerrado y la cantidad de imagenes
UECLOSE=`echo "select Frames from tabla2 where MonitorId='${IDCAM}' and EndTime is not null order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UECLOSEDATE=`echo "select StartTime from tabla2 where MonitorId='${IDCAM}' order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UE=`echo "select Id from Events where MonitorId='${IDCAM}' order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UESTORE=`cat $DIR_TEMP/ULTIMO_VENTO_$IDCAM`;
if [ $UE -eq $UESTORE ]
then
UFTAM=`du -sk /var/www/html/events/${IDCAM}/${UE} | awk '{print $1}'`;
AFTAM=`cat $DIR_TEMP/GRABA_CAM_$IDCAM`;
echo $UFTAM > $DIR_TEMP/GRABA_CAM_$IDCAM
if [ $UFTAM -eq $AFTAM ]
then
RESPONDE="7";
else
RESPONDE="9";
fi
else
UFTAM=`du -sk /var/www/html/events/${IDCAM}/${UE} | awk '{print $1}'`;
echo $UFTAM > $DIR_TEMP/GRABA_CAM_$IDCAM
RESPONDE="9";
fi
#echo "---------------------------";
#echo "DEBUG";
#echo "---------------------------";
#echo "ULTIMO EVENTO" $UESTORE
#echo "EVENTO ACTUAL" $UE
#echo "TAMANO ANTERIOR" $UFTAM
#echo "TAMANO ACTUAL" $AFTAM
#echo "ESTADO DE GRABACIONES" $RESPONDE;
#echo "---------------------------";
echo $UE > $DIR_TEMP/ULTIMO_VENTO_$IDCAM
if [ $RESPONDE -eq 9 ]
then
if [ $UECLOSE -lt $CMINIMA ]
then
echo "ALERTA - ${UECLOSE} IMAGENES EN EL ULTIMO EVENTO CERRADO";
exit 1
echo "OK - ${UECLOSE} IMAGENES / ${UECLOSEDATE} FECHA ULTIMO EVENTO";
exit 0
else
echo "OK - ${UECLOSE} IMAGENES / ${UECLOSEDATE} FECHA ULTIMO EVENTO HM";
exit 0
fi
else
RCAM = `/usr/local/bin/zmdc.pl restart zmc -m $IDCAM`;
echo "ALERTA - UE:${UESTORE} / ${UECLOSEDATE} FECHA ULTIMO EVENTO";
exit 2
fi
Esto lo ponemos dentro de un archivo que se situará (en instalación default) /usr/local/nagios/libexec/
Se le darán permisos de ejecución correspondientes y se lo asociará al grupo que lo pueda ejecutar sin problemas.
Una vez realizado esto se debe generar el comando:
/usr/local/nagios/objects/commands.cfg
define command{
command_name check_cimage
command_line /home/commands/check_cimage $ARG1$ $ARG2$
}
Con eso se realizará el chequeo que necesitemos sin problemas.
Hernán Mazzeo
miércoles, 30 de septiembre de 2009
Suscribirse a:
Enviar comentarios (Atom)
hola buenas tardes, tengo una pregunta después que haces el plugin como haces para que nagios lo lea? cual es el procedimiento como tal?
ResponderEliminar