NagiosQL. Introducción e instalación en Nagios 3.x / 4.x en Centos 6 (Redhat)

Introducción.

Una de las características que más se echan de menos cuando comienzas con Nagios es que la configuración de objetos hay que realizarla con ficheros de texto. Esto supone un problema añadido por la dificultad inicial de entrada del mundo de los objetos de Nagios y la sintaxis para definirlos. Para paliar esta “ausencia” existe software de terceros que nos proporciona un interface gráfico para la definición de objetos. Dos posibilidades interesantes son Nconf y NagiosQL. Vamos a ver el segundo ya que a día de hoy es el que permanece más activo.

En cualquier caso debemos preguntarnos previamente si realmente lo necesitamos. El software es bueno y muy manejable pero debemos tener en cuenta que pasaremos a realizar definiciones sobre listbox, checkbox,… en lugar de copy / pastes tradicionales. A lo mejor si manejas solo una instalación “tuya” prefieres los ficheros de texto pero si instalas Nagios para clientes puede ser más interesante para que el cliente pueda añadir sus propios objetos de forma “sencilla”.
Otro asunto a tener en cuenta es que si usamos check_mk que tiene su propia sintaxis de definición de objetos ya no podremos usar NagiosQL. En mi caso que me encanta check_mk lo tengo claro pero…

¿Como funciona? Sencillo. Básicamente lo que hacen tanto NagiosQL como Nconf es que la configuración de objetos de Nagios se realiza y guarda en una BBDD para posteriormente generar desde la información en esta los ficheros de configuración de Nagios. Esto supone que no debemos editar nunca dichos ficheros ya que cambiarán en posteriores modificaciones a través del GUI. Aunque bien es cierto que podríamos tener unos ficheros a mano por un lado y el resto los generados por NagiosQL.

¿Nos evita tener conocer la compleja relación entre objetos de Nagios? No realmente, pero si la simplifica. Para poder crear los objetos, aunque sea usando formularios de colorines, necesitaremos conocer como se relacionas estos para saber que estamos haciendo. Bien es cierto que el software nos guía bastante bien y tiene controles para no dejarnos meter la pata y que creemos los objetos adecuadamente.

Instalación de NagiosQL

La instalación se realizará siguiendo el PDF bastante bien documentado que podemos encontrar en la página de documentación de NagiosQL. Este artículo refleja la instalación en Centos / Redhat pero para es perfectamente válido para cualquier otra distro excepto en los paquetes que se instalan previamente que tendrán seguramente nombres diferentes en otras distros.

Requisitos de software

Los requisitos que necesitamos para la instalación según la documentación serían los siguientes:

Webserver like Apache 2.x
MySQL 5.x or greater
Nagios 2.x/3.x (local or remote) or a Nagios compatible monitoring system
PHP 5.2.0 or greater including:
PHP Module: Session
PHP Module: MySQL
PHP Module: gettext
PHP Module: filter
PHP Module: FTP (optional)
PECL Extension: SSH (optional)
Javascript activated in Webbrowser
Multilanguage Support

En nuestro caso lo instalaremos sobre Nagios 3 y Nagios 4 para probarlo sobre esta versión pero realmente no está soportada y no recomiendo usarlo sobre esta. De hecho hay al menos un par de detalles que no funcionan y por supuesto no soportará las nuevas funcionalidades de Nagios Core 4 (p.e. los nuevos parámetros en host / servicios). La instalación la realizamos sobre un Centos 6.4. Imagino que será idéntica con Redhat aunque con este a lo mejor necesitamos suscribirnos a algún repositorio adicional por algún paquete (lo que puede requerir tener una suscripción activa)
Partimos de la instalación de Nagios 3 realizada en un artículo previo y también la probamos sobre una de Nagios 4. . Tenemos ya varios de los requisitos instalados solo nos quedarían algunos que instalamos con:

yum install mysql-server php-pecl-ssh2 php-mysql

Configuramos mysql para arrancar en el inicio y le asignamos un password a root

service mysqld start
chkconfig mysqld on
mysqladmin -u root password PASSWORD

Directorios de configuración

NagiosQL usa sus propios directorios de configuración donde ubica sus ficheros. Los creamos.

mkdir -p /etc/nagiosql/hosts
mkdir /etc/nagiosql/services
mkdir -p /etc/nagiosql/backup/hosts
mkdir /etc/nagiosql/backup/services

Modificación de permisos.

Necesitamos darle a nuestro directorios permisos para que tanto el usuario de nagios como el de apache puedan acceder a este. En nuestro caso según realizamos la instalación previa podíamos haber usado un grupo común a ambos usuarios (nagioscmd) pero lo realizaremos según la documentación de NagiosQL, usando usuario de apache y grupo de nagios.

chown -R apache.nagios /etc/nagiosql

Además necesitamos darle permisos al usuario de apache (nagiosql es una app que corre sobre apache) a algunos ficheros de configuración de Nagios. Lo realizaremos según la documentación de NagiosQL. Para un fácil copy / paste un par de ejemplos:

En una instalación compilada de Nagios sería habitualmente con las siguientes rutas:

chown -R apache.nagios /usr/local/nagios/etc/nagios.cfg
chown -R apache.nagios /usr/local/nagios/etc/resource.cfg
chown -R apache.nagios /usr/local/nagios/etc/cgi.cfg
chown -R apache.nagios /usr/local/nagios/var/rw/nagios.cmd
chown -R apache.nagios /usr/local/nagios/var/nagios.log
chown -R apache.nagios /usr/local/nagios/var/spool/checkresults
chmod 660 /usr/local/nagios/etc/resource.cfg
chmod 660 /usr/local/nagios/etc/nagios.cfg
chmod 660 /usr/local/nagios/etc/cgi.cfg
chmod 660 /usr/local/nagios/var/rw/nagios.cmd
chmod 660 /usr/local/nagios/var/nagios.log
chmod 770 /usr/local/nagios/var/spool/checkresults

En una instalación por paquetes en Redhat / CentOS deberían ser las siguientes:

chown -R apache.nagios /etc/nagios/nagios.cfg
chown -R apache.nagios /etc/nagios/resource.cfg
chown -R apache.nagios /etc/nagios/cgi.cfg
chown -R apache.nagios /var/log/nagios/nagios.log
chown -R apache.nagios /var/spool/nagios/cmd/nagios.cmd
chown -R apache.nagios /usr/local/nagios/var/spool/checkresults
chmod 660 /etc/nagios/nagios.cfg
chmod 660 /etc/nagios/resource.cfg
chmod 660 /etc/nagios/cgi.cfg
chmod 660 /var/spool/nagios/cmd/nagios.cmd
chmod 660 /var/log/nagios/nagios.log
chmod 770 /usr/local/nagios/var/spool/checkresults

Configuración de Servidor Apache

Preparamos un directorio donde se alojará nuestra página de NagiosQL.

mkdir /opt/nagiosql
chown apache /opt/nagiosql/

Localizamos nuestro fichero de configuración php.ini (p.e. con “locate php.ini). En Centos/Redhat está en /etc/php.ini. Verificamos que los parámetros siguientes tengan este valor:

file_uploads = On
session.auto_start = 0
date.timezone = "Europe/Madrid"

El valor de date.timezone por supuesto variará según donde estés… “America/Buenos_Aires”, “America/Bogota”, “America/Mexico_City”, … En el php.ini nos indica una página del manual de PHP donde ver las configuraciones de zona.

Creación del fichero de configuración de apache. Crearemos en nuestro servidor web un fichero de configuración de apache para NagiosQL. En Centos / Redhat será:

/etc/httpd/conf.d/nagiosql.conf

Podemos configurarlo de forma básica la autentificación (usará autentificación de acceso a la BBDD mysql)

Alias /nagiosql "/opt/nagiosql"
<Directory "/opt/nagiosql">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Reiniciamos nuestro servidor de apache.

Instalación de NagiosQL

Debemos descomprimir el sofware en la carpeta para apache que creamos para alojar este y darle los permisos adecuados para nuestro usuario de apache. p.e. descomprimimos inicialmente en nuestro home y movemos los archivos:

tar zxfv nagiosql_320.tar.gz
mv nagiosql32/* /opt/nagiosql/
chown -R apache /opt/nagiosql
chmod 750 /opt/nagiosql/config

Reiniciamos apache y ya podemos acceder a nuestra página web:
http://server_nagios/nagiosql

Nos aparecerá el Wizard de instalación y configuración de este.

nagiosql-wizard

Empezamos la instalación donde chequeará que cumplimos todas las dependencias y si no es así nos indicará lo que no cumplimos. Podemos solucionarlo instalado los necesario y refrescando la página inicial de configuración y pinchando de nuevo “Start Installation”.
Posteriormente nos aparecerán los datos necesarios para crear la BBDD. El asistente hace bien su trabajo y solo es necesario añadir

  • Administrative Database Password (Password de administración de nuestro mysql)
  • NagiosQL User Setup: La pass que tendrá nuesrtousuario admin de Nagiosql en mysql.

El resto lo dejamos por defecto. Podemos marcar también la casilla de “Import Nagios sample config” si queremos partir de una BBDD con algunos ejemplos de objetos Nagios.

Nos creará la BBDD y nos dará un aviso “Please delete the install directory to continue!”

rm -rf /opt/nagiosql/install

Cargamos la app de nagiosql y ya la tenemos funcionando (accedemos con el usuario admin que creamos en el asistente previo):  http://servidor/nagiosql/

Instalación de Servicepacks de NagiosQL

Nagiosql publica periódicamente servicepacks que básicamente consisten en la colección de archivos que han cambiado desde la publicación de la versión de versión a la que aplican. Para aplicarlos hay que bajar el zip, descomprimir y copiar encima de nuestra instalación.

Realizamos primero una copia de nuestro directorio por si acaso, p.e.:

cp -R /opt/nagiosql /opt/nagiosql.BCK

Descomprimimos y copiamos cada uno de los parches sobre los archivos originales:

unzip nagiosql_3.2.0_sp1.zip
cp NagiosQL_3.2.0_SP1/* /opt/nagiosql/ -R
unzip nagiosql_320_sp2.zip
cp NagiosQL_3.2.0_SP2/* /opt/nagiosql/ -R

Reiniciamos / recargamos Apache.

Configuración de Nagios

Por último nos falta lo más importante. Modificar la configuración de Nagios para que use los ficheros generados por NagiosQL. Modificamos nuestro fichero nagios.cfg. Primero: debemos comentar cualquier referencia cgf_file y cfg_dir, Segundo: añadimos las siguientes líneas:

cfg_file=/etc/nagiosql/contacttemplates.cfg
cfg_file=/etc/nagiosql/contactgroups.cfg
cfg_file=/etc/nagiosql/contacts.cfg
cfg_file=/etc/nagiosql/timeperiods.cfg
cfg_file=/etc/nagiosql/commands.cfg
cfg_file=/etc/nagiosql/hostgroups.cfg
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/hosttemplates.cfg
cfg_file=/etc/nagiosql/servicetemplates.cfg
#cfg_file=/etc/nagiosql/serviceescalation.cfg
cfg_file=/etc/nagiosql/servicedependencies.cfg
cfg_file=/etc/nagiosql/hostdependencies.cfg
cfg_file=/etc/nagiosql/hostescalations.cfg
cfg_file=/etc/nagiosql/hostextinfo.cfg
cfg_file=/etc/nagiosql/serviceextinfo.cfg
cfg_dir=/etc/nagiosql/hosts
cfg_dir=/etc/nagiosql/services

Debemos asegurarnos también que el siguiente valor para que NagiosQL pueda reiniciar Nagios:

check_external_commands=1

En este momento nos hemos quedado sin datos en Nagios hasta que configuremos objetos desde NagiosQL así que si reiniciamos Nagios no arrancará. Se quejará de que no tiene objetos.

Configuración Inicial mínima de NagiosQL

Accedemos a NagiosQL y los primero que haremos para tener un funcionamiento mínimo será:

  • Menú Administration / Config Targets / localhost / editar (el icono de herramientas).

Para una instalación de Nagios 3/4 compilado los valores habituales a cambiar serian:

Nagios base directory: /usr/local/nagios/etc/
Import directory: /usr/local/nagios/etc/
Nagios command file: /usr/local/nagios/var/rw/nagios.cmd
Nagios binary file: /usr/local/nagios/bin/nagios
Nagios process file: /usr/local/nagios/var/nagios.lock
Nagios config file: /usr/local/nagios/etc/nagios.cfg

Para una instalación de Nagios instalado por paquetes p.e. (Redhat, CentOS):

Nagios base directory: /etc/nagios/
Import directory: /etc/nagios/objects/
Nagios command file: /var/spool/nagios/cmd/nagios.cmd
Nagios binary file: /usr/sbin/nagios
Nagios process file: /var/run/nagios.pid
Nagios config file: /etc/nagios/nagios.cfg

En general, da igual como esté instalado, busca cuidadosamente los ficheros que tienes que configurarle a NagiosQL ya que la mayoría de los posibles errores que puedan surgir están en esta configuración y en los permisos.

Generar objetos a partir de los ejemplos que trae instalados.
NagiosQL trae configurados algunos objetos (hosts, servicios,…). A no ser que no marcáramos durante la instalación la opción “Import Nagios sample config”. Para empezar a analizarlo nos valen esos objetos pero debemos decirle que genere los ficheros de configuración a partir de estos. Lo haremos desde Menú Tools / Nagios control . Vamos ejecutando todas las opciones:

  • Write monitoring data
  • Write additional data
  • Check configuration files
  • Restart Nagios.

Sobre Nagios 3 todo debería ir ya perfecto. Si somos intrépidos y a día de hoy hemos instalado NagiosQL sobre Nagios 4… no se realizará el restart desde esta opción de NagiosQL (aunque diga que si). Debemos realizar un pequeño cambio en un fichero PHP detallado en este artículo. Algún otro problema con Nagios 4 también documentado.

A partir de aquí ya tenemos listo para usar nuestro NagiosQL. En un próximos artículo analizaremos las posibilidades.

8 thoughts on “NagiosQL. Introducción e instalación en Nagios 3.x / 4.x en Centos 6 (Redhat)

  1. johnnie

    ola, tengo un problema sucede que las notificaciones no se envian, desde nagios , tengo configurado postfix con gmail y al enviar por consola un mail todo perfecto llega pero desde nagios no pues en la interfaz de nagios en notificaciones se puede ver que se generan notificaciones a traverz del commando notify-host-by-email y notify-service-by-email pero en realidad al ver los logs de mail.. no aparece que este intentanto enviar el mail pero si lo envio por consola conel commando mail -s “asunto ” ejemplo.com si se envia ..
    alguna idea de que esta mal echo en nagiosql ..?? que este impidiendo que se ejecute el comando notify-host-by email ??? .

    Reply
      1. johnnie

        gracia por responder, pues si desde consola nagios se envia , sucede que actualmente ya se envian desde nagios las notificaciones pero solamante cuando son generadas por servicios llegan super bien pero cuando la notificacion es de algun host no se envian el correo pero si consta en la tabla de notificaciones de la interfaz web de nagios… este problema ya me tien muy molesto y el tiempo para terminar mi trabajo ya se acerca y solo eso no funciona bn las notificaciones de los hots ….

        Reply
        1. eldespistado1 Post author

          Se me ocurre… Usan diferente check command. Pruebalos “a mano”, quizás el de host tenga algún carácter o algo distinto. Si consta en la tabla de notificaciones es que Navíos ejecuta el command pero este puede estar mal definido.

          Reply
  2. paloma

    Hola,

    He seguido tu post para instalar Nagiosql y cuando accedo a la url me dice que no tengo permisos.
    Estoy instalando en el mismo servidor nagios 4 y nagiosql

    He repasado los permisos y no veo nada raro

    Reply
    1. eldespistado1 Post author

      Que tal Paloma. Es extraño. Mira un par de cosas.
      1.- Que te tengas deshabilitado SELinux, que no lo menciono en el artículo y, estando activado, en esos directorios no funcionarán las webs.
      2.- Echa un ojo a los logs de Apache a ver si te dan más pistas.

      Reply
  3. jorge javier

    Buenas el problema que tengo es que me da un error de permisos, nagios me funciona bien pero no asi nagiosql, si pudieran echarme una mano, gracias.
    Forbidden

    You don’t have permission to access /nagiosql on this server.

    Reply
    1. eldespistado1 Post author

      Todo apunta s un problema de permisos. Revisa en el articulo la configuración de permisos para el usuario de apache en /opt/nagiosql. Vuelve a aplicarlos.

      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.