Monitorización con Nagios
Nagios es un sistema de monitorización que vigila los equipos y los servicios que le sean configurados, pudiendo alertar al administrador si algo no funciona como debería. Puede además extender sus funcionalidades a través de plugins desarrollados por organizaciones y la comunidad.
Algunas de sus características:
- Monitorización de servicios de red como: SMTP, HTTP, HTTPS, etc
- Monitorización de los recursos del hardware: CPU, uso de disco, estado de la memoria RAM, puertos, etc
- No depende de los sistemas operativos
- Posibilidad de monitorización remota mediante túneles SSL cifrados o SSH
- Posibilidad de programar plugins específicos para nuevos sistemas o servicios
- Verificación de servicios en paralelo
- Notificaciones cuando suceden problemas en servicios o máquinas y cuando son resueltos
- Posibilidad de definir disparadores que se ejecuten al ocurrir un evento de un servicio o máquinas
- Soporte para implementar redundancia en la monitorización
- Visualización del estado de la red en tiempo real a través de su interfaz web, junto con la posibilidad de generar informes y gráficos de comportamiento de los sistemas monitorizados.
Debido a que necesita de un servidor web para mostrar la monitorización, he decido instalar Nagios en Hera (Rocky 8), ya que es la máquina del escenario que ya posee un servidor web.
Antes de instalar “Nagios Core”, es necesario instalar sus plugins (en todos los clientes). Para instalar dichos plugins, hemos de irnos al sitio web de Nagios, y descargamos el fichero .tar.gz
y lo descomprimimos:
wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
tar -xf nagios-plugins-2.4.0.tar.gz
Este fichero descomprimido contiene el código fuente, por lo que tendremos que compilarlo a mano nosotros. Para ello debemos instalar las siguientes dependencias si no lo estuvieran ya:
dnf install bind-utils libpq-devel gcc make unzip -y
A continuación, dentro del directorio descomprimido, ejecutamos lo siguiente:
./configure
Y cuando haya acabado, realizamos la compilación y la instalación de los plugins:
make
make install
Dichos plugins se han instalado, y se encuentran dentro del directorio /usr/local/nagios/libexec/
:
Hemos de repetir este proceso en todos los clientes. Ahora debemos descargarnos el “Nagios Core” en Hera:
wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.6/nagios-4.4.6.tar.gz
tar -xf
Ahora, al igual que antes, compilamos el paquete por nuestra cuenta y lo instalamos:
./configure
make all
make install-groups-users install install-webconf install-config install-init install-daemoninit install-commandmode
Una vez que hayamos instalado los paquetes, tenemos que crear el usuario “nagiosadmin” para acceder al panel de control de Nagios y meter a apache en el grupo nagios:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
usermod -a -G nagios apache
Ahora habilitamos y activamos el servicio de Nagios:
systemctl start nagios
systemctl enable nagios
Ahora podemos acceder a la dirección web de nuestra máquina (www.dparrales.gonzalonazareno.org/nagios
) para acceder al panel de control:
Podemos ver la lista de hosts y servicios que monitoriza:
Ahora tendremos que instalar en todos los clientes “Nagios NRPE”:
apt install nagios-nrpe-server nagios-plugins-basic nagios-plugins -y
E iniciamos y habilitamos los servicios:
systemctl start nagios-nrpe-server && systemctl enable nagios-nrpe-server
Una vez hecho esto, debemos modificar la configuración en cada cliente, para permitir que la máquina Hera tenga acceso a Nagios-NRPE y para que tenga los permisos necesarios para acceder a la información que necesita:
nano /etc/nagios/nrpe.cfg
allowed_hosts=127.0.0.1,::1,172.16.0.200
dont_blame_nrpe=1
También debemos adaptar la línea de chequeo de disco a nuestro escenario, ya que por defecto busca en ‘hda1’, mientras que nuestros escenario usa discos virtual ‘vda1’:
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda1
Tras haber modificado esto, podemos reiniciar el servicio:
systemctl restart nagios-nrpe-server
Ahora, en el lado del servidor, debemos instalar el plugin de Nagios-NRPE:
dnf install nagios-plugins-nrpe -y
Podemos probar si tiene conectividad con el resto de clientes:
Si no funciona el plugin anterior (cosa que me ha ocurrido por haber compilado Nagios en lugar de instalarlo desde las fuentes), debemos compilar el plugin NRPE nosotros. Para ello, descargamos el fichero con las fuentes:
wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-4.0.3.tar.gz
tar xzf nrpe.tar.gz
Y lo compilamos:
cd nrpe-nrpe-4.0.3/
./configure --enable-command-args
make all
make install
Con esto, ya hemos terminado de compilar el plugin.
Vemos que podemos conectarnos con todos los clientes, aunque la versión de Ares es diferente por ser una máquina Ubuntu, por lo que podemos seguir configurando en el lado del servidor. Así pues, en el fichero /usr/local/nagios/etc/objects/commands.cfg
debemos añadir el siguiente bloque de configuración para el plugin que acabamos de instalar:
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
A continuación, para poder configurar en el servidor cuales son los clientes que debe monitorizar, primero, debemos descomentar la siguiente línea en el fichero de configuración de Nagios (/usr/local/nagios/etc/nagios.cfg
):
cfg_dir=/usr/local/nagios/etc/servers
Como vemos esta línea hace referencia a un directorio que no existe, por lo que debemos crearlo primero:
mkdir /usr/local/nagios/etc/servers
En ese directorio vamos a crear el fichero de configuración en el cual definiremos los clientes y servicios que queramos monitorizar:
nano /etc/nagios/servers/config.cfg
# HOSTS
# Zeus
define host {
use linux-server
host_name zeus
alias Zeus
address 172.16.0.1
}
# Ares
define host {
use linux-server
host_name ares
alias Ares
address 10.0.1.101
}
# Apolo
define host {
use linux-server
host_name apolo
alias Apolo
address 10.0.1.102
}
# SERVICIOS
# Zeus
define service{
use generic-service
host_name zeus
service_description Numero usuarios
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name zeus
service_description SSH
check_command check_ssh
}
define service{
use generic-service
host_name zeus
service_description Carga CPU
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name zeus
service_description Total Procesos
check_command check_nrpe!check_total_procs
}
# Ares
define service{
use generic-service
host_name ares
service_description Numero usuarios
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name ares
service_description SSH
check_command check_ssh
}
define service{
use generic-service
host_name ares
service_description Carga CPU
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name ares
service_description Total Procesos
check_command check_nrpe!check_total_procs
}
# Apolo
define service{
use generic-service
host_name apolo
service_description Numero usuarios
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name apolo
service_description SSH
check_command check_ssh
}
define service{
use generic-service
host_name apolo
service_description Carga CPU
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name apolo
service_description Total Procesos
check_command check_nrpe!check_total_procs
}
Ahora debemos añadir al cortafuegos de Hera la regla que permita el paso al servicio ‘Nagios NRPE’:
firewall-cmd --permanent --add-service=nrpe
firewall-cmd --reload
Y reiniciamos el servicio de Nagios:
systemctl restart nagios
En este momento, ya deberíamos poder visualizar a todos los clientes en el panel de control de Nagios:
Si nos dirigimos a la pestaña de servicios, vemos que todos todos están en verde y funcionando:
Con esto, damos por finalizada la práctica.