Translate

lunes, 26 de mayo de 2014

Mysql. Configuración Chequeo Mysql con nagios

Para monitorizar servidores mysql, hay un fantástico plugin llamado check_mysql_health.
La información de este plugin se puede encontrar aquí: http://labs.consol.de/lang/en/nagios/check_mysql_health/
Lo primero que habrá que hacer es instalar el cliente de mysql en la máquina nagios, en mi caso utilizo ubuntu, por lo que para instalarlo hay que ejecutar:
apt-get install mysql-client
 
También habrá que instalar los módulos de perl DBI y DBD::mysql
apt-get install libdbi-perl
apt-get install libdbd-mysql-perl
Se descarga el paquete de instalación de la página de mas arriba y se lleva al servidor nagios,
se descomprime el paquete:
tar -xzvf check_mysql_health-2.1.8.2.tar.gz
se entra en el directorio, y de la manera habitual se compila para instalar el programa:
cd check_mysql_health-2.1.8.2
sudo ./configure
sudo ./make
sudo ./make install

Habilitar el mod status en apache

Para habilitar el mod_status en apache, deberemos seguir los siguientes pasos:

Editamos el fichero de configuración de apache httpd.conf que habitualmente se encuentra en la carpeta de configuración de apache, habitualmente en /etc/apache2/
 y en el archivo incluimos:
<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from all
Allow from .example.com
</Location>
En este caso sólo autorizamos al dominio example.com a ver la página, si quisiéramos incluir a todo el mundo, habría que poner la línea:
Allow from all

Chequeo de Apache Server con nagios con el plugin check apachestatus auto

Para monitorizar los servidores apache, se utiliza el plugin check_apachestatus_auto.pl, que lo que hace es extraer datos de la página apachestatus y presentar los datos a nagios.

Para habilitar la página apachestatus en los servidores web apache, mirar aquí.

Lo único que hay que hacer es copiar el archivo check_apachestatus_auto a la librería de plugins de nagios (normalmente en /usr/local/nagios/libexec).
También habrá que copiar la plantilla para pnp4nagios a la carpeta de plantillas.

Linux Ubuntu. Ampliar fichero swap

Para agregar mas swap usando un archivo de sistema, basicamente son 4 pasos:

  • Crear un archivo del tamaño deseado
  • Formatear ese archivo para crear el dispositivo de swap
  • Agregar la swap al sistema en ejecucion
  • Hacer que el cambio sea permanente
Consideremos un requerimiento de swap de 512MB
Crearemos el archivo de swap /mnt/512Mb.swap con el comando

sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512
Lo importante aqui es count=512, que significa que queremos que nuestro archivo contenga 512 bloques de bs=1M, lo que significa block size = 1 MegaBytes (tamaño de bloque = 1MB).
Formatear ese archivo para crear el dispositivo de swap


sudo mkswap /mnt/512Mb.swap
Agregar la swap al sistema en ejecucion


sudo swapon /mnt/512Mb.swap
Se puede usar cat /proc/meminfo para ver que la swap adicional esta ahora disponible
Hacer que el cambio sea permanente

Hay que agregar esta linea al archivo /etc/fstab :


/mnt/512Mb.swap none swap sw 0 0

Problema con el agente NRPE: Unable to read output y sudo

Cuando los check de nagios queremos que corran con privilegios de root hay veces que la salida de nagios nos da como resultado:
NRPE: Unable to read output
Una posible razón puede ser que por seguridad hay una directiva en fichero /etc/sudoers que evita que se ejecuten comandos con privilegios de root sin una terminal.
Viendo el fichero log /var/log/security vemos una constante:
... nagios : sorry, you must have a tty to run sudo ...
Para solucionar esto debemos editar el fichero /etc/sudoers y comentar la siguiente linea:

Defaults    requiretty
Quedando así:

# Defaults    requiretty
Con esto ya debería de funcionar.

Carácter ; en los archivos de configuración de nagios

Al igual que el carácter $, el carácter ; tampoco se puede poner tal cual en los archivos de configuración de nagios, para poder incluirlo, será necesario poner el símbolo \ delante, por ejemplo
define command{
        command_name    check_haproxy
        command_line    $USER1$/check_haproxy.pl -u
 'http://username:passw...@$hostaddress$/connstats\;csv\;norefresh'
        }
siendo el comando que habría que ejecutar: check_haprox........../connstats;csv;norefresh'

Carácter $ en los archivos de configuración de nagios

