Mostrando entradas con la etiqueta Nagios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Nagios. Mostrar todas las entradas

viernes, 16 de marzo de 2018

Widgets en Centreon


En estos momentos me encuentro implementando una version estable de Centreon 2.7.13 por lo que la finalidad de este post es únicamente presentar la funcionalidad widgets en centreon.

Nos van a servir para mostrar rápidamente el monitoreo de recursos que puedan ser mas críticos y de rápido acceso, los elementos a colocar en el widget son parametrizables, muchas veces con patrones de búsqueda, ordenamientos, clasificados por hostgroup, etc. Entre los widgets que se pueden agregar están los siguientes:

  • Graph Monitoring: Mostrara las gráficas de algún recurso, nos da opción de parametrizar la frecuencia de actualización.
  • Host Monitoring: Muestra el monitorio de un host o conjunto de hosts dentro del widget
  • Hostgroup Monitoring: Muestra el monitoreo de un hostgroup definido previamente.
  • Service Monitoring: Muestra el monitoreo de un grupo de servicios.


Por definición un widget debe incrustarse en una vista, podemos tener varias vistas (o tabs)  en cada una de estas vistas colocar uno o mas widgets. En la siguientes dos imágenes podemos ver dos vistas: "Servicios en linea" y "Servicios para atención".

En la primera vista de servicios para atención hemos colocado dos widgets, el primero del tipo Service Monitoring donde vemos los servicios con status de Critical y Warning únicamente. El segundo widget podemos ver uno del tipo Host Monitoring.



En la segunda vista de servicios en linea hemos colocado un par de widgets del tipo Graph Monitoring donde mostramos el monitoreo del web request de un servidor supuestamente critico.



¿Cómo agregamos un nuevo widget?

En el Menu "Home" -> "Custom View" podemos ver la barra de control para la manipulacion de widgets, la barra es muy intitiva y hemos leido desde el principio seguro tendremos muy buena idea de lo como hacer estas definiciones.



Lo primero es definir un la vista, en nuestro caso definiremos una vista llamada "Vista test", durante este proceso de definición podemos iniciarla con 1, 2 y 3 columnas para colocar widgets y darle orden a nuestros elementos. Ya una vez definida la vista nos colocamos sobre ella y ahora si, agregamos el widget.






Para incrustar un nuevo widget primero debemos indicar de que tipo sera, con las imágenes mostradas anteriormente podemos darnos una idea de los resultados que podemos tener. Una vez agregado el componente podemos parametrizarlo con la barra superior derecha del widget, la llave mecánica indica modificar.






Una observación importante es que estos widgets no vienen activos inicialmente por lo que hay que cargarlos al centreon en el menu "Administration" -> "Extensions" -> "Widgets". Los circulos rojos indican que el widget esta activo mientras que el engrane indica que no esta activo y si lo necesitamos debemos activarlo dandole clic.



viernes, 11 de mayo de 2012

OTRS y Nagios/Centreon

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:

#!/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.
 La siguiente gráfica nos representa la actividad de tickets creados por día, en los últimos tres días.

lunes, 7 de mayo de 2012

Construcción de Plugin Nagios/Centreon para HP Printer

Hace unas horas termine un script en bash para monitorear los consumibles de unas impresoras HP, la idea de agregarlas a centreon es para darnos conocer en buen momento cuando uno de los consumibles se están por terminar así como un histórico (usando las graficas) de cuanto se esta consumiendo. A posteriori, este script se tendría que poder usar en cualquier impresora HP con SNMP activado, los modelos de impresoras que tenemos son las siguientes:
  • HP LaserJet 4700 Color
  • HP LaserJet 4600 Color
  • HP LaserJet 4250
Requerimientos del script:
  • awk
  • snmpwalk
  • A nivel de red, acceso al segmento de las impresoras.
  • bash
  • etc.
#!/bin/bash
# Martin Barriga 2012

# Default options
COMMUNITY="public"
HOSTNAME="127.0.0.1"
CONSUMMABLE="black"
WARNING=20
CRITICAL=10
SNMPVERSION=2c
SHEETCOUNT="0"
sheetcount=""

#used MIBs
MAINMIB="mib-2.43.11.1.1.6.1"
SHEETMIB="enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1"

# Plugin return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

