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.

añadir repo epel

El repositorio PHP Remi se utilizará para instalar los paquetes PHP-FPM.

añadir repositorio remi

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

habilitar repositorio php 8.1 remi

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.

instalar dependencias

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

setup php-fpm sock

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:

empezar a verificar php-fpm

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.

comprobar php-fpm 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;

crear base de datos y usuario

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.

comprobar el permiso del usuario a la base de datos

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

descargar 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

install librenms dependencies

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 firewalld

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

configurar snmpd

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)«.

verificar snmpd

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.

finalización del comando lnms

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

configuración adicional de librenms

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

configurar 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:

verificar nginx

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.

comprobaciones del sistema librenms

Ahora introduce los detalles de la base de datos que has creado y haz clic en Comprobar credenciales.

configuración de la base de datos

A continuación, haz clic en Crear base de datos para migrar la base de datos de LibreNMS.

crear la base de datos

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.

configurar usuario administrador

Ahora haz clic en Finalizar instalación para completar la instalación de LibreNMS.

completa la instalación

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.

página de inicio de sesión de librenms

Si tienes éxito, deberías ver el panel de LibreNMS así. Puedes crear y organizar el panel de LibreNMS como necesites.

salpicadero librenms

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:

validar la instalación de LibreNMS

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.

También te podría gustar...