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:
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:
Pasos Previos
Antes de iniciar con los pasos RockyLinux debe estar en estas condiciones:
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


