En este artículo veremos cómo instalar Nagios Core en Debian 10 Buster paso a paso, de modo que podrás monitorizar vía web los servicios de cualquier servidor o VPS Debian de forma local y remota, mediante Nagios Core, Nagios NRPE y los plugins de Nagios.
Tabla de contenidos
Antes de instalar Nagios en Debian 10 Buster
Si quieres seguir esta guía de instalación y configuración de Nagios Core en Debian 10 Buster debes satisfacer estos puntos básicos:
- Una máquina Debian 10 Buster actualizada.
- Servidor web Apache con PHP.
- Un usuario con privilegios de sudo o el propio root.
- Acceso a Internet.
En caso de no disponer del entorno necesario puede ser útil consultar la guía de instalación de Apache en Debian 10 y la guía de instalación de PHP en Debian 10.
También necesitaremos algunas herramientas básicas del sistema procedentes de los repositorios de la distribución, así que actulizamos las listas de paquetes:
~$ sudo apt update
E instalamos las herramientas que vamos a necesitar:
~$ sudo apt install -y ca-certificates gcc make unzip wget
Cómo instalar los plugins de Nagios en Debian 10
A pesar de que en los repositorios existen paquetes, para instalar los plugins de Nagios en Debian 10 Buster descargaremos y compilaremos la última versión desde la web oficial:
Realizaremos la descarga e instalación de los plugins de Nagios en todas las máquinas remotas que queramos monitorizar, y también en la máquina que actuará como servidor Nagios si queremos supervisar sus servicios locales.
Podemos descargar el paquete .tar.gz desde el navegador o, como haremos en este tutorial, copiar el enlace para descargarlo 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
Compilación e instalación de los plugins
El contenido del paquete que acabamos de descargar viene organizado en un directorio principal, por lo que podemos descomprimir el paquete en el directorio de trabajo:
~$ tar xf nagios-plugins-2.4.0.tar.gz
Y cambiamos el directorio de trabajo al nuevo directorio del código fuente de los plugins:
~$ cd nagios-plugins-2.4.0/
En primer lugar instalaremos algunas dependencias de ciertos plugins. Si ves alguna que claramente no te interese puedes eliminarla:
$ sudo apt install -y postgresql-server-dev-all libdbi-dev libldap2-dev default-libmysqlclient-dev libssl-dev dnsutils smbclient qstat fping
Concretamente, el paquete smbclient solicita cierto ajuste de configuración, que se puede dejar con el valor por defecto.
Puedes consultar más información sobre las librerías de desarrollo y comandos en el archivo REQUERIMENTS presente en el directorio actual.
Comenzaremos la configuración de la compilación:
$ ./configure
Ya podemos compilar los plugins que se ajusten a la configuración de nuestro sistema:
$ make
Para instalar los plugins de Nagios en Debian 10 Buster usaremos el siguiente comando
$ sudo make install
Ya podemos abandonar el directorio de trabajo y borrarlo.
Los plugins quedan instalados en el directorio /usr/local/nagios/libexec/ en forma de binarios que se pueden ejecutar directamente en línea de comandos. Vamos a probar alguno:
~$ /usr/local/nagios/libexec/check_disk -w 20% -c 5% -p / DISK OK - free space: / 1304 MiB (46,76% inode=79%);| /=1484MiB;2366;2810;0;2958
Otro ejemplo de plugin:
~$ /usr/local/nagios/libexec/check_users -w 5 -c 10 USERS OK - 2 users currently logged in |users=2;5;10;0
Y otro más:
$ /usr/local/nagios/libexec/check_http -H localhost HTTP OK: HTTP/1.1 200 OK - 10975 bytes in 0,051 second response time |time=0,051045s;;;0,000000 size=10975B;;;0
Cómo instalar Nagios Core en Debian 10 Buster
Vamos a descargar Nagios Core para Debian 10 Buster desde el sitio oficial de desarrollo del proyecto. Este proceso lo haremos solamente en el sistema Debian 10 Buster que actuará como servidor Nagios.
Descargamos el archivo desde consola:
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
Y lo descomprimimos en el directorio de trabajo:
~$ tar xf nagios-4.4.7.tar.gz
Al igual que en el caso de los plugins, Nagios Core se organiza en un subdirectorio que se acaba de crear y al que cambiaremos:
~$ cd nagios-4.4.7/
Instalamos la librería de desarrollo de GD:
$ sudo apt install -y libgd-dev
Ya podemos configurar la instalación:
$ ./configure --disable-ssl
Y compilamos los plugins:
$ make all
Instalación
La instalación está repartida en una serie de objetivos de make que enumeramos a continuación.
Comenzamos creando el usuario y grupo con el que correrá el servicio Nagios Core en Debian 10 Buster:
$ sudo make install-groups-users
Instalamos los archivos de Nagios Core en Debian 10:
$ sudo make install
Añadimos los archivos de configuración necesarios para el servidor web:
$ sudo make install-webconf
Instalamos los archivos con la configuración por defecto de Nagios Core:
$ sudo make install-config
Instalamos los scripts del servicio:
$ sudo make install-init
Y habilitamos el servicio Nagios para su inicio automático con cada arranque de Debian 10 Buster:
$ sudo make install-daemoninit
Configuramos el directorio para comandos externos:
$ sudo make install-commandmode
Podemos salir del directorio y eliminarlo.
En este momento ya podemos iniciar el servicio, ya que la configuración por defecto es perfectamente funcional:
~$ sudo systemctl start nagios
Para poder acceder a Nagios Core, debemos crear el usuario administrador, nagiosadmin:
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
Tendremos que introducir la contraseña y confirmarla.
Activar el módulo CGI de Apache
Nagios Core en Debian 10 necesita el módulo CGI del servicio web, que en el caso de Apache no suele estar activado por defecto:
~$ sudo a2enmod cgi
Por último, para que el servicio web pueda trabajar con comandos externos de Nagios deberá tener los permisos de grupo necesarios:
~$ sudo usermod -a -G nagios www-data
Reiniciamos Apache para que cargue el nuevo módulo:
~$ sudo systemctl restart apache2
Acceder a Nagios Core en Debian 10 Buster
Para acceder a Nagios Core en Debian 10 añadiremos la ruta /nagios a la dirección IP o dominio del sistema. Por ejemplo, en este tutorial el servidor Debian 10 es accesible en el dominio debian10.local.lan, por lo que usaremos http://debian10.local.lan/nagios como URL:
Se nos muestra una ventana para introducir las credenciales de acceso (el usuario nagiosadmin y la clave que hayamos creado), mostrándose a continuación la página principal:
Si accedemos a la sección «Hosts» del menú encontraremos que aparece la máquina local (el propio servidor Nagios Core Debian 10) ya configurada:
Obtendremos información sobre su estado general, última comprobación, etc.
Si accedemos a la sección «Services» veremos una lista de las máquinas monitorizadas (hasta el momento sólo la máquina Debian 10 local) y el estado de los servicios configurados y monitorizados por defecto:
Cómo configurar Nagios Core en Debian 10 Buster
Para configurar Nagios Core en Debian 10 Buster hemos de tener en cuenta que los archivos de configuración se reparten en el directorio /usr/local/nagios/etc/. El archivo objects/commands.cfg contiene la definición de los comandos que utilizan los plugins.
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Los comandos se definen como bloques en los que se define un nombre para el comando (que será usado desde otras configuraciones para llamar al comando), y la línea de comando que llama al binario del plugin, al que se pueden pasar argumentos fijos o variables. Por ejemplo:
... define command { command_name check_local_users command_line $USER1$/check_users -w $ARG1$ -c $ARG2$ } ...
El nombre que se utilizará desde otras configuraciones es check_local_users, que lanzará el plugin check_users, que es uno de los plugins de Nagios que instalamos y configuramos anteriormente. Para la línea de comandos se utilizan argumentos variables, como $USER1$ que contiene la ruta en la que se encuentra el plugin (/usr/local/nagios/libexec/ en Debian 10) o $ARG1$ y $ARG2$ que recibirán el número de usuarios que se consideran como alarmante y crítico, respectivamente.
Estos comandos se usan en múltiples archivos de configuración que definen sistemas, como la máquina local o las máquinas remotas. La máquina local está configurada en el archivo objects/localhost.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/localhost.cfg
Este archivo contiene la definición de máquina:
... define host { use linux-server host_name localhost alias localhost address 127.0.0.1 } ...
Podemos ver la plantilla que se usa (linux-server) y datos como el nombre de máquina y dirección.
Opcionalmente también podemos ver a qué grupo pertenece la máquina:
... define hostgroup { hostgroup_name linux-servers alias Linux Servers members localhost } ...
Y todos los servicios que se supervisan a través de llamadas a comandos. Por ejemplo, uno de los servicios que se definen es la supervisión del servicio web local:
... define service { use local-service host_name localhost service_description HTTP check_command check_http notifications_enabled 0 } ...
Vemos que el parámetro check_command hace referencia al comando check_http, que a su vez hace referencia a un comando definido en commands.cfg, que a su vez llama al plugin check_http (casualmente el comando y el plugin tienen el mismo nombre).
Podemos añadir un nuevo servicio usando el comando que vimos antes como ejemplo, check_local_users, añadiendo la siguiente definición:
... # Chequea los usuarios con sesión iniciada define service { use local-service host_name localhost service_description Usuarios locales check_command check_local_users!3!5 }
Guardamos los cambios y cerramos el archivo.
Finalmente el archivo nagios.conf:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Se encarga, entre otras muchas cosas, de cargar las configuraciones de otros archivos, como por ejemplo commands.cfg y localhost.cfg:
... # You can specify individual object config files as shown below: cfg_file=/usr/local/nagios/etc/objects/commands.cfg ... # Definitions for monitoring the local (Linux) host cfg_file=/usr/local/nagios/etc/objects/localhost.cfg ...
Cualquier cambio en estos y otros archivos de configuración se aplicará al recargar la configuración del servicio Nagios Core:
~$ sudo systemctl reload nagios
Si has introducido servicios nuevos, como hemos hecho en el tutorial, en unos instantes se reflejarán en la interfaz de Nagios Core:
Cómo instalar Nagios NRPE en Debian 10 Buster
Vamos a instalar y configurar Nagios NRPE en Debian 10 Buster, en la máquina remota que monitorizaremos desde el servidor Nagios Core. Se supone que ya has instalado previamente los plugins de Nagios en esta máquina, por lo que el único trabajo que queda es instalar el servicio NRPE.
Para ello descargaremos desde el sitio oficial el paquete con la última versión de Nagios NRPE para Debian 10 Buster:
Copiamos el enlace del paquete .tgz y lo 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 archivo en el directorio actual:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio de trabajo:
~$ cd nrpe-4.0.3/
Configuramos la compilación:
$ ./configure
Compilamos:
$ make nrpe
Creamos el usuario y grupo con el que correrá el servicio NRPE:
$ sudo make install-groups-users
Instalamos el script del servicio:
$ sudo make install-daemon
También instalamos los archivos de configuración del servicio NRPE:
$ sudo make install-config
Instalamos los scripts de manejo del servicio:
$ sudo make install-init
Abandonamos el directorio y lo eliminamos.
Y ya podemos iniciar el servicio:
~$ sudo systemctl start nrpe
Comprobamos su estado:
~$ systemctl status nrpe
Para asegurarnos de que el servicio esté siempre disponible, lo habilitaremos y así Nagios NRPE iniciará en cada arranque de Debian 10:
~$ sudo systemctl enable nrpe
Configurar el servicio NRPE en Debian 10
Para poder conectar con el servidor Nagios tendremos que editamos el archivo de configuración de Nagios NRPE:
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
Buscamos la directiva allowed_hosts:
... allowed_hosts=127.0.0.1,::1 ...
Y añadimos la dirección del servidor Nagios Core que monitorizará esta máquina:
... allowed_hosts=127.0.0.1,::1,debian10.local.lan ...
Este archivo además debe contener la definición de los comandos que podrá utilizar el servidor Nagios Core. De hecho, existen algunos comandos de prueba activados y otros muchos desactivados, como 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 borrarlos, desactivarlos, modificarlos o añadir nuevos comandos. Por ejemplo, modificaré el comando chech_hda1, ya que en esta máquina remota no existe unidad /dev/hda, sino /dev/sda, quedando por tanto el comando así:
... command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
Observa que hemos cambiado también el nombre del comando, pasando de check_hda1 a check_sda1.
Al terminar los ajustes, guardamos y cerramos el archivo, y recargamos la configuración del servicio NRPE:
~$ sudo systemctl reload nrpe.service
Cómo configurar el firewall UFW para Nagios NRPE en Debian 10
Si tienes activado el firewall UFW en la máquina remota Debian 10 hay que añadir la siguiente regla para permitir las conexiones entrantes desde el servidor Nagios Core:
~$ sudo ufw allow nrpe
Cómo añadir máquinas remotas en Nagios Core
De vuelta en el servidor Nagios Core, descargamos Nagios NRPE:
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
Descomprimimos el paquete:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio activo:
~$ cd nrpe-4.0.3/
Configuramos la compilación:
$ ./configure
En lugar de compilar el servicio, en el servidor Nagios Core compilamos el plugin NRPE:
$ make check_nrpe
Y lo instalamos:
$ sudo make install-plugin
Podemos probarlo directamente en consola pasando como argumento la dirección de la máquina remota Debian 10 que hemos configurado anteriormente:
~$ /usr/local/nagios/libexec/check_nrpe -H debian102.local.lan NRPE v4.0.3
La máquina remota responde con la versión del servicio NRPE instalado.
Configurar Nagios Core para añadir máquinas remotas
Crearemos un comando para manejar el plugin NRPE, para lo que editaremos el archivo commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Y añadiremos el bloque para la definición del nuevo comando, junto al resto de definiciones:
... ################################################################################ # NOTE: The following 'check_...' commands are used to monitor services on # both local and remote hosts. ################################################################################ ... define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } ...
Guardamos los cambios y cerramos commands.cfg.
Ahora vamos a preparar un directorio independiente para las configuraciones de las máquinas remotas. Para ello editamos el archivo de configuración de Nagios Core, nagios.cfg:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Buscamos esta línea:
... #cfg_dir=/usr/local/nagios/etc/servers ...
Podemos ver que la configuración de Nagios Core ya tiene previsto un directorio para máquinas remotas, pero hay que activarlo:
... cfg_dir=/usr/local/nagios/etc/servers ...
Guardamos los cambios y cerramos. Ahora Nagios Core incluirá en su configuración los archivos existentes en la ruta /usr/local/nagios/etc/servers/.
Esa carpeta no existe aún, así que la creamos:
~$ sudo mkdir /usr/local/nagios/etc/servers
Y el primer archivo de configuración que crearemos será el correspondiente a la máquina remota Debian 10 que preparamos en un paso anterior:
~$ sudo nano /usr/local/nagios/etc/servers/debian102.local.lan.cfg
Incluiremos los datos de identificación y conexión de la máquina:
define host { use linux-server host_name debian102.local.lan alias Debian 10 Buster (remota) address debian102.local.lan max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
Además añadiremos las definiciones de todos los servicios que queramos supervisar:
... define service { use generic-service host_name debian102.local.lan service_description Carga de CPU check_command check_nrpe!check_load } define service { use generic-service host_name debian102.local.lan service_description Espacio libre en /dev/sda1 check_command check_nrpe!check_sda1 }
Naturalmente, puedes añadir tantos servicios como necesites. Guardamos los cambios y cerramos.
Terminada la configuración de Nagios Core, recargamos la configuración del servicio:
~$ sudo systemctl reload nagios
Y accedemos a la aplicación web. Ahora en la sección «Services» veremos la nueva máquina remota y sus correspondientes servicios monitorizados:
¡Así de fácil!
Conclusión
Ahora que sabes cómo instalar Nagios Core, Nagios NRPE y los plugins de Nagios en Debian 10 Buster, puedes monitorizar máquinas remotas tanto en red local como a través de Internet, comprobando su estado y el de sus servicios gracias a esta potente y prestigiosa aplicación.
En caso de dudas, preguntas, sugerencias de mejoras o actualizaciones de este artículo, notificaciones de errores, etc. puedes dejar un comentario.
Y si gracias a esta guía de instalación de Nagios en Debian 10 Buster ya monitorizas remotamente tu servidor o VPS y quieres agradecérmelo, puedes hacerlo dejando tan solo 1 $ de propina con PayPal:
¡Gracias!