0887 371 498 support@itservice-bg.net
LibreNMS
21.01.2026 · Самуил Арсов · bgp, Debian, Hosting, Juniper, MikroTik, Ubiquiti, Ubuntu, Рутери

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):

  1. LibreNMS изпраща запитване с OID (Object Identifier) към устройството.
  2. Устройството връща стойност (напр. „Температурата е 45°C“).
  3. LibreNMS записва стойността в RRD файла.
  4. Уеб интерфейсът чете RRD файла и изгражда графиката.

4. Python Dispatcher (за мащабни инсталации)

При стандартна инсталация LibreNMS използва cron за пускане на проверките. Това е достатъчно до около 100–150 устройства.

При по-голяма мрежа (500+ устройства) се препоръчва Dispatcher Service — Python процес, който държи проверките постоянно заредени в паметта и е значително по-бърз от стандартния cron подход.

LibreNMS мониторинг на MikroTik устройство

Инсталация на 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 години развитие остава добре поддържан проект.