# Option processing
function phelp {
  echo -e "Usage: $0 -H  -C  -v  -o  -w  -c   [ -l | -s ] | -h "
  echo -e "  -H IP Addres HP Printer"
  echo -e "  -C SNMP Community. Default 'public'"
  echo -e "  -v SNMP Version. Default '2c'"
  echo -e "  -o Color Tonner: black, cyan, magenta, yellow, transfer, fuser. Default 'black'"
  echo -e "  -w Warning Value. Default '80'"
  echo -e "  -c Critical Value. Default '90'"
  echo -e "  -l List consumible support."
  echo -e "  -s Print with sheet count available."
  echo -e "  -h Help, this message.\n"
}

function list {
        allinfo=`snmpwalk -c $COMMUNITY -v $SNMPVERSION $HOSTNAME $MAINMIB`;
        echo "$allinfo" | ( while read line; do
                echo $line | cut -d "\"" -f2;
        done )
}

function withsheetcount {
        index=`echo "$1" | cut -d "." -f8`;
        count=`snmpwalk -c $COMMUNITY -v $SNMPVERSION $HOSTNAME $SHEETMIB.$index | cut -d " " -f4`;
        sheetcount=", Sheet Available: $count";
}

while getopts H:C:v:o:w:c:slh OPT
do
  case $OPT in
    H) HOSTNAME="$OPTARG" ;;
    C) COMMUNITY="$OPTARG" ;;
    v) SNMPVERSION="$OPTARG" ;;
    o) CONSUMMABLE="$OPTARG" ;;
    w) WARNING=$OPTARG ;;
    c) CRITICAL=$OPTARG ;;
    s) SHEETCOUNT="1" ;;
    l)
       list
       exit $STATE_UNKNOWN
    ;;
    h)
       phelp
       exit $STATE_UNKNOWN
    ;;
    #V)
    #  print_version
    #  exit $STATE_UNKNOWN
    #  ;;
   esac
done

info=`snmpwalk -c $COMMUNITY -v $SNMPVERSION $HOSTNAME $MAINMIB | grep -i $CONSUMMABLE`
if [ "$info" != "" ]; then
        name=`echo "$info" | cut -d "\"" -f 2`;
        mib=`echo "$info" | cut -d " " -f 1 | cut -d ":" -f 3`;
        newmib=`echo "$info" | cut -d " " -f 1 | cut -d ":" -f 3 | awk -F. -v OFS=. '{$6=8}1'`;
        size=`snmpwalk -c $COMMUNITY -v $SNMPVERSION $HOSTNAME $newmib | cut -d " " -f4`;
        newmib=`echo "$info" | cut -d " " -f 1 | cut -d ":" -f 3 | awk -F. -v OFS=. '{$6=9}1'`;
        value=`snmpwalk -c $COMMUNITY -v $SNMPVERSION $HOSTNAME $newmib | cut -d " " -f4`;
        let porcent=($value*100)/$size;

        #If sheet count is required
        if [ "$SHEETCOUNT" = "1" ]; then
                withsheetcount $mib
        fi

        if [ "$porcent" -le "$CRITICAL" ]; then
                echo "$name: Status: $value/$size $porcent% available [ CRITICAL ] | size=$size used=$value";
                exit $STATE_CRITICAL;
        else
                if [ "$porcent" -le "$WARNING" ]; then
                        echo "$name: Status: $value/$size $porcent% available [ WARNING ] | size=$size used=$value";
                        exit $STATE_WARNING;
                else
                        echo "$name: Status: $value/$size $porcent% available [ OK ] | size=$size used=$value";
                        exit $STATE_OK;
                fi
        fi
else
        echo "No se encuentra consumible $CONSUMMABLE en $HOSTNAME [ UNKNOW ]"
        exit $STATE_UNKNOWN
fi

jueves, 2 de junio de 2011

Construcción de Plugin Nagios/Centreon para inodos

En esta ocación quiero compartir con ustedes un plugin muy básico para revisar el estado de los inodos en un FileSystem remoto a nuestro servidor de monitorio Nagios vía SNMP.

Para conseguir que el agente SNMP, nos pueda regresar información de los i-nodos de su sistema se requiere autorización, eso lo hacemos con el atributo "disk" y como parámetro se me envía cada uno de los FileSystem que deseamos monitorear. Esto seria agregando por ejemplo unas lineas al archivo snmpd.conf como las que siguen:

disk /
disk /home

Ya con este cambio solo queda reiniciar el servicio. Se puede verificar con el comando snmpwalk o el plugin que tenemos, desde el servidor de monitoreo o NMS.


#!/bin/bash
#check_snmp_inodes.sh
# Argumentos:
# 1. Community
# 2. Version
# 3. IP Address
# 4. FS
# 5. warning
# 6. critical
if [ $# -eq 6 ]; then
#Se localiza el indice del FS
isExist=`snmpwalk -c $1 -v $2 $3 dsktable | grep -e "$4$" | wc -l`
if [ $isExist -eq 1 ]; then
index=`snmpwalk -c $1 -v $2 $3 dsktable | grep -e "$4$" | awk 'BEGIN{FS="."}{print $2}' | awk '{print $1}'`
uso=`snmpwalk -c $1 -v $2 $3 .1.3.6.1.4.1.2021.9.1.10.$index | awk '{print $4}'`
valor=""
#Menor que
if [ $uso -lt $5 ]; then
echo "I-nodos OK $4 Esta usando $uso% de sus inodos | size=100 used=$uso"
exit 0
else
if [ $uso -lt $6 ]; then
echo "I-nodos WARNING $4 Esta usando $uso% de sus inodos | size=100 used=$uso"
exit 1
else
echo "I-nodos CRITICAL $4 Esta usando $uso% de sus inodos | size=100 used=$uso"
exit 2
fi
fi
echo "I-nodos $valor: $4 Esta usando $uso% de sus inodos | size=100 used=$uso"
exit 0
else
echo "No existe el FileSystem $4"
exit 3
fi

else
echo "Error en el paso de parametros"
exit 3
fi

jueves, 12 de noviembre de 2009

Installing statusmap supply to Nagios

Commonly i don't write ideas than know as important less, but in this moment i wanna do because tomorrow may be i forget it (i don't know what append with my mind) and the way from resolve it. When i installed Nagios sources, guess that there was a mistake in this process, Nagios is run correctly but i don have cgi statusmap supply that built informative maps.

The statusmap cgi need gd library to built maps and graphics flows, this library is a little bit leave. Gd can to built jpeg, gif, png, xpm format. But i was not lucky because my system don't had jpeg supply, OMG!. The next step? install it please xD

i used the default configuration from jpeg lib, and after do 'make install', it installed over /usr/local/include, copying files as jpeglib.h, jconfig.h, jmorecfg.h and jerror.h. Once ready the library and provided her supply, we're ready to install. After from excute the configure script, a good report is the next:

Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Fontconfig library: yes
Support for Xpm library: no
Support for pthreads: yes

Now, i must continue with a tip that a lot of developers put in his documentacion "enjoy!!", only the xpm supply that i not use, was not installed :) then gd was installed and also jpeg supply. In fact the files was copying to /usr/local/include directory gd.h, gd_io.h and somebody else.

Then with Nagios, we must configure it, compile it and after the statusmap.cgi is ready :)

martes, 28 de octubre de 2008

hash( enli08, WITHOUT_CIPHER );

Dia 01
================
Personalmente este dia comenzo con la pequeña platica que con gusto hable sobre Nagios, como muchos saben, es la misma que ya habia dado en Tacambaro. La hora fue a las 11:00am.

No esperaba tener tanta gente, sin embargo como se puede ver en la ilustracion, habia gente de pie, lo cual me lleno de gusto.
Despues de mi platica, continuo zodman, con su platica de "Django el framework para Python", en la cual nos hablo de la facilidad de desarrollo con el lenguaje Python, algunas caracteristicas y ejemplos practicos del mismo. Finalmente antes de ir a comer me quede a escuchar a mi amigo cerros de GLP y su compañero Jose Luis Calva Rosales, que nos hablaron de "Ensamblando con NASM bajo GNU/Linux". En esta charla, dieron conceptos basicos muy breves de los registros del CPU, segmentos de datos, codigo y extra. Por ultimo nos mostraron ejemplos de cosas que podemos hacer, incluso presentaron la funcionalidad de printf en ensamblador


La comida estuvo muy bien, me toco cestar cerca de Sandino Sanchez, que por cierto, es bueno para comer. ¿Que comimos? carnitas jeje muy buenas pero me quedo con las michoacanas.

Con la llegada al hotel para acondicionarnos y ver los detalles de como nos acomodariamos y donde iva a dormir, ya que eso tambien es importante, incluso con quien, ya que podria ser hombre o mujer (que en este ultimo caso habria sido lo mejor del evento jeje). Solo me dio tiempo para llegar a la Magistral de Hans Petter Jasson, quien es desarollador de Gnome. Quiero hacer una pausa para comentar, que me parecio alguien muy agradable, serio, y lo mas importante muy muy sencillo.

Ahi escuchamos algo de historio de Gnome, mencionando incluso a Miguel de Icaza y Federico Mena. Hizo un breve repaso de algunos de los proyectos mas importantes de Gnome como Nautilus y Gimp, el desktop de Gnome y su constate evolucion. Finalmente respondio muchas preguntas.

En la foto estamos mi amigo el cual conoci en el evento Areli Octavio Solis Espitia, Hans y su servidor :)

Dia 10
================

Aqui debo comentar que me quede con ganas de ver que nos tenia preparado Gustavo Barron con su ponencia de "CLIfu, el arte de la linea de comandos". Ese dia en la mañana estube con mi amigo Octavio Solis, en su platica de "Bacula, sistema completo de Backups". Primeramente nos hablo de de las necesidades que el tenia en su entorno laboral, en cuanto a los respaldos constantes de informacion, y de como lo hacia de manera manual, hasta que descubrio expect y autoexpect, los cuales son programas encargados de automatizar comandos, poniendo a nuestro alcanze un script que podemos invocar en el momento que lo pidamos, asi como colocarlo en Cron. De ahi nos menciono como Bacula es mucho mas poderoso y puede hacer tareas como conectarser a cualquier servidor (ftp, ssh, etc) y hacer tareas. La desventaja que le vi y que de hecho se lo comente a Octavio es que los archivos generados guardan secuencialmente lo que Bacula debera hacer y si tenemos permiso de lectura sobre dicho archivo, podremos la direccion del servidor asi como su passwd que hemos usado.


Enseguida acompañe a Alejandro Hernandez H. con su ponencia de "ELF en la mira, hacking y defensa". Vimos como modificar un binario usando el lenguaje C y algo de shellcodes para que ejecute otro codigo que nosotros queremos, sin que el usuario pueda darse cuenta de lo que esta haciendo, y una tecnica de como corromper un proceso. Aqui es cuando eso que dicen "jamaz corras tu web server como root" en verdad que tiene sentido.


Despues pase con Gabriel Saldaña, quien nos mostro lo facil que es usar latex no solo en la elaboracion de texto cientificos, sino que con su platica "Escribe tu tesis en latex sin complicaciones", pude ver que definitivamente el proximo año que me corresponda a mi, usare latex para la elaboracion de mi tesis, pues incluye platillas, y diferentes herramientas que ya hemos usado con los editores de texto comunes, pero que con latex, nos olvidamos de muchas cosas como, donde colocar las numeraciones, citar imagenes y bibliografia, colocar objetos. Como dice el titulo, sin complicaciones.

Despues nos fuimos a la comida (buffete de comida China). Y quize aprobechar la tarde para ir a conocer el centro de Puebla. Ya en la noche nos fuimos al antro si bien recuerdo creo que se llama "Toushe", donde convivimos a otro nivel con ponenetes y asistentes.

Dia 11
=============

Al dia siguiente acompañe a una amiga de Celaya, Leticia Zavala, a quien por cierto debo unas fotos. Fuimos a hacer unas compras al centro. Cuando regresamos a la UPAEP, me quede en la platica de mi amigo Rommel Sanchez, quien nos hablo de el proyecto que esta llevando a cabo en su tesis, su platica fue "SL y vision por computadora". Aqui nos hablo de conceptos generales que se usan en la edicion digital de imagenes, algunas vivencias, comentarios, y finalmente nos comento que la libreria que el ha usado para este trabajo es OpenCV.


Por ultimo nos quedamos a la ultima conferencia magistral del argentino Luciano Bello. Y de ahi a Morelia. XD

miércoles, 21 de mayo de 2008

Semana de Sistemas del Tecnologico de Tacambaro

Como les habia comentado, el martes 20 de Mayo, tuve la oportunidad de presentar una pequeña platica sobre Nagios y como monitorear algunos sevicios en una red.

Les prepare ademas del material visual, una demostracion donde un asistente podia entrar a nuestra res y hacer un monitoreo sobre su equipo. Algo que me dejo sacado de honda es que al parecer hable y hable, pero, como que no me voy con la idea de que todo quedo claro, siendo honesto, creo que la mayoria me entendio poco. Esto resulta un poco desanimante ya que la noche anterior me desvele preparando la demostracion, pero bueno asi es la vida.
La imagen muestra la topologia presentada para este evento, donde el invitado es la persona que agrego a nuestra red. Finalmante y para concluir esto tambien presento algunas imagenes de el evento.