Como les había comentado antes, había estado trabajando un poco en OTRS para el control de servicios dentro de una unidad organizacional. Por simple curiosidad se me ocurrió agregar dos características al monitoreo para que se generen gráficas estadistas del los servicios que se realizan.
¿Por que construir un propio plugin y no usar los mecanismos que otrs nos ofrece para integrarse con Nagios? Primeramente por cuestiones de facilidad de implementación, la documentación de estos mecanismos no son muy claros (al menos para mi), sobre todo por que otrs ha cambiado entre versiones. La otra razón es por que los mecanismos de otrs tienen la limitante de trabajar únicamente en un entorno donde conviven en un mismo servidor Otrs/Nagios.
El script es muy básico, para este post, soporta únicamente el monitoreo de tickets abiertos y tickets creados por día:
La siguiente gráfica nos representa la actividad de tickets abiertos para los últimos dos días.
La siguiente gráfica nos representa la actividad de tickets creados por día, en los últimos tres días.
¿Por que construir un propio plugin y no usar los mecanismos que otrs nos ofrece para integrarse con Nagios? Primeramente por cuestiones de facilidad de implementación, la documentación de estos mecanismos no son muy claros (al menos para mi), sobre todo por que otrs ha cambiado entre versiones. La otra razón es por que los mecanismos de otrs tienen la limitante de trabajar únicamente en un entorno donde conviven en un mismo servidor Otrs/Nagios.
El script es muy básico, para este post, soporta únicamente el monitoreo de tickets abiertos y tickets creados por día:
#!/bin/bash
dbHostname="127.0.0.1"
dbUser="otrsguest"
dbPasswd="qwerty"
dbName="otrs"
dbWhere=""
WARNING=10
CRITICAL=15
TYPE=""
# Plugin return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
function report {
val=`mysql -h $dbHostname -u $dbUser -p$dbPasswd --database=$dbName --execute="select count(*) as open from ticket $dbWhere" | awk 'BEGIN{FS="\n"; RS="\n\n";}{print $2}'`
if [ "$val" -le "$WARNING" ]; then
echo "Tickets $TYPE: $val [ OK ] | value=$val"
exit $STATE_OK
else
if [ "$val" -le "$CRITICAL" ]; then
echo "Tickets $TYPE: $val [ WARNING ] | value=$val"
exit $STATE_WARNING
else
echo "Tickets $TYPE: $val [ CRITICAL ] | value=$val"
exit $STATE_CRITICAL
fi
fi
}
function phelp {
echo -e "Usage: $0 -t -w -c | -h"
echo -e " -t Tipo de tickets a consultar"
echo -e " -c Valor critico"
echo -e " -w Valor warning"
echo -e " -h Help, this message.\n"
}
while getopts t:w:c:h OPT
do
case $OPT in
t) TYPE="$OPTARG" ;;
w) WARNING="$OPTARG" ;;
c) CRITICAL="$OPTARG" ;;
h)
phelp
exit $STATE_UNKNOWN
;;
esac
done
if [ "$TYPE" = "abiertos" ]; then
dbWhere="where ticket_state_id='4'"
report
else
if [ "$TYPE" = "creados" ]; then
date=`date +"%Y-%m-%d"`
dbWhere="where create_time like '$date%'"
report
else
echo "Carecteristica a monitorear desconocida. Conocidas: abiertos, creados"
exit $STATE_UNKNOWN
fi
fi
La siguiente gráfica nos representa la actividad de tickets abiertos para los últimos dos días.



No hay comentarios:
Publicar un comentario