Cómo instalar la herramienta de monitorización LibreNMS en AlmaLinux 9
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, te mostraré cómo instalar LibreNMS Monitoring Tool en tu servidor AlmaLinux 9. Ejecutaré LibreNMS con PHP-FPM, el servidor web Nginx y la base de datos MariaDB.
Requisitos previos
Para completar esta guía, debes tener lo siguiente:
- Un servidor AlmaLinux 9 – Esta demo utiliza un servidor con el nombre de host almalinux9.
- Un usuario no root con privilegios sudo/root.
Instalación de dependencias
En primer lugar, añadirás los repositorios EPEL y Remi a tu sistema. A continuación, instala las dependencias de los paquetes para LibreNMS.
Ejecuta el siguiente comando dnf para añadir el repositorio EPEL y el repositorio PHP Remi a tu sistema.
sudo dnf install -y epel-release sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Algunas de las dependencias están disponibles en el repositorio EPEL, por lo que debes añadir EPEL a tu sistema.
El repositorio PHP Remi se utilizará para instalar los paquetes PHP-FPM.
Ahora, ejecuta el siguiente comando para restablecer el módulo de repositorio por defecto para PHP. A continuación, habilita el repositorio PHP Remi para la versión 8.1 de PHP, que es la requerida por LibreNMS.
sudo dnf module reset php sudo dnf module enable php:remi-8.1
A continuación, ejecuta el siguiente comando dnf para instalar las dependencias de los paquetes para LibreNMS. Esto incluye PHP-FPM, el servidor web Nginx, el servidor MariaDB, algunos paquetes de Python3 y utilidades del sistema como rrdtool, unzip, ImageMagick, git y fping.
sudo dnf install -y 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-redis python3-memcached python3-pip python3-systemd rrdtool unzip
Una vez finalizada la instalación, pasa al siguiente paso.
Crear un usuario del sistema
En esta sección, crearás un nuevo usuario del sistema llamado librenms que se utilizará para ejecutar LibreNMS.
Ejecuta el siguiente comando para crear un nuevo usuario librenms.
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Opciones detalladas:
- -d /opt/librenms: Especifica que el directorio raíz del nuevo usuario sea /opt/librenms.
- -M: No crear un directorio raíz para el nuevo usuario.
- -r: Define el nuevo usuario como usuario del sistema.
- -s«$(que bash)»: Especifica que el shell para el nuevo usuario sea bash.
Configurar PHP-FPM
En la siguiente sección, configurarás PHP-FPM para LibreNMS. Configurarás la zona horaria adecuada en tu sistema y, a continuación, añadirás un pool PHP-FPM específico que será utilizado por LibreNMS.
En primer lugar, ejecuta el siguiente comando para configurar la zona horaria de tu servidor.
sudo timedatectl set-timezone Europe/Stockholm sudo ln -s /usr/share/zoneinfo/Europe/Stockholm /etc/localtime
A continuación, abre el archivo /etc/php.ini utilizando el siguiente editor nano.
sudo nano /etc/php.ini
Descomenta el parámetro date.timezone y cambia el valor por la zona horaria adecuada, de esta forma:
date.timezone=Europe/Stockholm
Guarda y sal del archivo cuando hayas terminado.
Ahora, ejecuta el siguiente comando para copiar la configuración por defecto del pool PHP-FPM en /etc/php-fpm.d/librenms.conf y ábrelo utilizando el editor nano.
sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf sudo nano /etc/php-fpm.d/librenms.conf
Cambia el nombre del pool PHP-FPM de www a librenms.
[librenms]
Cambia el usuario y grupo por defecto a librenms.
user = librenms group = librenms
Cambia el archivo sock por defecto para el nuevo pool PHP-FPM a /run/php-fpm/librenms.sock.
listen = /run/php-fpm/librenms.sock
Guarda el archivo y sal del editor cuando hayas terminado.
Ahora, ejecuta el siguiente comando para iniciar y habilitar el servicio PHP-FPM.
sudo systemctl start php-fpm sudo systemctl enable php-fpm
A continuación, verifica el servicio PHP-FPM utilizando el siguiente comando para asegurarte de que el servicio se está ejecutando.
sudo systemctl status php-fpm
Si se está ejecutando, se mostrará la siguiente salida en tu terminal:
Además, también puedes verificar el archivo sock PHP-FPM para LibreNMS utilizando el siguiente comando.
ss -pl | grep php-fpm
Si la configuración es correcta, deberías tener disponible el archivo sock PHP-FPM /run/php-fpm/librenms.sock.
Configurar el servidor MariaDB
Después de configurar PHP-FPM, vas a configurar el servidor MariaDB. Añadirás configuración adicional al servidor MariaDB y asegurarás MariaDB mediante la utilidad mariadb-secure-installation.
Abre la configuración por defecto del servidor MariaDB /etc/my.cnf.d/mariadb-server.cnf utilizando el siguiente editor nano.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Inserta las siguientes configuraciones en la sección ‘[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 para iniciar y habilitar el servicio MariaDB.
sudo systemctl start mariadb sudo systemctl enable mariadb
A continuación, ejecuta el siguiente comando para asegurar la instalación de tu servidor MariaDB.
sudo mariadb-secure-installation
A continuación se te preguntarán algunas configuraciones:
- Cambia el método de autenticación para el usuario raíz de MariaDB a unix_socket. Introduce n para No.
- Configurar la contraseña raíz de MariaDB. Introduce y para confirmar y escribe la nueva contraseña raíz de MariaDB y repite.
- Desactivar el inicio de sesión remoto para el usuario raíz de MariaDB. Introduce y para confirmar.
- Eliminar la prueba de base de datos por defecto de MariaDB. Introduce y para confirmar.
- Eliminar el usuario anónimo de MariaDB. Introduce y para confirmar.
- Por último, introduce y de nuevo para recargar los privilegios de la tabla y aplicar los cambios.
Crear base de datos MariaDB y usuario para LibreNMS
Con el servidor MariaDB configurado, a continuación crearás una nueva base de datos y un nuevo usuario que serán utilizados por LibreNMS.
Accede al servidor MariaDB utilizando el siguiente comando.
sudo mariadb -u root -p
Ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para LibreNMS. En esta demostración, crearás una nueva base de datos y un nuevo usuario librenms con la contraseña librenmspassword. Además, debes asegurarte de que el carácter por defecto para la base de datos LibreNMS es utf8mb4.
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'librenmspassword'; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost'; FLUSH PRIVILEGES;
Ahora, ejecuta la siguiente consulta para verificar los privilegios del nuevo usuario librenms y, a continuación, escribe exit para salir de MariaDB.
SHOW GRANTS FOR 'librenms'@'localhost'; exit
La salida que se muestra a continuación te indica que el usuario librenms puede acceder a la base de datos librenms.
Descarga e instalación de LibreNMS
En esta sección, descargarás el código fuente de LibreNMS, establecerás la propiedad y el permiso adecuados, y luego instalarás las dependencias de PHP mediante el script composer_wrapper que se incluye en el código fuente.
Ejecuta el siguiente comando git para descargar el código fuente de LibreNMS al directorio /opt/librenms.
git clone https://github.com/librenms/librenms.git /opt/librenms
Ahora cambia la propiedad del directorio /opt/librenms al usuario librenms y cambia el permiso a 771.
sudo chown -R librenms:librenms /opt/librenms sudo chmod 771 /opt/librenms
Después, ejecuta el siguiente comando para configurar las listas de control de acceso y asegurar el permiso de lectura, escritura y ejecución para algunos directorios 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/
A continuación, inicia sesión como usuario librenms utilizando el siguiente comando. Deberías estar en el directorio /opt/librenms.
su - librenms pwd
Ejecuta el siguiente comando para instalar las dependencias de PHP para LibreNMS. Cuando termine la instalación, escribe exit para cerrar la sesión del usuario librenms.
./scripts/composer_wrapper.php install --no-dev exit
Configurar SELinux
Si tienes SELinux habilitado con modo enforcing en tu servidor AlmaLinux 9, entonces debes configurarlo para LibreNMS. En esta sección, instalarás el paquete policycoreutils-python-utils para configurar SELinux para LibreNMS.
Ejecuta el siguiente comando para instalar el paquete policycoreutils-python-utils.
sudo dnf install -y policycoreutils-python-utils
A continuación, ejecuta el siguiente comando para configurar el etiquetado para el código fuente de LibreNMS, permitir que el servidor web envíe un correo electrónico y ejecutar programas que requieran direcciones de memoria.
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 setsebool -P httpd_can_sendmail=1 setsebool -P httpd_execmem 1 chcon -t httpd_sys_rw_content_t /opt/librenms/.env
Ahora crea un nuevo archivo http_fping.tt utilizando el siguiente comando del editor nano.
sudo nano http_fping.tt
Introduce la siguiente configuración en el archivo. Esto permitirá el comando fping a través de SELinux.
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.
Por último, ejecuta el siguiente comando para compilar el archivo http_fping.tt y añadirlo a 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
Configurar Firewalld
Después de configurar SELinux, deberás configurar firewalld para que abra los protocolos HTTP y HTTPS.
Ejecuta los siguientes comandos firewall-cmd para abrir los puertos HTTP y HTTPS y, a continuación, recarga firewalld para aplicar los cambios.
sudo firewall-cmd --add-service={http,https} --permanent sudo firewall-cmd --reload
Ahora verifica la lista de reglas firewalld utilizando el siguiente comando. Si se ha hecho correctamente, deberías ver los protocolos HTTP y HTTPS en la lista de reglas.
sudo firewall-cmd --list-all
Configurar el servicio SNMP
SNMP o Protocolo Simple de Gestión de Red es un protocolo muy utilizado por dispositivos de red como módems, conmutadores y reuters. En esta sección, configurarás el servicio snmpd en tu instalación de LibreNMS, que se utilizará para supervisar los dispositivos de red.
Copia la configuración SNMP por defecto en /etc/snmp/snmpd.conf y ábrela utilizando el comando editor nano que aparece a continuación.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf sudo nano /etc/snmp/snmpd.conf
Cambia la contraseña SNMP por defecto RANDOMSTRINGGOESHERE por la nueva contraseña.
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string com2sec readonly default RANDOMSTRINGGOESHERE
Guarda el archivo y cierra el editor cuando hayas terminado.
A continuación, descarga el archivo binario de la herramienta agente LibreNMS para detectar SO Linux y UNIX y hazlo ejecutable.
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro sudo chmod +x /usr/bin/distro
Ahora inicia y habilita el servicio snmpd utilizando el siguiente comando.
sudo systemctl start snmpd sudo systemctl enable snmpd
Por último, verifica el servicio snmpd utilizando el siguiente comando systemctl.
sudo systemctl status snmpd
Si el servicio snmpd se está ejecutando, deberías obtener una salida como«activo (en ejecución)«.
Configuraciones adicionales de LibreNMS
La siguiente sección contiene algunas configuraciones adicionales para LibreNMS. Establecerás la siguiente configuración:
- Configura el comando binario de LibreNMS ‘lnms’ y su bash_completion.
- Configurar cron para el sondeo de LibreNMS.
- Configura el programador de LibreNMS a través del temporizador systemd.
- Configura logrotate para los registros de LibreNMS.
Primero, crea un enlace simbólico para la línea de comandos lnms de LibreNMS en /usr/bin/lnms. A continuación, copia la terminación bash para el comando lnms en el directorio /etc/bash_completion.d/.
sudo ln -s /opt/librenms/lnms /usr/bin/lnms sudo cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
Ahora, inicia sesión como usuario librenms y ejecuta el comando lnms, después pulsa TAB para obtener la lista de parámetros disponibles del comando lnms.
su - librenms lnms TAB
Aparecerá una salida similar a ésta en tu terminal.
A continuación, ejecuta el siguiente comando para copiar la configuración del cron de LibreNMS en /etc/cron.d/librenms.
cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
A continuación, copia la configuración de logrotate para LibreNMS utilizando el siguiente comando.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Después, copia el servicio programador y el temporizador de LibreNMS en el directorio /etc/systemd/system/ y recarga el gestor systemd para aplicar los cambios.
sudo cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/ sudo systemctl daemon-reload
Por último, inicia y activa el servicio de programación LibreNMS.
sudo systemctl enable librenms-scheduler.timer sudo systemctl start librenms-scheduler.timer
Configurar Nginx
Con todas las configuraciones terminadas, ahora vas a configurar el bloque de servidor Nginx para LibreNMS.
Crea una nueva configuración del bloque del servidor Nginx /etc/nginx/conf.d/librenms.conf utilizando el siguiente comando del editor nano.
sudo nano /etc/nginx/conf.d/librenms.conf
Introduce la siguiente configuración y asegúrate de cambiar el nombre de dominio en la opción server_name.
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.
Ahora ejecuta el siguiente comando para verificar la configuración de Nginx. Si se realiza correctamente, deberías ver una salida como‘test is successful – syntax is ok‘.
sudo nginx -t
A continuación, inicia y habilita el servicio Nginx mediante el siguiente comando.
sudo systemctl start nginx sudo systemctl enable nginx
A continuación, introduce el siguiente comando para verificar el estado del servicio Nginx y asegurarte de que se está ejecutando.
sudo systemctl status nginx
Si se ejecuta correctamente, deberías obtener el siguiente resultado:
Instalación de LibreNMS a través del navegador web
Tras crear la configuración del bloque del servidor Nginx, estás listo para iniciar la instalación de LibreNMS desde el navegador web.
Inicia tu navegador web y visita el nombre de dominio de tu instalación de LibreNMS, es decir: http://librenms.hwdomain.io.
En la primera página, LibreNMS comprobará y verificará tu entorno actual. Asegúrate de que superas la comprobación de requisitos previos y, a continuación, haz clic en el icono de la base de datos para continuar.
Ahora introduce los detalles de la base de datos que has creado y haz clic en Comprobar credenciales.
A continuación, haz clic en Crear base de datos para migrar la base de datos de LibreNMS.
A continuación, haz clic en el icono de la clave para configurar el usuario admin y la contraseña LibreNMS. Introduce los datos del usuario admin, la contraseña y el correo electrónico, y luego haz clic en Añadir usuario.
Ahora haz clic en Finalizar instalación para completar la instalación de LibreNMS.
Una vez finalizada la instalación de LibreNMS, serás 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.
Si tienes éxito, deberías ver el panel de LibreNMS así. Puedes crear y organizar el panel de LibreNMS como necesites.
Por último, puedes utilizar el script validate.php para asegurarte de que tienes la configuración correcta de LibreNMS. Ejecuta el siguiente comando para iniciar sesión como usuario librenms y ejecutar el script validate.php.
su - librenms ./validate.php
Si tienes una configuración correcta de LibreNMS, todo debería tener el estado OK como el siguiente:
Conclusión
Enhorabuena, ya has instalado correctamente la herramienta de monitorización LibreNMS en AlmaLinux 9. Has instalado y configurado LibreNMS con el servidor de base de datos MariaDB y el servidor web Nginx. Y también has configurado SELinux y firewalld para LibreNMS.
Además, visita la documentación de LibreNMS para añadir nuevos hosts o dispositivos a monitorizar.