En esta entrada veremos cómo instalar Nagios en Debian 11 Bullseye paso a paso, de manera que puedas monitorizar desde un servidor Nagios Core distintas máquinas mediante los plugins de Nagios y el servicio NRPE, ya sean máquinas en red local, tu servidor o VPS Debian, etc.
Tabla de contenidos
Antes de instalar Nagios en Debian 11 Bullseye
Para poder seguir los pasos de esta guía de instalación de Nagios Core en Debian 11 Bullseye es importante partir del siguiente escenario:
- Una máquina Debian 11 Bullseye actualizada, que actuará como servidor Nagios Core, desde la que se monitorizarán el resto de máquinas.
- Servidor web con PHP.
- Acceso a consola con un usuario con permisos de sudo.
- Conexión a Internet.
- Opcionalmente, otras máquinas Debian 11 que serán monitorizadas desde el servidor.
En caso de que no dispongas aún del entorno necesario en la máquina Debian 11 que actuará como servidor Nagios, puedes consultar nuestra guía de instalación de Apache en Debian 11.
Cómo descargar e instalar los plugins de Nagios en Debian 11 Bullseye
Vamos a descargar los plugins de Nagios para Debian 11 tanto en el servidor como en las máquinas remotas, visitando la página de descargas del sitio del proyecto:
Si trabajamos de forma remota en alguna de las máquinas Debian 11, podemos descargar el paquete .tar.gz desde consola con la herramienta wget:
~$ wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
Instalamos algunas dependencias que necesitaremos para compilar los plugins:
~$ sudo apt install -y gcc make libssl-dev
Extraemos el paquete que acabamos de descargar en el directorio de trabajo:
~$ tar xf nagios-plugins-2.4.0.tar.gz
Cambiamos el directorio activo al nuevo subdirectorio que acabamos de crear:
~$ cd nagios-plugins-2.4.0/
Configuramos la compilación:
$ ./configure
Compilamos los plugins:
$ make
Y los instalamos:
$ sudo make install
Ya podemos abandonar el directorio actual:
$ cd ..
Y eliminarlo:
~$ rm -rf nagios-plugins-2.4.0
Los plugins han quedado instalados en el directorio /usr/local/nagios/libexec/, de modo que pueden ser utilizados como cualquier otro comando del sistema, por ejemplo el plugin check_apt:
~$ /usr/local/nagios/libexec/check_apt APT OK: 0 packages available for upgrade (0 critical updates). |available_upgrades=0;;;0 critical_updates=0;;;0
Aunque en este caso no hemos utilizado ninguno, prácticamente todos los plugins admiten los parámetros -w y -c para determinar los umbrales de alarma y de condición crítica del servicio monitorizado. Puedes obtener ayuda sobre el uso de cualquier plugin utilizando el parámetro -h:
~$ /usr/local/nagios/libexec/check_apt -h check_apt v2.4.0 (nagios-plugins 2.4.0) Copyright (c) 2006-2014 Nagios Plugin Development Team <devel@nagios-plugins.org> This plugin checks for software updates on systems that use package management systems based on the apt-get(8) command found in Debian GNU/Linux Usage: check_apt [[-d|-u|-U]opts] [-n] [-t timeout] [-w packages-warning] Options: -h, --help Print detailed help screen -V, --version Print version information --extra-opts=[section][@file] Read options from an ini file. See https://www.nagios-plugins.org/doc/extra-opts.html for usage and examples. -t, --timeout=INTEGER Seconds before plugin times out (default: 10) -U, --upgrade=OPTS [Default] Perform an upgrade. If an optional OPTS argument is provided, apt-get will be run with these command line options instead of the default (-o 'Debug::NoLocking=true' -s -qq). Note that you may be required to have root privileges if you do not use the default options. -d, --dist-upgrade=OPTS Perform a dist-upgrade instead of normal upgrade. Like with -U OPTS can be provided to override the default options. -n, --no-upgrade Do not run the upgrade. Probably not useful (without -u at least). -i, --include=REGEXP Include only packages matching REGEXP. Can be specified multiple times the values will be combined together. Any packages matching this list cause the plugin to return WARNING status. Others will be ignored. Default is to include all packages. -e, --exclude=REGEXP Exclude packages matching REGEXP from the list of packages that would otherwise be included. Can be specified multiple times; the values will be combined together. Default is to exclude no packages. -c, --critical=REGEXP If the full package information of any of the upgradable packages match this REGEXP, the plugin will return CRITICAL status. Can be specified multiple times like above. Default is a regexp matching security upgrades for Debian and Ubuntu: ^[^\(]*\(.* (Debian-Security:|Ubuntu:[^/]*/[^-]*-security) Note that the package must first match the include list before its information is compared against the critical list. -o, --only-critical Only warn about upgrades matching the critical list. The total number of upgrades will be printed, but any non-critical upgrades will not cause the plugin to return WARNING status. -w, --packages-warning=INTEGER Minumum number of packages available for upgrade to return WARNING status. Default is 1 package. The following options require root privileges and should be used with care: -u, --update=OPTS First perform an 'apt-get update'. An optional OPTS parameter overrides the default options. Note: you may also need to adjust the global timeout (with -t) to prevent the plugin from timing out if apt-get upgrade is expected to take longer than the default timeout. Send email to help@nagios-plugins.org if you have questions regarding use of this software. To submit patches or suggest improvements, send email to devel@nagios-plugins.org
Para poder monitorizar correctamente los servicios de cada máquina, es interesante conocer los plugins disponibles y su forma de uso.
Cómo descargar e instalar Nagios Core en Debian 11 Bullseye
Vamos a descargar Nagios Core para Debian 11 Bullseye en la máquina que actuará como el servidor que recabará la información de las máquinas monitorizadas. Para ello visitamos el sitio oficial de Nagios Core:
Y descargamos desde el navegador o desde consola el paquete .tar.gz:
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
Instalamos las dependencias:
~$ sudo apt install -y unzip
Descomprimimos el paquete recién descargado:
~$ tar xf nagios-4.4.7.tar.gz
Cambiamos al nuevo subdirectorio:
~$ cd nagios-4.4.7/
Configuramos la compilación:
$ ./configure
Compilamos Nagios Core:
$ make all
E instalamos el servicio y su configuración:
$ sudo make install-groups-users install install-webconf install-config install-init install-daemoninit install-commandmode
Abandonamos el directorio del código fuente:
$ cd ..
Y lo borramos:
~$ rm -rf nagios-4.4.7
Creamos el usuario nagiosadmin y su contraseña para poder acceder a la interfaz web de Nagios Core:
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
Iniciamos el servicio nagios con systemctl:
~$ sudo systemctl start nagios
Podemos comprobar fácilmente su estado:
~$ systemctl status nagios
Por último activamos el módulo CGI del servicio web:
~$ sudo a2enmod cgi
Y reiniciamos el servicio web para cargar el nuevo módulo y aplicar la configuración de la aplicación web:
~$ sudo systemctl restart apache2
Cómo acceder a Nagios Core en Debian 11
Para acceder a Nagios Core en Debian 11 Bullseye desde un navegador bastará con indicar la dirección del servidor (IP, nombre DNS, dominio, localhost si se trata de acceso local, etc.) y añadimos la ruta /nagios para formar la URL.
Por ejemplo, en este tutorial hemos preparado una máquina Debian 11 accesible en el subdominio debian11.local.lan, así que podemos utilizar http://debian11.local.lan/nagios como URL.
Se nos solicitará usuario y contraseña:
Nos identificamos como nagiosadmin con la contraseña que creamos anteriormente.
Se mostrará la página principal de la aplicación, en la que comprobaremos que el servicio Nagios Core funciona, ya que se muestra su PID:
Si visitamos la sección «Hosts» observaremos que se muestra la propia máquina local (el servidor Nagios):
Un pequeño resumen nos informará de las máquinas y servicios monitorizados y su estado. Puede que se muestre algún servicio como pendiente o «Pending» si la instalación ha transcurrido rápidamente y aún no se han ejecutado todos los comandos de monitorización.
En la pagina «Services» obtendremos información detallada de los servicios y su estado:
Cómo configurar Nagios Core en Debian 11
Para configurar Nagios Core en Debian 11 Bullseye debemos trabajar sobre los archivos ubicados en la ruta /usr/local/nagios/etc/, siendo el archivo principal nagios.cfg.
Si examinas el contenido de este archivo observarás que enlaza a su vez al archivo objects/localhost.cfg, donde se guarda la información de conexión y los servicios a monitorizar.
A su vez, las declaraciones de servicios emplean comandos definidos en el archivo objects/commands.cfg, siendo precisamente en la definición de comando donde se indica el plugin a usar y sus parámetros.
Conviene echar un vistazo al contenido de estos archivos para ver cómo crear y modificar servicios, comandos, etc. para ajustarlos a nuestras necesidades.
A continuación veremos cómo añadir máquinas remotas a la configuración de Nagios Core.
Cómo descargar e instalar Nagios NRPE en Debian 11 Bullseye
Para monitorizar otras máquinas en red debemos descargar Nagios NRPE en las máquinas Debian 11, tanto en el servidor como en las máquinas remotas. Esto es así porque el mismo paquete contiene el servicio que correrá en las máquinas remotas y el plugin que utiliza el servidor Nagios.
Vamos a descargar Nagios NRPE para Debian 11 desde el sitio del proyecto, donde encontraremos la última versión estable:
Descargamos el paquete .tar.gz desde consola:
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
Descomprimimos este paquete en el directorio de trabajo:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio activo al nuevo subdirectorio:
~$ cd nrpe-4.0.3/
Configuramos la compilación:
$ ./configure
A partir de este punto en las máquinas remotas compilaremos el servicio y en el servidor Nagios compilaremos el plugin. Detallamos ambos procesos a continuación.
Servicio NRPE
En las máquinas remotas Debian 11 compilamos el servicio NRPE que recibirá las peticiones de monitorización desde el servidor:
$ make nrpe
Instalamos el servicio y su configuración:
$ sudo make install-groups-users install-daemon install-config install-init
Salimos del directorio fuente:
$ cd ..
Y lo podemos borrar:
~$ rm -rf nrpe-4.0.3
Antes de lanzar el servicio es preciso configurarlo editando su archivo de configuración principal:
~$ 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:
... allowed_hosts=127.0.0.1,::1,debian11.local.lan ...
En este archivo también están definidos los comandos cuya ejecución puede solicitar el servidor Nagios y que podemos modificar, eliminar o ampliar. Por ejemplo, se incluye el comando check_hda1:
... 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 ...
Este comando define el chequeo de la unidad de almacenamiento principal, trabajando con dispositivos tipo /dev/hd*, pero la máquina de este ejemplo usa un dispositivo tipo /dev/sd*.
Desactivamos este comando check_hda1 y creamos ccc_check_sda1 de modo similar, pero usando la nomenclatura de dispositivo adecuada:
... #command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 command[ccc_check_sda1]=//usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
Guardamos los cambios y ya podemos iniciar el servicio:
~$ sudo systemctl start nrpe
Comprobamos su estado también con systemctl:
~$ systemctl status nrpe
Si queremos que el servicio esté disponible en todo momento podemos activarlo para que inicie automáticamente con el sistema:
~$ sudo systemctl enable nrpe
Cómo configurar el firewall de Debian 11 para el servicio NRPE
Si tienes activado el firewall UFW en la máquina remota Debian 11 hay que aplicar una regla que permita las conexiones entrantes procedentes del servidor Nagios Core:
~$ sudo ufw allow nrpe
Todo listo en la máquina remota.
Plugin NRPE
En el servidor Nagios Core compilamos el plugin:
$ make check_nrpe
Lo instalamos:
$ sudo make install
Abandonamos el directorio:
$ cd ..
Y borramos dicho directorio:
~$ rm -rf nrpe-4.0.3
Configurar máquinas remotas
Creamos un directorio para guardar los archivos de configuración de las distintas máquinas remotas que queramos monitorizar:
~$ sudo -u nagios mkdir /usr/local/nagios/etc/servers
Editamos el archivo principal de configuración, nagios.cfg:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Buscamos esta línea, que contiene precisamente la ruta que acabamos de crear:
... #cfg_dir=/usr/local/nagios/etc/servers ...
Y la activamos eliminando el carácter # inicial:
... cfg_dir=/usr/local/nagios/etc/servers ...
Guardamos los cambios y creamos un archivo para la máquina remota del ejemplo de este tutorial:
~$ sudo nano /usr/local/nagios/etc/servers/debian11b.local.lan.cfg
Creamos la sección de identificación y conexión a la máquina remota:
define host { use linux-server host_name debian11b.local.lan alias Debian 11 Bullseye (remota) address debian11b.local.lan max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
Básicamente indicamos la plantilla de sistema a usar, el nombre, alias y dirección de la máquina remota y los parámetros de conexión y monitorización.
A continuación definimos los servicios que nos interesen:
... define service { use generic-service host_name debian11b.local.lan service_description Carga de CPU check_command ccc_check_nrpe!check_load } define service { use generic-service host_name debian11b.local.lan service_description Espacio libre en /dev/sda1 check_command ccc_check_nrpe!check_sda1 }
En las definiciones de servicio indicamos la plantilla de servicio, el nombre de la máquina, descripción del servicio y la llamada al comando que lanza el plugin NRPE (ccc_check_nrpe, que aún no existe) con el comando remoto que informará del estado del servicio (comandos definidos en la máquina remota, como hemos visto en pasos anteriores).
Una vez definidos los servicios guardamos el archivo.
Sólo queda crear el comando específico que lanza el plugin NRPE, que hemos utilizado hace unos momentos (ccc_check_nrpe), para lo que editamos el archivo commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Al final del archivo añadimos la definición del comando:
... ### Plugin NRPE define command { command_name ccc_check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Únicamente se necesita dar el nombre por el que es referido desde otros archivos de configuración, y la línea de comando con la que se llama al plugin NRPE.
Guardamos los cambios y ya tenemos todo lo necesario para que el servicio Nagios Core empiece a monitorizar la máquina remota Debian 11 que acabamos de añadir. Por tanto, recargamos la configuración del servicio:
~$ sudo systemctl reload nagios
Accedemos a la sección «Hosts«:
Aparece la nueva máquina en la lista y en el resumen.
Y si visitamos «Services«:
Veremos con más detalle las máquinas y sus servicios.
¡Justo lo que queríamos!
Conclusión
Ahora que sabes cómo instalar y configurar Nagios en Debian 11 Bullseye ya puedes monitorizar todos los servicios críticos de las máquinas de tu red local o tus servidores y VPS Debian en Internet, de forma sencilla y visual mediante la interfaz web de esta aplicación.
Si ya funciona el servicio en tus máquinas y quieres agradecérnoslo, siempre es bienvenida cualquier mínima contribuición para el mantenimiento en línea de este sitio y la creación de nuevos tutoriales y guías.
Puedes ayudarnos dejando una propina de tan sólo 1 $ desde PayPal:
¡Gracias!
Actualizado a la versión 2.4.0 de los plugins de Nagios y la versión 4.4.7 de Nagios Core.