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