Instalando Nagios Core 4: Integrando pnp4nagios a nuestra instalación
En la entrada anterior instalamos en nuestro equipo con Debian 9 la última versión de Nagios Core, en esta ocasión, le agregaremos dos funcionalidades, la habilidad de graficar los datos de perfomance y poder armar pantallas con los monitoreos que configuremos, para esto integraremos a nuestro sistema, pnp4nagios (proyecto)
Instalando pnp4nagios
Al igual que hicimos con Nagios, instalaremos esta aplicación compilando de sus fuentes la ultima versión disponible en este momento, la 0.6.26.
Comenzaremos instalando algunas dependencias
apt-get install rrdtool librrds-perl php-xml
A continuación, nos moveremos a la carpeta temporal que creamos en nuestro home y descargaremos la fuente
cd ~/tmp wget -O pnp4nagios-0.6.26.tar.gz https://sourceforge.net/projects/pnp4nagios/files/latest
Descomprimiremos el paquete, nos moveremos a la carpeta extraída y modificaremos algunos parámetros por defecto para que coincidan con nuestra instalación (modificaremos la ruta de instalación para que quede dentro de /etc y la ruta a la carpeta de configuración de Apache).
tar zxvf pnp4nagios-0.6.26.tar.gz cd pnp4nagios-0.6.26 ./configure --prefix=/etc/pnp4nagios --with-httpd-conf=/etc/apache2/sites-enabled
Compilaremos e instalaremos la aplicación, utilizando el modificador fullinstall, instalaremos también los scripts de inicio y la configuración necesaria para el WS
make all make fullinstall
Haremos un par de modificaciones necesarias a la configuracion de Nagios
sed -i '/process_performance_data/ s/0/1/' /etc/nagios/etc/nagios.cfg sed -i '/enable_environment_macros/ s/0/1/' /etc/nagios/etc/nagios.cfg
Agregaremos el archivo de usuarios a la configuracion de apache para pnp4nagios
sed -i '/AuthUserFile/ s/\/usr\/local\/nagios\/etc\/htpasswd.users/\/etc\/nagios\/etc\/htpasswd.users/' /etc/apache2/sites-enabled/pnp4nagios.conf
Activaremos el demonio que recolecta los datos al inicio del sistema operativo
update-rc.d npcd defaults
Y reiniciaremos apache, nagios y el demonio de pnp4nagios
service apache2 restart && service nagios restart && service npcd restar
Verificaremos la instalación accediendo a http://IP_SERVER/pnp4nagios. Al acceder veremos un resumen de los requerimientos y el estado de los mismos, en caso de estar todo bien, veremos una imagen como la siguiente:
Y haremos como dice el mensaje, eliminaremos el archivo install.php de la ruta indicada
rm /etc/pnp4nagios/share/install.php
Casi terminamos, nos falta hacer que nagios empiece a enviar datos para que pnp4nagios los procese, los grafique y nos los muestre.
echo "# # Bulk / NPCD mode # # *** the template definition differs from the one in the original nagios.cfg # service_perfdata_file=/etc/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 # *** the template definition differs from the one in the original nagios.cfg # host_perfdata_file=/etc/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 " >> /etc/nagios/etc/nagios.cfg
Creamos los comandos necesarios para la recoleccion
echo " # # Bulk with NPCD mode # define command { command_name process-service-perfdata-file command_line /bin/mv /etc/pnp4nagios/var/service-perfdata /etc/pnp4nagios/var/spool/service-perfdata.\$TIMET\$ } define command { command_name process-host-perfdata-file command_line /bin/mv /etc/pnp4nagios/var/host-perfdata /etc/pnp4nagios/var/spool/host-perfdata.\$TIMET\$ }" >> /etc/nagios/etc/objects/commands.cfg
Definimos los templates para cargarle a los hosts/servicios que queramos graficar
echo " define host { name host-pnp action_url /pnp4nagios/index.php/graph?host=\$HOSTNAME\$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=\$HOSTNAME\$&srv=_HOST_ register 0 } define service { name srv-pnp action_url /pnp4nagios/index.php/graph?host=\$HOSTNAME\$&srv=\$SERVICEDESC\$' class='tips' rel='/pnp4nagios/index.php/popup?host=\$HOSTNAME\$&srv=\$SERVICEDESC\$ register 0 }" >> /etc/nagios/etc/objects/templates.cfg
Y por ultimo, habilitamos la ventana flotante para no tener que entrar a la url de pnp4nagios para ver la grafica y poder ver una miniatura en la pantalla principal
cp ~/tmp/pnp4nagios-0.6.26/contrib/ssi/status-header.ssi /etc/nagios/share/ssi/
Solo nos queda cargar en algun servicio los templates que creamos anteriormente, como ejemplo, modificaremos los checkeos definidos para localhost. Para esto, editaremos el archivo /etc/nagios/etc/objects/localhost.cfg, agregando en el parametro use de cada servicio, el template srv-pnp y en la del host host-pnp. El siguiente codigo lo hara por nosotros.
sed -i '/use/ s/linux-server/linux-server,host-pnp/' /etc/nagios/etc/objects/localhost.cfg sed -i '/use/ s/local-service/local-service,srv-pnp/' /etc/nagios/etc/objects/localhost.cfg
Reiniciaremos todo por ultima vez
service apache2 restart && service nagios restart && service npcd restart
Y si le damos un par de minutos para recolectar, empezaremos a ver nuestras gráficas se comienzan a poblar. Colocando el cursor sobre el nuevo icono que veremos, tendremos una miniatura y haciendo click, veremos los datos completos para el servicio/host. Tendremos las graficas de las ultimas 4 horas, último día, semana, mes y una anualizada.