En esta entrada vamos a ver cómo instalar Nagios Core en Debian 9 Stretch paso a paso, de forma que puedas monitorizar y supervisar tu servidor o VPS Debian y sus servicios desde la interfaz web de esta potente aplicación, así como otras máquinas remotas.
Tabla de contenidos
- Antes de instalar Nagios Core en Debian 9
- Cómo instalar los plugins de Nagios en Debian 9 Stretch
- Cómo instalar Nagios Core en Debian 9 Stretch
- Acceder a Nagios Core vía web en Debian 9
- Cómo configurar Nagios Core en Debian 9
- Cómo configurar las máquinas remotas Debian 9 con Nagios
- Cómo añadir máquinas remotas en Nagios Core
- Conclusión
Antes de instalar Nagios Core en Debian 9
Para poder completar esta guía de instalación de Nagios Core en Debian 9 Stretch necesitarás cumplir los siguientes requisitos mínimos:
- Uno o más sistemas Debian 9 Stretch actualizados.
- Servidor web Apache con PHP (en la máquina que actuará como servidor).
- Acceso a consola con un usuario con permisos de sudo o el mismo root.
- Conexión a Internet.
En esta guía haremos lo siguiente:
- Trabajaremos sobre una máquina Debian 9 (debian9.local.lan) que actuará como servidor central, en la que instalaremos los plugins de Nagios y Nagios Core, de modo que obtendremos información del estado de los servicios locales.
- Configuraremos otra máquina Debian 9 (debian92.local.lan) para que pueda supervisarse remotamente desde el servidor, para lo que instalaremos los plugins de Nagios y el servicio NRPE.
- Volveremos al servidor para instalar el plugin NRPE y configurar Nagios Core para poder monitorizar también la máquina remota.
Debido a la antigüedad de Debian 9 Stretch no podemos usar los paquetes incluidos en la distribución, por lo que descargaremos y compilaremos el código fuente de los lanzamientos actuales.
Para ello necesitaremos algunas herramientas que obtendremos de los repositorios de la distribución, por lo que actualizaremos su información:
~$ sudo apt update
E instalaremos dichas herramientas:
~$ sudo apt install -y ca-certificates gcc make unzip
Cómo instalar los plugins de Nagios en Debian 9 Stretch
Vamos a descargar los plugins de Nagios para Debian 9 Stretch visitando la web oficial de los desarrolladores donde encontraremos el enlace de descarga de la última versión disponible.
La instalación de los plugins de Nagios es común tanto para la máquina Debian 9 que actuará como servidor Nagios Core, como para las máquinas Debian 9 que monitorizaremos remotamente
Copiamos el enlace y descargamos el paquete con el código fuente de los plugins de Nagios desde consola con el comando wget:
~$ wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
Cómo compilar e instalar los plugins
Podemos descomprimir directamente el paquete en el directorio actual, ya que los archivos vienen organizados dentro de su propia carpeta:
~$ tar xf nagios-plugins-2.4.0.tar.gz
Cambiamos el directorio de trabajo a la carpeta que se acaba de crear:
~$ cd nagios-plugins-2.4.0/
Antes de empezar con el proceso de compilación instalaremos algunas librerías de desarrollo que son dependencias de ciertos plugins. En el archivo REQUERIMENTS se describe qué otras librerías de desarrollo son necesarias para cada plugin, por lo que puedes aprovechar para descargarlas también. Por ejemplo, si quieres un plugin para MySQL necesitarás también la librería default-libmysqlclient-dev:
$ sudo apt install -y libssl-dev default-libmysqlclient-dev
Y ya podemos ejecutar el script configure para comprobar los requisitos y configurar la compilación:
$ ./configure
Al terminar el configurador no deberías haber obtenido ningún error, así que pasamos a compilar:
$ make
Terminada la compilación, por fin podemos instalar los plugins de Nagios en Debian 9 Stretch mediante el objetivo install de make:
$ sudo make install
Ahora tenemos una carpeta /usr/local/nagios/ bajo la que encontraremos el subdirectorio libexec/, donde residen todos los plugins compilados. Puedes comprobar que funcionan simplemente ejecutándolos con los parámetros necesarios.
Por ejemplo, puedes usar el plugin check_apt sin parámetros:
~$ /usr/local/nagios/libexec/check_apt APT OK: 0 packages available for upgrade (0 critical updates). |available_upgrades=0;;;0 critical_updates=0;;;0
O el plugin check_disk indicando la partición principal:
~$ /usr/local/nagios/libexec/check_disk -x /dev/sda1 DISK OK - free space: /dev 487 MB (100,00% inode=100%); /run 98 MB (98,42% inode=100%); /dev/shm 498 MB (100,00% inode=100%); /run/lock 5 MB (100,00% inode=100%); /sys/fs/cgroup 498 MB (100,00% inode=100%); /run/user/1000 99 MB (100,00% inode=100%);| /dev=0MB;;;0;487 /run=1MB;;;0;99 /dev/shm=0MB;;;0;498 /run/lock=0MB;;;0;5 /sys/fs/cgroup=0MB;;;0;498 /run/user/1000=0MB;;;0;99
Es importante que conozcas los parámetros de los plugins que usarás para monitorizar los servicios que te interesen.
Por último, además del paquete oficial que hemos instalado, hay miles de plugins disponibles para controlar casi cualquier aspecto que nos interese del sistema. Es cuestión de buscar y realizar un proceso parecido.
Cómo instalar Nagios Core en Debian 9 Stretch
Ahora vamos a descargar Nagios Core para Debian 9 Stretch desde el sitio web del proyecto:
Nagios Core se instala en la máquina Debian 9 que actuará como servidor Nagios, desde donde se supervisarán tanto la propia máquina local como las máquinas remotas
Veremos en primer término el lanzamiento de la última versión estable de Nagios Core, la versión 4.4.5 en el momento de escribir esta guía. Copiaremos el enlace del paquete .tar.gz y lo descargaremos desde consola, situándonos en el directorio de trabajo previamente:
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
Cómo compilar e instalar Nagios Core
Como los archivos del paquete de Nagios Core vienen organizados en una carpeta, podemos descomprimir directamente en el directorio de trabajo:
~$ tar xf nagios-4.4.7.tar.gz
Cambiamos el directorio de trabajo a la nueva carpeta que se acaba de crear:
~$ cd nagios-4.4.7/
Antes de configurar la compilación, instalaremos algún requisito importante:
$ sudo apt install -y libgd-dev
Y ahora sí, lanzamos el configurador:
$ ./configure
Pasamos a compilar Nagios Core para Debian 9:
$ make all
Con Nagios Core compilado sólo queda instalarlo, pero los distintos pasos de la instalación están divididos en distintos objetivos de make. Habría que ejecutarlos secuencialmente:
$ sudo make install-groups-users $ sudo make install $ sudo make install-init $ sudo make install-commandmode $ sudo make install-config $ sudo make install-webconf $ sudo make install-daemoninit
Ya podemos salir de este subdirectorio:
$ cd ..
Le damos permisos al servicio web para que pueda manejar los comandos externos de Nagios:
~$ sudo usermod -a -G nagios www-data
E incluso eliminarlo:
~$ rm -rf nagios-4.4.7/
Debemos asegurarnos de que el módulo CGI de Apache esté instalado:
~$ sudo a2enmod cgi
Y reiniciaremos el servidor web para que cargue toda la nueva configuración:
~$ sudo systemctl restart apache2
Usuarios de Nagios Core
El acceso a la interfaz web de Nagios Core se realiza mediante usuario y contraseña, por lo que debemos crear el usuario nagiosadmin y su contraseña:
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
Si queremos añadir más usuarios que puedan acceder a la interfaz ejecutaremos el mismo comando, pero sin el parámetro -c:
~$ sudo htpasswd /usr/local/nagios/etc/htpasswd.users nagiosadmin2
Cualquier usuario que no sea nagiosadmin tendrá acceso restringido a ciertas funciones de Nagios Core. Será necesario editar el archivo /usr/local/nagios/etc/cgi.cfg para permitir el acceso a ciertas funciones a los usuarios adicionales.
Iniciar el servicio Nagios
Ahora tenemos un nuevo servicio presente en Debian 9, llamado nagios.service o sencillamente nagios. Está activado, por lo que arrancará con el sistema, pero no está iniciado, por lo que debemos arrancarlo con el comando systemctl:
~$ sudo systemctl start nagios
Acceder a Nagios Core vía web en Debian 9
Si has llegado hasta aquí, es hora de comprobar que Nagios Core está funcionando en tu sistema Debian 9. Para ello utilizaremos un navegador y como URL añadimos el alias /nagios a la dirección IP o nombre del servidor Debian 9 Stretch.
Por ejemplo, la máquina Debian 9 sobre la que se ha realizado esta guía responde al dominio debian9.local.lan, por lo que la URL http://debian9.local.lan/nagios es la que utilizamos:
Se nos pedirá que nos identifiquemos, para lo que usaremos el usuario que creamos anteriormente. Una vez facilitado usuario y contraseña accederemos a la página principal de la aplicación web Nagios Core:
Podremos ver que el servicio de Nagios Core está en funcionamiento, mostrándose incluso el PID con el que corre en Debian 9.
La configuración por defecto incluye la monitorización de una serie de servicios de la máquina local Debian 9, que podemos ver desde la opción «Services» del menú:
Ahora sólo queda configurar uno a uno los comandos que accederán a los distintos plugins para monitorizar los servicios de tu propia máquina.
Cómo configurar Nagios Core en Debian 9
Para configurar Nagios Core en Debian 9 Stretch debemos trabajar sobre el directorio de configuraciones, cuya ruta es /usr/local/nagios/etc/. El archivo principal es nagios.cfg:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Dentro de este archivo encontraremos información de muchas opciones de la configuración actual. Algunas directivas interesantes son las cfg_file y cfg_dir, que permiten incluir archivos y directorios de archivos de configuración, respectivamente. Entre los archivos que se incluyen podremos ver el que se ocupa de la configuración de la monitorización de la máquina local:
... # Definitions for monitoring the local (Linux) host cfg_file=/usr/local/nagios/etc/objects/localhost.cfg ...
Si cerramos nagios.cfg y abrimos el archivo localhost.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/localhost.cfg
Encontraremos los bloques que definen:
- Los datos de la máquina local, define host.
- El grupo al que pertenece la máquina local, define group.
- Los distintos servicios configurados, define service.
Dentro de las definiciones de los servicios encontramos directivas que podemos personalizar. Por ejemplo, la definición del servicio que comprueba el estado del disco duro:
define service { use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ }
Podemos ver que la directiva service_description es la que sirve para etiquetar el nombre del servicio, tal como se muestra en la interfaz web de Nagios Core.
Por otro lado, la directiva check_command indica el comando que se ejecuta para chequear el servicio, incluyendo los distintos parámetros, separados por el carácter !. Hay que tener en cuenta que el comando en sí no es un comando físico o llamada real al plugin de Nagios, sino una definición. Esto quiere decir que no existe el plugin check_local_disk en la carpeta libexec/ de Nagios. En realidad check_local_disk es una definición incluida en otro archivo de configuración, /usr/local/nagios/etc/objects/commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Encontraremos que el archivo commands.cfg a su vez está repleto de definiciones de comandos, a través de bloques define command. Siguiendo con el ejemplo anterior no será difícil encontrar la definición del comando check_local_disk:
... define command { command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ } ...
Vemos que la directiva command_name es la que define el nombre del comando como lo hemos visto antes, check_local_disk, mientras que la directiva command_line especifica la sintaxis real del comando. La variable $USER1$ contendría la ruta de los plugins (/usr/local/nagios/libexec), check_disk es el nombre del plugin, y los parámetros especificados incluyen variables ($ARG1$, $ARG2$ y $ARG3$) que se sustituirán por los valores usados en localhost.cfg (20%, 10% y /, respectivamente) o cualquier otro archivo que use esta definición de comando. Podemos comprobar que funciona usando el comando directamente en consola, sustituyendo las variables por los valores correspondientes que ya hemos visto en el ejemplo:
~$ /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p / DISK OK - free space: / 1482 MB (53,14% inode=73%);| /=1306MB;2366;2662;0;2958
Por lo tanto puedes modificar o crear tus propias definiciones de servicios usando las definiciones de comandos ya existentes, pero cambiando los valores de los parámetros. Y por otro lado puedes crear tus propios comandos en command.cfg especificando los plugins y sus parámetros de forma similar.
Cómo añadir un servicio
Para aclarar un poco todo lo anterior, vamos a añadir un nuevo servicio que supervisar en la máquina local. Por ejemplo, la comprobación de paquetes actualizables, estableciendo un nivel de alarma de 10 paquetes.
Empezaremos definiendo un nuevo comando en commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Añadiremos un bloque command al final del archivo:
... define command { command_name check_upgrades command_line $USER1$/check_apt -w $ARG1$ }
Guardamos y cerramos el archivo.
El comando se llama check_upgrades (podíamos haber usado cualquier otro nombre apropiado), usará el plugin check_apt con el parámetro -w y el valor que reciba desde el servicio.
$USER1$ se traducirá como la ruta a los plugins, y $ARG1$ con el valor que definamos más adelante en el servicio correspondiente.
Vamos a definir el nuevo servicio para la máquina local Debian 9, editando localhost.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/localhost.cfg
Al final del archivo añadiremos un nuevo bloque service:
... define service { use local-service host_name localhost service_description Paquetes actualizables check_command check_upgrades!10 }
Guardamos y cerramos los cambios.
Observa que la directiva check_command indica el comando que vamos a usar y los parámetros que se le enviarán, separados entre signos de exclamación. El comando especificado es check_upgrades, que acabamos de definir en commands.cfg.
Cualquier cambio que hagas en las configuraciones no entrará en funcionamiento hasta que recargues la configuración del servicio nagios:
~$ sudo systemctl reload nagios
Si volvemos a entrar en la interfaz de Nagios Core, veremos que la máquina local Debian 9 dispone de un servicio más bajo monitorización:
Así de sencillo es configurar comandos y servicios para Nagios Core en Debian 9 Stretch.
Cómo configurar las máquinas remotas Debian 9 con Nagios
En las máquinas que serán supervisadas desde el servidor Nagios Core instalaremos:
- Los plugins de Nagios, que es el mismo proceso descrito en la instalacion del servidor Nagios.
- El servicio NRPE, que permanecerá a la escucha de comandos procedentes del servidor Nagios, ejecutará los plugins necesarios y devolverá los resultados.
El primer paso, la instalación de los plugins de Nagios, ya se ha visto anteriormente, sólo habría que repetirlo tal cual en cada máquina remota.
Veamos el proceso de instalación del servicio NRPE, que se realizará de la misma forma en cada máquina remota.
Cómo descargar, instalar y configurar el servicio Nagios NRPE en Debian 9
Vamos a descargar Nagios NRPE para Debian 9 Stretch desde el sitio del proyecto:
Copiamos el enlace del paquete y descargamos desde consola con wget:
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
Descomprimimos el paquete en el directorio de trabajo:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio de trabajo a la carpeta que se acaba de crear:
~$ cd nrpe-4.0.3/
Configuramos la compilación:
$ ./configure
Y compilamos los binarios del servidor NRPE:
$ make nrpe
Creamos el usuario y grupo con el que correrá el servicio NRPE:
$ sudo make install-groups-users
Instalamos el servicio y sus archivos auxiliares:
$ sudo make install-daemon
Instalamos la configuración por defecto del servicio:
$ sudo make install-config
Y configuramos los scripts para el manejo del servicio:
$ sudo make install-init
Vamos a habilitar el nuevo servicio nrpe.service, o simplemente nrpe, para que inicie automáticamente con cada arranque de Debian 9 Stretch:
$ sudo systemctl enable nrpe.service
Antes de iniciar el servicio por vez primera, necesitamos configurarlo.
Cómo configurar el servicio NRPE en Debian 9 Stretch
Para configurar el servicio NRPE en Debian 9 Stretch editaremos el archivo nrpe.cfg:
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
Lo primero que debemos hacer es permitir las conexiones entrantes desde el servidor Nagios Core, para lo que buscaremos la directiva allowed_hosts:
... allowed_hosts=127.0.0.1,::1 ...
La configuración actual sólo permite conexiones locales, así que añadiremos a la lista la dirección del servidor Nagios Core:
... allowed_hosts=127.0.0.1,::1,debian9.local.lan ...
En este mismo archivo, más adelante encontraremos la definición de los comandos permitidos, unos habilitados y otros no. Por ejemplo:
... command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20 command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 ...
Puedes definir nuevos comandos, modificar los existentes, activar los desactivados, etc.
Vamos a modificar el comando check_hda1 porque en la máquina en la que realizamos este artículo en lugar de disco hda tenemos un disco sda, así que quedaría de esta forma:
... command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
También podemos activar el comando check_apt, que inicialmente está desactivado:
... ### SYSTEM UPDATES ### #command[check_yum]=/usr/local/nagios/libexec/check_yum command[check_apt]=/usr/local/nagios/libexec/check_apt ...
Y en general podemos hacer los cambios que necesitemos en cualquier momento. Guardados estos cambios, habrá que reiniciar o recargar el servicio, pero en esta ocasión lo iniciamos por vez primera:
~$ sudo systemctl start nrpe
En cualquier momento podremos comprobar el estado del servicio con el comando systemctl status nrpe
:
Cómo configurar el firewall UFW de Debian 9 para Nagios NRPE
Si tienes instalado el firewall UFW en Debian 9 necesitarás añadir una regla para permitir las conexiones entrantes al servicio:
~$ sudo ufw allow nrpe
Cómo añadir máquinas remotas en Nagios Core
Si además de la máquina local queremos supervisar remotas desde el servidor Nagios Core, debemos realizar lo siguiente:
- Instalar el plugin NRPE.
- Configurar Nagios Core.
Descargar, compilar e instalar el plugin NRPE
Descargaremos en el servidor Nagios Core el mismo paquete NRPE que hemos visto antes, ya que contiene tanto el servicio como el plugin:
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
Descomprimimos:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio de trabajo:
~$ cd nrpe-4.0.3
Configuramos la compilación:
$ ./configure
Compilamos el plugin:
$ make check_nrpe
Y lo instalamos:
$ sudo make install-plugin
Ya podemos abandonar y borrar el subdirectorio.
El plugin NRPE se instala en la misma ruta que el resto de plugins de Nagios, de hecho podemos probarlo desde consola y probar la conectividad con la máquina remota que acabamos de configurar:
~$ /usr/local/nagios/libexec/check_nrpe -H debian92.local.lan NRPE v4.0.3
El servicio remoto responde con la versión del mismo.
Configurar un comando para el plugin NRPE
Igual que el resto de los plugins locales (y de hecho el plugin NRPE es un plugin local) debemos crear un comando para manejarlo. Editaremos para ello el archivo commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Podemos añadir al final del archivo (o en la sección que consideres necesario) la definición para el comando:
... define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Guardamos y cerramos el archivo. Hemos llamado al comando igual que el plugin, aunque podíamos haber usado otro nombre que nos resulte sencillo de recordar.
Ahora crearemos un directorio para almacenar las configuraciones de las máquinas remotas:
~$ sudo mkdir /usr/local/nagios/etc/servers
Crearemos el archivo de configuración para la máquina remota que configuramos en pasos anteriores:
~$ sudo nano /usr/local/nagios/etc/servers/debian92.local.lan.cfg
Añadiremos los datos de la máquina remota:
define host { use linux-server host_name debian92.local.lan alias Debian 9 (remoto) address debian92.local.lan max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
Y a continuación añadimos las definiciones de todos los servicios que queramos supervisar, usando el comando que acabamos de crear:
... define service { use generic-service host_name debian92.local.lan service_description Carga de CPU check_command check_nrpe!check_load } define service { use generic-service host_name debian92.local.lan service_description Espacio libre en /dev/sda1 check_command check_nrpe!check_sda1 } define service { use generic-service host_name debian92.local.lan service_description Paquetes actualizables check_command check_nrpe!check_apt }
Guardamos los cambios y cerramos el archivo.
Observa que hemos incluido el comando remoto que modificamos (check_sda1) y el que activamos (check_apt) en la máquina remota.
Ya sólo queda que el servicio Nagios tenga en cuenta la configuración del directorio servers/. Para ello editamos el archivo principal, nagios.cfg:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Y buscamos esta línea:
... #cfg_dir=/usr/local/nagios/etc/servers ...
Observa que la ruta que creamos es la misma que aparece aquí por defecto, sólo tenemos que activarla:
... cfg_dir=/usr/local/nagios/etc/servers ...
Guardamos los cambios y recargamos la configuración del servicio Nagios:
~$ sudo systemctl reload nagios
Ya podemos acceder a la interfaz web de Nagios Core, donde en la sección «Services» aparecerá la máquina remota y el estado de los servicios que hemos configurado:
Justo lo que queríamos.
Conclusión
Ahora ya sabes cómo instalar Nagios Core en Debian 9 Stretch, por lo que puedes empezar a controlar el estado de tu servidor o VPS Debian 9 de forma sencilla gracias a su interfaz web. Sólo tienes que establecer qué parámetros del sistema quieres controlar y configurar los comandos adecuados mediante los plugins para mantenerlos vigilados. De hecho, el aspecto más importante de Nagios Core podría decirse que es saber qué plugin puede usarse para cierta tarea y cómo usarlo.
Si tienes alguna pregunta, duda, sugerencia o quieres notificar algún error, etc. puedes dejar un comentario.
¡Ah!, y si has conseguido realizar la instalación de Nagios Core en Debian 9 Stretch gracias a esta guía y quieres agradecérmelo, puedes hacerlo dejando una propina de 1 $ desde PayPal para una CocaCola:
¡Gracias!