MAATRIX / Блог / Как установить и настроить LibreNMS на VPS

Как установить и настроить LibreNMS на VPS

MAATRIX

Если у вас больше пяти устройств в сети — коммутаторы, роутеры, серверы, точки доступа — вручную проверять их состояние уже неудобно. 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+ устройств)
CPU2 vCPU4 vCPU
RAM2 ГБ4-8 ГБ
Диск20 ГБ SSD60+ ГБ NVMe (RRD любит быстрый I/O)
ОСUbuntu 24.04 LTSUbuntu 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 ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →