• contacto@bajaopensolutions.com
  • +52 (664) 181 4889

Aprende a Monitorear tus Sistemas con RockyLinux 9 y LibreNMS Parte1.

Aprende a Monitorear tus Sistemas con RockyLinux 9 y LibreNMS Parte1.

Introduccion


LibreNMS es uno de tantos sistemas de monitoreo que podemos usar en nuestra red y empezar a recabar metricas de desempeño de cada uno de los servidor tanto fisicos, virtuales, equipos de red como routers, switches, access points u otros, de igual manera los equipos perifericos como impresoras, escaners. Si tiene el modulo SNMP LibreNMS los podra consultar.


Tengo un video en mi canal en YouTube donde te indico paso a paso como instalarlo, configurarlo y como agregar sistemas a monitorear, aqui tienes el video.



Se basa en el clasico SNMP, del cual existen de la version 1 a la 3, en este tutorial nos basaremos en la version 2. Ya que no todos los equipos soportan la v3 y algunos de sus dispositivos van a ver que solo hablaran la v1. Pero no se asusten, lo mas importante es que, LibreNMS puede consultar esas metricas.


Para este ejemplo me basare en el siguiente diagrama de red para la implementacion.



Requisitos para LibreNMS


LibreNMS requiere 4 componentes escenciales para su ejecucion:


Sistemas Operativo Tipo Linux usaremos RockyLinux 9
Una Base de Datos, usaremos MariaDB
Un servidor web, usaremos NGinx
PHP 8.2+

Les recuerdo que estos pasos podran servirles si la version de Linux es de la familia RedHat como AlmaLinux u otro similar.


Sistemas o Dispositivos a Monitorear


En la terminologia de LibreNMS el usa el termino dispositivo a los sistemas u equipos que monitorea, pero estos pueden ser sistemas operativos, equipos de red, perifericos como impresoras u cualquier equipos o sistema que soporte SNMP.


Basado en el digrama de red yo agregare 3:


RockyLinux el mismo sistema donde se instalara LibreNMS
Firewall PfSense que esta basado en el OS FreeBSD
Windows 10/11 Pro

Pasos Previos


Antes de iniciar con los pasos RockyLinux debe estar en estas condiciones:


Selinux deshabilitado
Hostname configurado, en mi caso usare el nombre bos-librenms
Timezone acorde a su ubicacion
Sistema actualizado

Pasos para la Instalacion


1:Instalar repos


dnf install -y epel-release
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

2: Apuntar PHP a repo REMI


dnf module reset php -y
dnf module enable php:remi-8.2 -y

3: Instalar paquetes requeridos


dnf install -y \
nginx \
mariadb mariadb-server mariadb-backup \
php php-cli php-fpm php-common php-mysqlnd php-zip php-devel \
php-gd php-mbstring php-curl php-xml php-bcmath php-json php-posix \
php-intl php-snmp \
python3 python3-pip \
fping git unzip cronie \
net-snmp net-snmp-utils rrdtool

4: Configuración de Base de Datos MariaDB


4.1 Habilitamos para Iniciar el Servicio cuando el OS Inicie.


systemctl enable mariadb

4.2 Asegurar MariaDB, poner clave al root, eliminar usuarios anonimos y borrar base de datos de prueba


mysql_secure_installation

4.3 Creamos Archivo para Personalizar MariaDB


vi /etc/my.cnf.d/librenms.cnf

4.4 Agregamos el siguiente contenido, guardamos y salimos


[mysqld]
innodb_file_per_table=1
lower_case_table_names=0
max_connections=500
innodb_buffer_pool_size=512M

4.5 Reiniciamos y validamos servicio de MariaDB

systemctl start mariadb
systemctl status mariadb

4.6 Creacion de usuario y Base de Datos para LibreNMS.


En este paso, vamos a crear el usuario librenms y con ese mismo vamos a ejecutar la base de datos con el mismo nombre, aqui estoy usando una clave sencilla, en produccion recuerden una contraseña mas compleja.


mysql -u root -e "
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'PONGANSUMEGACLAVE';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;"

5: Crear usuario librenms en linux


useradd -r -M -d /opt/librenms -s /bin/bash librenms

6: Descargar LibreNMS desde Github


6.1 Descargamos fuente y aplicamos permisos


cd /opt
git clone https://github.com/librenms/librenms.git
chown -R librenms:librenms /opt/librenms

6.2 Validamos la rama, debe ser Master


su - librenms -c "cd /opt/librenms && git branch"
*master

NOTA: En la parte 2 vamos a cambiar a la version ‘Release’, ya que esta rama es que ‘dev’, pero si gustan estar al filo de la navaja lo pueden hacer.


7: Descargamos Composer


7.1 Instalamos el composer


cd /opt/librenms/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm -rf composer-setup.php

7.2 Validacion


su - librenms -c "cd /opt/librenms && composer -V"
Composer version 2.9.2 2025-11-19 21:57:25
PHP version 8.2.29 (/usr/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.

8:Modificamos Permisos


chown -R librenms:librenms /opt/librenms
chmod -R 775 /opt/librenms/storage
chmod -R 775 /opt/librenms/bootstrap
restorecon -RFv /opt/librenms

9:Instalamos librerias especificas para LibreNMS


su - librenms
cd /opt/librenms
composer install --no-dev --ignore-platform-reqs
pip3 install --user -r requirements.txt
exit

10: Personalizamos LibreNMS para PHP-FPM


10.1 Creamos Archivo


vi /etc/php-fpm.d/librenms.conf

10.2 Agregamos el siguiente contenido, guardamos y salimos.


[librenms]
user = librenms
group = librenms
listen = /run/php-fpm/librenms.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[error_log] = /var/log/php-fpm/librenms-error.log
php_admin_flag[log_errors] = on

10.3 Creamos Archivo de Logs


touch /var/log/php-fpm/librenms-error.log

10.4 Validamos Sintaxis


php-fpm -t
[30-Nov-2025 18:41:24] NOTICE: configuration file /etc/php-fpm.conf test is successful

10.5 Habilitamos, Iniciamos y Validamos el Servicio


systemctl enable php-fpm
systemctl start php-fpm
systemctl status php-fpm

11: Configuramos Servidor Web Nginx


11.1 Editamos Archivo php.ini


vi /etc/php.ini

11.2 Buscar y editar esta variable acorde a su zona de horario


date.timezone = America/Tijuana

11.3 Creamos Archivo de Configuracion para LibreNMS


vi /etc/nginx/conf.d/librenms.conf

11.4 Agregar el siguiente contenido, guardar y salir


server {
listen 80;
server_name 192.168.2.15; # OJO OJO OJO OJO AJUSTAR IP o HOSTNAME
root /opt/librenms/html;
index index.php;
access_log /opt/librenms/logs/access.log;
error_log /opt/librenms/logs/error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/run/php-fpm/librenms.sock;
}
location ~ /\.(?!well-known).* {
deny all;
}

11.5 Validamos Sintaxis


nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

11.6 Habilitamos, Iniciamos y Validamos el Servicio


systemctl enable nginx
systemctl start nginx
systemctl status nginx

11.7 Abrimos reglas en Firewall


firewall-cmd --zone public --add-service http --add-service https
firewall-cmd --permanent --zone public --add-service http --add-service https

11.8 Prueba de Fuego, abrir navegador y apuntar a el IP de LibreNMS


http://192.168.2.15


NOTA: Si ven una imagen similar, regresen y vuelvan a validar que falto, es la prueba de fuego, no continuar hasta no ver la imagen en su navegador.


12: Configuracion de LibreNMS


12.1 Registramos Scheduler y Timer


cp /opt/librenms/dist/librenms-scheduler.service /etc/systemd/system/
cp /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/

12.2 Recargamos Nuevos Servicios en el Sistema.


systemctl daemon-reload

12.3 Habilitamos, Iniciamos y Validamos Servicios


systemctl enable librenms-scheduler.timer
systemctl start librenms-scheduler.timer
systemctl start librenms-scheduler.service
systemctl status librenms-scheduler.timer
systemctl status librenms-scheduler.service

12.4 Agregamos servicios a cron y reinciamos el servicio de cron


cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
systemctl restart crond

13: Configuramos LibreNMS para Acceso a Base de Datos


13.1 Accedemos con usuario librenms y nos movemos a folder de instalacion


su - librenms
cd /opt/librenms

13.2 Editamos archivo


vi .env

13.3 Agregamos el siguiente contenido, guardamos y salimos.


DB_HOST=localhost
DB_DATABASE=librenms
DB_USERNAME=librenms
DB_PASSWORD=librenms
APP_URL=http://IP_LIBRENMS o HOSTNAME

13.4 Reiniciamos Servicios.


exit
systemctl restart php-fpm
systemctl restart nginx

14: Ajustes del Sistema


ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

15: Volvemos a Modificar Permisos


cd /opt
chown -R librenms:librenms /opt/librenms

16; Accesamos a GUI y Configuramos


16.1 Abrimos de Nuevo Navegador y Apuntamos a el IP de LibreNMS e Iniciamos Configuracion










Listo LibreNMS para agregar sistemas o dispositivos.


17: Agregar 1er Dispositivo


17.1 Mantenemos la configuracion default


cd /etc/snmp
mv snmpd.conf snmpd.conf_default

17.2 Creamos archivo de configuracion en blanco para el cliente snmp.


vi snmpd.conf

17.3 Agregamos el siguiente contenido, guardamos y salimos.


com2sec readonly  default         USARSUTEXTOCLAVEAQUI
group MyROGroup v2c readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none

syslocation BOS LibreNMS Server
syscontact Pedro <pmoreno@bajaopensolutions.com>

extend distro /usr/bin/distro

Revisen el texto, ajusten los parametros acorde a su infraestructura.


17.4 Habilitamos e iniciamos el servicio del cliente snmp


systemctl enable snmpd
systemctl start snmpd

17.5 Validamos de una manera muy sencillo la comunicacion con el cliente a monitorear


snmpwalk -v2c -c USARSUTEXTOCLAVEAQUI localhost system

Si la comunicacion se establece y la cadena de validacion es correcta, deben obtener un listado grande de datos de respuesta de lado del cliente, algo similar a lo siguiente:


[root@bos-librenms xuser]# snmpwalk -v2c -c BAJAOPENSOLUTIONS localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux bos-librenms 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Dec 12 11:55:11 UTC 2025 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (10429000) 1 day, 4:58:10.00
SNMPv2-MIB::sysContact.0 = STRING: Pedro <pmoreno@bajaopensolutions.com>
SNMPv2-MIB::sysName.0 = STRING: bos-librenms
SNMPv2-MIB::sysLocation.0 = STRING: BOS LibreNMS Server
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (3) 0:00:00.03

Algo muy similar, con esto confirmamos que cuando LibreNMS consulte a el sistema o dispositivo este le respondera con las metricas disponibles, asi podemos validar cada uno de los sistemas a monitorear de una manera muy rapida.


18: Agregar Sistema Pfsense


24; Agregar a Windows

23; Eliminiar los archivos git que ya no sirven
su – librenms
cd /opt/librenms
./scripts/github-remove -d (Le decimos que si)

24; ejecutar el validador(opcional)
./validate.php
25; fin

Buscar

Categoría

Información de contacto

Posts Relacionados

Pfsense 2.8.1 Release Disponible

    Por fin llego la version de la actualizacion de rama PfsenseCE 2.8.0, 2.8.1CE ya disponible. Analizando las notas, realmente es…
      Deja un comentario

      Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

      ¿Listo para llevar tu red al siguiente nivel?

      ¡Contáctanos hoy mismo y une tu red al futuro de la seguridad!
      • Solicita tu asesoría gratuita
      • Cotiza tu equipo
      • Recibe soporte experto
      “Tu red, tu seguridad, tu futuro.” | Brindando Soporte de firewalls PfSense y OpnSense de México hasta España
      • contacto@bajaopensolutions.com
      • +52 (664) 181 4889

      Redes Sociales

      Baja Open Solutions © 2025 Todos los derechos reservados.

      Contáctanos

      Uno de nuestros expertos te atenderá.