Cómo instalar Nagios en Rocky Linux 8

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.

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:

como descargar e instalar los plugins de nagios para rocky linux 8

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://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz

Una vez descargado, descomprimimos este paquete en el directorio de trabajo:

~$ tar xf nagios-plugins-2.3.3.tar.gz

Y cambiamos el directorio de trabajo al subdirectorio que se acaba de crear:

~$ cd nagios-plugins-2.3.3

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

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.3.3 (nagios-plugins 2.3.3)
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.

como descargar e instalar nagios core para rocky linux 8

Descargamos el paquete .tar.gz:

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

Instalamos las dependencias:

~$ sudo yum install -y perl

Descomprimimos el paquete de Nagios Core:

~$ tar xf nagios-4.4.6.tar.gz

Cambiamos el directorio de trabajo al nuevo subdirectorio:

~$ cd nagios-4.4.6

Configuramos la compilación:

$ ./configure

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

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

como instalar nagios core en rocky linux 8

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:

como acceder a nagios core en rocky linux 8

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:

nagios core en 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:

interfaz web de nagios core sobre rocky linux 8

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:

como monitorizar recursos con nagios en rocky linux 8

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:

como descargar nagios nrpe para rocky linux 8

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

Valora esta entrada

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies