LibreNMS
Librenms instalación, configuración y trucos
Instalar LibreNMS en Debian
Instalar libreNMS no se diferencia mucho de la instalación de otros paquetes basados en el stack LAMP (Linux, Apache, MySQL, PHP) como pueden ser Wordpress u otros.
Requisitos previos
Empezamos instalando una serie de paquetes básicos de Debian.
apt install apt-transport-https lsb-release ca-certificates wget
Instalamos las claves de los paquetes PHP de sury.
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Añadimos los repositorios de sury a la lista de paquetes de Debian
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/sury-php.list
Realizamos un apt update para que se recoja la información de los nuevos repositorios
apt update
Instalación de paquetes
Procedemos a instalar los paquetes necesarios entre los que podemos ver python, snmp, fping, mariadb, etc
apt install acl curl fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php-cli php-curl php-fpm php-gd php-gmp php-json php-mbstring php-mysql php-snmp php-xml php-zip python3-dotenv python3-pymysql python3-redis python3-setuptools python3-systemd python3-pip rrdtool snmp snmpd unzip whois
Creación del usuario
Crearemos un usuario libreNMS para que ejecute el paquete de libreNMS
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Descarga de LibreNMS
Vamos a la carpeta opt y clonamos del repositorio de LibreNMS mediante git
cd /opt
git clone https://github.com/librenms/librenms.git
Permisos en la carpeta de LibreNMS
Procedemos a otorgar permisos al usuario librenms que hemos creado antes.
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
El comando setfacl tendremos que usarlo si por lo que sea nos da en el futuro cualquier problema de permisos alguna de las carpetas o archivos de LibreNMS
Instalar las dependencias de PHP
su - librenms
./scripts/composer_wrapper.php install --no-dev
exit
Como vemos hecho un su con el usuario librenms, hay que usar siempre esto para cualquier cosa que vayamos a realizar con librenms para evitar problemas
Zona horaria
Modificamos la zona horaria en PHP a través del php.ini
Recuerda modificar también la zona horaria en el sistema y configuramos ntp o chrony para mantener sincronizada la hora del sistema.
Configurar MariaDB
Procedemos a modificar los ajustes de MariaDB para nuestro sistema de monitorización LibreNMS
vi /etc/mysql/mariadb.conf.d/50-server.cnf
En la sección [mysqld] añadimos las siguientes líneas
innodb_file_per_table=1
lower_case_table_names=0
Reiniciamos MariaDB
systemctl enable mariadb
systemctl restart mariadb
Entramos en MariaDB para crear la base de datos
mysql -u root
Creamos la base de datos
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
En este ejemplo usamos una base de datos llamada librenms y un usuario librenms, puedes usar cualquier nombre igual o diferente para la base de datos y el usuario.
Creamos el usuario y le otorgamos permisos
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'unapasswordsegura';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
exit
Configurar php-fpm
Para ello vamos a copiar el archivo de www para crear una versión específica para librenms
cp /etc/php/8.2/fpm/pool.d/www.conf /etc/php/8.2/fpm/pool.d/librenms.conf
vi /etc/php/8.2/fpm/pool.d/librenms.conf
Cambiamos en el archivo [www] por [librenms] y cambiamos el usuario y el grupo a librenms.
También cambiaremos el sock del listener de php
listen = /run/php-fpm-librenms.sock
Borramos el www.conf para ahorrar recursos de ejecución.
Configurar Nginx
Instalaremos nginx
apt install nginx
Ahora configuraremos nginx para nuestro librenms
vi /etc/nginx/sites-enabled/librenms.vhost
Introduciremos la siguiente configuración (recuerda cambiar el server_name por el tuyo )
server {
listen 80;
server_name librenms.eduardotaboada.com;
root /opt/librenms/html;
index index.php;
charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Comprobamos que todo funciona
root@librenms:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Borramos el archivo por defecto de nginx, para que solo que de el de librenms y reiniciamos servicios
rm /etc/nginx/sites-enabled/default
systemctl reload nginx
systemctl restart php8.2-fpm
Instalar plugins y servicios de Nagios en Librenms
Los servicios dentro de LibreNMS brindan la capacidad de aprovechar los complementos de Nagios para realizar una monitorización adicional ademas de la que proporciona SNMP.
Los servicios también se utilizan junto con SNMP para obtener una mayor funcionalidad y diferentes capacidades fuera de lo que es el SNMP.
Se pueden usar los plugins nativos de Nagios, así como los paquetes de contribuciones de terceros.
Service Templates
Service Templates dentro de LibreNMS brindan la misma capacidad que Nagios con los grupos de hosts. Conocidos como Grupos de Dispositivos en LibreNMS. Son dispositivos aplicados que pertenecen al grupo de dispositivos especificado.
Utiliza los botones Aplicar para crear o actualizar manualmente Servicios para la Plantilla de Servicio. Utiliza los botones Eliminar para eliminar manualmente los servicios de la plantilla de servicio.
Después de editar una plantilla de servicio y luego usar Aplicar, todos los cambios relevantes se envían a los servicios existentes creados previamente.
También puede habilitar el descubrimiento automático de plantillas de servicio para agregar, eliminar o actualizar servicios en intervalos de descubrimiento regulares.
Cuando un dispositivo es miembro de varios grupos de dispositivos, se aplican plantillas de todos esos grupos de dispositivos.
Servicio de descubrimiento automático
Para crear automáticamente servicios para dispositivos con chequeos disponibles.
Debe habilitar los servicios de descubrimiento dentro de config.php con lo siguiente:
$config['discover_services'] = true;
Descubrimiento automático de plantillas de servicio
Para crear automáticamente servicios para dispositivos con plantillas de servicio configuradas.
Debes habilitar los servicios de descubrimiento dentro de config.php con lo siguiente:
$config['discover_services_templates'] = true;
Instalar los plugins de Nagios
Para instalar los plugins de Nagios ejecutaremos
apt install monitoring-plugins
Luego habilitaremos los servicios para que aparezcan en nuestra interfaz gráfica. Para ello en el fichero config.php añadiremos la línea.
$config['show_services'] = 1;
Y también la línea de la ruta a los plugins
$config['nagios_plugins'] = "/usr/lib/nagios/plugins";
Ejecutamos un cambio en los permisos para que se puedan ejecutar los plugins
chmod +x /usr/lib/nagios/plugins/*
Y añadiremos una línea en el fichero cron para ejecutar estos servicios
*/5 * * * * librenms /opt/librenms/services-wrapper.py 1
Ahora tendremos una opción de menú nueva de servicios en nuestra barra de menú
En la opción Add service podremos añadir los checks de Nagios para nuestro LibreNMS
Dentro del desplegable de Check Type tenemos todos los tipos de comprobaciones de Nagios, que nos permiten realizar chequeos que LibreNMS no realiza.
Ejemplos: