LibreNMS
LibreNMS е пълнофункционална система за мрежов мониторинг с отворен код, базирана на SNMP. Тя открива автоматично устройствата в мрежата, събира данни за трафик, температура, CPU, памет и десетки други метрики, след което ги визуализира в графики и изпраща аларми при отклонения.
Тази статия покрива историята на проекта, архитектурата на системата, инсталацията на Ubuntu 22.04 LTS и основната конфигурация за добавяне на първото устройство.
История
1. Началото: Ерата на Observium
Преди да съществува LibreNMS, имаше Observium — успешен проект за мониторинг, базиран на PHP, MySQL и SNMP, създаден от Адам Армстронг. Известен беше с чистия си интерфейс и доброто автоматично откриване на устройства.
2. Разколът – Май 2013 г.
През 2013 г. напрежението между главния разработчик и общността ескалира. Причините бяха две:
- Лицензиране: Observium се раздели на Community (безплатна, ограничена) и Professional (платена) версия.
- Управление на общността: Имаше недоволство от начина на комуникация и отношението към външни сътрудници, искащи да добавят код.
Пол Гиър (Paul Gear) и други активни членове на общността взеха решение да направят fork на кода на Observium.
3. Раждането на LibreNMS
Така се появи LibreNMS. Името не е случайно:
- Libre — от латинското и испанско „libre“ (свободен).
- NMS — Network Management System.
Основната философия: продуктът да остане напълно безплатен и с пълна функционалност за всички, под лиценз GPLv3.
Любопитен факт: Тъй като LibreNMS започна като копие на Observium, в първите версии те изглеждаха почти идентично. С времето двата продукта поеха по коренно различни пътища.
4. Еволюция и разлики
След отделянето LibreNMS се развива с бързи темпове, воден от общността. Основните разлики спрямо Observium:
- Отвореност към хардуера: LibreNMS приема поддръжка за почти всякакво оборудване, докато Observium има по-строги изисквания.
- API: LibreNMS разви мощно REST API за интеграция с външни системи.
- Система за аларми: Преработена е да поддържа множество канали — Slack, Discord, Telegram, Email, SMS и др.
- Автоматични актуализации: Ежедневни актуализации чрез
git pull, изключително лесни за поддръжка.
Архитектура
LibreNMS не е една програма, а съвкупност от компоненти, работещи в синхрон.
1. Двата основни процеса: Discovery и Poller
Discovery (Откриване)
- Какво прави: Пита устройството какво има в себе си — физически портове, сензори, VLAN-и, операционна система.
- Честота: По подразбиране — веднъж на всеки 6 часа.
- Защо не по-често: Хардуерната конфигурация се променя рядко. Това е тежък процес и не е необходимо да се повтаря често.
Poller (Анкетиране)
- Какво прави: Събира текущите стойности на вече откритите метрики — трафик, температура, CPU.
- Честота: По подразбиране — веднъж на всеки 5 минути.
- Важно: Ако Discovery не е открил даден сензор, Poller-ът няма да го проверява.
Аналогия: Discovery е като инвентаризация на склад — правиш я рядко, за да знаеш какви рафтове имаш. Poller е като ежедневна проверка колко стока стои на всеки рафт.
2. Хранилища за данни
MariaDB / MySQL
Тук се пазят конфигурацията и събитията:
- Имена на устройства, IP адреси, местоположение.
- Правила за аларми.
- Event logs — кога е паднал интерфейс, кой кога е влязъл.
RRDtool (Round Robin Database)
Тук се пазят числата и графиките — файлове в /opt/librenms/rrd/.
- Кръгова структура: Файлът има фиксиран размер. Когато се напълни, новите данни презаписват най-старите.
- Осредняване: Данните от последните 24 часа са детайлни (на всеки 5 мин), данните от преди година — осреднени (по една точка на ден).
- Предимство: Дискът не се препълва безконтролно, дори при многогодишна история.
3. Протоколът SNMP
Комуникацията между LibreNMS и устройствата се осъществява чрез SNMP (Simple Network Management Protocol):
- LibreNMS изпраща запитване с OID (Object Identifier) към устройството.
- Устройството връща стойност (напр. „Температурата е 45°C“).
- LibreNMS записва стойността в RRD файла.
- Уеб интерфейсът чете RRD файла и изгражда графиката.
4. Python Dispatcher (за мащабни инсталации)
При стандартна инсталация LibreNMS използва cron за пускане на проверките. Това е достатъчно до около 100–150 устройства.
При по-голяма мрежа (500+ устройства) се препоръчва Dispatcher Service — Python процес, който държи проверките постоянно заредени в паметта и е значително по-бърз от стандартния cron подход.

