Установка OpenNMS с Docker на Ubuntu 20.04

OpenNMS — бесплатная, с открытым исходным кодом и корпоративного уровня система управления сетью. Она автоматически обнаруживает устройства в сети и мониторит сервисы. Основана на Java; для сбора данных использует SNMP и JMX.
- SNMP — протокол для удалённого опроса сетевых устройств (однострочное определение).
- JMX — Java Management Extensions, интерфейс мониторинга JVM и приложений.
OpenNMS можно установить на Windows, Linux/Unix, macOS и Solaris. В продукте есть функции Provisioning, мониторинг сервисов, управление событиями, построение графиков и измерение производительности. Существуют две редакции: Horizon (оперативный мониторинг) и Meridian (удлинённая поддержка и стабильность).
Что в этом руководстве
- Развёртывание OpenNMS Horizon с помощью Docker и docker-compose.
- Проверка работы сервисов и доступ к веб-интерфейсу.
- Рекомендации по безопасности, бэкапу и отладке.
- Альтернативные варианты развертывания и чек-листы для ролей.
Требования
- Сервер с Ubuntu 20.04.
- Доступ root или пользователь с sudo.
- Открытые порты (по умолчанию) 8980, 8101, 61616, 5432.
Подготовка системы
Обновите пакеты и установите зависимости:
apt-get update -y
apt-get upgrade -yУстановите дополнительные инструменты:
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -yУстановка Docker и Docker Compose
Рекомендуется брать последнюю версию Docker из официального репозитория Docker.
Добавьте GPG-ключ:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -Добавьте репозиторий Docker:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"Установите Docker и docker-compose:
apt-get update -y
apt-get install docker-ce docker-ce-cli containerd.io docker-compose -yПроверьте статус Docker:
systemctl status dockerПроверка версий:
docker -v
docker-compose -vРазвёртывание OpenNMS (docker-compose)
Создайте рабочую папку и файл docker-compose.yml:
mkdir opennms
cd opennms
nano docker-compose.ymlВставьте следующий compose (сохраните как docker-compose.yml):
version: '3'
volumes:
data-postgres: {}
data-opennms: {}
services:
database:
image: postgres:12
container_name: database
environment:
- TZ=Europe/Berlin
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- data-postgres:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 10s
timeout: 30s
retries: 3
horizon:
image: opennms/horizon:26.1.1
container_name: horizon
environment:
- TZ=Europe/Berlin
- POSTGRES_HOST=database
- POSTGRES_PORT=5432
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- OPENNMS_DBNAME=opennms
- OPENNMS_DBUSER=opennms
- OPENNMS_DBPASS=opennms
volumes:
- data-opennms:/opt/opennms/share/rrd
- ./overlay:/opt/opennms-overlay
command: ["-s"]
ports:
- "8980:8980/tcp"
- "8101:8101/tcp"
- "61616:61616/tcp"
healthcheck:
test: [ "CMD", "curl", "-f", "-I", "http://localhost:8980/opennms/login.jsp" ]
interval: 1m
timeout: 5s
retries: 3Запустите контейнеры в фоне:
docker-compose up -dПроверьте контейнеры:
docker ps -aВы должны увидеть контейнеры database (Postgres) и horizon (OpenNMS).
Доступ к веб-интерфейсу
OpenNMS слушает на порту 8980. Откройте в браузере:
Вы перейдёте на страницу входа.

По умолчанию используйте admin / admin. После входа откроется дашборд:

Чтобы добавить узел для мониторинга, нажмите плюс в правой части интерфейса и следуйте форме:

Заполните атрибуты узла:

Укажите параметры аутентификации (SNMP, SSH и т.д.):

После успешной провизии вы увидите подтверждение:

Статус узла и события доступны через Info → Nodes:

Базовая проверка после запуска
- docker ps — контейнеры работают.
- docker logs horizon — нет критических ошибок в логах.
- Веб-интерфейс доступен на порту 8980.
- Узел провизован и отображается в списке Nodes.
Рекомендации по безопасности
- Измените учётные данные admin сразу после первого входа.
- Ограничьте доступ к порту 8980 через брандмауэр (ufw/iptables) только для доверенных IP.
- Не храните пароли в явном виде в репозиториях. Используйте менеджер секретов или переменные окружения в защищённом хранилище.
- В продакшне рассмотрите TLS-терминацию (reverse proxy: Nginx/Traefik) перед OpenNMS.
Резервное копирование и восстановление
- Резервируйте том data-opennms (RRD, конфигурация) и data-postgres (данные БД).
- Для PostgreSQL можно использовать pg_dump/pg_basebackup.
- Планирование: ежедневные бэкапы метрик, еженедельные полные снимки, хранение вне кластера.
Отладка и частые проблемы
- Контейнер зависает в состоянии health: starting — подождите и проверьте логи:
docker logs horizon
docker logs database- Ошибки подключения к БД — проверьте переменные OPENNMS_DB* и сетевое имя контейнера database.
- Если веб-интерфейс не загружается, убедитесь, что порт 8980 открыт и healthcheck возвращает 200.
Альтернативы и варианты развёртывания
- Установка из пакета (DEB) на Ubuntu — если вы не хотите Docker.
- Kubernetes — запуск OpenNMS в k8s с PersistentVolume и StatefulSet для DB.
- Bare-metal/VM — классический развёртывание для высокопроизводительных сред.
Когда выбрать Docker: быстрое тестирование и изоляция. Когда не выбирать: если необходима тонкая интеграция с системными сервисами или требуется поддержка корпоративных расширений без контейнеризации.
План вывода в продакшн (мини-методология)
- Тестовая среда: разверните в Docker и прогоните провизию узлов.
- Тест нагрузки: имитируйте 50–200 узлов, проверьте потребление CPU/памяти.
- Финальная конфигурация: внешняя БД PostgreSQL, бэкап, TLS, мониторинг логов.
- Перенос в прод: cutover в окне с низким трафиком, проверка SLA.
Критерии приёмки
- Веб-интерфейс доступен по https/http и логин успешен.
- Узел успешно провизован и отображает статус и метрики.
- Логи OpenNMS и PostgreSQL не содержат ошибок критического уровня.
- Бэкап конфигурации и БД выполнен и восстановление проверено.
Чек-листы по ролям
Администратор:
- Установить Docker, проверить версии.
- Настроить бэкапы томов и БД.
- Настроить брандмауэр и TLS.
Оператор/инженер мониторинга:
- Провизовать тестовый узел.
- Настроить SNMP-параметры и шаблоны опроса.
- Настроить уведомления и тестовые алерты.
DevOps:
- Интегрировать сбор логов (ELK/EFK) и метрики контейнеров.
- Настроить CI/CD для overlay-конфигураций.
Security:
- Проверить права доступа в БД и систему учётных записей.
- Провести аудит доступов к интерфейсу.
Матрица рисков и смягчения
- Потеря данных БД — регулярные бэкапы, тест восстановления.
- Неавторизованный доступ — смена пароля admin, TLS, белый список IP.
- Перегрузка сервиса — мониторинг SLI/SLO, горизонтальное масштабирование или выделение отдельной БД.
Советы по производительности
- Для большого количества узлов вынесите PostgreSQL на отдельный хост.
- Рассмотрите использование SSD для RRD и БД.
- Очистка старых RRD при необходимости уменьшит дисковую нагрузку.
Совместимость и обновления
- Образы opennms/horizon обновляются регулярно; проверяйте release notes перед апгрейдом.
- Перед обновлением тестируйте на копии данных.
- Версии PostgreSQL должны поддерживаться образом OpenNMS (в compose мы использовали postgres:12).
Короткое объявление для команды (100–200 слов)
Развёрнута тестовая среда OpenNMS Horizon в Docker на Ubuntu 20.04. Используется docker-compose с Postgres 12 и томами для данных. Веб-интерфейс доступен на порту 8980, учётные данные admin/admin (смените пароль). Для продакшна рекомендую вынести PostgreSQL на отдельный сервер, настроить TLS через reverse proxy и организовать регулярные бэкапы. Пожалуйста, проверьте провизию тестового узла и уведомления, сообщите об ошибках.
Заключение
Вы успешно установили OpenNMS в Docker на Ubuntu 20.04. Дальше: настройте шаблоны мониторинга, уведомления и политики ретенции метрик. Если нужна помощь с интеграцией в k8s, переносом БД или автоматизацией overlay-конфигураций — задайте вопросы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента