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.
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.
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 ??? .
Probaste desde consola con el usuario nagios? Prueba…
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 ….
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.
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
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.
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.
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.