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.

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:
- 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
- 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.
- 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:
- 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.