Cómo instalar la solución de monitoreo LibreNMS en Rocky Linux
En esta página
- Requisitos previos
- Configuración de repositorios
- Instalación de dependencias de paquetes
- Configuración del cortafuegosd
- Descarga del código fuente de LibreNMS
- Instalación de dependencias de PHP para LibreNMS
- Configuración de PHP-FPM
- Configuración del servidor MariaDB
- Configuración de bloques de servidor Nginx
- Configuración de SELinux
- Finalización de las configuraciones de LibreNMS
- Acceso a la instalación web de LibreNMS
- Conclusión
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 usar 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 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á cómo instalar la herramienta de monitoreo LibreNMS en el servidor Rocky Linux. Esta guía incluye la instalación de LEMP Stack (Nginx, MariaDB y PHP-FPM) y la configuración básica del servicio SNMP.
Hasta el final, tendrá la solución de monitoreo LibreNMS lista para producción y simplemente puede agregar un nuevo host o servidor, o dispositivo para monitorear LibreNMS.
requisitos previos
Para completar esta guía, necesitará los siguientes requisitos:
- Un servidor Rocky Linux: este ejemplo utiliza Rocky Linux 8.
- Un usuario que no sea root con privilegios sudo root/administrador.
- Un nombre de dominio local para la implementación local.
Configuración de repositorios
Antes de comenzar a instalar paquetes, ahora configurará repositorios en su sistema Rocky Linux. Deberá agregar el repositorio EPEL (paquetes adicionales para Enterprise Linux) y el repositorio PHP Remi.
Ejecute el siguiente comando dnf para agregar el repositorio EPEL a su sistema.
sudo dnf install epel-release
Ingrese Y cuando se le solicite la confirmación y presione ENTER para continuar.
A continuación, ejecute el siguiente comando dnf para agregar el repositorio de PHP Remi. Este repositorio proporciona múltiples versiones de PHP, que incluye el último 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 ingrese Y y presione ENTER para continuar.
Después de agregar el repositorio EPEL y Remi, verifique usando el comando dnf a continuación.
sudo dnf repolist
Debería ver que el repositorio EPEL y Remi está agregado y disponible en su sistema Rocky Linux.
Instalación de dependencias de paquetes
Después de agregar los repositorios EPEL y Remi, ahora comenzará a instalar las dependencias del paquete para LibreNMS. Esto incluye LEMP Stack, paquetes SNMP y algunas dependencias básicas de Python.
Antes de comenzar la instalación, ejecute el siguiente comando para habilitar el módulo de repositorio de PHP remi-8.1. La última versión de LibreNMS requería al menos PHP 8.
sudo dnf reset php
sudo dnf module enable php:remi-8.1
Ingrese y para confirmar y habilitar el repositorio de PHP Remi 8.1.
A continuación, ejecute el siguiente comando dnf para instalar las dependencias del paquete para LibreNMS. Cuando se le solicite que confirme la instalación, ingrese y y presione ENTER para continuar, y la instalación comenzará.
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
Después de instalar las dependencias, ejecute 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 punto, algunos servicios básicos Nginx, MariaDB, PHP-FPM y snmpd se iniciarán automáticamente al arrancar el sistema. Y todos esos servicios están funcionando.
Configuración de cortafuegos
Para este ejemplo, usamos Rocky Linux con firewalld habilitado. Ahora agregará el protocolo HTTP y HTTPS al firewalld.
Ejecute el siguiente comando firewall-cmd para agregar los servicios HTTP y HTTPS al firewalld. Debería obtener el mensaje de salida exitoso, lo que significa que se agregó la nueva regla.
sudo firewall-cmd --permanent --zone public --add-service http
sudo firewall-cmd --permanent --zone public --add-service https
A continuación, vuelva a cargar el firewalld para aplicar nuevos cambios. Luego, verifique el estado de firewalld usando el siguiente comando.
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Recibirá que la salida de los protocolos HTTP y HTTPS se agrega al firewalld.
Descarga del código fuente de LibreNMS
En este paso, descargará el código fuente de LibreNMS de GitHub. Pero antes de eso, también creará un nuevo usuario dedicado librenms que se usará para ejecutar la aplicación LibreNMS.
Ejecute el siguiente comando para crear un nuevo usuario del sistema librenms. Este usuario se utilizará para ejecutar la aplicación LibreNMS.
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Ahora mueva su directorio de trabajo a /opt y descargue el código fuente de LibreNMS a través del comando git a continuación. Ahora debería 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
Cambie la propiedad y el permiso del directorio de instalación de LibreNMS /opt/librenms. La propiedad de la instalación debe ser el usuario de librenms, y también 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, ejecute el siguiente comando para configurar las listas de control de acceso para algunos de los directorios de LibreNMS. Esto otorgará al grupo librenms leer, escribir y ejecutar en algunos directorios de LibreNMS específicos.
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 dependencias de PHP para LibreNMS
Después de descargar el código fuente de LibreNMS y configurar el permiso correcto, ahora instalará las dependencias de PHP para LibreNMS.
Inicie sesión como el usuario librenms usando el siguiente comando.
su - librenms
Ahora, instale las dependencias de PHP a través del script de instalación como se muestra a continuación.
./scripts/composer_wrapper.php install --no-dev
Ahora verá la instalación de las dependencias de PHP que se requieren para LibreNMS. También verá la instalación de paquetes de Python para LibreNMS.
Una vez finalizada la instalación de las dependencias de PHP, ahora puede salir del usuario librenms presionando Ctrl+d o puede escribir el comando de salida.
Configurando PHP-FPM
En este paso, configurará su instalación de PHP-FPM para LibreNMS. Modificará la configuración predeterminada /etc/php.ini y configurará un grupo PHP-FPM específico para LibreNMS.
Ejecute el siguiente comando para configurar la zona horaria correcta para su sistema Rocky Linux.
sudo timedatectl set-timezone Europe/Stockholm
Ahora edite la configuración de PHP /etc/php.ini usando el siguiente editor nano.
sudo nano /etc/php.ini
Descomente la opción date.timezone y cambie el valor con la zona horaria actual de su servidor.
date.timezone = Europe/Stockholm
Guarde el archivo y cierre el editor cuando haya terminado.
A continuación, copie la configuración predeterminada del grupo PHP-FPM www.conf a librenms.conf. En este ejemplo, configurará el grupo PHP-FPM específico para la herramienta de monitoreo LibreNMS.
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
Ahora edite la configuración del grupo PHP-FPM /etc/php-fpm.d/librenms.conf usando el siguiente editor nano.
sudo nano /etc/php-fpm.d/librenms.conf
Cambie el nombre del grupo predeterminado de [www] a [librenms].
[librenms]
Cambie el usuario y el grupo predeterminados a librenms. Esto ejecutará el proceso PHP-FPM como usuario y grupo librenms.
user = librenms
group = librenms
Por último, cambie la opción de escucha a /run/php-fpm-librenms.sock. Esto especificará el archivo sock para el grupo de librenms de PHP-FPM.
listen = /run/php-fpm-librenms.sock
Guarde el archivo y salga del editor cuando haya terminado.
Ahora ejecute el siguiente comando systemctl para reiniciar el servicio PHP-FPM y aplicar nuevos cambios.
sudo systemctl restart php-fpm
Configuración del servidor MariaDB
Una vez que haya configurado PHP-FPM, ahora configurará el servidor de la base de datos MariaDB y creará una nueva base de datos y un usuario para LibreNMS.
LibreNMS requería el servidor de base de datos MariaDB con InnoDB habilitado. Así que ahora tendrás que habilitarlo. Luego, creará una nueva base de datos y un usuario para LibreNMS.
Edite 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
Coloque la siguiente configuración en la sección [mysqld].
[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 systemctl a continuación para reiniciar el servicio MariaDB y aplicar nuevos cambios. El servidor MariaDB ahora se ejecuta con el motor de base de datos InnoDB habilitado.
sudo systemctl restart mariadb
A continuación, inicie sesión en el shell de MariaDB a través del siguiente comando mysql. Cuando se le solicite la contraseña, puede simplemente presionar ENTER o escribir la contraseña raíz de MariaDB.
sudo mysql -u root -p
Ejecute las siguientes consultas para crear una nueva base de datos y un usuario para LibreNMS. En este ejemplo, creará una nueva base de datos y un usuario librenms, y asegúrese de cambiar la contraseña de la base de datos con su 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, ejecute la siguiente consulta para verificar los privilegios del usuario de la base de datos [email .
SHOW GRANTS FOR ;
Debería ver que el usuario librenms@localhost tiene privilegios para la base de datos librenms.
Ahora escriba exit para cerrar sesión en el shell de MariaDB.
Configuración de bloques de servidor Nginx
Una vez que haya configurado el servidor MariaDB y creado la base de datos y el usuario, ahora creará una nueva configuración de bloque de servidor Nginx para LibreNMS.
Antes de comenzar, asegúrese de haber decidido el dominio local que se utilizará para LibreNMS. En este ejemplo, LibreNMS debería ejecutarse con el dominio librenms.hwdomain.io.
Cree una nueva configuración de bloques de servidor Nginx /etc/nginx/conf.d/librenms.conf usando el siguiente editor nano.
sudo nano /etc/nginx/conf.d/librenms.conf
Agregue la siguiente configuración al archivo y asegúrese de cambiar el nombre de dominio con su 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;
}
}
Guarde el archivo y salga del editor cuando haya terminado.
Luego, ejecute el siguiente comando para verificar la configuración de Nginx y asegurarse de que la configuración sea correcta.
sudo nginx -t
Si su configuración de Nginx es correcta, verá el mensaje de salida como prueba exitosa - Sintaxis OK.
Ahora reinicie el servicio Nginx para aplicar la nueva configuración del bloque del servidor.
sudo systemctl restart nginx
En este punto, ha completado la configuración LEMP Stack (Nginx, base de datos MariaDB y PHP-FPM) para LibreNMS. Además, LibreNMS ahora debería estar ejecutándose en su sistema Rocky Linux.
Configuración de SELinux
Para esta guía, ejecutará LibreNMS con SELinux habilitado en el modo de aplicación. Así que ahora configurará las reglas de SELinux para LibreNMS.
Para empezar, ejecute el siguiente comando dnf a continuación para instalar el paquete policycoreutils-python-utils en su sistema Rocky Linux. Este paquete proporciona múltiples líneas de comando para administrar SELinux.
sudo dnf install policycoreutils-python-utils
Cuando se le solicite, ingrese y para confirmar y presione ENTER para continuar.
A continuación, ejecute 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
Ejecute el siguiente comando para permitir el acceso a algunos servicios para el servidor web Nginx.
setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1
Ahora, cree un nuevo archivo http_fping.tt usando el siguiente editor nano.
nano http_fping.tt
Agregue 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 };
Guarde el archivo y salga del editor cuando haya terminado.
A continuación, ejecute el siguiente comando para convertir http_fping.tt al formato de SELinux. Luego, agregue la nueva regla compilada 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
Ahora que ha terminado la configuración de SELinux para LibreNMS. A continuación, establecerá algunas configuraciones adicionales para LibreNMS.
Terminando las configuraciones de LibreNMS
Para finalizar la configuración de LibreNMS, ahora configurará la línea de comando lnms, copie alguna configuración predeterminada de LibreNMS, incluidas las configuraciones para cron y logrotate. Además, configurará el servicio SNMP para LibreNMS.
Ejecute el siguiente comando para habilitar la línea de comando lnms y copie la finalización bash del comando lnms.
ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
Copie la configuración de ejemplo de thje LibreNMS cron en /etc/cron.d/librenms.
sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
Copie la configuración de logrotate predeterminada para LibreNMS en /etc/logrotate.d/librenms.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Ahora copie la configuración del servicio snmpd predeterminado en /etc/snmp/snmpd.conf. Luego, edite el nuevo archivo /etc/snmp/snmpd.conf usando el editor nano.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf
Cambie la contraseña de comunidad predeterminada para el servicio snmpd RANDOMSTRINGGOESHERE con su contraseña.
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly default RANDOMSTRINGGOESHERE
Guarde el archivo y salga del editor cuando haya terminado.
A continuación, descargue el archivo binario que utilizará LibreNMS para detectar automáticamente el sistema operativo de cada host de destino. Luego, hágalo ejecutable cambiando el permiso predeterminado.
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
Por último, reinicie el servicio snmpd para aplicar nuevos cambios y nuevas configuraciones.
systemctl restart snmpd
Ahora que todas las configuraciones básicas están completas. A continuación, iniciará la instalación de LibreNMS a través del navegador web.
Acceso a la instalación web de LibreNMS
En su máquina local, edite el archivo /etc/hosts y defina el nombre de dominio local de su instalación de LibreNMS. Además, asegúrese de cambiar la dirección IP con la dirección IP de su servidor.
192.168.5.100 librenms.hwdomain.io
Ahora abra el navegador web y visite el nombre de dominio de su instalación de LibreNMS (es decir, http://librenms.hwdomain.io/).
Al principio, el instalador de LibreNMS verificará los entornos para la instalación. Asegúrese de que todos los requisitos estén marcados en verde, lo que significa que el sistema está listo para la instalación de LibreNMS.
Haga clic en el icono de la base de datos para continuar.
Ahora ingrese la base de datos de detalles y el usuario para su LibreNMS y haga clic en Verificar credenciales. Si las credenciales de su base de datos son correctas, la sección se marcará en verde.
Ahora haga clic en Crear base de datos para iniciar la migración de la base de datos para LibreNMS.
Una vez completada la migración de la base de datos, verá la sección Crear base de datos marcada en verde.
Haga clic en el ícono de la llave para comenzar a configurar el usuario administrador para LibreNMS.
Ahora ingrese el nuevo usuario administrador, la contraseña y la dirección de correo electrónico para su instalación de LibreNMS y haga clic en Agregar usuario.
Ahora la instalación ha terminado y verá la siguiente página. Puede ver que la instalación ha finalizado y las configuraciones se escriben en el archivo .env.
Ahora haga clic en el enlace validar su instalación para verificar la instalación de LibreNMS.
Ahora debería 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.
Ahora asegúrese de que todas las configuraciones estén marcadas como OK, lo que significa que la configuración no tiene ningún error.
También puede corregir todos los errores o advertencias siguiendo las instrucciones recomendadas por LibreNMS.
Ahora puede agregar un nuevo host de destino, una máquina virtual o un dispositivo de red para monitorear la solución de monitoreo de LibreNMS.
Conclusión
¡Felicidades! Ha instalado la solución de monitoreo LibreNMS en el servidor Rocky Linux. También ha aprendido la configuración básica de LEMP Stack (Nginx, MariaDB y PHP-FPM) en Rocky Linux.
Desde aquí, puede continuar agregando un host o una máquina de destino para monitorear, configurar el Agente LibreNMS, configurar alertas o notificaciones, configurar la integración de terceros con Graylog y realizar otras tareas.