En esta entrada vamos a ver cómo instalar y configurar Nagios en Rocky Linux 8 paso a paso, de modo que puedas trabajar con Nagios Core, los plugins de Nagios y Nagios NRPE para monitorizar tu servidor o VPS Rocky Linux, o cualquier otro sistema en red.
Contenido
En este tutorial trabajaremos con una máquina Rocky Linux 8 que actuará como servidor Nagios y otra que será monitorizada desde la primera gracias a Nagios NRPE. Pero además, el servidor Nagios también ofrecerá información sobre sí mismo, es decir, se monitorizará localmente.
Antes de instalar Nagios en Rocky Linux 8
Para seguir los pasos de esta guía de instalación de Nagios en Rocky Linux 8 será necesario satisfacer los siguientes requisitos mínimos en la máquina que actuará como servidor Nagios:
- Una máquina Rocky Linux 8.
- Servidor web con PHP.
- Un usuario con permisos de sudo.
- Acceso a Internet.
Si aún no dispones del entorno necesario puede ser útil consultar previamente nuestra guía de instalación de Apache en Rocky Linux 8.
También necesitaremos disponer de algunas herramientas tanto en el servidor Nagios como en las máquinas que serán monitorizadas. Estas herramientas las obtendremos desde los repositorios de la distribución, por lo que actualizamos la información de los mismos:
~$ sudo yum update
E instalamos dichas herramientas:
~$ sudo yum install -y tar wget gcc make openssl-devel
Cómo descargar e instalar los plugins de Nagios en Rocky Linux 8
Este paso es común tanto para el servidor Nagios como para las máquinas que serán monitorizadas. Para ello vamos a descargar los plugins de Nagios para Rocky Linux 8 desde el sitio oficial de estos componentes:
Podemos realizar la descarga desde el navegador, pero si estamos trabajando de forma remota sobre las máquinas Rocky Linux 8 podemos descargar los plugins de Nagios directamente desde consola con alguna herramienta como wget:
~$ wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
Una vez descargado, descomprimimos este paquete en el directorio de trabajo:
~$ tar xf nagios-plugins-2.4.0.tar.gz
Y cambiamos el directorio de trabajo al subdirectorio que se acaba de crear:
~$ cd nagios-plugins-2.4.0
Configuramos la compilación de los plugins:
$ ./configure
Los compilamos:
$ make
E instalamos:
$ sudo make install
Ya podemos abandonar este directorio:
$ cd ..
Y eliminarlo:
~$ rm -rf nagios-plugins-2.4.0
Los plugins han quedado instalados en la ruta /usr/local/nagios/libexec/, y pueden ser lanzados desde consola, si conoces su sintaxis. Por ejemplo, el plugin que comprueba el ping de una máquina en red necesita varios parámetros:
~$ /usr/local/nagios/libexec/check_ping -H localhost -w 100.0,20% -c 500.0,60% PING OK - Packet loss = 0%, RTA = 0.19 ms|rta=0.189000ms;100.000000;500.000000;0.000000 pl=0%;20;60;0
En este caso -H indica la dirección de la máquina que queremos comprobar, -w es el umbral de alarma expresado en milisegundos de tiempo de respuesta y porcentaje de paquetes perdidos y -c el umbral crítico, expresado de igual forma.
Para conocer la sintaxis de un determinado plugin puedes utilizar el parámetro -h, por ejemplo, para el mismo plugin check_ping:
~$ /usr/local/nagios/libexec/check_ping -h check_ping v2.4.0 (nagios-plugins 2.4.0) Copyright (c) 1999 Ethan Galstad <nagios@nagios.org> Copyright (c) 2000-2014 Nagios Plugin Development Team <devel@nagios-plugins.org> Use ping to check connection statistics for a remote host. Usage: check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>% [-p packets] [-t timeout] [-4|-6] 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. -4, --use-ipv4 Use IPv4 connection -6, --use-ipv6 Use IPv6 connection -H, --hostname=HOST host to ping -w, --warning=THRESHOLD warning threshold pair -c, --critical=THRESHOLD critical threshold pair -p, --packets=INTEGER number of ICMP ECHO packets to send (Default: 5) -s, --show-resolution show name resolution in the plugin output (DNS & IP) -L, --link show HTML in the plugin output (obsoleted by urlize) -t, --timeout=INTEGER:<timeout state> Seconds before connection times out (default: 10) Optional ":<timeout state>" can be a state integer (0,1,2,3) or a state STRING THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the percentage of packet loss to trigger an alarm state. This plugin uses the ping command to probe the specified host for packet loss (percentage) and round trip average (milliseconds). It can produce HTML output linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in the contrib area of the downloads section at http://www.nagios.org/ 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
Saber esto es útil para personalizar lo que quieres monitorizar con Nagios en cada máquina Rocky Linux 8.
Cómo descargar e instalar Nagios Core en Rocky Linux 8
Esta parte afecta únicamente a la máquina Rocky Linux 8 que actuará como servidor Nagios. Vamos a descargar Nagios Core para Rocky Linux 8 visitando la página de descargas del sitio del proyecto.
Descargamos 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 yum install -y perl
Descomprimimos el paquete de Nagios Core:
~$ tar xf nagios-4.4.7.tar.gz
Cambiamos el directorio de trabajo al nuevo subdirectorio:
~$ cd nagios-4.4.7
Configuramos la compilación:
$ ./configure --disable-ssl
Compilamos:
$ make all
E instalamos tanto los binarios como las configuraciones:
$ sudo make install-groups-users install install-init install-daemoninit install-commandmode install-config install-webconf
Hecho esto abandonamos el subdirectorio:
$ cd ..
Y podemos eliminarlo:
~$ rm -rf nagios-4.4.7
Para que el servicio web pueda usar los comandos externos de Nagios habrá que crear un contexto de SELinux para lectura/escritura del subdirectorio donde se guardan estos comandos:
~$ sudo semanage fcontext -at httpd_sys_rw_content_t "/usr/local/nagios/var/rw(/.*)?"
Aplicamos el nuevo contexto:
~$ sudo restorecon -R /usr/local/nagios/var/rw/
Y también damos acceso de grupo del servicio Nagios al servicio web:
~$ sudo usermod -a -G nagios apache
Disponemos de un nuevo servicio en Rocky Linux 8, el servicio nagios, que iniciaremos manualmente:
~$ sudo systemctl start nagios
Podemos comprobar en cualquier momento el estado del servicio también con systemtctl:
~$ systemctl status nagios
Creamos el usuario nagiosadmin con contraseña:
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
Y recargamos la configuración del servicio web para activar el acceso a la interfaz web de Nagios Core:
~$ sudo systemctl reload httpd
Para acceder a Nagios Core desde un navegador indicaremos la dirección del servidor Nagios Rocky Linux 8 (IP, nombre DNS, dominio, etc.) seguido de la ruta /nagios.
Por ejemplo, la máquina Rocky Linux 8 que hemos usado para preparar este tutorial es accesible en el subdominio rocky8.local.lan, así que usaremos http://rocky8.local.lan/nagios como URL.
Una vez establecida la conexión se nos solicitará usuario y contraseña:
Nos identificaremos con el usuario nagiosadmin y la clave que creamos anteriormente.
Hecho esto se mostrará la página principal de la interfaz web de Nagios Core en el servidor Rocky Linux 8:
Si visitamos la sección «Hosts» veremos que la única máquina que se está monitorizando es la máquina local o localhost, es decir, el propio servidor Nagios:
Si el proceso de instalación ha transcurrido de forma rápida es posible que algunos chequeos se encuentren pendientes de realización (o «Pending«), ya que están programados para realizarse de forma secuencial.
Para profundizar en el estado de la monitorización podemos acceder a la sección «Services«, donde se muestra el estado de todos los servicios monitorizados, agrupados por máquina:
Es posible que encuentres alguna alarma con respecto al servicio web de la máquina local, pero no se trata de ningún problema ya que, en este ejemplo, el servidor web no dispone de página por defecto y por ello lanza un error 403 (lo que demuestra que está funcionando perfectamente). En el caso de existir alguna página web por defecto se devolvería un código 200 y no se produciría esta alarma.
Configuración de Nagios Core en Rocky Linux 8
El hecho de que sin tocar la configuración por defecto de Nagios Core se pueda monitorizar el propio servidor Rocky Linux 8 sobre el que corre el servicio es debido a que el archivo de configuración principal, nagios.cfg, ubicado en la ruta /usr/local/nagios/etc/, enlaza la configuración de otro archivo, localhost.cfg, ubicado en la ruta /usr/local/nagios/etc/objects/:
... # Definitions for monitoring the local (Linux) host cfg_file=/usr/local/nagios/etc/objects/localhost.cfg ...
El archivo localhost.cfg contiene a su vez datos identificativos y de conexión sobre la máquina local y la definición de los servicios que serán monitorizados a través de bloques «define service» como el siguiente:
... # Define a service to "ping" the local machine define service { use local-service ; Name of service template to use host_name localhost service_description PING check_command check_ping!100.0,20%!500.0,60% } ...
Puedes añadir o modificar los servicios existentes según tus necesidades, teniendo en cuenta que los comandos utilizados en las directivas check_command, (por ejemplo, check_ping en el ejemplo anterior) están definidos a su vez en el archivo commands.cfg, ubicado en /usr/local/nagios/etc/objects/. Por ejemplo, la definición del comando check_ping citado:
... define command { command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 } ...
Finalmente, es en la directiva command_line donde se especifica qué plugin usar, check_ping en este caso (cuyo nombre coincide con el del comando, pero se podría haber usado cualquier otro nombre para dicho comando), y los argumentos que usará, recibidos desde el archivo localhost.cfg.
A continuación veremos cómo añadir máquinas Rocky Linux 8 remotas a la monitorización de Nagios Core.
Nagios NRPE para Rocky Linux 8
Para monitorizar máquinas remotas necesitamos que corra el servicio Nagios NRPE en cada una de ellas, mientras que en el servidor Nagios debemos tener instalado y configurado el plugin Nagios NRPE.
Tanto el servicio como el plugin Nagios NRPE están incluidos en el mismo paquete, por lo que tendremos que descargarlo en el servidor Nagios y en las máquinas a monitorizar.
Cómo descargar Nagios NRPE para Rocky Linux 8
Teniendo en cuenta lo anterior vamos a descargar Nagios NRPE para Rocky Linux 8 en todas las máquinas implicadas visitando la sección de descargas de este proyecto:
Descargamos el paquete .tar.gz:
~$ 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
Y configuramos la compilación:
$ ./configure
A partir de aquí los pasos difieren, según si estamos preparando el servicio NRPE en una máquina remota Rocky Linux 8 que va a ser monitorizada, o se trata del plugin NRPE para el servidor Nagios Core.
Cómo compilar e instalar el servicio Nagios NRPE en las máquinas remotas Rocky Linux 8
Compilamos exclusivamente el servicio NRPE:
$ make nrpe
Y lo instalamos, incluyendo configuraciones:
$ sudo make install-groups-users install-daemon install-config install-init
Queda disponible el servicio nrpe o nrpe.service.
Configuración del servicio NRPE
Editamos su archivo de configuración:
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
Buscamos la directiva allowed_hosts:
... allowed_hosts=127.0.0.1,::1 ...
Añadimos la dirección IP o nombre DNS del servidor Nagios Core para que se permitan las conexiones que envíe:
... allowed_hosts=127.0.0.1,::1,rocky8.local.lan ...
En este archivo existe la definición de los comandos que pueden ser ejecutados a petición del servidor Nagios Core:
... 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 ...
Uno de ellos, check_hda1, utiliza el nombre de dispositivos de disco típico de controladoras IDE (/dev/hd*), cuando en la mayoría de ocasiones se utiliza la nomenclatura SCSI o S-ATA. Si es tu caso puedes cambiarlo, por ejemplo, si el dispositivo de almacenamiento principal es /dev/hda:
... command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
Terminados los ajustes, guardamos los cambios.
Abandonamos el directorio de trabajo:
$ cd ..
Y lo podemos eliminar:
~$ rm -rf nrpe-4.0.3
Inicio del servicio
Para que el servicio inicie automáticamente en cada arranque del sistema, lo habilitamos:
~$ sudo systemctl enable nrpe
Lo iniciamos por vez primera de forma manual:
~$ sudo systemctl start nrpe
Podemos comprobar que se encuentra en ejecución:
~$ systemctl status nrpe
Firewall
Para que el servicio Nagios NRPE pueda recibir conexiones desde el servidor Nagios Core añadimos la regla correspondiente al firewall:
~$ sudo firewall-cmd --permanent --add-service=nrpe
Y recargamos la configuración de este para aplicarla:
~$ sudo firewall-cmd --reload
Cómo compilar e instalar el plugin NRPE en el servidor Nagios Core Rocky Linux 8
En el servidor Nagios Core compilamos el plugin que realizará las conexiones a las máquinas remotas:
$ make check_nrpe
Lo instalamos:
$ sudo make install-plugin
Abandonamos el directorio:
$ cd ..
Y lo podemos borrar:
~$ rm -rf nrpe-4.0.3
Podemos comprobar el funcionamiento del plugin NRPE lanzándolo desde consola indicando como parámetro la dirección de cualquier máquina remota que corra el servicio NRPE y esté configurada para aceptar peticiones del servidor Nagios:
~$ /usr/local/nagios/libexec/check_nrpe -H rocky8b.local.lan NRPE v4.0.3
Si todo funciona como debería, la máquina responde con su versión del servicio NRPE.
Cómo monitorizar la máquina remota
Editamos la configuración del servicio Nagios Core:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Buscamos esta línea:
... #cfg_dir=/usr/local/nagios/etc/servers ...
Y la activamos:
... cfg_dir=/usr/local/nagios/etc/servers ...
De esta forma se incluirá en la configuración del servicio el contenido de todos los archivos presentes en el directorio especificado (que aún no existe).
Guardamos este archivo y creamos el directorio:
~$ sudo -u nagios mkdir /usr/local/nagios/etc/servers
En este nuevo directorio creamos un archivo de configuración para cada máquina remota, por ejemplo, para una segunda máquina Rocky 8 que queremos monitorizar:
~$ sudo nano /usr/local/nagios/etc/servers/rocky8b.local.lan.cfg
En una primera sección indicamos la información de conexión (plantilla a usar, nombre de la máquina, dirección, características de la conexión, etc.):
define host { use linux-server host_name rocky8b.local.lan alias Rocky Linux 8 (remota) address rocky8b.local.lan max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
Y a continuación definimos los servicios que queramos monitorizar en la máquina remota, empleando el comando para lanzar el plugin NRPE (check_nrpe, que definiremos después) y el comando remoto (definido en la configuración del servicio NRPE remoto):
... define service { use generic-service host_name rocky8b.local.lan service_description Carga de CPU check_command check_nrpe!check_load } define service { use generic-service host_name rocky8b.local.lan service_description Espacio libre en /dev/sda1 check_command check_nrpe!check_sda1 }
Observa que hemos creado un servicio que empleará el comando remoto check_sda1 que anteriormente modificamos en la máquina remota.
Guardamos el archivo de configuración para la máquina remota.
Ahora definimos el comando check_nrpe en el archivo commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Y añadimos al final del mismo la definición del comando destinado a usar el plugin NRPE:
... # NRPE define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Las variables se sustituirán por la ruta de los plugins en el servidor Nagios, la dirección de la máquina remota y el comando que se enviará.
Guardamos los cambios y recargamos la configuración del servicio:
~$ sudo systemctl reload nagios
Ahora. al refrescar la interfaz web de Nagios Core, aparecerá una nueva máquina en la sección «Hosts«:
Y en la sección «Services» veremos más detallados todos los servicios monitorizados:
¡Así de fácil!
Conclusión
Ahora que ya sabes cómo instalar y configurar Nagios en Rocky Linux 8 puedes monitorizar todas las máquinas de tu red, incluso tu servidor o VPS Rocky gracias a su potente a la vez que sencilla interfaz web.
¡Apoya comoinstalar.me!
¿Ya monitorizas tus sistemas gracias a esta pequeña guía? Si es así y quieres agradecérnoslo, siempre es bienvenida cualquier mínima contribución al mantenimiento de este sitio y la creación de más y mejores tutoriales y guías.
Puedes ayudarnos dejando una propina de tan sólo 1 $ desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
¿Dudas, preguntas, sugerencias?
¿Te ha surgido alguna duda o pregunta siguiendo este tutorial? ¿Tienes alguna sugerencia o corrección? Déjanos un comentario (están moderados para evitar SPAM, pero los revisamos a diario).
Actualizado a la versión 2.4.0 de los plugins de Nagios y la versión 4.4.7 de Nagios Core.
Hola, muchas gracias por todo. Una pregunta, ¿puedes subir cómo instalar Nagios en FreeBSD?, y si no es posible te agradecería si me pudieras ayudar con un error. Estoy ejecutando Nagios, pero me sale «not running» en la página.
Muchas gracias.
Hola, Pablo. El tutorial que me comentas está en la cola de borradores, así que en algún momento no muy lejano estará disponible.