Translate

lunes, 26 de mayo de 2014

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.

No hay comentarios: