Как установить и настроить Observium на VPS
Когда в сети десяток коммутаторов и роутеров разных вендоров, ручной обход веб-морд каждого устройства быстро превращается в рутину. Observium снимает эту боль: указываете один IP, дальше он сам находит соседей по SNMP и LLDP/CDP, рисует графики трафика и загрузки и хранит историю за месяцы. Ниже — установка на чистый VPS с нуля, разница между Community и Professional изданиями и первые шаги после запуска.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Observium и зачем он нужен
Observium — система сетевого мониторинга на PHP с хранением метрик в RRD-файлах и веб-интерфейсом для просмотра графиков. По архитектуре она близка к Cacti и MRTG, но с куда более развитым автообнаружением: SNMP + LLDP/CDP/FDP + ARP-таблицы + маршруты OSPF/BGP позволяют системе самой строить карту сети, а не требовать ручного добавления каждого хоста.
Проект существует в двух изданиях, и это первое, что стоит понять перед установкой:
- Community — бесплатная версия с открытым исходным кодом, распространяется тарболом с сайта observium.org. Обновляется реже, чем Professional, часть свежих os-профилей и функций попадает в неё с задержкой или не попадает вовсе.
- Professional (Enterprise) — платная подписка с ежедневными обновлениями через apt/yum-репозиторий, более широким списком поддерживаемых вендоров, распределёнными пуллерами для больших сетей и коммерческой поддержкой.
Именно из-за темпа обновлений Community-издания в 2013 году появился форк LibreNMS — он развивается полностью открыто и годится, если вам принципиально важны бесплатные обновления без задержек. Если же для вас нормально либо реже обновляться на бесплатной ветке, либо платить за Pro ради актуальности и поддержки — Observium остаётся рабочим и проверенным временем выбором. Сравнение с более активно развивающимся форком есть в статье про установку LibreNMS на VPS.
Observium уместен там же, где и LibreNMS: сетевое оборудование разных вендоров (Cisco, MikroTik, Juniper, Ubiquiti, HP/Aruba и десятки других — список os-профилей на сайте проекта), серверы с SNMP-агентом, ИБП и другое железо, отдающее метрики по SNMP. Если у вас только серверы Linux без сетевого оборудования — присмотритесь к Zabbix, он глубже копает по нативным агентам.
Требования к серверу
Как и любой RRD-инструмент, Observium чувствителен прежде всего к дисковой подсистеме — каждое опрашиваемое устройство и каждый его порт создают отдельные RRD-файлы с частой мелкой записью.
| Параметр | Минимум (до ~20 устройств) | Комфортно (50-100+ устройств) |
|---|---|---|
| CPU | 1-2 vCPU | 2-4 vCPU |
| RAM | 1-2 ГБ | 4 ГБ и выше |
| Диск | 15-20 ГБ SSD | 40+ ГБ NVMe |
| ОС | Ubuntu 24.04 LTS / Debian 12 | Ubuntu 24.04 LTS / Debian 12 |
На медленном HDD-хостинге поллер начнёт отставать от расписания уже на паре десятков устройств с большим числом портов — RRDtool делает много синхронных операций записи. Для стабильной работы под растущий парк оборудования лучше сразу брать VPS с NVMe. Понадобится и домен или поддомен вида nms.example.com под веб-панель.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка зависимостей и подготовка окружения
Все команды — от root или через sudo, на чистом Ubuntu 24.04. Ставим веб-сервер, PHP 8.3 из репозитория дистрибутива, MariaDB, RRDtool, SNMP-клиент и утилиты, которыми пользуется поллер:
apt update && apt -y upgrade
apt -y install apache2 libapache2-mod-php8.3 php8.3-cli php8.3-mysql \
php8.3-gd php8.3-snmp php8.3-curl php8.3-zip php8.3-mbstring \
php8.3-xml mariadb-server mariadb-client snmp snmpd fping \
rrdtool subversion whois mtr-tiny nmap ipmitool graphviz imagemagick
Создаём каталог, куда ляжет приложение, и системного пользователя:
mkdir -p /opt/observium
Дальше — выбор издания.
Community: скачиваем тарбол напрямую с сайта проекта и разворачиваем его в /opt/observium:
cd /opt
wget https://www.observium.org/observium-community-latest.tar.gz
tar zxvf observium-community-latest.tar.gz
Professional: подписка на сайте observium.org даёт логин/пароль для приватного apt-репозитория — его подключают согласно инструкции из личного кабинета после оплаты, дальше пакет ставится и обновляется штатным apt update && apt upgrade, без ручного скачивания тарболов при каждом релизе.
Права на директории, куда Observium будет писать RRD, логи и кэш:
chown -R www-data:www-data /opt/observium/rrd
chmod 771 /opt/observium/rrd
База данных и конфигурация приложения
Создаём базу и пользователя MariaDB:
mysql -u root
CREATE DATABASE observium CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'observium'@'localhost' IDENTIFIED BY 'СВОЙ_СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost';
FLUSH PRIVILEGES;
exit
Пароль сгенерируйте случайно (openssl rand -base64 24) и сохраните в менеджере паролей — он пойдёт в конфиг ниже. Копируем шаблон конфигурации и правим ключевые поля:
cd /opt/observium
cp config.php.default config.php
В config.php задайте:
$config['db_extension'] = 'mysqli';
$config['db_host'] = 'localhost';
$config['db_user'] = 'observium';
$config['db_pass'] = 'СВОЙ_СЛОЖНЫЙ_ПАРОЛЬ';
$config['db_name'] = 'observium';
$config['own_hostname'] = 'nms.example.com';
Накатываем схему базы и файлы MIB (без них SNMP-ответы от части вендорского оборудования будут расшифровываться как голые OID вместо человекочитаемых имён):
php includes/update/update.php
./discovery.php -u
Веб-сервер и первый пользователь
Виртуальный хост Apache (/etc/apache2/sites-available/observium.conf):
<VirtualHost *:80>
ServerName nms.example.com
DocumentRoot /opt/observium/html/
<Directory "/opt/observium/html/">
AllowOverride All
Options FollowSymLinks
DirectoryIndex index.php
Require all granted
</Directory>
</VirtualHost>
a2enmod rewrite
a2ensite observium
systemctl reload apache2
HTTPS обязателен — панель мониторинга видит вашу инфраструктуру целиком, оставлять её на голом HTTP наружу не стоит:
apt -y install certbot python3-certbot-apache
certbot --apache -d nms.example.com
Создаём первого администратора из консоли, минуя веб-форму:
cd /opt/observium
./adduser.php admin ПАРОЛЬ 10
Последний параметр 10 — уровень доступа администратора. После входа на https://nms.example.com можно сразу переходить к добавлению устройств.
SNMP на устройствах и добавление в опрос
На стороне опрашиваемых линукс-серверов ставим snmpd, если ещё не стоит:
apt -y install snmpd
В /etc/snmp/snmpd.conf задайте community-строку для SNMPv2 (проще, но менее безопасно) или настройте SNMPv3 с логином, паролем и шифрованием — это правильный выбор для всего, что торчит наружу:
rocommunity ВАШ_СЛОЖНЫЙ_КЛЮЧ 10.0.0.0/24
Порт 161/UDP обязательно закройте файрволом от всех, кроме IP сервера Observium — как настроить UFW под такие правила, разобрано в статье про установку и настройку UFW на VPS. На сетевом оборудовании SNMP-агент включается в его собственном CLI: синтаксис у Cisco, MikroTik и Juniper разный, но суть одна — включить агент, задать community или SNMPv3-пользователя, ограничить источники опроса ACL-ом на самом устройстве.
Добавить хост можно из консоли:
cd /opt/observium
./addhost.php switch01.example.com ВАШ_СЛОЖНЫЙ_КЛЮЧ v2c
или через веб-интерфейс: Devices → Add Device. Если SNMP отвечает, устройство сразу попадёт в очередь на опрос, а через первый цикл поллера появятся интерфейсы, версия прошивки и доступные вендорские метрики.
Дискавери, поллинг и алерты по расписанию
В отличие от некоторых конкурентов с единым интегрированным планировщиком, в Observium дискавери и опрос — два раздельных скрипта, которые запускаются через cron. Типичная запись в /etc/cron.d/observium:
33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1
*/5 * * * * root /opt/observium/poller-wrapper.py >> /dev/null 2>&1
01 0 * * * root /opt/observium/discovery.php -u >> /dev/null 2>&1
discovery.php -h all каждые шесть часов ищет новых соседей по LLDP/CDP/FDP и обновляет свойства уже известных устройств; poller-wrapper.py каждые пять минут опрашивает метрики параллельно по нескольким процессам (обычная разовая poller.php для одного хоста тоже доступна, но wrapper эффективнее на десятках устройств); ночной discovery.php -u обновляет справочники и MIB.
Алертинг настраивается в разделе Alerts веб-интерфейса: готовые шаблоны на недоступность устройства, падение интерфейса, заполнение диска, высокую загрузку CPU — и свои правила поверх собранных метрик. Доставка — по e-mail и через сторонние транспорты (Slack, Telegram, PagerDuty и другие интеграции, доступность части из них зависит от издания). Что стоит сделать сразу после установки:
- перевести устройства с SNMPv2 на SNMPv3 там, где оборудование это позволяет;
- закрыть веб-панель фильтром fail2ban или жёстким UFW-правилом на 80/443 — она такая же привлекательная цель для сканеров, как любая другая admin-панель (пошагово — в статье про fail2ban на VPS);
- настроить регулярный бэкап базы MariaDB и директории
rrd/— без них при сбое диска пропадает вся история графиков и настройки устройств.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
В чём практическая разница между Community и Professional изданиями?
Функционально ядро одно и то же — SNMP-опрос, автообнаружение, графики. Разница в скорости обновлений (Pro — ежедневный apt-репозиторий, Community — редкие тарболы), полноте списка os-профилей под новое оборудование и наличии распределённых пуллеров для больших сетей в Pro. Для небольшой сети из пары десятков устройств Community обычно достаточно.
Чем Observium отличается от LibreNMS?
LibreNMS — форк Observium 2013 года, полностью открытый и развивающийся публично на GitHub, без платного издания. Observium старше, у него дольше история и стабильнее ядро, но бесплатная Community-ветка обновляется реже. Выбор часто сводится к тому, важна ли вам скорость получения новых os-профилей бесплатно (тогда LibreNMS) или устраивает более редкий, но проверенный цикл обновлений (тогда Observium Community, либо платный Pro за актуальность).
Нужен ли Observium, если сеть маленькая — пара роутеров и десяток серверов?
Для такого масштаба разница между инструментами почти не ощущается, и Observium ставится за 30-40 минут. Если сети совсем нет и мониторить нужно только сами серверы, проще будет Zabbix с его нативными агентами — SNMP-опрос для голых линукс-хостов даёт меньше глубины метрик, чем агентский мониторинг.
Почему устройство добавилось, но графиков нет?
Чаще всего это значит, что SNMP отвечает на базовые OID (поэтому addhost.php прошёл успешно), но полный опрос ещё не выполнялся — графики появляются после первого прохода poller-wrapper.py по расписанию, обычно в течение первых пяти-десяти минут. Если графиков нет дольше часа — проверьте вывод ./poller.php -h switch01.example.com -d вручную, он покажет, на каком модуле опрос падает.
Можно ли обойтись без RRDtool?
Штатно нет — RRD-файлы на диске остаются основным хранилищем метрик, полностью перейти на Prometheus или InfluxDB через конфигурацию нельзя. Если вам нужен именно Prometheus-центричный стек, логичнее сразу смотреть в сторону связки Grafana и Prometheus с SNMP-экспортером вместо Observium.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →