LibreNMS — открытая система мониторинга сети на PHP и SNMP. В отличие от решений, где каждое устройство добавляют вручную и описывают шаблонами, LibreNMS умеет находить соседей по LLDP, CDP, ARP, OSPF и BGP, сама определяет тип оборудования и включает нужные сенсоры. Разберём установку, первичную настройку SNMP, автообнаружение, опрос и диагностику без экзотики.
Что даёт LibreNMS
Система собирает метрики по SNMP: загрузку интерфейсов, ошибки, температуру, питание, состояние дисков и процессы. Данные пишутся в RRD-файлы, а веб-интерфейс строит графики, карту сети и отчёты. Автообнаружение работает в двух направлениях: по указанным подсетям и по связям между уже известными устройствами. Лишние модули опроса можно отключить, чтобы не перегружать устройства.
Установка через Docker
Для первого знакомства проще официальный compose-пример: он поднимает веб-интерфейс, MariaDB, Redis и планировщик.
git clone https://github.com/librenms/docker.git
cd docker/examples/compose
cp .env.example .env
docker compose up -d
После запуска откройте веб-интерфейс, создайте администратора и сразу проверьте окружение командой docker compose exec librenms ./validate.php. Она показывает права на каталоги, версии PHP, наличие обязательных утилит и состояние базы. Красные строки лучше исправить до добавления устройств, иначе часть модулей молча не заработает.
SNMP на управляемых устройствах
LibreNMS не может опрашивать устройство, на котором не включён SNMP. На Linux-сервере достаточно пакета snmpd и отдельного сообщества только для мониторинга. Не используйте public и не открывайте порт 161 в интернет.
sudo apt install snmpd
sudo tee /etc/snmp/snmpd.conf >/dev/null <<'EOF'
agentAddress udp:161
rocommunity ZamEniteNaDlinnyyParol 192.168.10.0/24
sysLocation Server room
sysContact admin@example.org
EOF
sudo systemctl restart snmpd
Проверка выполняется с хоста LibreNMS, а не с самого устройства:
snmpwalk -v2c -c ZamEniteNaDlinnyyParol 192.168.10.1 sysDescr.0
snmpwalk -v3 -l authPriv -u monitor -a SHA -A 'auth-pass' -x AES -X 'priv-pass' 192.168.10.1 sysDescr.0
Если ответа нет, проверьте ACL в snmpd.conf, файрвол и то, что запрос идёт с разрешённого адреса. Для SNMPv3 на устройстве создаётся отдельный пользователь с правами только на чтение: createUser monitor SHA "auth-pass" AES "priv-pass" и rouser monitor authPriv. v3 предпочтительнее: пароль не передаётся открытым текстом, а доступ можно ограничить по уровню безопасности.
Добавление устройств и автообнаружение
Первое устройство удобно добавить из веб-интерфейса или командой lnms device:add --v2c -c ZamEniteNaDlinnyyParol 192.168.10.1. После этого запустите обнаружение: оно определит модель, интерфейсы, вентиляторы и сенсоры.
docker compose exec librenms lnms device:add --v2c -c ZamEniteNaDlinnyyParol 192.168.10.1
docker compose exec librenms ./discovery.php -h new
docker compose exec librenms ./poller.php -h all
Для автоматического поиска задаются подсети и протоколы обнаружения. XDP, OSPF и BGP включены по умолчанию, ARP — нет; команды ниже показывают настройку и выполняются из каталога установки:
lnms config:set nets.+ '192.168.10.0/24'
lnms config:set autodiscovery.xdp true
lnms config:set autodiscovery.ospf true
lnms config:set autodiscovery.bgp true
lnms config:set discovery_modules.discovery-arp true
Не включайте сразу широкие диапазоны вроде 10.0.0.0/8: первый проход создаст тысячи заданий и надолго займёт базу. Начните с одной подсети, убедитесь, что устройства определяются корректно, и только потом расширяйте список.
Опрос, cron и производительность
В классической установке опрос запускается из cron. Интервал в пять минут — стандарт: более частый не даёт пользы и нагружает устройства. Обнаружение достаточно запускать раз в несколько часов.
*/5 * * * * librenms /opt/librenms/poller.php -h all >> /dev/null 2>&1
33 */6 * * * librenms /opt/librenms/discovery.php -h all >> /dev/null 2>&1
15 0 * * * librenms /opt/librenms/daily.sh >> /dev/null 2>&1
Когда устройств становится много, один процесс не успевает за пять минут. Тогда включают dispatcher и увеличивают число воркеров через lnms config:set service_poller_workers 24 и lnms config:set service_discovery_workers 8. Значения подбираются по числу ядер и размеру базы: лишние процессы создают нагрузку на MariaDB. Следите за временем выполнения опроса в интерфейсе.
Оповещения и журналы
Правила алертов задаются в разделе Alerts: условие по метрике, задержка срабатывания, повтор и восстановление. Транспорты — почта, Telegram, Slack, webhook. Начните с трёх правил: устройство недоступно, интерфейс упал, диск заполнен больше порога. Остальное добавляйте по мере необходимости, иначе уведомления превращаются в шум.
Для сбора syslog включите lnms config:set enable_syslog true и настройте отправку с устройств. Не храните журналы бесконечно: база растёт, а старые записи всё равно не нужны.
Диагностика
Если устройство есть в списке, но графики пустые, запустите опрос с отладкой. Он показывает, на каком OID или модуле возникает ошибка.
docker compose exec librenms ./validate.php
docker compose exec librenms ./poller.php -h 192.168.10.1 -d
docker compose exec librenms ./discovery.php -h 192.168.10.1 -d
docker compose exec librenms tail -n 100 logs/librenms.log
Типичные причины: неверное сообщество, ACL на устройстве, таймаут SNMP, перегруженный poller и отключённый модуль. Если не работают только отдельные сенсоры, проверьте, поддерживает ли их модель: универсальный шаблон не знает всех приватных OID.
Безопасность и эксплуатация
- Используйте SNMPv3 или длинное уникальное сообщество и ACL по подсети.
- Не публикуйте веб-интерфейс в интернет; ставьте reverse proxy с HTTPS и ограничением по адресам.
- Включите двухфакторную аутентификацию для администраторов.
- Делайте резервные копии базы и каталога RRD — без них история теряется.
- Обновляйте образ и проверяйте
validate.phpпосле каждого обновления.
Чек-лист
- Поднят compose-стек,
validate.phpбез критических ошибок. - SNMP включён, проверен
snmpwalkс хоста мониторинга. - Добавлено одно устройство и запущены discovery и poller.
- Настроены cron или dispatcher, опрос укладывается в пять минут.
- Есть три базовых алерта и проверен тестовый транспорт.
- Настроены бэкап базы и ротация журналов.
Итог
LibreNMS хорош там, где нужно быстро получить обзор сети без покупки лицензий и ручного описания каждого порта. Связка «SNMP на устройствах → добавление → автообнаружение → пятиминутный опрос» работает предсказуемо, а встроенная диагностика помогает найти проблему без чтения исходников. Главное — не включать широкое автообнаружение вслепую и не экономить на SNMPv3. Тогда система остаётся удобной и не превращается в источник ложных тревог.