Инсталация на Ubuntu 22.04 LTS
1. Системни изисквания
- Ubuntu 22.04 LTS (или Debian 12)
- Минимум 2 GB RAM (препоръчително 4+ GB при повече устройства)
- PHP 8.1+, MariaDB 10.6+, nginx или Apache
- SNMP активиран на наблюдаваните устройства
2. Инсталация на зависимостите
apt install -y acl curl fping git graphviz imagemagick \
mariadb-client mariadb-server mtr-tiny nginx-full nmap \
php8.1-cli php8.1-curl php8.1-fpm php8.1-gd php8.1-gmp \
php8.1-mbstring php8.1-mysql php8.1-snmp php8.1-xml php8.1-zip \
rrdtool snmp snmpd whois python3-dotenv python3-pymysql \
python3-redis python3-setuptools python3-systemd python3-pip
3. Създаване на потребител и клониране
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
git clone https://github.com/librenms/librenms.git /opt/librenms
4. Права и ACL
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs \
/opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs \
/opt/librenms/bootstrap/cache/ /opt/librenms/storage/
5. PHP зависимости
su - librenms
./scripts/composer_wrapper.php install --no-dev
exit
6. Конфигурация на MariaDB
В /etc/mysql/mariadb.conf.d/50-server.cnf добави в секция [mysqld]:
innodb_file_per_table=1
lower_case_table_names=0
Рестартирай MariaDB и създай базата данни:
systemctl restart mariadb
mysql -u root -p
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'СМЕНИ_С_ПАРОЛА';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
EXIT;
7. Конфигурация на nginx
Създай /etc/nginx/conf.d/librenms.conf:
server {
listen 80;
server_name librenms.example.com;
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:/var/run/php/php8.1-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
8. PHP-FPM пул
cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/librenms.conf
В librenms.conf промени:
[librenms]
user = librenms
group = librenms
listen = /var/run/php/php8.1-fpm-librenms.sock
listen.owner = librenms
listen.group = librenms
listen.mode = 0660
9. Инициализация и cron
chown -R librenms:librenms /opt/librenms
# Стартирай инсталатора
su - librenms -s /bin/bash -c "php /opt/librenms/artisan migrate --force"
# cron задача
cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
# logrotate
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
# Стартирай услугите
systemctl enable --now php8.1-fpm nginx
След това отвори браузър и завърши инсталацията през уеб интерфейса на http://<IP_НА_СЪРВЪРА>/install.
Конфигурация
Добавяне на устройство
Устройство може да се добави по два начина.
През уеб интерфейса: Devices → Add Device → въведи IP адреса и SNMP community string.
През терминала:
su - librenms
lnms device:add 192.168.1.1 --community public --version v2c
След добавянето LibreNMS стартира автоматично Discovery на устройството. В рамките на няколко минути ще видиш първите графики.
Проверка на статуса
# Ръчно стартиране на поллера за конкретно устройство
su - librenms
php /opt/librenms/poller.php -h 192.168.1.1 -r -d
# Проверка за грешки в инсталацията
su - librenms
php /opt/librenms/validate.php
Актуализации
LibreNMS се актуализира с единична команда:
su - librenms
./daily.sh
Скриптът изтегля последните промени от GitHub, актуализира PHP зависимостите и мигрира базата данни автоматично. Препоръчително е да се пуска веднъж дневно — автоматично чрез cron или ръчно.
Заключение
LibreNMS е зряла и надеждна система за мрежов мониторинг, подходяща за среди от 10 до десетки хиляди устройства. Силните му страни са автоматичното откриване, богатата поддръжка на хардуер и активната общност, която редовно добавя нови интеграции.
За ISP среда или корпоративна мрежа с MikroTik, Cisco, Juniper и Linux сървъри, LibreNMS е едно от най-добрите безплатни решения на пазара — и след над 10 години развитие остава добре поддържан проект.