Cómo instalar Nagios Core en Ubuntu 20.04 LTS

En este artículo veremos cómo instalar Nagios Core en Ubuntu 20.04 LTS Focal Fossa paso a paso, incluyendo Nagios Core, los plugins de Nagios y el plugin y el servicio NRPE, de modo que podrás monitorizar tu servidor o VPS Ubuntu y todas las máquinas en red que necesites.

Antes de instalar Nagios Core en Ubuntu 20.04 LTS

Para poder seguir los pasos de esta guía de instalación de Nagios Core en Ubuntu 20.04 LTS Focal Fossa debemos partir de los siguientes requerimientos mínimos:

  • Un sistema Ubuntu 20.04 LTS Focal Fossa actualizado.
  • Servicio web con PHP en la máquina que trabajará como servidor Nagios Core.
  • Un usuario con permisos de sudo.
  • Conexión a Internet.

Si no dispones aún del entorno mínimo necesario, puedes consultar previamente nuestra guía de instalación de Apache en Ubuntu 20.04 LTS y nuestra guía de instalación de PHP en Ubuntu 20.04 LTS.

En este artículo trabajaremos con una máquina que actuará como servidor Nagios Core, con dirección ubuntu2004.local.lan, y otra máquina que será monitorizada desde el servidor, con dirección ubuntu20042.local.lan.

Tanto en la máquina servidor como en las máquinas remotas necesitaremos algunas herramientas para empezar a trabajar, que podemos obtener de los repositorios de Ubuntu 20.04 LTS, por lo que actualizamos las listas de paquetes:

~$ sudo apt update

E instalamos dichas herramientas:

~$ sudo apt install -y gcc make tar wget

Descargar, compilar e instalar los plugins de Nagios en Ubuntu 20.04 LTS

Este paso lo seguiremos tanto en el servidor Nagios como en las máquinas remotas que vayamos a monitorizar.

Vamos a descargar los plugins de Nagios para Ubuntu 20.04 LTS desde la página de desarrollo de los mismos:

como descargar los plugins de nagios para ubuntu 20.04 lts focal fossa

Encontraremos la última versión estable de los plugins de Nagios en formato .tar.gz, que podremos descargar desde el navegador o, como haremos en este artículo, desde consola con la herramienta wget:

~$ wget -q https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz

Instalamos algunas dependencias necesarias para ciertos plugins, si crees que alguna no te interesa simplemente no la instales:

~$ sudo apt install -y fping libcrypt-x509-perl libdatetime-format-dateparse-perl libdbi-dev libkrb5-dev libldap2-dev libmysqlclient-dev libnet-snmp-perl libssl-dev libtext-glob-perl libwww-perl postgresql-server-dev-12 qstat rpcbind smbclient snmp

Descomprimimos el paquete del código fuente de los plugins de Nagios en el directorio actual:

~$ 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/

Y configuramos la compilación:

$ ./configure

Compilamos Nagios Core:

$ make

Y realizamos la instalación:

$ sudo make install

Ya podemos salir del directorio de trabajo actual:

$ cd ..

Y podemos eliminarlo con seguridad:

~$ sudo rm -rf nagios-plugins-2.4.0

Los plugins quedan instalados como binarios ejecutables en la ruta /usr/local/nagios/libexec/:

~$ ls /usr/local/nagios/libexec/
check_apt       check_http          check_nntp      check_snmp
check_breeze    check_icmp          check_nntps     check_spop
check_by_ssh    check_ide_smart     check_nt        check_ssh
check_clamd     check_ifoperstatus  check_ntp       check_ssl_validity
check_cluster   check_ifstatus      check_ntp_peer  check_ssmtp
check_dbi       check_imap          check_ntp_time  check_swap
check_dhcp      check_ircd          check_nwstat    check_tcp
check_dig       check_jabber        check_oracle    check_time
check_disk      check_ldap          check_overcr    check_udp
check_disk_smb  check_ldaps         check_pgsql     check_ups
check_dns       check_load          check_ping      check_uptime
check_dummy     check_log           check_pop       check_users
check_file_age  check_mailq         check_procs     check_wave
check_flexlm    check_mrtg          check_real      negate
check_fping     check_mrtgtraf      check_rpc       remove_perfdata
check_ftp       check_mysql         check_sensors   urlize
check_game      check_mysql_query   check_simap     utils.pm
check_hpjd      check_nagios        check_smtp      utils.sh

Estos plugins pueden ejecutarse perfectamente desde consola como cualquier otro comando:

~$ /usr/local/nagios/libexec/check_uptime
Uptime OK: 0 day(s) 0 hour(s) 56 minute(s) | uptime=56.000000;;;

Algunos plugins, como el anterior, pueden funcionar sin necesidad de indicar parámetros, pero otros los necesitan obligatoriamente y nos mostrarán el modo de uso al lanzarlos en consola:

~$ /usr/local/nagios/libexec/check_users


Usage:
check_users -w <users> -c <users>

En este caso el plugin check_users requiere el parámetro -w para indicar el umbral de usuarios que se consideraría como alarmante y el parámetro -c para indicar el número crítico de usuarios, así que ya sabemos cómo probar este plugin con los valores que queramos:

~$ /usr/local/nagios/libexec/check_users -w 2 -c 5
USERS OK - 1 users currently logged in |users=1;2;5;0

Para interpretar qué significan los parámetros requeridos o indicados en el modo de uso, podemos lanzar el plugin con el parámetro -h y así obtener ayuda:

~$ /usr/local/nagios/libexec/check_users -h
check_users v2.4.0 (nagios-plugins 2.4.0)
Copyright (c) 1999 Ethan Galstad
Copyright (c) 2000-2014 Nagios Plugin Development Team
        <devel@nagios-plugins.org>

This plugin checks the number of users currently logged in on the local
system and generates an error if the number exceeds the thresholds specified.


Usage:
check_users -w <users> -c <users>

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.
 -w, --warning=INTEGER
    Set WARNING status if more than INTEGER users are logged in
 -c, --critical=INTEGER
    Set CRITICAL status if more than INTEGER users are logged in

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

Es importante conocer cómo funcionan los plugins que nos interesen en el momento de personalizar la monitorización de nuestros sistemas, ya que Nagios Core no usa directamente los plugins, sino definiciones de comandos que utilizan los plugins con parámetros y valores establecidos explícitamente.

Descargar, compilar e instalar Nagios Core en Ubuntu 20.04 LTS

Este paso lo realizaremos exclusivamente en la máquina Ubuntu 20.04 LTS que actuará como servidor Nagios Core

Vamos a descargar Nagios Core para Ubuntu 20.04 LTS desde el sitio web del proyecto, donde encontraremos la última versión estable:

como descargar nagios core para ubuntu 20.04 lts focal fossa

Descargamos el paquete .tar.gz:

~$ wget -q https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz

Instalamos algunas herramientas y dependencias que necesitaremos:

~$ sudo apt install -y libgd-dev libltdl-dev traceroute unzip

Descomprimimos el paquete de Nagios Core:

~$ tar xf nagios-4.4.7.tar.gz

Cambiamos el directorio de trabajo:

~$ cd nagios-4.4.7/

Configuramos la compilación:

$ ./configure --disable-ssl

Compilamos Nagios Core:

$ make all

Y por fin instalaremos el servicio y sus configuraciones:

$ sudo make install-groups-users install install-webconf install-config install-init install-daemoninit install-commandmode

Añadimos el grupo nagios que se acaba de crear al usuario con el que corre el servicio web, para que este tenga acceso de escritura a los comandos externos de Nagios:

$ sudo usermod -a -G nagios www-data

Podemos abandonar el directorio actual:

$ cd ..

Y eliminarlo:

~$ rm -rf nagios-4.4.7

Preparación del servicio Nagios Core

Iniciamos por vez primera el servicio Nagios en Ubuntu 20.04 LTS:

~$ sudo systemctl start nagios

Podemos comprobar el estado del servicio con el comando systemctl status nagios:

como instalar nagios core en ubuntu 20.04 lts focal fossa

Preparación del servicio web

Es necesario activamos el módulo CGI de Apache, que por defecto en Ubuntu 20.04 no se encuentra cargado:

~$ sudo a2enmod cgi

Y reiniciamos el servicio web:

~$ sudo systemctl restart apache2

Como Nagios necesita un usuario administrador nagiosadmin, lo creamos con el comando htpasswd, creando también la contraseña de acceso asociada:

~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

Acceder a Nagios Core

Para acceder a Nagios Core en Ubuntu 20.04 LTS desde un navegador, añadiremos la ruta /nagios a la dirección IP, nombre DNS, dominio, etc. del servidor.

Por ejemplo, la máquina Ubuntu 20.04 que utilizamos en este artículo como servidor es accesible en el subdominio ubuntu2004.local.lan, así que podemos utilizar http://ubuntu2004.local.lan/nagios como URL de acceso:

instalar nagios core en ubuntu 20.04 lts focal fossa

Se presenta una página de inicio de sesión, en la que facilitaremos el usuario, nagiosadmin en este caso, y su contraseña.

Tras comprobar las credenciales de acceso se muestra la página principal de Nagios Core, donde veremos que el servicio está en funcionamiento:

nagios core en ubuntu 20.04 lts focal fossa

Si visitamos la sección «Hosts» veremos que por defecto se está monitorizando la máquina local Ubuntu 20.04, es decir, el propio servidor Nagios Core:

nagios core para ubuntu 20.04 lts focal fossa

Si visitamos la sección «Services» obtendremos una lista detallada de los servicios monitorizados y su estado:

nagios core sobre ubuntu 20.04 lts focal fossa

Descargar Nagios NRPE para Ubuntu 20.04 LTS

Este paso lo realizaremos tanto en el servidor Nagios Core como en las máquinas remotas que queramos monitorizar, ya que el mismo paquete contiene el código del servicio NRPE para las máquinas remota como el código del plugin NRPE para el servidor Nagios

Vamos a descargar Nagios NRPE para Ubuntu 20.04 LTS desde el sitio web del proyecto, donde encontramos el último lanzamiento estable:

como descargar nagios nrpe para ubuntu 20.04 lts focal fossa

Descargamos el paquete .tar.gz:

~$ wget -q https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz

E instalamos algunas dependencias:

~$ sudo apt install -y libwrap0-dev

Compilar e instalar el servicio Nagios NRPE en Ubuntu 20.04 LTS

Este paso lo realizaremos en las máquinas remotas Ubuntu 20.04 que queremos monitorizar

Descomprimimos el paquete de Nagios NRPE:

~$ 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

E instalamos:

$ sudo make install-groups-users install-daemon install-config install-init

Salimos del directorio:

$ cd ..
~$ sudo rm -rf nrpe-4.0.3

Configuración del servicio NRPE

Tras la instalación del servicio NRPE en la máquina remota Ubuntu 20.04, se crea un servicio llamado nrpe.service que no queda iniciado por defecto, ya que debemos configurarlo. Para ello editamos su archivo de configuración nrpe.cfg, que no se encuentra en la ruta que esperaríamos:

~$ sudo nano /usr/local/nagios/etc/nrpe.cfg

Buscaremos la directiva allowed_hosts, que indica qué máquinas pueden conectar al servicio:

...
allowed_hosts=127.0.0.1,::1
...

Añadiremos a la lista la dirección IP o nombre DNS del servidor Nagios Core, en este caso ubuntu2004.local.lan:

...
allowed_hosts=127.0.0.1,::1,ubuntu2004.local.lan
...

Si examinamos el resto del archivo, encontraremos la definición de los comandos cuya ejecución podrá solicitar el servidor Nagios Core, por ejemplo:

...
# The following examples use hardcoded command arguments...
# This is by far the most secure method of using NRPE

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
...

Además de estos comandos activados por defecto en el archivo hay muchos más desactivados. Podemos activar, desactivar, añadir, eliminar, modificar, etc. las definiciones de comandos según nuestras necesidades. Por ejemplo, si nos fijamos en el comando check_hda1:

...
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
...

Hace referencia a una partición del dispositivo /dev/hda, sin embargo la máquina que estamos usando para redactar este artículo usa como nomenclatura del disco principal /dev/sda en lugar de /dev/hda, por lo que podemos modificar adecuadamente el nombre del comando y sus parámetros:

...
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
...

Una vez finalizados los ajustes, guardamos los cambios e iniciamos el servicio:

~$ sudo systemctl start nrpe.service

Configuración del firewall

Si tenemos activado el firewall UFW en la máquina remota Ubuntu 20.04 LTS debemos añadir una regla para permitir las conexiones al servicio NRPE desde el servidor Nagios Core:

~$ sudo ufw allow nrpe

Compilar e instalar el plugin Nagios NRPE en Ubuntu 20.04 LTS

Este paso lo realizamos en la máquina Ubuntu 20.04 que actúa como servidor Nagios Core

Descomprimimos el paquete de Nagios NRPE que descargamos en un paso anterior:

~$ 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 NRPE:

$ make check_nrpe

E instalamos:

$ sudo make install-plugin

Salimos del directorio:

$ cd ..

Y lo eliminamos:

~$ sudo rm -rf nrpe-4.0.3

Podemos comprobar el funcionamiento del plugin NRPE desde consola como cualquier otro plugin, indicando con el parámetro -H la dirección de alguna de las máquinas remotas que tengan activado y configurado el servicio Nagios NRPE:

~$ /usr/local/nagios/libexec/check_nrpe -H ubuntu20042.local.lan
NRPE v4.0.3

Si todo es correcto la máquina remota contestará con la versión de su servicio NRPE instalado.

Configurar el plugin NRPE en Nagios Core

Aunque utilizar el plugin NRPE como un comando más de Ubuntu 20.04 es sencillo, Nagios Core no lo podrá utilizar hasta que lo incorporemos como un comando propio en su configuración. Para ello editamos la configuración de comandos de Nagios, commands.cfg:

~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg

Y añadimos al final del archivo la definición para el comando que maneja el plugin NRPE:

...
################################################################################
# Comando para usar el plugin check_nrpe
################################################################################

