Instalación de Nagios 3, PNP4Nagios, check_mk y Nagvis en Centos 6.4 / Redhat 6.4

A continuación vamos a 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 (Si buscar el artículo para Nagios 4, aunque no con todos los componentes, los puedes encontrar aquí). IMPORTANTE (06/09/2015): En el meńu “Guia de artículos” de este blog puedes encontrar esta misma configuración con Debian 7 y 8 y con Redhat / Centos 6 y 7.

Primero aclarar que 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 probablemente. El (mi) problema radica en que la última versión (0.56) es de hace unos meses y check_mk en concreto ha introducido muchas novedades desde entonces. Si tenemos todo instalado por separado siempre podemos actualizar componentes según nos interese. Otra opción es irse a la versión testing 0,57 de OMD de Consol Labs que está más actualizada pero no es o tiene porque ser estable.
Te puede interesar tambíén  el artículo Instalación de Nagios Core 4 + PNP4Nagios + Check_mk + Nagvis en CentOS 7 – Redhat 7.

Ojo: Si vamos a instalar en Redhat necesitaremos tener registrado el sistema en rhn y activar el canal “rhel-x86_64-server-optional-6 channel” para nuestro servidor ya que necesitará paquetes de este canal (rrdtool-perl y otros módulos de perl). Si no tenemos suscripción pagada para Redhat… pues mejor usar CentOS.

Instalación de prerequisitos para Nagios:

yum install -y gd gd-devel httpd php gcc glibc glibc-common

Desactivamos SELinux, editando el fichero /etc/sysconfig/selinux y cambiando el valor SELINUX=disabled. Reiniciamos el sistema. Si quieres lidiar con SELinux es tu problema. Para Nagios podría ser viable que está contemplado pero para el resto del software…

Los repositorios de Redhat y CentOS no tienen paquetes para Nagios así que como no nos apetece ponernos a instalar y compilar cogeremos los de Fedora. Instalamos el repositorio EPEL.

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install -y nagios*

Así… a lo bestia… nos instala mogollón de paquetes y por dependencias PNP4Nagios también, ese nos lo ahorramos 🙂

Iniciamos nuestros servicios y los dejamos en automático:

service httpd start
service nagios start
service npcd start
chkconfig nagios on
chkconfig httpd on
chkconfig npcd on

Miramos nuestro firewall iptables para permitir acceso al puerto 80. P.e.:

# vi /etc/sysconfig/iptables
 -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
 -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT

Accedemos al inteface web de Nagios: http://192.168.1.39/nagios/ (usario:nagiosadmin, pass: nagiosadmin).

Podemos cambiar la contraseña de Nagios: htpasswd /etc/nagios/passwd nagiosadmin

nagios_gui_main

Que mono de aspecto… nos avisa incluso que hay ya una nueva versión. En principio en Nagios Core renunciamos a estar a la última por la comodidad de instalar el paquete existente de nuestra distribución Linux. En otras aplicaciones quizá no ya que las actualizaciones suelen ser más frecuentes y más interesantes.

PNP4Nagios.

Comentábamos que nos instaló también PNP4Nagios con dependencias, de hecho dejamos activado y ejecutándose el servicio npcd que este necesita. Si accedemos a la URI de PNP, http://servidor/pnp4nagios , no aparecerá un error “perfdata directory “/var/lib/pnp4nagios/” is empty”. No hay gráficas porque Nagios no está configurado para usar PNP. Nos ponemos con ello.
En el directorio de configuración de PNP4 hay un fichero “/etc/pnp4nagios/nagios.cfg” con la configuración adecuada que debemos poner en nuestro fichero de nagios “/etc/nagios/nagios.cfg”. Ojo porque hay varias formas de configurar PNP4 y elegiremos la marcada en la última sección “Module mode”. Hay que tener cuidado ya que la ruta del broker no es correcta, la configuración con ruta correcta a poner en fichero de Nagios es:

#
# Module mode
# 
event_broker_options=-1 # minimum 4+8=12
process_performance_data=1
broker_module=/usr/lib64/nagios/brokers/npcdmod.o config_file=/etc/pnp4nagios/npcd.cfg

Reiniciamos nagios y ncmd (módulo de pnp): service npcd restart && service nagios restart

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

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.

En el fichero /etc/nagios/objects/templates.cfg 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. Por ejemplo.

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

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:

cp /usr/share/doc/pnp4nagios-0.6.20/contrib/ssi/status-header.ssi 
 /usr/share/nagios/html/ssi/status-header.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

Para saber más de PNP4Nagios échale un ojo al artículo de Características.

check_mk.

Vamos ahora con el siguiente, check_mk. No he localizado empaquetado de versión reciente para Redhat / Centos así que 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 forma. También puedes empaquetarlo tu mismo y ponerlo a disposición del pueblo si te animas 🙂
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/

Instalamos el módulo de python para Apache previamente, lo requiere check_mk.

yum install mod_python

Nos bajamos la última versión de check_mk de su página de downloads, en nuestro caso check_mk-1.2.2p1. La copiamos a nuestro servidor la desempaquetamos y lanzamos la instalación.

tar zxfv check_mk-1.2.2p1.tar.gz
cd check_mk-1.2.2p1
./setup.sh

Nos sugiere rutas para colocar todo el software y nos detecta correctamente rutas de Nagios para la correcta integración con este. 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 :

check_mk_install_resume

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 httpd restart && service npcd restart && service nagios restart

Abrimos la página: http://servidor/check_mk, y ya tenemos funcionando al colega.

check_mk_gui_main

 

Siguiente… Nagvis… 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:

yum install php-mbstring php-pdo yum graphviz

Descompimimos y lanzamos la instalación:

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

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

+--- Checking paths -----------------------------------------------------------+
| Please enter the path to the nagios base directory [/usr/sbin/nagios]: /etc/nagios
| nagios path /etc/nagios found |
| Please enter the path to NagVis base [/usr/sbin/nagvis]: /etc/nagvis
| |
+--- Checking prerequisites ---------------------------------------------------+
| PHP 5.3 found |
| PHP Module: gd php found |
| PHP Module: mbstring php found |
| PHP Module: gettext compiled_in found |
| PHP Module: session compiled_in found |
| PHP Module: xml compiled_in found |
| PHP Module: pdo php found |
| Apache mod_php found |
| Checking Backends. (Available: mklivestatus,ndo2db,ido2db,merlinmy) |
| Do you want to use backend mklivestatus? [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/nagios/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/spool/nagios/cmd/live
| Valid socket formats are: tcp:127.0.0.1:7668 or unix:/path/to/live |
| Please enter your MKLivestatus socket: unix:/var/spool/nagios/cmd/live
| PHP Module: sockets compiled_in found |
| Graphviz 2.26 found |
| Graphviz Module dot 2.26.0 found |
| Graphviz Module neato 2.26.0 found |
| Graphviz Module twopi 2.26.0 found |
| Graphviz Module circo 2.26.0 found |
| Graphviz Module fdp 2.26.0 found |
| SQLite 3.6 found |
| |
+--- Trying to detect Apache settings -----------------------------------------+
| Please enter the web path to NagVis [/nagvis]:
| Please enter the name of the web-server user [apache]:
| Please enter the name of the web-server group [apache]:
| create Apache config file [y]:
| |
+--- Checking for existing NagVis ---------------------------------------------+
| |
+------------------------------------------------------------------------------+
| Summary |
+------------------------------------------------------------------------------+
| NagVis home will be: /etc/nagvis |
| Owner of NagVis files will be: apache |
| Group of NagVis files will be: apache |
| Path to Apache config dir is: /etc/httpd/conf.d |
| Apache config will be created: yes |
| |
| Installation mode: install |
| |
| Do you really want to continue? [y]:
…
...+------------------------------------------------------------------------------+
| Installation complete |
| |
| You can safely remove this source directory. |
| |
| For later update/upgrade you may use this command to have a faster update: |
| ./install.sh -n /etc/nagios -p /etc/nagvis -l "unix:/var/spool/nagios/cmd/live" -b mklivestatus -u apache -g apache -w /etc/httpd/conf.d -a y
| |
| 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 |

Bueno, un poco bruto si que es. 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
Usuario y contraseña -> Username: admin, Password: admin, o para invitados: Username: guest, Password: guest
Nagvis no es digamos un producto super intuitivo. Si quieres empezar a jugar te recomiendo:

1.- Establecer el backend por defecto a nuestro check_mk livestatus para que obtenga los datos de nuestro nagios. Nagvis trae un montón de mapas de demo con un backend demo que muestra equipos de no se donde (puedes bucear en los ficheros de configuración de /etc/nagvis si quieres saber más).

nagvis_default_backend

2.- Borrar a saco todos los mapas que trae. Vale, puedes echarles un ojo antes…

nagvis_delete_maps

 

3.- Crear un mapa.
Usaremos de fondo un fichero gráfico cualquiera subido de nuestro ordenador, es para hacernos una idea.

nagvis_create_map

4.- En nuestro caso, una foto del desierto :-). Elegimos “MiMapa” que es como lo llamamos.

nagvis_mimapa

 

Nos aparece de fondo nuestra foto y seleccionamos Edit Map / Add icon / Equipo.

nagvis_add_host

Nos aparece una cruz para situar nuestro “equipo” (icono que representa a nuestro equipo -rojo, verder, amarillo, azul- en función de su estado). Vemos que en el listbox nos aparecen (o debieran aparecer) los equipos de nuestro Nagios. Seleccionamos uno. Se recarga el mapa y nos aparecerá un puntito amarillo (nuestro host lleva en Warning con un servicio desde el principio de este artículo 🙂 ). Si pasamos el ratón sobre dicho punto nos muestra el host con sus servicios y uno de ellos efectivamente en amarillo.

nagvis_host_show

Mola, ¿no?. Imagínate .. un punto más grande lo primero (al crear el mapa → Conjunto de iconos de mapa… elige uno más grande. Imagínate .. un precioso diagrama de red, de la SAN, de tus cluster de producción…. llenos de puntitos (con su texto, se puede añadir entre otras muchas cosas) que cambian de color en tiempo real en función del estado de los hosts / servicios que representan y que al pasar el puntero sobre ellos te dan la información de Nagios… Imagínate mapas que enlazan a otros mapas, que rotan por la pantalla de forma automática cada x tiempo…
Realmente chulo. Cierto que he aligerado el paso sobre el tema de Nagvis pero es que me quedo sin espacio. Para la próxima más.

Un par de muestras de instalaciones reales sobre diagramas con Visio (guardados como jpg -mapas-):

 

nagvis_sample1

 

nagvis_sample2

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

 

10 thoughts on “Instalación de Nagios 3, PNP4Nagios, check_mk y Nagvis en Centos 6.4 / Redhat 6.4

  1. David

    Enhorabuena por el trabajo.

    Acabo de instalar check_mk en mi Icinga siguiendo tus instrucciones (cambia alguna ubicación logicamente) y estoy descubriendo como funciona y la información que da.

    Luego seguiré con nagvis…

    Interesante este blog que descubrí ayer.

    Saludos

    Reply
  2. Pingback: Nagios Core 4 + PNP4Nagios. Instalación y configuración desde fuentes. | El Despistado.

  3. JoseLuis

    Felicidades de nuveo, por los artículos y el blog.
    He seguido las instrucciones y todo OK.
    Por dar una opinión creo que lo único que faltaría sería un Font-End para poder añadir los hosts y servicios, sin necesidad de utilizar la shell. Yo conozco NagiosQL ó centreon.
    ¿Sabéis si hay otras herramientas similares?
    Gracias.

    Reply
    1. eldespistado1 Post author

      Hace tiempo que no sigo los frontend pero en su día me gustaba mucho también “nconf”. Echarle un ojo a las características. Este y nagiosql eran mis preferidos. Si ambos tienen a día de hoy las mismas funcionalidades me quedaría con el que este mas “vivo”.

      Reply
    2. eldespistado1 Post author

      Ojo. Estos frontends son para la configuración de ficheros Nagios, si usas check_mk para configurar objetos no te valen. Para ese caso podrías usar WATO del propio check_mk, pero de momento lo veo mas bien para configurar objetos de forma rápida y ocasional.

      Reply
  4. Lizardo

    Hola, tengo un problema con check_mk y pnp4nagios.

    Nagios con pnp4nagios funciona perfectamente, me muestra su icono y el popup. Pero en check_mk me muestra un icono en forma de estrella(pnp4nagios) y al poner el mouse encima no muestra el popup, pero si hago click en el icono en forma de estrella me abre pnp4nagios con las graficas correspondientes al host o servicio. Cual puede ser el problema??

    Te agradecere cualquier ayuda que me puedas dar.

    saludos.

    Lizardo

    Reply
  5. Claudio

    Hola!
    Luego de instalar checkmk no puedo hacer login. Ingreso el usuario “nagiosadmin” y la contraseña pero vuelve a pedírmelo una y otra vez sin autenticarme con éxito. Verifiqué la ruta y el archivo en donde guarda las credenciales de acceso y son correctos.

    ¿Me podrían ayudar?

    Gracias.
    Saludos,
    Claudio-

    Reply
    1. eldespistado1 Post author

      Que tal Cláudio. Prueba a cambiarle la contraseña a ver…
      htpasswd -c fichero_htpass nagiosadmin
      Prueba también con otro navegador por di es un problema de cookies.
      Un saludo.

      Reply
  6. Javido Navido

    Como puedo hacer para que en el Nagios Map me salgan los iconos a la hora de generar el mapa, en el check_mk salen sin problemas, pero en la interface de Nagios no salen.

    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.