LibreNMS: Monitorização de Rede Open-Source para PME em 2026
Introdução
O LibreNMS é um sistema de monitorização de rede open-source baseado em PHP e MySQL/MariaDB, com suporte nativo para SNMP, API REST e integração com múltiplas plataformas de notificação. Em 2026, continua a ser uma das soluções mais robustas para pequenas e médias empresas (PME) que precisam de visibilidade sobre switches, routers, servidores e dispositivos IoT sem pagar licenças comerciais.
O projecto nasceu em 2013 como fork do Observium Community Edition e desde então mantém lançamentos regulares. A versão estável actual suporta PHP 8.2+, MariaDB 10.6+, e inclui funcionalidades como autenticação via LDAP/Active Directory, API GraphQL, integração com Grafana e dashboards customizáveis.
Para uma PME com 10 a 50 dispositivos de rede, o LibreNMS oferece um custo total de propriedade (TCO) significativamente inferior a soluções como PRTG ou SolarWinds, sem sacrificar funcionalidades essenciais como recolha de métricas via SNMP, alertas por email/Slack/Telegram e mapas de topologia automáticos.
ℹ Requisitos mínimos
Servidor com 2 vCPU, 2 GB RAM e 20 GB disco. Para ambientes com mais de 100 dispositivos, recomenda-se 4 vCPU e 4 GB RAM com MariaDB configurado com InnoDB buffer pool adequado.
Instalar LibreNMS
A instalação oficial corre em Debian 12 ou Ubuntu 24.04 LTS. O processo manual dá controlo total sobre cada componente, mas o script automatizado librenms.sh da comunidade reduz o tempo de 45 minutos para cerca de 10.
Passos principais para instalação manual em Debian 12:
# 1. Instalar dependências
apt update && apt install -y nginx mariadb-server php8.2-fpm \
php8.2-cli php8.2-mysql php8.2-gd php8.2-snmp php8.2-curl \
php8.2-mbstring php8.2-xml php8.2-zip python3-pip fping rrdtool \
snmp snmpd whois traceroute mtr-tiny imagemagick graphviz
# 2. Criar base de dados
mysql -u root -e "CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -e "CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'SenhaForteAqui';"
mysql -u root -e "GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';"
mysql -u root -e "FLUSH PRIVILEGES;"
# 3. Criar utilizador de sistema
useradd -r -s /bin/bash -d /opt/librenms librenms
# 4. Clonar repositório
cd /opt && git clone https://github.com/librenms/librenms.git
chown -R librenms:librenms /opt/librenms
# 5. Configurar permissões
chmod +x /opt/librenms/scripts
setfacl -R -m g:librenms:rwx /opt/librenms
setfacl -d -m g:librenms:rwx /opt/librenms
Após instalar os pacotes, configurar o Nginx com um virtual host dedicado e o PHP-FPM pool para o utilizador librenms. A configuração do config.php define a ligação à base de dados e o URL base da instalação.
# /opt/librenms/config.php (excerto)
$config['db_host'] = 'localhost';
$config['db_user'] = 'librenms';
$config['db_pass'] = 'SenhaForteAqui';
$config['db_name'] = 'librenms';
$config['base_url'] = 'https://monitor.empresa.pt';
# Configurar timezone
$config['timezone'] = 'Europe/Lisbon';
# Activar alertas por email
$config['alert']['email']['enable'] = true;
$config['alert']['email']['from'] = '[email protected]';
O último passo do instalador web em https://monitor.empresa.pt valida a base de dados, permissões e dependências PHP. Se tudo estiver correcto, cria a conta de administrador e carrega o esquema inicial da base de dados.
✓ Cron e serviços
O LibreNMS depende de tarefas cron para executar a descoberta automática de equipamentos (discovery), poller de métricas SNMP, alertas e limpeza de base de dados. Sem o cron, o LibreNMS não recolhe dados nem gera alertas. Para activar, copiar /opt/librenms/librenms.nonroot.cron para /etc/cron.d/librenms e reiniciar o serviço cron com systemctl restart cron.
SNMP e Descoberta
O LibreNMS descobre dispositivos automaticamente via SNMP v2c ou v3. A descoberta automática lê a tabela ARP, FDB (Forwarding DataBase) e LLDP/CDP vizinhos do núcleo de rede para mapear toda a topologia sem intervenção manual.
Configuração SNMP nos dispositivos de rede. Exemplo para um switch Cisco ou HP com SNMP v2c:
# Switch Cisco IOS
snmp-server community public RO
snmp-server location Sala_Tecnica_Edificio_A
snmp-server contact [email protected]
snmp-server enable traps
# SNMP v3 (recomendado em producao)
snmp-server group admins v3 priv read all
snmp-server user librenms admins v3 auth SHA SenhaAuth123 priv AES 128 SenhaPriv456
No LibreNMS, adicionar dispositivos pela interface web em Devices > Add Device ou via CLI:
su - librenms
cd /opt/librenms
./snmp-scan.py -t 192.168.1.0/24 -c public
./addhost.php 192.168.1.1 public v2c
./discovery.php -h all
A descoberta identifica automaticamente o tipo de dispositivo (switch, router, servidor, AP Wi-Fi), carrega o OS-specific YAML e começa a recolher métricas de portas, CPU, memória e temperatura. O processo de poller corre a cada 5 minutos por cron e actualiza os gráficos RRD.
💡 Dica de performance
Para redes com mais de 50 dispositivos, activar o distributed_poller no config.php com Redis para partilha de estado. Reduz o tempo de poll de 5 minutos para menos de 1 minuto.
Alertas e Notificações
O sistema de alertas do LibreNMS baseia-se em regras flexíveis que avaliam métricas SNMP em tempo real. Cada regra tem uma condição, um nível de severidade e um ou mais transportes de notificação.
Regras de alerta mais comuns para PME em 2026:
# Alerta: port down mais de 2 minutos
rule: ports.port_status = down AND ports.ifOperStatus = down
severity: critical
delay: 120
# Alerta: CPU acima de 85% por 5 minutos
rule: processors.processor_usage > 85
severity: warning
delay: 300
# Alerta: disco com menos de 10% livre
rule: storage.storage_perc < 10
severity: critical
delay: 60
Transportes suportados nativamente em 2026: Email, Slack, Telegram, Discord, Microsoft Teams, PagerDuty, Pushover, SMS via API (Twilio/Nexmo) e webhook HTTP genérico. A configuração de cada transporte é feita em Alerts > Alert Transports.
Exemplo de configuração de transporte Telegram:
# /opt/librenms/config.php
$config['alert']['telegram']['enable'] = true;
$config['alert']['telegram']['bot_token'] = '123456:ABC-DEF...';
$config['alert']['telegram']['chat_id'] = '-1001234567890';
# Template de mensagem (usar nome do dispositivo e severidade)
# O LibreNMS envia automaticamente:
# "ALERTA: {hostname} - {title} (Severidade: {severity})"
⚠ Alertas de maintenance
Configurar janelas de manutenção em Alerts > Maintenance antes de reiniciar dispositivos. Sem isto, o LibreNMS dispara alertas de port down durante manutenções planeadas, saturando canais de Telegram/Slack.
Erros Comuns
Os problemas mais frequentes em instalações LibreNMS em PME, com diagnóstico e solução:
| Erro | Causa | Solução |
|---|---|---|
| SNMP no response | SNMP não activo no dispositivo ou firewall a bloquear UDP 161 | Verificar com snmpwalk -v2c -c public IP. Abrir UDP 161 no firewall do dispositivo |
| Poller stuck | Cron não configurado ou permissões incorrectas em /opt/librenms |
Correr ./discovery.php -h all manualmente. Verificar /etc/cron.d/librenms |
| RRD graphs blank | Permissões do directório rrd/ ou SELinux/AppArmor a bloquear escrita |
Correr ./scripts/fix_permissions.sh. Verificar SELinux com getsebool -a | grep httpd |
| Web 502 Bad Gateway | PHP-FPM parado ou socket path errado na config Nginx | systemctl restart php8.2-fpm. Verificar socket em /run/php/php8.2-fpm.sock |
| DB connection failed | Credenciais erradas em config.php ou MariaDB não a correr |
Verificar systemctl status mariadb. Testar ligação: mysql -u librenms -p librenms |
| Alertas não chegam | Transporte mal configurado ou regra sem transporte associado | Testar em Alerts > Transports com botão Test. Verificar mapa regra→transporte |
| Discovery timeout | Rede com dispositivos inacessíveis ou fping lento | Excluir ranges não monitorizados. Aumentar $config['snmp']['timeout'] para 10s |
| Upgrade falha | Dependências PHP desactualizadas ou schema DB desync | Correr ./daily.sh manualmente. Verificar ./scripts/composer_wrapper.php install |
Artigos relacionados no kbase.pt