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.
Contenido
- Antes de instalar Nagios Core en Ubuntu 20.04 LTS
- Descargar, compilar e instalar los plugins de Nagios en Ubuntu 20.04 LTS
- Descargar, compilar e instalar Nagios Core en Ubuntu 20.04 LTS
- Descargar Nagios NRPE para Ubuntu 20.04 LTS
- Compilar e instalar el servicio Nagios NRPE en Ubuntu 20.04 LTS
- Compilar e instalar el plugin Nagios NRPE en Ubuntu 20.04 LTS
- Configurar una máquina remota con Nagios Core en Ubuntu 20.04 LTS
- Conclusión
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:
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:
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
:
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:
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:
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:
Si visitamos la sección «Services» obtendremos una lista detallada de los servicios monitorizados y su estado:
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:
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:
Y en la sección «Services» aparecerán detallados los servicios de cada máquina:
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!
Actualizado a la versión 4.4.7 de Nagios Core.
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.
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?