Cómo instalar la solución de monitorización LibreNMS en Rocky Linux
LibreNMS es una herramienta de monitorización que admite la detección automática con múltiples protocolos, como SNMP, ARP, OSPF y BGP. Para supervisar los sistemas operativos, puedes utilizar el protocolo SNMP, que está disponible en la mayoría de los SO, incluidos Linux, Windows y BSD.
Hay tres versiones del protocolo SNMP, v1 y v2, que sólo están protegidas con una contraseña comunitaria, y el protocolo v3, que admite contraseñas para la autenticación y el cifrado. Para el entorno de producción, se recomienda utilizar el protocolo SNMP v3, que es más seguro que v2 y v1.
En esta guía, aprenderás a instalar la herramienta de monitorización LibreNMS en el servidor Rocky Linux. Esta guía incluye la instalación de la pila LEMP (Nginx, MariaDB y PHP-FPM) y la configuración básica del servicio SNMP.
Al final, tendrás la solución de monitorización LibreNMS lista para producción y sólo tendrás que añadir un nuevo host, servidor o dispositivo para monitorizar LibreNMS.
Requisitos previos
Para completar esta guía, necesitarás los siguientes requisitos:
- Un servidor Rocky Linux – Este ejemplo utiliza el servidor Rocky Linux 8.
- Un usuario no root con privilegios sudo root/administrador.
- Un nombre de dominio local para el despliegue local.
Configurar repositorios
Antes de empezar a instalar paquetes, debes configurar los repositorios en tu sistema Rocky Linux. Tendrás que añadir el repositorio EPEL (Extra Packages for Enterprise Linux) y el repositorio PHP Remi.
Ejecuta el siguiente comando dnf para añadir el repositorio EPEL a tu sistema.
sudo dnf install epel-release
Introduce Y cuando se te pida confirmación y pulsa ENTER para continuar.
A continuación, ejecuta el siguiente comando dnf para añadir el repositorio PHP Remi. Este repositorio proporciona múltiples versiones de PHP, que incluye la última PHP 8.1 que se requiere para la instalación de LibreNMS.
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Ahora introduce Y y pulsa ENTER para continuar.
Una vez añadido el repositorio EPEL y Remi, verifícalo utilizando el comando dnf que aparece a continuación.
sudo dnf repolist
Deberías ver que el repositorio EPEL y Remi está añadido y disponible en tu sistema Rocky Linux.
Instalar las dependencias de los paquetes
Después de añadir los repositorios EPEL y Remi, ahora empezarás a instalar las dependencias de los paquetes para LibreNMS. Esto incluye la pila LEMP, los paquetes SNMP y algunas dependencias básicas de Python.
Antes de comenzar la instalación, ejecuta el siguiente comando para habilitar el módulo de repositorio PHP‘remi-8.1‘. La última versión de LibreNMS requiere al menos PHP 8.
sudo dnf reset php sudo dnf module enable php:remi-8.1
Introduce y para confirmar y habilitar el repositorio PHP Remi 8.1.
A continuación, ejecuta el siguiente comando dnf para instalar las dependencias de paquetes para LibreNMS. Cuando se te pida que confirmes la instalación, introduce y y pulsa ENTER para continuar, y comenzará la instalación.
sudo dnf install bash-completion cronie fping git ImageMagick mariadb-server mtr net-snmp net-snmp-utils nginx nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-devel python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip
Una vez instaladas las dependencias, ejecuta el siguiente comando para iniciar y habilitar algunos servicios como Nginx, MariaDB, PHP-FPM y snmpd.
sudo systemctl enable nginx php-fpm mariadb snmpd sudo systemctl start nginx php-fpm mariadb snmpd
En este momento, algunos servicios básicos Nginx, MariaDB, PHP-FPM y el snmpd se iniciarán automáticamente al arrancar el sistema. Y todos esos servicios se están ejecutando.
Configurar Firewalld
Para este ejemplo, vamos a utilizar el Rocky Linux con firewalld activado. Ahora añadirás los protocolos HTTP y HTTPS al firewalld.
Ejecuta el siguiente comando firewall-cmd para añadir los servicios HTTP y HTTPS al firewalld. Deberías obtener el mensaje de salida‘success‘ que significa que se ha añadido la nueva regla.
sudo firewall-cmd --permanent --zone public --add-service http sudo firewall-cmd --permanent --zone public --add-service https
A continuación, recarga el firewalld para aplicar los nuevos cambios. A continuación, comprueba el estado del firewalld utilizando el siguiente comando.
sudo firewall-cmd --reload sudo firewall-cmd --list-all
Recibirás la salida de que se han añadido los protocolos HTTP y HTTPS al firewalld.
Descarga del código fuente de LibreNMS
En este paso, descargarás el código fuente de LibreNMS desde GitHub. Pero antes, también crearás un nuevo usuario dedicado‘librenms‘ que se utilizará para ejecutar la aplicación LibreNMS.
Ejecuta el siguiente comando para crear un nuevo usuario de sistema ‘librenms’. Este usuario se utilizará para ejecutar la aplicación LibreNMS.
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Ahora mueve tu directorio de trabajo a ‘/opt’ y descarga el código fuente de LibreNMS mediante el siguiente comando git. Ahora deberías obtener un nuevo directorio‘/opt/librenms‘, que se utilizará como directorio de instalación de LibreNMS.
cd /opt git clone https://github.com/librenms/librenms.git
Cambia la propiedad y el permiso del directorio de instalación de LibreNMS ‘/opt/librenms‘. El propietario de la instalación debe ser el usuario ‘librenms’, y además el permiso 771 permitirá al usuario leer escribir y ejecutar en el directorio.
sudo chown -R librenms:librenms /opt/librenms sudo chmod 771 /opt/librenms
Por último, ejecuta el siguiente comando para establecer las listas de control de acceso de algunos de los directorios de LibreNMS. Esto permitirá al grupo‘librenms‘ leer, escribir y ejecutar en algunos directorios específicos de LibreNMS.
sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
Instalación de las dependencias PHP para LibreNMS
Después de descargar el código fuente de LibreNMS y configurar el permiso correcto, ahora instalarás las dependencias de PHP para LibreNMS.
Inicia sesión como usuario ‘librenms ‘ utilizando el siguiente comando.
su - librenms
Ahora, instala las dependencias de PHP mediante el script instalador como se indica a continuación.
./scripts/composer_wrapper.php install --no-dev
Ahora verás la instalación de las dependencias PHP necesarias para LibreNMS. También verás la instalación de paquetes Python para LibreNMS.
Una vez finalizada la instalación de las dependencias PHP, ahora puedes salir del usuario‘librenms‘ pulsando ‘Ctrl+d‘ o puedes escribir el comando‘exit‘.
Configurar PHP-FPM
En este paso, configurarás tu instalación de PHP-FPM para LibreNMS. Modificarás la configuración por defecto‘/etc/php.ini ‘ y configurarás un pool PHP-FPM específico para LibreNMS.
Ejecuta el siguiente comando para configurar la zona horaria correcta para tu sistema Rocky Linux.
sudo timedatectl set-timezone Europe/Stockholm
Ahora edita la configuración PHP‘/etc/php.ini‘ utilizando el siguiente editor nano.
sudo nano /etc/php.ini
Descomenta la opción ‘date.timezone’ y cambia el valor con la zona horaria actual de tu servidor.
date.timezone = Europe/Stockholm
Guarda el archivo y cierra el editor cuando hayas terminado.
A continuación, copia la configuración por defecto del pool PHP-FPM‘www.conf‘ en‘librenms’.conf‘. En este ejemplo, configurarás el pool PHP-FPM específico para la herramienta de monitorización LibreNMS.
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
Ahora edita la configuración del pool PHP-FPM‘/etc/php-fpm.d/librenms. conf’ utilizando el siguiente editor nano.
sudo nano /etc/php-fpm.d/librenms.conf
Cambia el nombre por defecto del pool de ‘[www]’ a ‘[librenms]‘.
[librenms]
Cambia el usuario y grupo por defecto a‘librenms‘. Esto ejecutará el proceso PHP-FPM como usuario y grupo ‘librenms‘.
user = librenms group = librenms
Por último, cambia la opción listen a ‘/run/php-fpm-librenms.sock‘. Esto especificará el archivo sock para el grupo librenms de PHP-FPM.
listen = /run/php-fpm-librenms.sock
Guarda el archivo y sal del editor cuando hayas terminado.
Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio PHP-FPM y aplicar los nuevos cambios.
sudo systemctl restart php-fpm
Configurar el servidor MariaDB
Después de haber configurado el PHP-FPM, ahora tendrás que configurar el servidor de base de datos MariaDB y crear una nueva base de datos y un nuevo usuario para LibreNMS.
LibreNMS requiere el servidor de base de datos MariaDB con InnoDB habilitado. Así que ahora tendrás que habilitarlo. A continuación, crearás una nueva base de datos y un nuevo usuario para LibreNMS.
Edita la configuración del servidor MariaDB ‘/etc/my.cnf.d/mariadb-server.cnf ‘ utilizando el siguiente editor nano.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Pon la siguiente configuración en la sección ‘[mysqld]’.
[mysqld] .... innodb_file_per_table=1 lower_case_table_names=0
Guarda el archivo y sal del editor cuando hayas terminado.
Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio MariaDB y aplicar los nuevos cambios. El servidor MariaDB se está ejecutando ahora con el motor de base de datos InnoDB activado.
sudo systemctl restart mariadb
A continuación, inicia sesión en el intérprete de comandos de MariaDB mediante el siguiente comando mysql. Cuando te pida la contraseña, puedes pulsar ENTER o escribir la contraseña de root de MariaDB.
sudo mysql -u root -p
Ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para LibreNMS. En este ejemplo, crearás una nueva base de datos y un nuevo usuario‘librenms‘, y asegúrate de cambiar la contraseña de la base de datos por tu contraseña.
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost'; FLUSH PRIVILEGES;
A continuación, ejecuta la siguiente consulta para verificar los privilegios del usuario de base de datos‘librenms@localhost’.
SHOW GRANTS FOR librenms@localhost;
Deberías ver que el usuario ‘librenms’@localhost’ tiene privilegios para la base de datos‘librenms‘.
Ahora escribe‘exit‘ para salir del intérprete de comandos MariaDB.
Configurar los bloques del servidor Nginx
Después de haber configurado el servidor MariaDB y creado la base de datos y el usuario, ahora vas a crear una nueva configuración de bloques de servidor Nginx para LibreNMS.
Antes de empezar, asegúrate de que has decidido el dominio local que se utilizará para LibreNMS. En este ejemplo, LibreNMS debería ejecutarse con el dominio‘librenms.hwdomain.io‘.
Crea una nueva configuración de bloques de servidor Nginx‘/etc/nginx/conf.d/librenms.conf‘ utilizando el siguiente editor nano.
sudo nano /etc/nginx/conf.d/librenms.conf
Añade la siguiente configuración al archivo y asegúrate de cambiar el nombre de dominio por tu dominio.
server { listen 80; server_name librenms.hwdomain.io; 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; } }
Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando para verificar la configuración de Nginx y asegurarte de que la configuración es correcta.
sudo nginx -t
Si la configuración de Nginx es correcta, verás un mensaje de salida como‘test successful – Syntax OK‘.
Ahora reinicia el servicio Nginx para aplicar la nueva configuración del bloque del servidor.
sudo systemctl restart nginx
Llegados a este punto, habrás completado la configuración LEMP Stack (Nginx, base de datos MariaDB y PHP-FPM) para el LibreNMS. Además, el LibreNMS debería estar ejecutándose ahora en tu sistema Linux Rocky.
Configurar SELinux
Para esta guía, vas a ejecutar LibreNMS con SELinux activado en el modo de aplicación. Así que ahora vas a configurar las reglas SELinux para LibreNMS.
Para empezar, ejecuta el siguiente comando dnf para instalar el paquete‘policycoreutils-python-utils‘ en tu sistema Rocky Linux. Este paquete proporciona varias líneas de comandos para gestionar SELinux.
sudo dnf install policycoreutils-python-utils
Cuando se te solicite, introduce y para confirmar y pulsa INTRO para continuar.
A continuación, ejecuta el siguiente comando para configurar etiquetas para el código fuente de LibreNMS.
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?' semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?" semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py' restorecon -RFvv /opt/librenms chcon -t httpd_sys_rw_content_t /opt/librenms/.env
Ejecuta el siguiente comando para permitir el acceso a algunos servicios del servidor web Nginx.
setsebool -P httpd_can_sendmail=1 setsebool -P httpd_execmem 1
Ahora, crea un nuevo archivo ‘http_fping.tt ‘ utilizando el siguiente editor nano.
nano http_fping.tt
Añade la siguiente configuración al archivo.
module http_fping 1.0; require { type httpd_t; class capability net_raw; class rawip_socket { getopt create setopt write read }; } #============= httpd_t ============== allow httpd_t self:capability net_raw; allow httpd_t self:rawip_socket { getopt create setopt write read };
Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando para convertir‘http_fping.tt’ al formato para SELinux. A continuación, añade la nueva regla compilada al SELinux.
checkmodule -M -m -o http_fping.mod http_fping.tt semodule_package -o http_fping.pp -m http_fping.mod semodule -i http_fping.pp
Ahora que has terminado la configuración SELinux para LibreNMS. A continuación, establecerás algunas configuraciones adicionales para LibreNMS.
Finalizar las configuraciones de LibreNMS
Para finalizar la configuración de LibreNMS, ahora configurarás la línea de comandos‘lnms‘, copiarás algunas configuraciones por defecto de LibreNMS incluyendo configuraciones para cron y logrotate. Además, vas a configurar el servicio SNMP para LibreNMS.
Ejecuta el siguiente comando para habilitar la línea de comandos ‘lnms‘ y copia la terminación bash del comando‘lnms‘.
ln -s /opt/librenms/lnms /usr/bin/lnms cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
Copia la configuración de ejemplo del cron de LibreNMS en‘/etc/cron.d/librenms‘.
sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
Copia la configuración por defecto de logrotate para LibreNMS en ‘ /etc/logrotate.d/librenms‘.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Ahora copia la configuración por defecto del servicio snmpd en ‘ /etc/snmp/snmpd.conf‘. A continuación, edita el nuevo archivo ‘/etc/snmp/snmpd. conf’ utilizando el editor nano.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf sudo nano /etc/snmp/snmpd.conf
Cambia la contraseña por defecto de la comunidad para el servicio snmpd‘RANDOMSTRINGGOESHERE‘ por tu contraseña.
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string com2sec readonly default RANDOMSTRINGGOESHERE
Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, descarga el archivo binario que utilizará LibreNMS para detectar automáticamente el sistema operativo de cada host de destino. A continuación, hazlo ejecutable cambiando el permiso por defecto.
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro chmod +x /usr/bin/distro
Por último, reinicia el servicio snmpd para aplicar los nuevos cambios y las nuevas configuraciones.
systemctl restart snmpd
Ahora que ya se han completado todas las configuraciones básicas. A continuación, iniciarás la instalación de LibreNMS a través del navegador web.
Acceder a la instalación web de LibreNMS
En tu máquina local, edita el archivo ‘/etc/hosts ‘ y define el nombre de dominio local de tu instalación de LibreNMS. Además, asegúrate de cambiar la dirección IP por la dirección IP de tu servidor.
192.168.5.100 librenms.hwdomain.io
Ahora abre el navegador web y visita el nombre de dominio de tu instalación de LibreNMS (es decir: http://librenms.hwdomain.io/).
Al principio, el instalador de LibreNMS comprobará los entornos para la instalación. Asegúrate de que todos los requisitos están marcados en verde, lo que significa que el sistema está preparado para la instalación de LibreNMS.
Haz clic en el icono de la base de datos para continuar.
Ahora introduce los detalles de la base de datos y el usuario para tu LibreNMS y haz clic en«Comprobar credenciales«. Si las credenciales de tu base de datos son correctas, la sección se marcará en verde.
Ahora haz clic en«Crear base de datos» para iniciar la migración de la base de datos de LibreNMS.
Una vez completada la migración de la base de datos, verás la sección «Crear base dedatos» marcada en verde.
Haz clic en el icono de la llave para empezar a configurar el usuario administrador de LibreNMS.
Ahora introduce el nuevo usuario administrador, la contraseña y la dirección de correo electrónico para tu instalación de LibreNMS y haz clic en‘Añadir usuario‘.
Ahora la instalación ha terminado y verás la siguiente página. Puedes ver que la instalación ha terminado y las configuraciones se han escrito en el archivo ‘.env‘.
Ahora haz clic en el enlace‘validate your install‘ para verificar la instalación de LibreNMS.
Ahora deberías ser redirigido a la página de inicio de sesión de LibreNMS. Introduce tu usuario y contraseña de administrador y haz clic en«Iniciar sesión«.
Ahora asegúrate de que todas las configuraciones están marcadas como‘OK‘, lo que significa que la configuración no tiene ningún error.
También puedes corregir todos los errores o advertencias siguiendo las instrucciones recomendadas por LibreNMS.
Ahora puedes añadir un nuevo host de destino, máquina virtual o dispositivo de red para monitorizar la Solución de Monitorización LibreNMS.
Conclusión
¡Enhorabuena! Has instalado la Solución de Monitorización LibreNMS en el servidor Rocky Linux. También has aprendido la configuración básica de la Pila LEMP (Nginx, MariaDB y PHP-FPM) en Rocky Linux.
A partir de aquí, puedes seguir añadiendo un host o máquina de destino para monitorizar, configurar el Agente LibreNMS, configurar alertas o notificaciones, configurar la integración de terceros con Graylog y realizar otras tareas.