Búsqueda de sitios web

Cómo instalar la herramienta de monitoreo LibreNMS en AlmaLinux 9


LibreNMS es una herramienta de monitoreo que admite el descubrimiento automático con múltiples protocolos, incluidos SNMP, ARP, OSPF y BGP. Para monitorear los sistemas operativos, puede utilizar el protocolo SNMP, que está disponible en la mayoría de los sistemas operativos, incluidos Linux, Windows y BSD.

Hay tres versiones del protocolo SNMP, v1 y v2, que están protegidas solo con una contraseña comunitaria, y el protocolo v3, que admite contraseñas para autenticación y 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, le mostraré cómo instalar la herramienta de monitoreo LibreNMS en su servidor AlmaLinux 9. Ejecutaré LibreNMS con PHP-FPM, 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 demostración utiliza un servidor con el nombre de host almalinux9.
  • Un usuario no root con privilegios sudo/root.

Instalación de dependencias

Primero, agregará los repositorios EPEL y Remi a su sistema. Luego, instale las dependencias del paquete para LibreNMS.

Ejecute el siguiente comando dnf para agregar el repositorio EPEL y el repositorio PHP Remi a su 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 de EPEL, por lo que debes agregar EPEL a tu sistema.

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

Ahora, ejecute el siguiente comando para restablecer el módulo de repositorio predeterminado para PHP. Luego, habilite el repositorio PHP Remi para PHP versión 8.1, que es requerido por LibreNMS.

sudo dnf module reset php
sudo dnf module enable php:remi-8.1

A continuación, ejecute el comando dnf a continuación para instalar las dependencias del paquete para LibreNMS. Esto incluye PHP-FPM, servidor web Nginx, 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, continúe con el siguiente paso.

Crear usuario del sistema

En esta sección, creará un nuevo usuario del sistema llamado librenms que se utilizará para ejecutar LibreNMS.

Ejecute el siguiente comando para crear un nuevo librenms de usuario.

sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

Opciones detalladas:

  • -d /opt/librenms: especifique el directorio de inicio para el nuevo usuario en /opt/librenms.
  • -M: No crear un directorio de inicio para el nuevo usuario.
  • -r: define el nuevo usuario como usuario del sistema.
  • -s "$ (qué bash)": especifica el shell para que el nuevo usuario realice bash.

Configurando PHP-FPM

En la siguiente sección, configurará PHP-FPM para LibreNMS. Configurará la zona horaria adecuada en su sistema, luego agregará un grupo PHP-FPM específico que será utilizado por LibreNMS.

Primero, ejecute el siguiente comando para configurar la zona horaria en su servidor.

sudo timedatectl set-timezone Europe/Stockholm
sudo ln -s /usr/share/zoneinfo/Europe/Stockholm /etc/localtime

Luego, abra el archivo /etc/php.ini usando el siguiente nano editor.

sudo nano /etc/php.ini

Descomente el parámetro date.timezone y cambie el valor con la zona horaria adecuada de esta manera:

date.timezone=Europe/Stockholm

Guarde y salga del archivo cuando haya terminado.

Ahora, ejecute el siguiente comando para copiar la configuración predeterminada del grupo PHP-FPM en /etc/php-fpm.d/librenms.conf y ábralo usando 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

Cambie el nombre del grupo PHP-FPM de www a librenms.

[librenms]

Cambie el usuario y grupo predeterminados a librenms.

user = librenms
group = librenms

Cambie el archivo sock predeterminado para el nuevo grupo PHP-FPM a /run/php-fpm/librenms.sock.

listen = /run/php-fpm/librenms.sock

Guarde el archivo y salga del editor cuando haya terminado.

Ahora, ejecute el siguiente comando para iniciar y habilitar el servicio PHP-FPM.

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Luego verifique el servicio PHP-FPM usando el siguiente comando para asegurarse de que el servicio se esté ejecutando.

sudo systemctl status php-fpm

Si se está ejecutando, se mostrará el siguiente resultado en su terminal:

Además, también puede verificar el archivo sock PHP-FPM para LibreNMS usando el siguiente comando.

ss -pl | grep php-fpm

Si su configuración es exitosa, debería recibir el archivo de calcetín PHP-FPM /run/php-fpm/librenms.sock disponible.

Configurando el servidor MariaDB

Después de configurar PHP-FPM, configurará el servidor MariaDB. Agregará configuración adicional al servidor MariaDB y protegerá MariaDB a través de la utilidad mariadb-secure-installation.

Abra la configuración predeterminada del servidor MariaDB /etc/my.cnf.d/mariadb-server.cnf usando el siguiente nano editor.

sudo nano /etc/my.cnf.d/mariadb-server.cnf

Inserte las siguientes configuraciones en la sección '[mysqld]'.

innodb_file_per_table=1
lower_case_table_names=0

Guarde el archivo y salga del editor cuando haya terminado.

Ahora ejecute el siguiente comando para iniciar y habilitar el servicio MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

A continuación, ejecute el siguiente comando para proteger la instalación de su servidor MariaDB.

sudo mariadb-secure-installation

Se le preguntará acerca de algunas configuraciones a continuación:

  • Cambie el método de autenticación para el usuario raíz de MariaDB a unix_socket. Introduzca n para No.
  • Configurando la contraseña raíz de MariaDB. Ingrese y para confirmar y escriba la nueva contraseña raíz de MariaDB y repita.
  • Deshabilite el inicio de sesión remoto para el usuario root de MariaDB. Introduzca y para confirmar.
  • Elimine la prueba de base de datos predeterminada de MariaDB. Introduzca y para confirmar.
  • Eliminar usuario anónimo de MariaDB. Ingrese y para confirmar.
  • Por último, ingrese y nuevamente 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á una nueva base de datos y un usuario que será utilizado por LibreNMS.

Inicie sesión en el servidor MariaDB usando el siguiente comando.

sudo mariadb -u root -p

Ejecute las siguientes consultas para crear una nueva base de datos y un nuevo usuario para LibreNMS. En esta demostración, creará una nueva base de datos y un usuario librenms con la contraseña librenmspassword. Además, debe asegurarse de que el carácter predeterminado para la base de datos LibreNMS sea 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, ejecute la siguiente consulta para verificar los privilegios de los nuevos libreros de usuario, luego escriba exit para salir de MariaDB.

SHOW GRANTS FOR 'librenms'@'localhost';
exit

El resultado que se muestra a continuación muestra que los librenos del usuario pueden acceder a los libreros de la base de datos.

Descargando e instalando LibreNMS

En esta sección, descargará el código fuente de LibreNMS, configurará la propiedad y el permiso adecuados y luego instalará las dependencias de PHP a través del script compositor_wrapper que se incluye en el código fuente.

Ejecute 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 cambie la propiedad del directorio /opt/librenms al usuario librenms y cambie el permiso a 771.

sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms

Después de eso, ejecute el siguiente comando para configurar listas de control de acceso y garantizar 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, inicie sesión como usuario librenms utilizando el siguiente comando. Deberías estar en el directorio /opt/librenms.

su - librenms
pwd

Ejecute el siguiente comando para instalar las dependencias de PHP para LibreNMS. Cuando finalice la instalación, escriba salir para cerrar sesión en los libreros del usuario.

./scripts/composer_wrapper.php install --no-dev
exit

Configurando SELinux

Si tiene SELinux habilitado con modo forzado en su servidor AlmaLinux 9, entonces debe configurarlo para LibreNMS. En esta sección, instalará el paquete Policycoreutils-python-utils y configurará SELinux para LibreNMS.

Ejecute el siguiente comando para instalar el paquete Policycoreutils-python-utils.

sudo dnf install -y policycoreutils-python-utils

A continuación, ejecute 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 cree un nuevo archivo http_fping.tt usando el siguiente comando del nano editor.

sudo nano http_fping.tt

Inserte 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 };

Guarde el archivo y salga del editor cuando haya terminado.

Por último, ejecute el siguiente comando para compilar el archivo http_fping.tt y agregarlo 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

Configurando el firewall

Después de configurar SELinux, configurará firewalld para abrir los protocolos HTTP y HTTPS.

Ejecute los comandos firewall-cmd a continuación para abrir los puertos HTTP y HTTPS, luego vuelva a cargar el firewalld para aplicar los cambios.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Ahora verifique la lista de reglas de firewalld usando el siguiente comando. Si tiene éxito, debería 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 administración de red es un protocolo más utilizado por dispositivos de red como módems, conmutadores y Reuters. En esta sección, configurará el servicio snmpd en su instalación de LibreNMS que se utilizará para monitorear dispositivos de red.

Copie la configuración SNMP predeterminada en /etc/snmp/snmpd.conf y ábrala usando el comando del editor nano a continuación.

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf

Cambie la contraseña SNMP predeterminada RANDOMSTRINGGOESHERE con la nueva contraseña.

# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly  default        RANDOMSTRINGGOESHERE

Guarde el archivo y cierre el editor cuando haya terminado.

A continuación, descargue el archivo binario de la herramienta del agente LibreNMS para detectar sistemas operativos Linux y UNIX y hágalo ejecutable.

sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro

Ahora inicie y habilite el servicio snmpd usando el siguiente comando.

sudo systemctl start snmpd
sudo systemctl enable snmpd

Por último, verifique el servicio snmpd usando el comando systemctl a continuación.

sudo systemctl status snmpd

Si el servicio snmpd se está ejecutando, debería obtener un resultado como "activo (en ejecución)".

Configuraciones adicionales de LibreNMS

La siguiente sección son algunas configuraciones adicionales para LibreNMS. Estará configurando la siguiente configuración:

  • Configure el comando binario de LibreNMS 'lnms' y su bash_completion.
  • Configure cron para el sondeo de LibreNMS.
  • Configure el programador LibreNMS mediante el temporizador systemd.
  • Configure logrotate para los registros de LibreNMS.

Primero, cree un enlace simbólico para la línea de comandos de LibreNMS lnms a /usr/bin/lnms. Luego, copie la finalización de 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, inicie sesión como usuario librenms y ejecute el comando lnms, luego presione TAB para obtener la lista de parámetros disponibles del comando lnms.

su - librenms
lnms TAB

Una salida similar a esta se mostrará en su terminal.

A continuación, ejecute el siguiente comando para copiar la configuración cron de LibreNMS en /etc/cron.d/librenms.

cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms

Luego, copie la configuración de logrotate para LibreNMS usando el siguiente comando.

sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

Después de eso, copie el servicio de programación y el temporizador de LibreNMS al directorio /etc/systemd/system/ y vuelva a cargar el administrador 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, inicie y habilite el servicio de programación LibreNMS.

sudo systemctl enable librenms-scheduler.timer
sudo systemctl start librenms-scheduler.timer

Configurando Nginx

Una vez finalizadas todas las configuraciones, ahora configurará el bloque del servidor Nginx para LibreNMS.

Cree una nueva configuración de bloque de servidor Nginx /etc/nginx/conf.d/librenms.conf usando el siguiente comando del nano editor.

sudo nano /etc/nginx/conf.d/librenms.conf

Inserte la siguiente configuración y asegúrese 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;
    }
}

Guarde el archivo y salga del editor cuando haya terminado.

Ahora ejecute el siguiente comando para verificar la configuración de Nginx. Si tiene éxito, debería ver un resultado como 'la prueba fue exitosa - la sintaxis es correcta'.

sudo nginx -t

A continuación, inicie y habilite el servicio Nginx usando el siguiente comando.

sudo systemctl start nginx
sudo systemctl enable nginx

Luego, ingrese el siguiente comando para verificar el estado del servicio Nginx y asegurarse de que el servicio se esté ejecutando.

sudo systemctl status nginx

Si tiene éxito, debería obtener el siguiente resultado:

Instalación de LibreNMS a través del navegador web

Después de crear la configuración del bloque del servidor Nginx, estará listo para iniciar la instalación de LibreNMS desde el navegador web.

Inicie su navegador web y visite el nombre de dominio de su instalación de LibreNMS, es decir: http://librenms.hwdomain.io.

En la primera página, LibreNMS comprobará y verificará su entorno actual. Asegúrese de pasar la verificación de requisitos previos y luego haga clic en el icono de base de datos para continuar.

Ahora ingrese los detalles de la base de datos que ha creado y haga clic en Verificar credenciales.

Luego, haga clic en Crear base de datos para migrar la base de datos LibreNMS.

A continuación, haga clic en el icono de la llave para configurar el usuario administrador y la contraseña de LibreNMS. Ingrese los detalles del usuario administrador, la contraseña y el correo electrónico, luego haga clic en Agregar usuario.

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

Una vez finalizada la instalación de LibreNMS, será redirigido a la página de inicio de sesión de LibreNMS. Ingrese su usuario y contraseña de administrador, luego haga clic en Iniciar sesión.

Si tiene éxito, debería ver el panel de LibreNMS como este. Puede crear y organizar el panel de LibreNMS según lo necesite.

Por último, puede utilizar el script validate.php para asegurarse de tener la configuración adecuada de LibreNMS. Ejecute el siguiente comando para iniciar sesión como usuario librenms y ejecutar el script validar.php.

su - librenms
./validate.php

Si tiene la configuración adecuada de LibreNMS, todo debería tener el estado OK como el siguiente:

Conclusión

Felicitaciones, ya ha instalado con éxito la herramienta de monitoreo LibreNMS en AlmaLinux 9. Ha instalado y configurado LibreNMS con el servidor de base de datos MariaDB y el servidor web Nginx. Y también configuré SELinux y firewalld para LibreNMS.

Además, visite la documentación de LibreNMS para agregar nuevos hosts o dispositivos para monitorear.

Artículos relacionados: