ИСТОРИЯ
1. Началото: Ерата на Observium
Преди да съществува LibreNMS, имаше Observium. Observium стартира като много успешен проект за мониторинг, базиран на PHP/MySQL и SNMP, създаден от Адам Армстронг. Той беше известен с красивия си интерфейс и доброто автоматично откриване на устройства.
2. Разколът (The Fork) – Май 2013 г.
Това е ключовият момент. През 2013 г. напрежението между главния разработчик на Observium и част от общността ескалира. Основните причини за конфликта бяха две:
- Лицензиране и модел на развитие: Observium започна да разделя продукта на две версии: Community (безплатна, но с по-малко функции и забавени ъпдейти) и Professional (платена). Това не се хареса на хората, които вярваха в истинския отворен код.
- Управление на общността: Имаше недоволство от начина на комуникация и отношението към външните сътрудници (contributors), които искаха да добавят код към проекта.
В резултат на това, Пол Гиър (Paul Gear), заедно с други активни членове на общността, взеха решение да направят т.нар. “Fork” (разклонение) на кода на Observium.
3. Раждането на LibreNMS
Така се появи LibreNMS. Името не е случайно:
- Libre: Идва от “liberty” (свобода) или френското/испанското “libre” (свободен).
- NMS: Network Management System.
Основната философия беше: Продуктът да остане напълно безплатен, с пълна функционалност за всички (без “Pro” версии), под лиценз GPLv3.
Любопитен факт: Тъй като LibreNMS започна като копие на Observium, в първите версии те изглеждаха почти идентично. С времето обаче двата продукта поеха по коренно различни пътища.
4. Еволюция и Разлики
След отделянето си, LibreNMS започна да се развива с изключително бързи темпове, водени от общността. Ето какво промениха те спрямо “родителя” си:
- Отвореност към хардуера: LibreNMS общността приема поддръжка за почти всякакво оборудване, докато Observium има по-строги изисквания за това какво ще бъде включено официално.
- API: LibreNMS разви много мощно API, което позволява интеграция с външни системи.
- Alerting (Аларми): Системата за аларми беше преработена, за да бъде много по-гъвкава и да поддържа множество транспортни канали (Slack, Discord, Telegram, Email, SMS и др.).
- Автоматични ъпдейти: Въведоха система за ежедневни ъпдейти, която е изключително лесна за поддръжка.
Архитектура
LibreNMS не е просто една програма, а съвкупност от няколко компонента, които работят в синхрон. Ето как изглежда двигателят “под капака”:
1. Двата основни процеса: Discovery и Poller
Това е най-важната концепция в LibreNMS. Системата разделя работата на две различни задачи, за да пести ресурси.
А. Discovery (Откриване) – “Картографът”
- Какво прави: Този процес пита устройството: “Какво имаш в себе си?”. Открива физическите портове, сензорите за температура, вентилаторите, операционната система, VLAN-ите и т.н.
- Кога работи: По подразбиране – веднъж на всеки 6 часа (и веднага след като добавиш ново устройство).
- Защо не по-често? Това е тежък процес. Няма смисъл да питаш рутера на всеки 5 минути “Имаш ли нови портове?”, защото хардуерът се променя рядко.
Б. Poller (Анкетиране) – “Статистикът”
- Какво прави: Този процес пита устройството: “Какви са стойностите на нещата, които Откриването намери?”. Колко трафик минава през порт 1? Колко градуса е CPU-то?
- Кога работи: По подразбиране – веднъж на всеки 5 минути.
- Важно: Ако Discovery не е открил даден сензор, Poller-ът няма да го пита за стойности.
Аналогия: Представи си инвентаризация в склад.
- Discovery е, когато правиш списък на всички рафтове (прави се рядко).
- Poller е, когато минаваш да броиш колко стока има на всеки рафт (прави се често).
2. Къде отиват данните? (MySQL vs RRDtool)
Много начинаещи се бъркат, че всичко се пази в базата данни. В LibreNMS има две хранилища:
MariaDB / MySQL (Базата данни)
Тук се пази текстовата и конфигурационна информация:
- Имена на устройства, IP адреси, местоположение.
- Настройки на аларми (Alert rules).
- Event logs (логове за събития – кой кога е влязъл, кога е паднал интерфейс).
- Не пази графиките!
RRDtool (Round Robin Database)
Тук се пазят числата и графиките. Това са файлове, които живеят в папката /opt/librenms/rrd/.
- Как работи: Това е кръгова база данни. Тя има фиксиран размер.
- Ефективност: Когато файлът се напълни, новите данни презаписват най-старите. Също така, LibreNMS автоматично “осреднява” старите данни.
- Пример: Данните от последните 24 часа са подробни (на всеки 5 мин). Данните от преди година са осреднени (една точка на ден).
- Предимство: Това гарантира, че дискът ти няма да се препълни безконтролно, дори да пазиш история с години.
3. Механизмът на работа (SNMP)
Всичко това се случва благодарение на протокола SNMP (Simple Network Management Protocol).
- LibreNMS изпраща запитване (OID – Object Identifier) към устройството.
- Устройството връща отговор (например: “Температурата е 45”).
- LibreNMS записва стойността в RRD файла.
- Web Interface-ът чете RRD файла и ти рисува красива графика.
4. Оптимизация за напреднали (Python Dispatcher)
Когато инсталираш LibreNMS за първи път, той използва стандартен cron job, за да пуска проверките. Това е ОК за 50-100 устройства.
Ако обаче мрежата ти порасне (примерно 500+ устройства), стандартният метод става бавен. Тогава LibreNMS позволява да включиш “Dispatcher Service” (написан на Python). Той държи процесите постоянно заредени в паметта и е много по-бърз от стандартния PHP скрипт.
