(English) En este artículo vamos a mostrar como instalar Nagios 4 (core), recién salido del horno ya en versión estable, en CentOS 6.4. Si buscas instalación en Debian 7 lo tienes aquí. La instalación se realizará compilando ya que parece que de momento no hay paquetes disponibles para las distribuciones habituales (en la fecha de escribir este artículo no los localicé). Existen máquinas virtuales ya con Nagios Core 4 ya instalado pero es necesario suscribirse y pagar algo por ellas (Student edition, mínimo).
Tenemos que saber que en Nagios Core 4 cambia la arquitectura de la API “Event broker”. Numerosos programas añadían módulos externos de este tipo para funcionar por lo que hasta que no actualicen dichos módulos no funcionarán con Nagios 4. Uno de los “damnificados” es check_mk (más exactamente MK Livestatus que además usan otros programas de terceros). PNP4Nagios tiene otros modos de funcionamiento además de con un módulo para el broker y si que funciona con Nagios 4. Nagvis, aunque no se trata en este artículo, también debe de funcionar ya que además de usar MK Livestatus podemos configurarlo para “parsear” el fichero de estado de Nagios.
Partimos de una instalación de CentOS 6.4 instalada con la opción “minimal” y con selinux desactivado. Adicionalmente le instalamos algunos paquetes que vendrán bien y/o son necesarios.
yum install perl vim mlocate yum groupinstall "Development Tools"
Cuentas de usuario y grupo.
Creamos cuenta para Nagios. Creamos un grupo “nagcmd” que usaremos luego para los comandos externos y metemos en dicho grupo a nuestro usuario Nagios y al usuario que usa apache.
useradd nagios && passwd nagios groupadd nagcmd usermod -a -G nagcmd nagios usermod -a -G nagcmd apache
Esto último se hace para que desde el GUI de Nagios podamos ejecutar comandos externos sobre host y servicios – usuario apache-. Para ello los ficheros donde van dichos comandos (/usr/local/nagios/var/rw/) veremos posteriormente que pertenecen a ese grupo “nagcmd”
Instalación de Nagios Core 4.
Instalamos previamente los paquetes que nos indica como necesarios para Nagios Core 4.
yum install wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp
Bajamos Nagios, descomprimimos y compilamos (le pasamos nuestro grupo):
./configure --with-command-group=nagcmd
*** Configuration summary for nagios 4.0.0 09-20-2013 ***: General Options: ------------------------- Nagios executable: nagios Nagios user/group: nagios,nagios Command user/group: nagios,nagcmd Event Broker: yes Install ${prefix}: /usr/local/nagios Install ${includedir}: /usr/local/nagios/include/nagios Lock file: ${prefix}/var/nagios.lock Check result directory: ${prefix}/var/spool/checkresults Init directory: /etc/rc.d/init.d Apache conf.d directory: /etc/httpd/conf.d Mail program: /bin/mail Host OS: linux-gnu
Web Interface Options: ------------------------ HTML URL: http://localhost/nagios/ CGI URL: http://localhost/nagios/cgi-bin/ Traceroute (used by WAP): Review the options above for accuracy. If they look okay, type 'make all' to compile the main program and CGIs
Seguimos con el resto de pasos habituales:
make all make install make install-init make install-commandmode make install-config make install-webconf
Copiamos algunos ficheros desde dir fuentes y cambiamos algunos permisos que parece quedan pendientes:
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/ chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
Chequeamos que la configuración es válida, creamos usuario de acceso por apache, iniciamos Nagios y apache y los configuramos para que se arranquen al iniciar el sistema:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin service nagios restart && service httpd restart chkconfig --add nagios && chkconfig --level 35 nagios on chkconfig --level 35 httpd on
Apuntamos a la URL y listo: http://nuestra_ip/nagios/ (acordaros de habilitar puerto 80 en el firewall local)
Instalación de Nagios plugins.
Ya puestos a compilar, nos bajamos también la última versión disponible de los plugins para instalarlos de dicha manera (nos liaríamos más en este caso si lo instalamos desde paquetes desde EPEL como se indicaba en este artículo). Previamente instalamos algunos paquetes necesarios para algunos plugins:
yum install bind-utils net-snmp net-snmp-devel net-snmp-utils net-snmp-perl
Y otros necesarios si vamos a chequear en concreto ese tipo de servicios desde Nagios. Si no lo vamos a hacer, mejor no instalarlos.
yum install mysql-client mysql-devel samba-client samba-common postgresql-devel openldap-devel
Descomprimimos el fichero de nagios-plugins y compilamos indicandoles nuestro usuario y grupo de nagios:
./configure -with-nagios-user=nagios -with-nagios-group=nagios make make install
Si accedemos a nuestro Nagios veremos que tiene algunos chequeos clásicos en el localhost que ya están usando los plugins instalados.
Dado que cada vez que cambiamos la configuración de ficheros de Nagios conviene chequearla (y necesitamos “recargar” la configuración) yo acostumbro a crear unos alias para tenerlo más a mano. En el fichero .bashrc de nuestro usuario podemos añadirlos.
# ALIAS PARA NAGIOS alias q1='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg' alias q2='/etc/init.d/nagios reload'
PNP4Nagios.
Como hemos instalado Nagios Core 4 y los plugins compilando, la mejor opción será también instalar PNP4Nagios de esta forma. Instalamos primero algunos prerequisitos:
yum install rrdtool perl-Time-HiRes rrdtool-perl php-gd
Descomprimimos, compilamos e instalamos:
./configure make all make fullinstall *** Configuration summary for pnp4nagios-0.6.21 03-24-2013 ***
General Options: ------------------------- ------------------- Nagios user/group: nagios nagios Install directory: /usr/local/pnp4nagios HTML Dir: /usr/local/pnp4nagios/share Config Dir: /usr/local/pnp4nagios/etc Location of rrdtool binary: /usr/bin/rrdtool Version 1.3.8 RRDs Perl Modules: FOUND (Version 1.3008) RRD Files stored in: /usr/local/pnp4nagios/var/perfdata process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool
Web Interface Options: ------------------------- ------------------- HTML URL: http://localhost/pnp4nagios Apache Config File: /etc/httpd/conf.d/pnp4nagios.conf
Configuramos el demonio npcd de pnp4nagios para que se inicie automaticamente y lo arrancamos:
chkconfig --add npcd && chkconfig --level 35 npcd on
Si accedemos al interface de pnp4nagios: http://nuestra_ip/pnp4nagios/
deberíamos ver todos los chequeos que realiza en verde. Procedemos como nos indica a renombrar el fichero /usr/local/pnp4nagios/share/install.php para que se dé por enterado de que está correctamente instalado.
Volvemos a cargar la página y veremos que ahora nos da un error:
Please check the documentation for information about the following error.
perfdata directory “/usr/local/pnp4nagios/var/perfdata/” is empty. Please check your Nagios config. Read FAQ online
De momento es normal, nos faltan configurar la integración con nagios.
PNP4Nagios tiene varias formas de configurar la integración con Nagios. Usaremos el método bulk-mode. Si estás pensando en usar el más sencillo e igual de eficaz “Bulk Mode with npcdmod” olvídalo de momento . Como comentaba, la API “event broker”de Nagios Core 4 ha cambiado con respecto a la versión previa, con lo cual el broker nocdmod no va a funcionar (al menos no el de la última versión probada en este artículo – pnp4nagios 0.6.21-).
En el directorio /usr/local/pnp4nagios/etc tenemos dos ficheros de ejemplo para hacer copy/paste.
Del fichero nagios.cfg-sample copiamos la siguiente configuración a el fichero /usr/local/nagios/etc/nagios.cfg
# # Bulk / NPCD mode #
process_performance_data=1
# *** the template definition differs from the one in the original nagios.cfg # 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
# *** the template definition differs from the one in the original nagios.cfg # 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
Del fichero misccommands.cfg-sample copiamos la siguiente configuración a /usr/local/nagios/etc/objects/commands.cfg
# # Bulk with NPCD mode # 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$ }
Reiniciamos el demonio npcd de pnp4nagios y el propio Nagios.
service npcd restart && service nagios restart
Y ya podemos conectarnos a la URL de PNP4Nagios. Desaparece el error y veremos al rato que empieza a pintar nuestras gráficas.
Nos faltaría ahora una cosa importante. Poder acceder directamente desde el Host / Servicio en Nagios a las gráficas correspondientes de este sin tener que ir a el interface de PNP4 para localizarlo. Siguiendo las instrucciones de la documentación nos vamos directamente a configurarlo para POPUPs que queda muy mono. Creamos unos templates para aplicarlos luego a los objetos.
En el fichero /usr/local/nagios/etc/objects/templates.cfg (p.e.) añadimos:
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 }
Y modificamos nuestros objetos Host / Servicios para que hereden dicha plantilla. P.e.
define host{ use linux-server,host-pnp host_name localhost alias localhost address 127.0.0.1 } define service{ use local-service,srv-pnp host_name localhost service_description PING check_command check_ping!100.0,20%!500.0,60% }
Si no controlas bien el tema de los ficheros de configuración de Nagios es que no leíste este artículo . Si no te aclaras con los ficheros de configuración de objetos… aquí.
Podemos añadirle la plantilla a todos aquellos host / servicios que queramos tengan gráfica. Las estrategias pueden ser diferentes; uno a uno, definición de servicios asignadas a grupos de host en lugar de a hosts (lo normal), asignar la plantilla a la plantillas a otra plantilla (local-service p.e.), ….
OJO. Es necesario copiar un fichero a la config web de Nagios y las rutas de la doc de PNP4Nagios no coinciden con las nuestras. Copiamos el fichero correctamente de los fuentes de pnp4nagios:
cp contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi/
Reiniciamos nagios y ncmd (módulo de pnp):
service npcd restart && service nagios restart
Veremos que nos han aparecido los iconos para acceder pinchando directamente a las gráficas del Host / Servicio directamente desde este y además, si pasamos solo el ratón por el icono nos muestra ya un popup con la gráfica. Bonito ¿no?.
Si quieres saber más de PNP4Nagios échale un ojo al artículo de Características de PNP4Nagios.
En próximos artículos veremos algunas de las nuevas funcionalidades de Nagios Core, aunque realmente el grueso de estas están en la mejora de rendimiento. Esperemos que check_mk actualice pronto el broker de MK LiveStatus para que funcione con NC4. NUEVO (06/04/2014) Ya hay versión de check_mk con Livestatus para Nagios Core 4.
Actualización (23/09/2013). Después de probar un rato Nagios Core 4 da la sensación de que se han apresurado en pasarlo a “stable”. Un par de detalles:
– Al realizar cambios u añadir objetos no vale realizar un nagios reload para que lea la nueva configuración. Es necesario realizar un restart.
– La nueva directiva de “parents” en servicios no parece funcionar (o la configuración no está bien especificada en el manual??)
Si quieres saber como integrarlo también con check_mk y Nagvis te recomiendo el artículo “Nagios 4 (core) + Check_mk + pnp4Nagios + Nagvis” de About Monitoring
The post Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes en CentOS / Redhat (6.4) appeared first on El Despistado..