Как установить и настроить LibreNMS на VPS
Если у вас больше пяти устройств в сети — коммутаторы, роутеры, серверы, точки доступа — вручную проверять их состояние уже неудобно. LibreNMS решает эту задачу: он сам находит устройства по SNMP через LLDP/CDP-соседство, рисует топологию и графики трафика, и присылает алерт, когда что-то падает или упирается в лимит. Ниже — рабочая установка на чистый VPS с Ubuntu 24.04, без сокращений и лишней воды.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое LibreNMS и когда он оправдан
LibreNMS — форк Observium 2013 года, переписанный под открытую разработку (Observium с тех пор частично закрылся, платная версия стала основной). Это PHP/Laravel-приложение с веб-интерфейсом, которое опрашивает устройства по SNMP, хранит метрики в RRD-файлах (или в связке с InfluxDB/Prometheus как вторичным хранилищем) и умеет автообнаружение сети: указываете один IP или подсеть — дальше LibreNMS сам находит соседей по LLDP, CDP, FDP, OSPF и добавляет их в опрос.
Где он уместен:
- Сетевая инфраструктура — коммутаторы, роутеры, файрволы, WiFi-контроллеры любых вендоров, поддерживающих SNMP (Cisco, MikroTik, Juniper, Ubiquiti, HP/Aruba и десятки других — есть готовые os-профили).
- Смешанный парк серверов и сетевого оборудования в одной панели, когда чисто серверный мониторинг (Zabbix, Netdata) неудобен для L2/L3-устройств.
- MSP и небольшие интеграторы, которым нужен один инструмент на десятки клиентских сетей с готовыми шаблонами устройств из коробки.
Если у вас только серверы без сетевого железа под управлением, присмотритесь к Zabbix или Netdata — они проще для этого случая. LibreNMS выигрывает именно там, где нужен честный SNMP-опрос сетевого оборудования с автообнаружением топологии.
Требования к серверу
LibreNMS не тяжёлый, но растёт вместе с числом опрашиваемых устройств и портов на них — каждый порт это несколько RRD-файлов с дисковой нагрузкой на запись.
| Параметр | Минимум (до ~30 устройств) | Комфортно (100+ устройств) |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 2 ГБ | 4-8 ГБ |
| Диск | 20 ГБ SSD | 60+ ГБ NVMe (RRD любит быстрый I/O) |
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
Диск важнее CPU: RRDtool делает много мелких операций записи, поэтому на NVMe всё летает, а на медленном HDD-хостинге опрос будет тормозить и накапливать лаг. Если планируете следить за десятками устройств с высокой частотой опроса — берите VPS с NVMe сразу, не экономьте на этом пункте.
Понадобится домен или поддомен (например, nms.example.com) для веб-интерфейса и, желательно, отдельный внутренний IP или VPN до сети, которую мониторите, если она не в той же локации, что VPS.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка LibreNMS на Ubuntu 24.04
Всё выполняется от root или через sudo. Сначала зависимости — веб-сервер, PHP 8.3 (идёт в репозиториях Ubuntu 24.04 из коробки), MariaDB, RRDtool, SNMP-клиент, Composer:
apt update && apt -y upgrade
apt -y install acl curl composer fping git graphviz imagemagick \
mariadb-client mariadb-server mtr-tiny nginx-full nmap \
php8.3-cli php8.3-curl php8.3-fpm php8.3-gd php8.3-gmp \
php8.3-mbstring php8.3-mysql php8.3-snmp php8.3-xml php8.3-zip \
php-memcached python3-dotenv python3-pymysql python3-redis \
python3-setuptools python3-systemd python3-pip rrdtool snmp \
snmpd whois unzip
Создаём системного пользователя и забираем исходники LibreNMS из официального репозитория (готовых пакетов дистрибутив не выпускает — только git-клон с последующими git pull):
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
cd /opt
git clone https://github.com/librenms/librenms.git
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
Права на директории, которые LibreNMS должен уметь писать (RRD, логи, кэш):
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/
PHP-зависимости ставим от имени пользователя librenms, не от root:
su - librenms
./scripts/composer_wrapper.php install --no-dev
exit
Теперь база данных. В /etc/mysql/mariadb.conf.d/50-server.cnf в блок [mysqld] добавьте:
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
Перезапустите MariaDB и создайте базу с пользователем:
systemctl restart mariadb
mysql -u root
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'СВОЙ_СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit
Пароль сгенерируйте случайный (openssl rand -base64 24) и сохраните в менеджере паролей — он понадобится на этапе веб-мастера.
Настройка nginx, PHP-FPM и планировщика
Отдельный пул PHP-FPM под LibreNMS, чтобы не смешивать права с другими сайтами. Скопируйте /etc/php/8.3/fpm/pool.d/www.conf в librenms.conf, поменяйте в нём user/group на librenms и listen на /run/php-fpm-librenms.sock, затем перезапустите PHP-FPM.
Конфиг nginx (/etc/nginx/sites-available/librenms.conf):
server {
listen 80;
server_name nms.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/xml;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
ln -s /etc/nginx/sites-available/librenms.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx
HTTPS выпустите через certbot (certbot --nginx -d nms.example.com) — открывать панель мониторинга по HTTP наружу не стоит, там логины и данные о вашей инфраструктуре.
В /etc/php/8.3/fpm/php.ini (и в php-fpm-пуле) выставьте date.timezone = Europe/Moscow (или свой часовой пояс) — иначе графики и алерты будут путать время.
Опрос устройств и обслуживание RRD запускаются планировщиком systemd, а не классическим cron (в актуальных версиях LibreNMS это уже дефолт):
cp /opt/librenms/dist/librenms-scheduler.service /etc/systemd/system/
cp /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/
systemctl enable librenms-scheduler.timer
systemctl start librenms-scheduler.timer
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Проверить, что всё собрано корректно, до захода в веб-мастер:
su - librenms -c '/opt/librenms/validate.php'
Скрипт честно перечислит, чего не хватает — прав, расширений PHP, настроек БД — гораздо быстрее чем гадать по логам nginx.
Первый запуск и добавление устройств по SNMP
Откройте http://nms.example.com/install.php (или https://, если уже настроили certbot) — мастер сам проверит соединение с базой, попросит указать пользователя/пароль от MariaDB, которые вы создали выше, и накатит схему. По завершении мастер предложит создать первого администратора — либо сделайте это сразу из консоли, минуя веб-форму:
/opt/librenms/lnms user:add -r admin -a 1 admin
Дальше — SNMP на стороне опрашиваемых устройств. На линуксовых серверах это snmpd:
apt -y install snmpd
В /etc/snmp/snmpd.conf задайте community-строку (для SNMPv2) или, что безопаснее, настройте SNMPv3 с логином и шифрованием — v2 с открытой community-строкой в интернете лучше не оставлять вообще:
rocommunity ВАШ_СЛОЖНЫЙ_КЛЮЧ 10.0.0.0/24
и обязательно ограничьте доступ к порту 161/UDP firewall'ом только с IP сервера LibreNMS — про настройку UFW на VPS есть отдельный разбор: как установить и настроить UFW на VPS. На сетевом оборудовании (свичи, роутеры) SNMP включается в его собственном CLI — синтаксис отличается у каждого вендора, но идея та же: включить агент, задать community/пользователя, ограничить источники опроса ACL-ом.
Добавить устройство можно из веб-интерфейса (Devices → Add Device) или из консоли:
/opt/librenms/lnms device:add switch01.example.com -v2c -c ВАШ_СЛОЖНЫЙ_КЛЮЧ
Если SNMP настроен верно, устройство появится с интерфейсами, версией ОС и вендорскими метриками уже через первый опрос.
Автообнаружение сети и алерты
Главная фишка LibreNMS — автообнаружение (discovery). Планировщик запускает его сам, но можно и вручную:
su - librenms -c '/opt/librenms/discovery.php -h all'
По умолчанию LibreNMS ищет соседей через LLDP/CDP/FDP на уже добавленных устройствах и предлагает их к добавлению — так за один вечер из пары «якорных» коммутаторов вырастает карта всей сети без ручного ввода каждого IP. Топология рисуется автоматически на вкладке Maps, если LLDP отдаёт данные о соседстве корректно (не все домашние роутеры это умеют — тут ограничение самого протокола, а не LibreNMS).
Алертинг настраивается в Alerts → Alert Rules: есть готовые правила («устройство недоступно», «интерфейс упал», «диск заполнен», «высокая загрузка CPU»), можно писать свои на SQL-подобном языке правил LibreNMS. Доставка — Alerts → Alert Transports: e-mail, Telegram, Slack, Discord, webhook на свою систему. Для Telegram нужен бот-токен и chat_id — создаётся стандартно через @BotFather, дальше просто вставляется в форму транспорта.
Что стоит сделать сразу после установки:
- включить SNMPv3 вместо v2c там, где оборудование это поддерживает;
- настроить
fail2banили хотя бы жёсткий UFW-фильтр на 80/443 — панель мониторинга сама по себе привлекательная цель для сканеров (подробнее в статье про fail2ban на VPS); - поставить регулярный бэкап базы MariaDB и директории
rrd/— без них история графиков и все настройки устройств теряются безвозвратно при сбое диска.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Чем LibreNMS отличается от Zabbix?
Zabbix — универсальный мониторинг с активными агентами на серверах и гибкими триггерами, изначально заточен под серверную инфраструктуру. LibreNMS — прежде всего SNMP и сетевое оборудование с готовым автообнаружением топологии из коробки; на серверы его тоже можно натравить через SNMP-агент, но глубина метрик будет меньше, чем у нативного агента Zabbix.
Нужен ли отдельный VPS под LibreNMS, если у меня уже есть Zabbix?
Не обязательно параллельно держать оба на постоянку — но если сеть смешанная (много сетевого железа разных вендоров), LibreNMS часто проще настроить именно под неё за счёт готовых os-профилей и автообнаружения. Многие держат LibreNMS для сети и Zabbix/Netdata для серверов на разных VPS, чтобы не смешивать нагрузку.
Можно ли обойтись без RRDtool и хранить метрики в Prometheus?
LibreNMS умеет писать метрики параллельно в InfluxDB как экспериментальную опцию, но основное хранилище — RRD-файлы на диске, и полностью отказаться от них штатными средствами нельзя. Для полностью Prometheus-центричного стека разумнее смотреть в сторону связки Prometheus и Grafana с SNMP-экспортером.
Почему устройство не находится при автообнаружении?
Чаще всего три причины: SNMP-порт 161 закрыт файрволом со стороны устройства, community-строка не совпадает, либо LLDP/CDP выключен на самом устройстве — без него LibreNMS не увидит соседей, даже если SNMP отвечает.
Как обновлять LibreNMS?
Через git pull в /opt/librenms от пользователя librenms, затем ./scripts/composer_wrapper.php install --no-dev и php artisan migrate при необходимости — проект давно не выпускает версионные релизы, разработка идёт rolling-release прямо в git.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →