Monitorizar red y dispositivos con Nagios en Raspberry

Nagios es un software increiblemente útil que nos facilitará la tarea de monitorización de la red, de dispositivos y servicios.

 

Requiere una instalación y configuración previa por medio de terminal (no se puede lograr por medio de la interfaz web), así que toca meterse al barro y trastear con la terminal de Linux.

Concretamente vamos a ver cómo instalar Nagios en Raspberry Pi.



 

Primero hemos de saber que existe una versión de servidor NAGIOS para Raspberry, con multitud de herramientas:

NEMS LINUX

 

nems linux Nagios en Raspberry Pi
 



 

Por otra parte siempre podemos descargar Nagios CORE de forma manual desde los repositorios:

descargar Nagios Core
 

 

Instalación de NAGIOS en Raspberry Pi

 
Primero actualizamos nuestra Raspberry:

 

sudo apt update
sudo apt upgrade
sudo reboot

 
actualizar Raspberry
 

 

Descarga e instalación de los pre-requisitos

 

Como Nagios funciona con una interfaz web, debemos instalar Apache y PHP:

sudo apt install apache2 libapache2-mod-php

 

 

Descargamos NAGIOS CORE y los plugins Nagios (actualizado versiones 2020)

 
Creamos un directorio donde descargaremos los paquetes de Nagios Core y los plugins. En este caso hemos elegido el directorio Downloads del usuario por defecto, pero podemos elegir otro directorio:

mkdir /home/pi/Downloads
cd /home/pi/Downloads
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-2.3.1.tar.gz

 

 

Instalando Nagios

 

Crear usuario y grupos Nagios

 
Vamos a pasar a instalar y compilar Nagios CORE y los plugins Nagios, pero primero creamos el usuario específico para Nagios, el grupo para el usuario nagios y su grupo en Apache.
 

sudo useradd -m -s /bin/bash nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd www-data

 

 

Extraemos los archivos de Nagios CORE y Compilamos

 

tar zxvf nagios-4.4.5.tar.gz
cd nagios-4.4.5
./configure --with-command-group=nagcmd
make all

 

compilar Nagios
 

 

Instalamos Nagios

 

sudo make install
sudo make install-init
sudo make install-config
sudo make install-commandmode

En este punto, Nagios Core ya está instalado, pero todavía queda configurar la parte relativa a Apache, para permitir el acceso a la página de Nagios.
 

 

Configuración de Apache para Nagios:

 
Existen varias tareas que tenemos que realizar para dejar Apache preparado para Nagios:
 

  • Habilitar el módulo CGI para Apache:
sudo a2enmod cgi

 

  • Copiar la configuración de Apache al directorio de Apache
sudo cp sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf

 

  • Crear el primer usuario para la interfaz web:
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

 

  • Y reiniciar Apache:
sudo service apache2 restart

 

Ahora ya podemos comprobar si tenemos acceso a la interfaz web de Nagios:

http://192.168...... /nagios/

O sea, la_IP_de_nuestro_Server_NAGIOS/nagios/
 

Recibiremos este error, ya que el servicio Nagios todavía no está levantado:

 
 

Nagios core unable to get Process Status
 

 

Iniciamos el servicio Nagios

 

sudo service nagios start

 

Y comprobamos que ya podemos acceder a la interfaz web de Nagios (utilizando el usuario y contraseña que hemos creado previamente):
 
Interfaz Web Nagios

 

Y para más comodidad, añadimos el servicio Nagios de forma automática al arranque:

sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
 
sudo update-rc.d nagios defaults

 

 

Instalación de los plugins NAGIOS

extraemos los archivos:

tar zxvf nagios-plugins-2.3.1.tar.gz
cd nagios-plugins-2.3.1

 

Compilamos e instalamos los plugins:

cd nagios-plugins-2.3.1/
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
sudo make install

 

Reiniciar servicio Nagios de nuevo:

sudo service nagios restart

 

Ahora solo nos queda preparar los host que serán monitorizados por NAGIOS.

 

Configurando los Host o servidores remotos para monitorizar con NAGIOS

 

Dado que Nagios utiliza sobre todo SNMP, instalaremos SNMP en cada host antes de añadirlo a Nagios para que sea monitorizado:

  • Instalamos snmp:
sudo apt install snmpd

 

  • Nos movemos al directorio de configuración snmp:
cd /etc/snmp

 

  • Realizamos una backup del archivo snmpd.conf y después lo eliminamos:
cp snmpd.conf snmpd.conf.bak
 
rm snmpd.conf
  • Creamos un nuevo archivo snmpd.conf, y lo editamos:
nano snmpd.conf

 

  • Añadimos esto:

 

com2sec readonly default MICOMUNIDAD
 
group MyROGroup v1 readonly
 
group MyROGroup v2c readonly
 
view all included .180
 
access MyROGroup "" any noauth exact all none none
 
sysName MIHOST

 

Podemos modificar “MICOMUNIDAD” y “MIHOST“, por los nombres que prefiramos. Existen más opciones, pero estas son las más importantes y necesarias.

  • Hecho esto, guardamos el archivo y reiniciamos el servicio:

 

service snmpd restart

 

 

Añadir un Host o Servidor remoto para monitorizar con NAGIOS

 
Vamos al directorio de objetos de Nagios:

cd /usr/local/nagios/etc/objects

 
Creamos un nuevo archivo para nuestro Host:
 

nano mihost.cfg

 

Y añadimos:

define host 
{
 use                                    linux-server                              ;Host group to use
 host_name                              MotionEYE                                 ; Name of this host
 alias                                  motioneye                                 ; Alias
 address                                192.168.0.113                             ; IP Address
}

 

Esta es una configuración básica de un host. Simplemente monitorizará si el host está levantado. Pero es el punto de partida.


Después podremos crear monitorizaciones más complejas!

 

  • Ahora hemos de avisar a Nagios acerca del nuevo archivo de configuración de este host. Lo hacemos en el archivo

 

/usr/local/nagios/etc/nagios.cfg
  • Y debajo de la línea que se refiere a localhost, añadimos:
cfg_file=/usr/local/nagios/etc/objects/mihost.cfg

 

Hecho esto, reiniciamos el servicio de Nagios:

service nagios restart

Y ya podremos ver que el nuevo host motioneye aparece (vemos también otro host linux que estamos monitorizando, llamado servidor1):
 
nuevo host en Nagios
 

 

Si vamos a la sección Servicios (Services), veremos todos los servicios que se están monitorizando en estos hosts:

monitorizar servidor-Host con Nagios
 



En artículos posteriores, veremos cómo crear y modificar servicios para monitorizar otros puertos con NAGIOS. Por ejemplo, en la captura anterior se puede apreciar que el host motioneye no usa el servicio HTTP, sino uno llamado HTTP-8765, que se trata de un servicio que hemos creado para monitorizar otro puerto diferente al 80 (el tradicional HTTP).