lunes, 23 de septiembre de 2013

 Reportes Automaticos en Nagios

Una vez mas aportando otra pelotudez herramienta al servicio del administrador de redes.
Hoy vamos a ver como se le dice a un servidor Nagios que nos mande un reporte automatico de algun grupo de servicios o de hosts.

Elementos necesarios
*1 cuenta de mail
*1 server con Nagios instalado
* Algo que monitorear en el Nagios.

Antes que nada se deben instalar los siguientes paquetes...

yum install -y wget python-pip python-devel python-setuptools

Para poder exportar el reporte a pdf lo hice con xhtml2pdf.
Descargo xhtml2pdf e instalo....


wget --no-check-certificate https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.5.tar.gz#md5=1ef268b40c11bf966f7c6c5504299e3e
tar -xzvf xhtml2pdf-0.0.5.tar.gz
cd xhtml2pdf-0.0.5
chmod 755 setup.py
./setup.py install

Ahora instalar mailsend, para poder enviar adjuntos mas facil (por lo menos para mi)


wget https://mailsend.googlecode.com/files/mailsend1.16.tar.gz
tar -xzvf mailsend1.16.tar.gz
cd mailsend1.16
./configure
 make
cp mailsend /usr/sbin

Para poder generar el reporte, hay que armar la url para traerlo.... x ejemplo en mi caso las variables son los datos de la fecha a obtener el reporte.


#!/bin/bash
#reportes nagios automaticos#
#defino variables
#ultimo dia del mes anterior
LASTDAY=$(cal -3 |awk 'NF{last=$NF}END{print last}')
#ultimo mes anterior
LASTMONTH=$(date +%m --date="last month")
#año
YEAR=$(date +%Y)
cd /tmp
################Reporte Nagios
# obtengo html#
wget -v --user tuadmindenagios --password 'tupassword' -O ./`date +%d%m%Y`-report.html "http://tu.url.de.nagios/nagios/cgi-bin/avail.cgi?show_log_entries=&servicegroup=tu.servicegroup&timeperiod=lastmonth&smon=$LASTMONTH&sday=1&syear=$YEAR&shour=0&smin=0&ssec=0&emon=$LASTMONTH&eday=$LASTDAY&eyear=$YEAR&ehour=24&emin=0&esec=0&rpttimeperiod=&assumeinitialstates=yes&assumestateretention=yes&assumestatesduringnotrunning=yes&includesoftstates=no&initialassumedhoststate=0&initialassumedservicestate=0&backtrack=4"
#borro lineas que no necesito en el html, basicamente le saco el encabezado al html porque no me gusta, no es necesario hacer esto
sed '13,26d;37,100d' `date +%d%m%Y`-report.html > tmp.html
#convierto a pdf usando el css que corresponde (el css no es estrictamente necesario), yo lo cargo porque uso nagios nuvola que esta bastante lindo
xhtml2pdf --css /ruta/al/css/avail.css -d tmp.html reporte-`date +%d%m%Y`.pdf
#envio el reporte por correo
mailsend -to "tu.mail@tu.dominio" -from nagios@tu.dominio -smtp tu.smtp -sub "Reporte Nagios" -M "Reporte Nagios" -attach "/tmp/reporte-`date +%d%m%Y`.pdf"  -name "ReporteNagios"

En el caso de necesitar otro reporte, hay que cambiar el servicegroup por hostgroup, etc.

Espero que les haya servido, hasta la proxima!





4 comentarios: