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:
Por otra parte siempre podemos descargar Nagios CORE de forma manual desde los repositorios:
Instalación de NAGIOS en Raspberry Pi
Primero actualizamos nuestra Raspberry:
sudo apt update sudo apt upgrade sudo reboot |
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 |
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:
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):
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):
Si vamos a la sección Servicios (Services), veremos todos los servicios que se están monitorizando en estos hosts:
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).