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!





martes, 26 de febrero de 2013

Monitoreando placa Raid 3ware en XenServer con Nagios por ssh

Monitoreando Placa Raid 3ware en Nagios por ssh

Hola amigos, otra vez aca, tratando de ayudar al admin perdido como la defensa de Boca (!)
Esta vez, veremos como monitorear el estado de un Raid en una placa 3ware...

Elementos necesarios
*1 server o mas con alguna placa raid 3ware
*1 server con Nagios instalado
*1 instalacion de xenserver 6.1 (en mi caso), por eso hago check por ssh, de lo contrario tambien puede servir cualquier otro linux
*Ganas de laburar (?)

El problema a resolver es el siguiente... tomar el estado de la controladora raid y monitorearla con Nagios.
Afortunadamente ya existe un plugin que hace todo esto, asi que vamos directo a los comandos.
Antes que nada descargar el siguiente archivo
http://www.lsi.com/Pages/user/eula.aspx?file=http%3a%2f%2fwww.lsi.com%2fdownloads%2fPublic%2fSATA%2fSATA%2520Common%2520Files%2f3DM2_CLI-linux_10.2.2.1_9.5.5.1.zip&Source=http%3a%2f%2fwww.lsi.com%2fdownloads

copiar el zip al equipo que se quiere monitorear en el /tmp 

Una vez copiado el archivo... ejecutar



cd /tmp unzip 3DM2_CLI-linux_10.2.2.1_9.5.5.1.zip 
chmod 755 install.sh 
./install.sh -i -fN0
wget -c "http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=652&cf_id=29" -O check_3ware_raid 
mv check_3ware_raid /usr/sbin/ 
#Agrego a Nagios al sudoers 
echo "nagios ALL=(ALL) NOPASSWD: /usr/sbin/check_3ware_raid" >> /etc/sudoers 
# Elimino el requiretty para poder chequear por ssh 
sed -i '/requiretty/d' /etc/sudoers 


Ahora en el servidor Nagios.... Editar el archivo commands.cfg, y agregar....

 # check_3ware command definition 
 define command 

command_name check_ssh_3ware 
command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -t 240 -C "sudo /usr/sbin/check_3ware_raid" 

Nota: Agregue el -t 240 porque en mi caso tarda casi 2 minutos el comando en devolver el resultado
Luego agregar en la definicion del host el check

define service

use generic-service 
host_name Nombredelservidor
service_description 3Ware Raid Status 
is_volatile 0 
check_period 24x7 
max_check_attempts 3 
normal_check_interval 5 
retry_check_interval 1 
contact_groups IT 
notification_interval 2500 
notification_period 24x7 
notification_options w,u,c,r 
check_command check_ssh_3ware
}
Y eso es todo, para mas info de como monitorear un XenServer por ssh: 
http://support.citrix.com/article/CTX127562


miércoles, 16 de enero de 2013

Nrpe en Freenas 8.3



Hola a todos, hoy les traigo una nueva receta, como instalar nrpe en freenas 8.3.

Elementos necesarios:

1 instalacion de Nagios (www.nagios.org)
1 Freenas 8.3 (www.freenas.org)
1 teclado o 1 cliente ssh para poder hacerlo

Como primer medida para poder trabajar en Freenas hay que montar el disco en modo lectura, para esto loguearse al equipo en cuestion y ejecutar

mount -uw /
Luego hay que bajar unos cuantos paquetes que pondremos en el /tmp, puede ser otra carpeta si asi les guste

cd /tmp
fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/All/perl-5.12.4_4.tbz
fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/All/libiconv-1.13.1_2.tbz
fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/All/gettext-0.18.1.1.tbz
fecth ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/All/nagios-plugins-1.4.15_1,1.tbz
fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/All/nrpe-2.13.tbz
 
Una vez bajado todo hay que instalar.....

pkg_add perl-5.12.4_4.tbz
pkg_add libiconv-1.13.1_2.tbz
pkg_add gettext-0.18.1.1.tbz
pkg_add nagios-plugins-1.4.15_1,1.tbz
pkg_add nrpe-2.13.tbz
rm perl-5.12.4_4.tbz
Borro archivos...

rm perl-5.12.4_4.tbz
rm libiconv-1.13.1_1.tbz
rm gettext-0.18.1.1.tbz
rm nagios-plugins-1.4.15_1,1.tbz
rm nrpe-2.12_3.tbz
Para poder monitorear zfs existe un comando para nagios llamado check_zpool, bajarlo de ESTE LINK y copiarlo en /usr/local/libexec/nagios y aplicar permisos sobre este check y el de memoria ya que no tienen permiso de ejecucion

chmod 755 /usr/local/libexec/nagios/check_zpool /usr/local/libexec/nagios/check_mem
Agregar la siguiente linea a /conf/base/etc/rc.conf (para que inicie con el equipo)
 nrpe2_enable="YES"
Ahora crear el archivo /conf/base/etc/rc.d/nrpe2 conteniendo lo siguiente:

#!/bin/sh
#
# $FreeBSD: ports/net-mgmt/nrpe2/files/nrpe2.in,v 1.5 2010/03/27 00:14:26 dougb Exp $
#
# PROVIDE: nrpe2
# REQUIRE: NETWORKING
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable nrpe2:
# nrpe2_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable nrpe2.
# nrpe2_flags (str): Set to "" by default.
# nrpe2_configfile (str): Set to "/usr/local/etc/nrpe.cfg" by default.
# nrpe2_pidfile (str): Set to "/var/spool/nagios/nrpe2.pid" by default.
#
. /etc/rc.subr
name="nrpe2"
rcvar=`set_rcvar`
command="/usr/local/sbin/nrpe2"
command_args="-d"
extra_commands="reload"
sig_reload=HUP
[ -z "${nrpe2_enable}" ] && nrpe2_enable="NO"
[ -z "${nrpe2_configfile}" ] && nrpe2_configfile="/conf/base/etc/nrpe.cfg"
[ -z "${nrpe2_pidfile}" ] && nrpe2_pidfile="/var/spool/nagios/nrpe2.pid"
load_rc_config "${name}"
pidfile="${nrpe2_pidfile}"
required_files="${nrpe2_configfile}"
command_args="${command_args} -c ${nrpe2_configfile}"
run_rc_command "$1"
Aplico permisos...

chmod 755 /conf/base/etc/rc.d/nrpe2
y finalmente el archivo de configuracion de nagios y sus comandos llamado /conf/base/etc/nrpe.cfg

Ahi va un ejemplo

log_facility=daemon
pid_file=/var/spool/nagios/nrpe2.pid
server_port=5666 (en este puerto escucha el demonio nagios)
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=tu.ip.de.nagios
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
command[check_load]=/usr/local/libexec/nagios/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/local/libexec/nagios/check_disk -w 20% -c 10% -p /punto/de/mon/taje
command[check_zpool]=/usr/local/libexec/nagios/check_zpool
command[check_mem]=/usr/local/libexec/nagios/check_mem -u -w 80 -c 90
Ahora para iniciar, ejecutar

service nrpe2 start

Y listo!
Hasta la proxima