Instalación de Nagios 3, PNP4Nagios, check_mk y Nagvis en Debian 7 (wheezy)

A continuación voy a tratar de explicar como instalar todos los componentes que, en mi opinión, son básicos en una instalación de Nagios 3 hoy en día.  IMPORTANTE (06/09/2015): En el meńu “Guia de artículos” de este blog puedes encontrar esta misma configuración con Debian 8 y con Redhat / Centos 6 y 7.
Como comentaba en otro artículo quizá teniendo una versión reciente de OMD Distro probablemente no me complicaría la vida poniéndome a instalar un montón de cosas por separado. El problema es que OMD distro espacia mucho las versiones y check_mk en concreto introduce muchas novedades mes a mes. Tenemos la opción también de comprar OMD en su versión comercial, que está más actualizada. Si nos decantamos por no pagar, teniendo todo instalado por separado siempre podemos actualizar componentes según nos interese de forma más sencilla ya que todos ellos suelen tener en cuenta las actualizaciones. Actualización (06/09/2015): OMDistro parece que ya no se mantiene activamente pero el equivalente actualizado es actualmente Check_MK Raw Edition (CRE). Los comandos “omd” para gestionar las instalaciones se mantienen iguales. En su página de downloads podemos seleccionar el paquete para nuestra distribucción y tiene la ventaja adicional de tener actualizado el paquete de check_mk.

Instalación de Nagios.

Podemos instalar Nagios y todos sus plugins en Debian 7 directamente de los paquetes oficiales de la versión. En el caso de Nagios, aunque no sea la última versión, considero que no es tan crítico y nos puede valer perfectamente. Instalaremos desde paquetes:

apt-get install nagios3-core nagios3 nagios3-common nagios3-cgi nagios-plugins nagios-plugins-basic nagios-plugins-standard nagios-images libnagios-plugin-perl nagios-nrpe-plugin

Esto nos instala Nagios Core y los paquetes de plugins estándar. Durante la instalación nos pregunta que clave le pondremos al usuario nagiosadmin para acceder al interfaz web. Si no tenemos instalado Apache u otros programas de los que tenga dependencias nos sugerirá instalarlos.
Para Ubuntu u otras distribuciones linux debería ser muy similar en cuanto a los nombre de los paquetes. Buscamos los paquetes que incluyan nagios en el nombre y tengan las cadenas: core, common, cgi, plugins basic, plugins standard, images y samples.
Una vez instalados los paquetes accedemos al interfaz web de Nagios desde:
http://nuestro_hosts/nagios3/
Usuario: nagiosadmin / Pass: (la preguntó durante la instalación).
Si accedemos a la vista de servicios veremos que por defecto nos ha configurado chequeos para el Host local (propio servidor de Nagios).

LocalHost_Nagios

PNP4Nagios.

Instalación.

La versión de PNP4Nagios que viene con Debian 7.1 también es bastante antigua. Optamos por renunciar a la comodidad y conveniencia de los paquetes, vamos a instalar la última versión que en el momento de escribir este artículo es la 0.6.21. Nos la podemos bajar de su página.
Instalamos previamente algunos prerequisitos necesarios:

apt-get install php5-gd librrds-perl libpng12-dev libjpeg8-dev libgd2-xpm-dev rrdtool

Descomprimimos el fichero, nos vamos al directorio creado y ejecutamos el “instalador”:

tar zxfv pnp4nagios-0.6.21.tar.gz
cd pnp4nagios-0.6.21/
./configure
*** 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.4.7
 RRDs Perl Modules: FOUND (Version 1.4007)
 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/apache2/conf.d/pnp4nagios.conf
 Review the options above for accuracy. If they look okay,type 'make all' to compile.
make all
make fullinstall

Debemos modificar al fichero de configuración de Apache de pnp4nagios para que localice correctamente el fichero de autentificación de usuarios de Nagios. Para ello editamos el fichero /etc/apache2/conf.d/pnp4nagios.con, el valor AuthUserFile para que apunte a la ubicación correcta en nuestra instalación:

AuthUserFile /etc/nagios3/htpasswd.users

Reiniciamos Apache:
service apache2 restart

Y accedemos a la página de PNP4Nagios “http://nuestro_host/pnp4nagios” donde nos mostrará el estado de nuestra configuración y si nos falta algo. Veremos que nos indica que no está activado “Apache mod_rewrite”

PNP4NagiosEnvironmentTest

Lo activamos y reiniciamos Apache:

a2enmod rewrite
service apache2 restart

Actualizamos nuestra página y debemos ver ya todos los test de instalación en verde. Tal
como nos indica renombramos el fichero “/usr/local/pnp4nagios/share/install.php” para que no siga realizando el test y nos muestre ya si la página de configuración.
Al actualizar nuestra página nos dará de nuevo 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

Es lógico ya que aún no tenemos configurado Nagios para que use PNP4Nagios y no existen gráficas. Bien es cierto que nos lo podría indicar claramente 🙂

Configuración de PNP4Nagios

Para configurar la generación de los archivos de gráficas tenemos varias opciones según describe la documentación de PNP a tal efecto. Usaremos “Bulk Mode with npcdmod” que es la más eficiente y además sencilla de configurar.
Configuramos en nuestro fichero de configuración nagios.cfg

process_performance_data=1
broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg

Reiniciamos Nagios y el demonio npcd de PNP4Nagios:
service nagios3 restart && service npcd start

Podemos verificar en el fichero log de Nagios: /var/log/nagios3/ nagios.log, la correcta inicialización del bróker:

[1377715669] npcdmod: Copyright (c) 2008-2009 Hendrik Baecker (andurin@process-zero.de) - http://www.pnp4nagios.org
 [1377715669] npcdmod: /usr/local/pnp4nagios/etc/npcd.cfg initialized
 [1377715669] npcdmod: spool_dir = '/usr/local/pnp4nagios/var/spool'.
 [1377715669] npcdmod: perfdata file '/usr/local/pnp4nagios/var/perfdata.dump'.
 [1377715669] npcdmod: Ready to run to have some fun!
 [1377715669] Event broker module '/usr/local/pnp4nagios/lib/npcdmod.o' initialized successfully.[1377715669] Finished daemonizing... (New PID=3736)

Configuración de objetos Nagios para PNP4Nagios.

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. Creamos unos templates para aplicarlos luego a los objetos.
Creamos p.e. el fichero /etc/nagios3/conf.d/ templates_pnp4nagios.cfg y 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 adicionalmente a la habitual dicha plantilla. Un ejemplo con un host y un servicio:

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 objetos… aquí.
Para activar el efecto popup (gráfico al pasar el ratón por el icono de gráfico en el servicio de Nagios) es necesaria una operación adicional que es copiar un fichero de los fuentes de PNP a la config web de Nagios:

cp pnp4nagios-0.6.21/contrib/ssi/status-header.ssi /usr/share/nagios3/htdocs/ssi/status-header.ssi

Reiniciamos nagios, ncmd (módulo de pnp) y apache:
service npcd restart && service nagios3 restart && service apache2 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 accedemos de nuevo al GUI de PNP4Nagios, http://servidor/pnp4nagios, veremos que ya no nos da el error. Esperando un poco tendremos ya incluso gráficas con valores. Vemos que PNP4 es muy intuitivo, a la izquierda gráficas clásicas por intervalos de tiempo, a la derecha selección de hosts y/o servicios. También tenemos opciones para seleccionar intervalos de tiempo concretos, exportar a pdf, xml,…
¿PNP4Nagios nos va a crear los ficheros rrd y realizar gráficas de todos los tipos de servicio que tengamos en Nagios? La respuesta es no, de entrada. Por defecto tiene plantillas tipo para muchos servicios clásicos y una genérica para valores numéricos por lo tanto estaremos cubiertos es la mayoría de servicios que añadamos. ¿Y si no tiene plantilla? Podremos crearnos una. De momento dejamos entrar en profundidad para otro artículo.
Para saber más de PNP4Nagios échale un ojo al artículo de Características.
Acuérdate de activar el inicio del demonio npcd por defecto ya que parece que la instalación no lo hace:

update-rc.d npcd defaults

Check_mk

Vamos ahora con el siguiente, check_mk. Para tener la última versión usaremos el instalador que trae. Siempre es mejor paquetes pero… Además check_mk evoluciona a pasos agigantados y si queremos tener y actualizar las últimas versiones esta es la única forma.
Instalamos prerrequisitos necesarios:

apt-get install build-essential xinetd libapache2-mod-python sudo

Necesitamos también añadir el usuario de Apache al grupo de Nagios y creamos un directorio adicional que nos será necesario:

usermod -a -G nagios www-data
mkdir /var/log/nagios3/rw
chown nagios.nagios /var/log/nagios3/rw -R

Nos bajamos la última versión de check_mk de su página de downloads, en nuestro caso instalaremos una versión “Innovation” check_mk- 1.2.3i1. Si es para producción mejor instalar la última versión estable.
Actualización (06/09/2015): Las versiones recientes “libres” de check_mk se denominan Check_MK Raw Edition (CRE). Dichas versiones incorporan además de check_mk todo el software adicional (previamente denominado OMD). Para obtener el paquete fuente de check_mk mencionado en este artículo tienes que bajar la versión CRE, descomprimirla y localizar el paquete tar.gz de check_mk en packages/check_mk/

