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:

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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo yum update
~$ sudo yum update
~$ sudo yum update

E instalamos dichas herramientas:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo yum install -y tar wget gcc make openssl-devel
~$ sudo yum install -y tar wget gcc make openssl-devel
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
~$ wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ tar xf nagios-plugins-2.4.0.tar.gz
~$ tar xf nagios-plugins-2.4.0.tar.gz
~$ tar xf nagios-plugins-2.4.0.tar.gz

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ cd nagios-plugins-2.4.0
~$ cd nagios-plugins-2.4.0
~$ cd nagios-plugins-2.4.0

Configuramos la compilación de los plugins:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ./configure
$ ./configure
$ ./configure

Los compilamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ make
$ make
$ make

E instalamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo make install
$ sudo make install
$ sudo make install

Ya podemos abandonar este directorio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ cd ..
$ cd ..
$ cd ..

Y eliminarlo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ rm -rf nagios-plugins-2.4.0
~$ rm -rf nagios-plugins-2.4.0
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ /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
~$ /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
~$ /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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ /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
~$ /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
~$ /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.

como descargar e instalar nagios core para rocky linux 8

Descargamos el paquete .tar.gz:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz

Instalamos las dependencias:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo yum install -y perl
~$ sudo yum install -y perl
~$ sudo yum install -y perl

Descomprimimos el paquete de Nagios Core:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ tar xf nagios-4.4.7.tar.gz
~$ tar xf nagios-4.4.7.tar.gz
~$ tar xf nagios-4.4.7.tar.gz

Cambiamos el directorio de trabajo al nuevo subdirectorio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ cd nagios-4.4.7
~$ cd nagios-4.4.7
~$ cd nagios-4.4.7

Configuramos la compilación:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ./configure --disable-ssl
$ ./configure --disable-ssl
$ ./configure --disable-ssl

Compilamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ make all
$ make all
$ make all

E instalamos tanto los binarios como las configuraciones:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo make install-groups-users install install-init install-daemoninit install-commandmode install-config install-webconf
$ sudo make install-groups-users install install-init install-daemoninit install-commandmode install-config install-webconf
$ sudo make install-groups-users install install-init install-daemoninit install-commandmode install-config install-webconf

Hecho esto abandonamos el subdirectorio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ cd ..
$ cd ..
$ cd ..

Y podemos eliminarlo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ rm -rf nagios-4.4.7
~$ rm -rf nagios-4.4.7
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo semanage fcontext -at httpd_sys_rw_content_t "/usr/local/nagios/var/rw(/.*)?"
~$ sudo semanage fcontext -at httpd_sys_rw_content_t "/usr/local/nagios/var/rw(/.*)?"
~$ sudo semanage fcontext -at httpd_sys_rw_content_t "/usr/local/nagios/var/rw(/.*)?"

Aplicamos el nuevo contexto:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo restorecon -R /usr/local/nagios/var/rw/
~$ sudo restorecon -R /usr/local/nagios/var/rw/
~$ sudo restorecon -R /usr/local/nagios/var/rw/

Y también damos acceso de grupo del servicio Nagios al servicio web:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo usermod -a -G nagios apache
~$ sudo usermod -a -G nagios apache
~$ sudo usermod -a -G nagios apache

Disponemos de un nuevo servicio en Rocky Linux 8, el servicio nagios, que iniciaremos manualmente:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl start nagios
~$ sudo systemctl start nagios
~$ sudo systemctl start nagios

Podemos comprobar en cualquier momento el estado del servicio también con systemtctl:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ systemctl status nagios
~$ systemctl status nagios
~$ systemctl status nagios

como instalar nagios core en rocky linux 8

Creamos el usuario nagiosadmin con contraseña:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl reload httpd
~$ sudo systemctl reload httpd
~$ 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/:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
...
... # Definitions for monitoring the local (Linux) host cfg_file=/usr/local/nagios/etc/objects/localhost.cfg ...
...
# 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
# 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%
}
...
... # 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% } ...
...
# 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
define command {
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
...
... define command { command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 } ...
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ tar xf nrpe-4.0.3.tar.gz
~$ tar xf nrpe-4.0.3.tar.gz
~$ tar xf nrpe-4.0.3.tar.gz

Cambiamos el directorio activo al nuevo subdirectorio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ cd nrpe-4.0.3
~$ cd nrpe-4.0.3
~$ cd nrpe-4.0.3

Y configuramos la compilación:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ./configure
$ ./configure
$ ./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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ make nrpe
$ make nrpe
$ make nrpe

Y lo instalamos, incluyendo configuraciones:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo make install-groups-users install-daemon install-config install-init
$ sudo make install-groups-users install-daemon install-config install-init
$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg

Buscamos la directiva allowed_hosts:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
allowed_hosts=127.0.0.1,::1
...
... allowed_hosts=127.0.0.1,::1 ...
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
allowed_hosts=127.0.0.1,::1,rocky8.local.lan
...
... allowed_hosts=127.0.0.1,::1,rocky8.local.lan ...
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
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
...
... 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 ...
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
...
... command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ cd ..
$ cd ..
$ cd ..

Y lo podemos eliminar:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ rm -rf nrpe-4.0.3
~$ rm -rf nrpe-4.0.3
~$ rm -rf nrpe-4.0.3

Inicio del servicio

Para que el servicio inicie automáticamente en cada arranque del sistema, lo habilitamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl enable nrpe
~$ sudo systemctl enable nrpe
~$ sudo systemctl enable nrpe

Lo iniciamos por vez primera de forma manual:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl start nrpe
~$ sudo systemctl start nrpe
~$ sudo systemctl start nrpe

Podemos comprobar que se encuentra en ejecución:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ systemctl status nrpe
~$ systemctl status nrpe
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo firewall-cmd --permanent --add-service=nrpe
~$ sudo firewall-cmd --permanent --add-service=nrpe
~$ sudo firewall-cmd --permanent --add-service=nrpe

Y recargamos la configuración de este para aplicarla:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo firewall-cmd --reload
~$ sudo firewall-cmd --reload
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ make check_nrpe
$ make check_nrpe
$ make check_nrpe

Lo instalamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo make install-plugin
$ sudo make install-plugin
$ sudo make install-plugin

Abandonamos el directorio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ cd ..
$ cd ..
$ cd ..

Y lo podemos borrar:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ rm -rf nrpe-4.0.3
~$ rm -rf nrpe-4.0.3
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ /usr/local/nagios/libexec/check_nrpe -H rocky8b.local.lan
NRPE v4.0.3
~$ /usr/local/nagios/libexec/check_nrpe -H rocky8b.local.lan NRPE v4.0.3
~$ /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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
~$ sudo nano /usr/local/nagios/etc/nagios.cfg

Buscamos esta línea:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
#cfg_dir=/usr/local/nagios/etc/servers
...
... #cfg_dir=/usr/local/nagios/etc/servers ...
...
#cfg_dir=/usr/local/nagios/etc/servers
...

Y la activamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
cfg_dir=/usr/local/nagios/etc/servers
...
... cfg_dir=/usr/local/nagios/etc/servers ...
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo -u nagios mkdir /usr/local/nagios/etc/servers
~$ sudo -u nagios mkdir /usr/local/nagios/etc/servers
~$ 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/nagios/etc/servers/rocky8b.local.lan.cfg
~$ sudo nano /usr/local/nagios/etc/servers/rocky8b.local.lan.cfg
~$ 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.):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
}
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 }
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):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
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
}
... 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 }
...
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
~$ sudo nano /usr/local/nagios/etc/objects/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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
# NRPE
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
... # NRPE define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
...
# 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl reload nagios
~$ sudo systemctl reload nagios
~$ 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

5/5 - (4 votos)

3 comentarios en «Cómo instalar Nagios en Rocky Linux 8»

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

    Responder

Deja un comentario