define command {
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Aunque podíamos haber usado otro nombre, hemos llamado al comando como check_nrpe, que coincide con el nombre del binario del plugin. En la definición de la línea de comando utilizamos variables que Nagios sustituirá por la dirección de la máquina remota y del comando a ejecutar en dicha máquina remota.

Podemos guardar los cambios y recargar el servicio:

~$ sudo systemctl reload nagios

Configurar una máquina remota con Nagios Core en Ubuntu 20.04 LTS

Por un lado ya tenemos una o varias máquinas remotas con el servicio Nagios NRPE instalado y configurado, y por otro lado tenemos el servidor Nagios Core con el plugin NRPE listo para utilizar. Para unir todo esto, debemos realizar una serie de configuraciones en el servicio Nagios Core.

Empezaremos creando un directorio para guardar las configuraciones de cada máquina remota:

~$ sudo mkdir /usr/local/nagios/etc/servers

Para que los archivos de configuración de este nuevo directorio sean tenidos en cuenta por Nagios Core, incluiremos dicho directorio en la configuración de su archivo nagios.cfg:

~$ sudo nano /usr/local/nagios/etc/nagios.cfg

Si buscamos las directivas cfg_dir encontraremos un bloque como el siguiente:

...
#cfg_dir=/usr/local/nagios/etc/servers
#cfg_dir=/usr/local/nagios/etc/printers
#cfg_dir=/usr/local/nagios/etc/switches
#cfg_dir=/usr/local/nagios/etc/routers
...

Existe una configuración para el directorio que acabamos de crear, pero no está activa. Bastará con eliminar el carácter # al inicio de línea:

...
cfg_dir=/usr/local/nagios/etc/servers
...

Ya podemos guardar el archivo.

Ahora crearemos un archivo de configuración para cada máquina remota que hayamos configurado y queramos monitorizar, en este caso será ubuntu20042.local.lan:

~$ sudo nano /usr/local/nagios/etc/servers/ubuntu20042.local.lan.cfg

Con el contenido consistirá en la definición de la máquina remota seguida de la definición de los servicios que queremos monitorizar:

define host {
        use                     linux-server
        host_name               ubuntu20042.local.lan
        alias                   Ubuntu 20.04 II
        address                 ubuntu20042.local.lan
        max_check_attempts      5
        check_period            24x7
        notification_interval   30
        notification_period     24x7
}

define service {
        use                     generic-service
        host_name               ubuntu20042.local.lan
        service_description     Carga de CPU
        check_command           check_nrpe!check_load
}

define service {
        use                     generic-service
        host_name               ubuntu20042.local.lan
        service_description     Espacio libre en /dev/sda1
        check_command           check_nrpe!check_sda1
}

Podemos observar que en la definición de los servicios el comando a usar es siempre el plugin check_nrpe seguido del comando correspondiente definido en la máquina remota.

Terminada la configuración de Nagios Core para las máquinas remotas será necesario recargar el servicio:

~$ sudo systemctl reload nagios

Si accedemos a la interfaz web de Nagios Core, en la sección «Hosts» aparecerán todas las máquinas configuradas:

como configurar nagios core en ubuntu 20.04 lts focal fossa

Y en la sección «Services» aparecerán detallados los servicios de cada máquina:

configurar nagios core en ubuntu 20.04 lts focal fossa

Conclusión

Ahora que sabes cómo instalar Nagios Core en Ubuntu 20.04 LTS Focal Fossa ya puedes monitorizar los sistemas de tu red local o incluso a través de Internet.

En caso de dudas, preguntas, sugerencias de mejora o actualización del artículo, notificación de posibles errores, etc. puedes dejar un comentario que revisaremos lo antes posible.

¡Apoya comoinstalar.me!

¿Ya puedes monitorizar tus sistemas gracias a esta guía de instalación de Nagios Core en Ubuntu 20.04 LTS? En tal caso, si quieres agradecérnoslo ayudando con el mantenimiento de este sitio y la creación de más artículos y tutoriales, puedes hacerlo dejando una simbólica propina de 1 $ desde PayPal:

O, si te sientes especialmente agradecido, invitándonos a un café:

¡Gracias!

Valora esta entrada

5/5 - (4 votos)

3 comentarios en «Cómo instalar Nagios Core en Ubuntu 20.04 LTS»

  1. Hola. Instalé Nagios en el servidor virtual pero no puedo acceder a la interfaz web con la IP ni con la dirección del articulo.
    ¿Cómo lo puedo hacer?
    Gracias.

    Responder
    • Hola, Jhon. ¿Tienes instalado y configurado el servicio web con PHP en el servidor, con la configuración adecuada para el firewall? En ese caso, ¿puedes visualizar la página web por defecto del servicio web?

      Responder

Deja un comentario