La copiamos a nuestro servidor la desempaquetamos y lanzamos la instalación:

tar zxfv check_mk-1.2.3i1.tar.gz
cd check_mk-1.2.3i1/
./setup.sh

Nos sugiere rutas para colocar todo el software y nos detecta correctamente rutas de Nagios para la correcta integración con este. Debemos poner más atención a los valores que nos marca con fondo azul como “default” ya que son los que no detecta automáticamente. OJO: Debemos cambiar el valor siguiente :
Nagios command pipe
Complete path to the Nagios command pipe. check_mk needs write access
to this pipe in order to operate:
default –> /var/log/nagios/rw/nagios.cmd): /var/log/nagios3/rw/nagios.cmd

No instalamos “check_mk Event Console” de momento (la probaremos más adelante). Siempre podemos volver a ejecutar la instalación para instalar este módulo o cambiar algo. El resumen de las ubicaciones que el mismo nos da al final :

Debian7-check_mk-config

 

Nos deja un archivo en nuestro home “.check_mk_setup.conf” con dicha información y que no conviene borrar porque lo usará en sucesivas instalaciones / actualizaciones.
Reiniciando: service apache2 restart && service npcd restart && service nagios3 restart
Abrimos la página: http://servidor/check_mk, y ya tenemos funcionando al colega.

check_mk_gui_main

Si queremos empezar a jugar con check_mk podemos seguir por este interesante artículo.

Nagvis.

Para instalar Nagvis haremos lo mismo que con check_mk, lo bajamos de su página y lo instalaremos mediante su script de instalación. En un futuro realizaremos un análisis más en profundidad de este pero de momento, si no sabes de que va digamos que te permite, sobre un… dibujo (foto, visio,… -guardado como imagen-) colocar iconos que representan en tiempo real (cambio de estado / icono de -verde,amarillo, rojo, azul) host y/o servicios de Nagios. Además puedes pinchar sobre ellos para que te muestren el objeto en nagios, puedes encadenar estos mapas (dibujos) para que te manden unos a otros… Échale un ojo
Algunos requisitos para Nagvis que aún no estarán instalados:

apt-get install graphviz libjson-xs-perl libapache2-mod-php5 php-gettext php5-cgi php5-cli php5-sqlite sqlite3 rsync

Descompimimos y lanzamos la instalación:

tar zxfv nagvis-1.7.9.tar.gz
cd nagvis-1.7.9/
./install.sh

Marcamos en azul las respuestas importantes. No es todo lo claro que debiera en las preguntas…

+------------------------------------------------------------------------------+
| Welcome to NagVis Installer 1.7.9 |
+------------------------------------------------------------------------------+
| This script is built to facilitate the NagVis installation and update |
| procedure for you. The installer has been tested on the following systems: |
| - Debian, since Etch (4.0) |
| - Ubuntu, since Hardy (8.04) |
| - SuSE Linux Enterprise Server 10 and 11 |
| |
| Similar distributions to the ones mentioned above should work as well. |
| That (hopefully) includes RedHat, Fedora, CentOS, OpenSuSE |
| |
| If you experience any problems using these or other distributions, please |
| report that to the NagVis team. |
+------------------------------------------------------------------------------+
| Do you want to proceed? [y]: y
+------------------------------------------------------------------------------+
| Starting installation of NagVis 1.7.9 |
+------------------------------------------------------------------------------+
| OS : Debian GNU/Linux 7 |
| |
+--- Checking for tools -------------------------------------------------------+
| Using packet manager /usr/bin/dpkg found |
| |
+--- Checking paths -----------------------------------------------------------+
| Please enter the path to the nagios base directory [/usr/sbin/nagios3]: /etc/nagios3
| nagios path /etc/nagios3 found |
| Please enter the path to NagVis base [/usr/sbin/nagios3/nagvis]: /etc/nagvis
| |
+--- Checking prerequisites ---------------------------------------------------+
| PHP 5.4 found |
| PHP Module: gd 5.4 found |
| PHP Module: mbstring compiled_in found |
| PHP Module: gettext compiled_in found |
| PHP Module: session compiled_in found |
| PHP Module: xml compiled_in found |
| PHP Module: pdo compiled_in found |
| Apache mod_php found |
| Checking Backends. (Available: mklivestatus,ndo2db,ido2db,merlinmy) |
| Do you want to use backend mklivestatus? [y]: y
| Do you want to use backend ndo2db? [n]:
| Do you want to use backend ido2db? [n]:
| Do you want to use backend merlinmy? [n]:
| Livestatus Socket (/etc/nagios3/var/rw/live) MISSING |
| Valid socket formats are: tcp:127.0.0.1:7668 or unix:/path/to/live |
Please enter your MKLivestatus socket: unix:/var/log/nagios3/rw/live
| PHP Module: sockets compiled_in found |
| Graphviz 2.26 found |
| Graphviz Module dot 2.26.3 found |
| Graphviz Module neato 2.26.3 found |
| Graphviz Module twopi 2.26.3 found |
| Graphviz Module circo 2.26.3 found |
| Graphviz Module fdp 2.26.3 found |
| SQLite 3.7 found |
| |
+--- Trying to detect Apache settings -----------------------------------------+
| Please enter the web path to NagVis [/nagvis]:
| Please enter the name of the web-server user [www-data]:
| Please enter the name of the web-server group [www-data]:
| create Apache config file [y]:y
……

A partir de aquí básicamente debería encontrar todo por defecto y aceptarlo hasta finalizar la instalación donde nos proporciona datos importantes:

| What to do next? |
| - Read the documentation |
| - Maybe you want to edit the main configuration file? |
| Its location is: /etc/nagvis/etc/nagvis.ini.php |
| - Configure NagVis via browser |
| <http://localhost/nagvis/config.php> |
| - Initial admin credentials: |
| Username: admin |
| Password: admin |

Nos ha instalado todo en /etc/nagvis… donde le dijimos vale pero… Reiniciando:
service httpd restart && service npcd restart && service nagios restart

URL de Acceso: http://servidor/nagvis

Si al acceder a la URI nos diera el error: “The attribute socket in section backend_live_1 in main configuration file does not match the correct format. Please review your configuration.”

Debemos corregir en /etc/nagvis/etc/nagvis.ini.php en la sección indicada el valor del socket que en nuestro caso sería: socket=”unix:/var/log/nagios3/rw/live”

Usuario y contraseña por defecto-> Username: admin, Password: admin, o para invitados: Username: guest, Password: guest

A partir de aquí, y para no repetirme, puedes ver el final de artículo de instalación en Redhat / Centos, apartado final de Nagivs, donde especifico un poco los pasos iniciales para moverte por este…

Otros artículos que te pueden ser de interés para continuar con la configuración de tu Nagios.:

5 thoughts on “Instalación de Nagios 3, PNP4Nagios, check_mk y Nagvis en Debian 7 (wheezy)

  1. Ezequiel Celiz

    Buenas, muy lindo el tutorial. Completísimo!
    Te comento que estoy teniendo un problema con NagVis que capaz, te pasó y quisiera saber si lo pudiste solucionar.
    Es cuando ponemos alertas de sonidos a todos los estados por los que puede pasar un objeto(host).
    En el archivo de configuración nagvis.ini.php se muestra un listado de todos estados y una prioridad.
    El estado que mas prioridad reproduce la alerta pero los demás quedan opacados.
    Yo necesito en particular que funcionen juntos el estado DOWN y el OK pero no he podido hacerlo.
    Te ha pasado? tenes idea cual es la configuración de prioridades que hay que usar para que funcionen 2 o mas estados juntos?

    Saludos!
    Ezequiel

    Reply
    1. eldespistado1 Post author

      Que tal Ezequiel.
      Pues nunca he usado esa característica. Por lo que veo esos estados efectivamente se comportan como dices, el estado con número más alto es el que tiene prioridad y obvia los demás. Como se usa para mostrar la apariencia de estos en el Nagvis (además de los sonidos) no pareces tener más opciones.

      Siento no poder ayudarte.
      Un saludo

      Reply
  2. Gio

    muy buen how to, excelente explicacion me quedo todo claro funcionando perfect en una mañana…. Gracias

    Reply
  3. Ivanin

    Esta entrada no es valida en el fichero nagios.cfg:
    config_file=/usr/local/pnp4nagios/etc/npcd.cfg

    Saludos.

    Reply
  4. Pier

    Buenas, un post muy completo, muchas gracias.

    Tengo un pequeño problema con PNP4Nagios. Esta instalado y corriendo perfectamente, pero cuando pincho sobre el boton Nagios Availability Report, me arroja un not found. Todo viene porque la nagios base en el fichero config.php esta apuntando a /nagios/cgi-bin cuando en realidad tiene que apuntar a /nagios3/cgi-bin. El problema viene cuando modifico el fichero config.php reinicio los servicios, apache, e incluso reinicio la máquina pero no carga la nueva configuración. Que puedo hacer???

    Muchas gracias de antemano, un saludo.

    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.