No se puede incluir este carácter tal cual, puesto que está reservado, para poder incluirlo sin problemas si tenemos que incluir, por ejemplo, el nombre de un servicio que sea SERVICIO$1 , habrá que escribir SERVICIO"$$"1, ejemplo práctico:
define service{
 use   servicio-generico
 contact_groups  grupo-sistemas
 host_name  SERVIDOR_MSSQL_ALCHE
 service_description Servidor_Mssql_con_Alche
 check_command  check_nt!SERVICESTATE!-d SHOWALL -l AlcheServer,MSSQL"$$"ALCHE
 servicegroups  ServiciosWindows
 }

Chequeo de rsyslog con nagios

El plugin rsyslogdb.pl, es capaz de monitorizar el servicio de rsyslog de la siguiente manera:

1- Manda una entrada al syslog de la máquina de monitorización (poseidon en nuestro caso)
 del tipo "check_rsyslogdb: check_rsyslogdb_1379513805" de manera que a través de rsyslog, manda esa entrada al servidor de logs donde se centralice rsyslog, lo manda con prioridad INFO y con la facility LOCAL0(aunque se podría cambiar la facility)
2- El servidor de rsyslog recoge el mensaje en su forma habitual y lo mete en una tabla propia de la base de datos de rsyslog.
3- El servidor de nagios espera un tiempo (configurable), y hace una consulta de la tabla a ver si está la entrada.
4- Si encuentra la entrada formada con el mismo número, da ok, y quiere decir que el servicio funciona correctamente, si no funcionase, no lo encontraría en la tabla y daría un error. En caso de que tenga un error la consulta sql, se pondrá el servicio en estado UNKNOWN

Más información del plugin por su autor aquí

Es un plugin muy sencillo pero que cumple perfectamente su cometido.

Chequeo de ESX, ESXI, VCENTER Y VSPHERE (check esx3.pl, check vmware api.pl)

En la última versión se ha cambiado el nombre del plugin a check_vmware_api.pl así que será todo igual pero, lógicamente, cambiando el nombre.
Este plugin sirve para monitorizar tanto host que contienen el hipervisor ESX o ESXi, así como las máquinas virtuales que contiene, a través de vsphere-cli for perl, de manera que se conecta directamente a los host esx o bien a través de un vcenter.
Para que el plugin funcione lo primero que hay que ver es la versión de VMWare-vSphere-perl que hay que instalar, esto aparece en el propio texto del plugin, en el caso del plugin a día de hoy (18-02-2011), es la versión 161974.
Prerequisitos:
sudo apt-get install perl5 
sudo apt-get update 
sudo apt-get install libssl-dev

Para instalar VMWare-vSphere, copiamos el archivo a la máquina de nagios y descomprimimos:
tar xzvf VMware-vSphere-SDK-for-Perl-4.0.0-161974.i386.tar.gz
Entramos en el directorio creado y ejecutamos:
 ./vmware-install.pl
Se instala el programa, por lo que ya podemos usar el plugin, copiamos el plugin check_esx3.pl al directorio /etc/usr/local/nagios/libexec , con el usuario nagios.
Es posible que no funcione porque falten clases o módulos de perl, en este caso hay que instalarlos con el comando cpan, pero para que funcione el servidor debe poder conectarse a internet, por lo que habrá que hacer lo siguiente:

Editar el archivo /etc/environment
Poner las siguientes lineas al final de este archivo
Editar el archivo /etc/apt/apt.conf
Poner las siguientes líneas al final del archivo:
Acquire::http::Proxy "http://usuario:password@proxy:80";
Acquire::https::Proxy "http://usuario:password@proxy:80";
Acquire::ftp::Proxy "http://usuario:password@proxy:80";
Reiniciamos la máquina para que funcione la nueva configuración.
Una vez hecho esto ya podemos usar cpan, y hacemos
sudo apt-get install libnagios-plugin-perl
sudo apt-get install libclass-methodmaker-perl   
sudo apt-get install libcrypt-ssleay-perl
sudo apt-get install libxml-libxml-perl  

Los módulos que pide la documentación de vsphere a instalar son:

Crypt‐SSLeay (0.51) [Crypt::SSLeay]
Data‐Dumper (2.102) [Data::Dumper]
MethodMaker (2.0.8) [Class::MethodMaker]
XML‐LibXML (1.60) [XML::LibXML]
libwww‐perl (5.805) [LWP]
si faltase alguno lo instalaríamos con cpan.
Podemos probar el comando ahora ejecutando:
/usr/local/nagios/libexec/check_vmware_api.pl -H host_esx -u root -p laclave -l net
si no funciona, probar con sudo, y en este caso habrá que hacer lo siguiente:
Para que el plugin funcione tiene el problema que hay que ejecutarlo como root, por lo que para que pueda ser así habrá que ejecutarlo con sudo desde nagios, para hacer esto, hay que dar permisos de sudo al usuario nagios para ese archivo concreto, esto se consigue añadiendo una línea al fichero sudoers, para editar ese fichero, ejecutamos el siguiente comando con el usuario administrador:
sudo visudo
Habrá que añadir la línea en negrita a continuación de la que no está en negrita:
root ALL=(ALL) ALL
nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_vmware_api.pl
Con esto conseguimos que se pueda ejecutar el plugin con sudo desde nagios y con el usuario nagios, en las definiciones de comandos, habrá que poner algo similar a lo siguiente:
define command {
command_name check_esx3_host
command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l $ARG1$ -s $ARG2$ -w $ARG3$ -c $ARG4$
}
Si fuese necesario ejecutar el comando con sudo habría que definirlo de ésta manera:
define command {
command_name check_esx3_host
command_line sudo $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l $ARG1$ -s $ARG2$ -w $ARG3$ -c $ARG4$
}
Con esto podremos monitorizar los servidores esx, sus máquinas virtuales así como el vcenter.
lo que se puede hacer está definido en la ayuda del plugin o bien se puede mirar aquí:
 https://kb.op5.com/display/HOWTOs/Monitoring+VMware+ESX%2C+ESXi%2C+vSphere+and+vCenter+Server

 Posibles problemas:
Editar sección


Al hacer una subida de versión de ubuntu del 10.4 a 12.4 surgió un problema, cuya salida al ejecutar el plugin es algo como:
CHECK_ESX3.PL CRITICAL - Error: Server version unavailable at 'https://atlantida:443/sdk/vimService.wsdl'
La solución es añadir la línea marcada al principio del código del script:
#!/usr/bin/perl -w
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
#
# Nagios plugin to monitor vmware esx servers
#
# License: GPL

en la siguiente página se explica el problema.
http://www.claudiokuenzler.com/blog/210/check_esx3.pl-error-server-version-unavailable-lwp-ssl

Instalación del addon PNP4NAGIOS para gráficas en Nagios

PNP4Nagios es un addon para nagios con el que conseguimos tener gráficos de los datos de monitorización que va recolectando Nagios. A continuación se puede ver una muestra de cómo aparecen los gráficos.

a3014e4b0e64114d7496f652a1f93c97_media_840x642.png
Toda la información referente al addon pnp4nagios se puede encontrar aquí:
http://docs.pnp4nagios.org/es/pnp-0.6/start
Se puede descargar el programa aquí:
 http://sourceforge.net/projects/pnp4nagios/

Software previo

Los paquetes que hay que instalar en ubuntu son:
perl5,  rrdtool, php5, php5-gd, librrds-perl

Instalación

Primero descomprimimos el fichero descargado
tar -xvzf pnp4nagios-HEAD.tar.gz
cd pnp4nagios

Dentro del directorio descomprimido, ejecutamos:
sudo ./configure
Tendremos que ver si hay algún error, sino continuamos con los make, que instala el programa
make all
 make install
make fullinstall

Configuración

pnp4nagios puede funcionar en tres modos:
  1. Sincrono: Cada vez que se hace un chequeo, se ejecutan los comandos para guardar la información para pnp. Es el modo más simple de configurar pero el que más carga el servidor de nagios
  2. Masivo: Se va recolectando la información en un fichero y de vez en cuando nagios ejecuta un comando para volcar la información. Al usar un fichero temporal reduce la carga del servidor de nagios pero es mas complicado de configurar.
  3. Masivo con NPCD: Igual que en el caso anterior, se va recolectando en un fichero la información, pero en vez de ser nagios el que ejecuta el comando, el demonio NPCD es el encargado de volcar la información a pnp4nagios. No carga nada el servidor de nagios, puesto que es un proceso distinto el que procesa el archivo temporal de datos.
En principio nosotros escogemos el modelo 3 puesto que así no tendremos carga en nagios.
El modo masivo es algo más complicado que el síncrono, pero reduce significativamente la carga en el servidor de nagios, debido a que el recolector de datos process_perfdata.pl no es invocada en cada chequeo de servicio/equipo.
En el modo masivo, Nagios escribe los datos a un fichero temporal en un formato predefinido. Este fichero se procesa mediante process_perfdata.pl a intervalos regulares. Nagios controla el arranque y ejecución periódica del recolector de datos.
Se debe habilitar el procesado de datos de rendimiento en nagios.cfg
 process_performance_data=1
Además, otras directivas son necesarias
#
# service performance data
#
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file

#
# host performance data starting with Nagios 3.0
# 
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file
Atención: ¡Tenga en cuenta que la definición de esta plantilla puede diferir de las suministradas en nagios.cfg!
Las directivas y su significado:
  • service_perfdata_file ruta al fichero temporal que debería alojar los datos de rendimiento.
  • service_perfdata_file_template formato del fichero temporal. Los datos se definen usando macros de Nagios.
  • service_perfdata_file_mode opción “a” especifica los datos que se van a añadir al fichero.
  • service_perfdata_file_processing_interval el intervalo es 15 segundos
  • service_perfdata_file_processing_command el comando que se invocará en el intervalo.
Los comandos que se utilizan deben ser configurados en Nagios. Si ha usado las guías de instalación rápida de Nagios, puede modificar las definiciones en commands.cfg.

define command{
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command{
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}
Al usar estos comandos, el fichero service-perfdata, es movido a var/spool/ depués del intervalo especificado en service_perfdata_file_processing_interval. La macro de Nagios $TIMET$ se añade al nombre del fichero para evitar la sobreescritura accidental de ficheros anteriores. La macro $TIMET$ contiene el timestamp actual en formaro time_t (segundos desde la época UNIX).
En el directorio /usr/local/pnp4nagios/var/spool/ los ficheros son recuperados y procesados por NPCD.
NPCD monitoriza el directorio spool y le pasa los nombres de fichero a process_perfdata.pl. De esta forma el procesado de los datos de rendimiento está totalmente desacoplado de Nagios.
Antes de iniciar NPCD debe comprobar las rutas al directorio de spool y a process_perfdata.pl en el fichero de configuración npcd.cfg. Lo único que queda es iniciar NPCD.
 /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg
La opción -d inicia NPCD como un demonio en segundo plano.

Empezar a utilizar pnp4nagios

Una vez hechos los pasos anteriores, hay que reiniciar tanto nagios como apache, entonces entrando en un navegador con http://nombredelservidor/pnp4nagios aparecerá la pantalla de comprobación de la instalación de pnp4nagios, y puede que nos de algún mensaje de error, concretamente a mi me salión el siguente mensaje de error:
“PHP magic_quotes_gpc is deprecated”
para solucionar esto, lo que hay que hacer es modificar el fichero php.ini, que se encuentra en /etc/php5/apache2/php.ini de manera que la variable magic_quotes_gpc = Off
Reiniciamos apache y desaparece el mensaje.
Renombramos el fichero /usr/local/pnp4nagios/share/install.php de la siguiente manera:
sudo mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.old

IMPORTANTE
También hay que cambiar en el archivo process_perfdata.cfg para ver correctamente los gráficos (XML) el modo de codificación:
Hay que cambiar XML_ENC = UTF-8 por XML_ENC = ISO-8859-1
Puesto que con los caracteres en castellano UTF-8 no funciona correctamente

Autoarranque del demonio NPCD

Si dejamos todo como hasta ahora, el demonio NPCD se ejecutaría, pero cuando se reiniciase la máquina, no se reiniciaría el demonio NPCD, para que esto ocurra deberemos dar los siguientes pasos:
  • Dentro del directorio que descomprimimos pnp4nagios dentro de la carpeta script, hay un script que se llama rc.npcd, copiamos este script con el siguiente comando:
    • sudo cp rc.npcd /etc/init.d/npcd
  • Habrá que cambiar los permisos del script de manera que sea ejecutable, esto es con el comando:
    • sudo chmod 755 npcd
  • Una vez copiado el script (ya lo podremos ejecutar), ya podemos iniciar, parar, reiniciar, etc el demonio ejecuntando /etc/init.d/npcd y con el modificador que queramos.
  • Para que se ejecute automaticamente cuando arrancamos la máquina hay que ejecutar el siguiente comando
    • sudo ln -s /etc/init.d/npcd /etc/rcS.d/S99npcd
Quizá haya que hacer un cambio el fichero de configuración de npcd, esto es, el fichero /usr/local/pnp4nagios/etc/npcd.cfg-sample, habrá que renombrarlo o copiarlo con el nombre npcd.cfg
sudo cp /usr/local/pnp4nagios/etc/npcd.cfg-sample /usr/local/pnp4nagios/etc/npcd.cfg

 

Cambio de idioma

Para cambiar el idioma del front-end a español, habrá que cambiar a es_ES la siguiente variable en el archivo /usr/local/pnp4nagios/etc/config.php
# Language definitions to use.
# valid options are en_US, de_DE, es_ES
#
$conf['lang'] = "es_ES";
Con esto conseguimos que el idioma en la aplicación sea español.

viernes, 23 de mayo de 2014

Monitorizar UPS con nagios a través de snmp

Las ups son sistemas de alimentación interrumpida, en las cuáles si tenemos una tarjeta de monitorización a través de snmp podemos monitorizar parámetros como la carga de las baterías, la temperatura de la batería, la tensión de las líneas de corriente de entrada, la carga de las líneas de salida y también si hay alarmas presentes a través de un plugin para nagios que he desarrollado en bash.


Aquí puedes encontrar más información de éste completo plugin:

http://blog.dduenasd.com.es/?p=4