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.