Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes en CentOS / Redhat (6.4)

(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).

 

NagiosCore4

 

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.

NagiosCore4_VistaLocalhost

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

pnp4nagios_icon_graph_popup

 

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

17 thoughts on “Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes en CentOS / Redhat (6.4)

  1. miguel

    hola buenas tarde desde colombia me podrias ayudar con la instalacion de nagios en debian. muchas gracias.

    Reply
    1. eldespistado1 Post author

      El único problema en debían es que Navíos 4 instala un script de inicio para… Redhat. Habría que modificarlo para Debían. Espero publicar un articulo pronto al respecto…

      Reply
  2. Leandro

    Gran artículo, me ayudó mucho.
    Más sería posible instalar la versión de nagios check_mk?
    Fazera intentado instalar esta versión de nagios check_mk, y siempre tiene un error, error relacionado con nagios el archivo ‘live’ …
    Gracias de antemano.

    PS: Lo siento por los errores de ortografía, texto hecho en google traductor.

    Reply
    1. eldespistado1 Post author

      Que tal Leandro.
      Como comentaba en el artículo, creo que ahora mismo no es posible integrar check_mk con Nagios Core 4. En Nagios Core 4 cambia la arquitectura de la API “Event broker” y MK_Livestatus usa un módulo compatible con 3.x pero parece que no con la nueva API de Nagios 4. De hecho, al instalar check_mk con Nagios 4 el asistente no detecta siquiera la instancia de Nagios por lo que la instalación no detecta automaticamente las mayoría de los valores y hay que indicarselos. Al finalizar, no configura el broker de MK_Livestatus en nagios.cfg. Si se lo añades, p.e.:
      # Load Livestatus Module
      broker_module=/usr/lib/check_mk/livestatus.o /usr/local/nagios/var/rw
      event_broker_options=-1
      Vas a encontrarte, al reiniciar Nagios con un error en nagios.log tal que:
      [1380222157] Error: Could not load module ‘/usr/lib/check_mk/livestatus.o’ -> /usr/lib/check_mk/livestatus.o: undefined symbol: last_command_check
      [1380222157] Error: Failed to load module ‘/usr/lib/check_mk/livestatus.o’.
      [1380222157] Error: Module loading failed. Aborting.
      Puedo estar equivocado pero creo que el módulo del broker no es compatible con Nagios Core 4 en este momento.

      Reply
      1. Leandro

        Ok, gracias por responder …
        Voy a estar viendo el sitio de noticias sobre este tema.
        agradecido

        Reply
  3. Pingback: Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes en Debian 7 (wheezy). | El Despistado.

  4. Leandro

    Estimado eldespistado1,
    Ya me ayudaste antes, así que me gustaría hacerte una pregunta …
    Usted sabe que pnp4nagios implemento check_iftraffic, ¿podrías pasarme los procedimientos?
    Grateful.

    Reply
  5. ulises

    Hola.

    muy buen aporte, sin embargo tengo un error, espero puedas ayudarme.

    al instalar ndoutils y configurar me aparece el siguiente error en el log de nagios:

    [1386172433] Error: Could not load module ‘/usr/local/nagios/bin/ndomod.o’ -> /usr/local/nagios/bin/ndomod.o: undefined symbol: servicedependency_list
    [1386172433] Error: Failed to load module ‘/usr/local/nagios/bin/ndomod.o’.
    [1386172433] Error: Module loading failed. Aborting.

    ¿tienes idea de que puede ser?.

    Reply
    1. eldespistado1 Post author

      Estás dando por hecho que ndoutils es compatible con Nagios 4 y me temo que no. En la página de ndoutils no pone que sea compatible con Nagios 4. Eso unido al cambio de la API event broker en Nagios 4 como mencionaba en respuesta a otro comentario… Me temo que de momento no podrás usarlo.

      Reply
  6. Pingback: PNP4Nagios en Naemon (Thruk). Instalación. | El Despistado.

  7. omar

    hola, tengo instalado nagios core 3.x y en el mismo equipo instale nagios core 4.x.
    Lo que no puedo hacer es que levanten todos los servicios configurados en el nagios core 3, cuando ingreso al nagios core 4.
    Hay alguna manera que lea nagios core 4 el directorio de conf.d del nagios core 3?

    Reply
  8. nicolas

    PNP4Nagios Version 0.6.25
    Please check the documentation for information about the following error.

    perfdata directory “/usr/local/pnp4nagios/var/perfdata/localhost” for host “localhost” does not exist. Read FAQ online
    file [line]:

    application/models/data.php [148]:

    back
    como puedo solucionarlo

    Reply
    1. eldespistado1 Post author

      Pues puede ser por varias razones. Las más probables suelen ser un problema con el demonio npcd no iniciado. También puede ser un problema de Selinux Activado (miralo).
      Revisa que tengas desactivado Selinux, que el demonio npcd te levante correctamente y en general los copy / paste de los ficheros de PNP4Nagios (revisalo con los originales siguiendo las instrucciones de este artículo no copiando de este (cuidado con copias de web que no son texto “normal” plano).
      En el fichero d configuracion de pnp4nagios “npcd.cfg” puedes activar un modo debug para registrar los problemas al intentar crear nuevos ficheros rrd o actualizar estos. Activalo y mira en los log de nagios
      # log_level – how much should we log?
      #
      # log_level =
      #
      # 0 = No logging – except errors
      # 1 = Small logging – some few more output
      # 2 = More Logging (actual ALL logs)
      # -1 = DEBUG Mode – ALL Logging and slower processing
      #

      log_level = -1

      Reply
  9. Jorge

    Hola, muy buena data, pero me quedo una duda, al final, cuando copias el template, pongo los archivos como dice el tuto, pero no me aparece el icono de gráficos en la web de nagios en mi localhost, estoy usando nagios 4.3.4 en centos 7, no se si me faltará algo.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Comment moderation is enabled. Your comment may take some time to appear.