Установка OpenNMS на сервере CentOS 8
Обзор

OpenNMS — свободная система мониторинга и управления сетью на Java. Подходит для управления тысячами устройств из единой консоли. Поддерживает автоматическое обнаружение узлов и сервисов, оповещения, топологии Layer 2/Layer 3, а также интеграцию через SNMP, JMX, WMI и другие протоколы.
Кому полезно: сисадминам, инженерам NOC, архитекторам сетей и тем, кто хочет централизовать мониторинг больших инфраструктур.
Ключевые возможности:
- Поддержка SNMP, JMX, WMI, NPRE, NSClient++ и XMP
- Событийно-ориентированная архитектура
- Мониторинг устройств и приложений
- Автообнаружение топологии и определение трассировки при отказах
- Конфигурируемые сервис-мониторы
- Поддержка сетевых топологий уровня 2 и 3
Требования и предварительная подготовка
- Сервер с CentOS 8 (64‑бит). Рекомендуется минимум 4 ГБ RAM для небольших инсталляций; для производства — 8–16 ГБ и выделенный диск БД.
- Доступ root или пользователь с sudo.
- Доступ в интернет для загрузки пакетов и репозитория OpenNMS.
Короткие определения:
- OpenNMS: платформа мониторинга сети на Java.
- PostgreSQL: СУБД, используемая OpenNMS по умолчанию.
План установки (мини-методология)
- Установить Java и утилиты.
- Добавить репозиторий OpenNMS и установить пакет.
- Инициализировать PostgreSQL и создать базы/пользователей.
- Настроить datasource для OpenNMS.
- Инициализировать OpenNMS и запустить сервис.
- Открыть порт в firewall и скорректировать SELinux.
- Первичный вход в веб-интерфейс и смена пароля администратора.
Установка Java и базовых пакетов
OpenNMS написан на Java, поэтому сначала установим JDK и утилиты:
dnf install java-11-openjdk-devel curl unzip -yПроверим версию Java:
java -versionОжидаемый пример вывода:
openjdk version "11.0.9" 2020-10-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.9+11-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11-LTS, mixed mode, sharing)Если версия Java отличается, убедитесь, что это Java 11 (рекомендуемая версия для данной инструкции).
Добавление репозитория OpenNMS и установка
Репозиторий OpenNMS отсутствует в стандартных репозиториях CentOS. Добавьте GPG-ключ:
rpm --import https://yum.opennms.org/OPENNMS-GPG-KEYЗатем установите файл репозитория:
dnf install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel8.noarch.rpmУстановите OpenNMS:
dnf install opennms -yПакет opennms подтянет PostgreSQL и другие зависимости.
Настройка PostgreSQL для OpenNMS
Инициализируйте базу данных PostgreSQL:
postgresql-setup --initdb --unit postgresqlОжидаемый вывод:
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.logЗапустите и включите сервис PostgreSQL:
systemctl enable postgresql
systemctl start postgresqlСоздайте пользователя и базу данных для OpenNMS. Переключитесь на пользователя postgres:
su - postgresСоздайте пользователя opennms и задайте пароль:
createuser -P opennmsСоздайте базу opennms и назначьте владельца:
createdb -O opennms opennmsДля системного пользователя postgres задайте пароль (пример):
psql -c "ALTER USER postgres WITH PASSWORD 'password';"Затем выйдите:
exitВажно: используйте сложные пароли в продакшене. Пароль в примерах замените на уникальный секрет.
Измените политику доступа в /var/lib/pgsql/data/pg_hba.conf. Откройте файл:
nano /var/lib/pgsql/data/pg_hba.confЗамените строки:
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 identна
host all all 127.0.0.1/32 md5
host all all ::1/128 md5Сохраните файл и перезапустите PostgreSQL:
systemctl restart postgresqlДалее определите datasource для OpenNMS в конфигурационном файле:
nano /opt/opennms/etc/opennms-datasources.xmlИзмените блоки так, чтобы они соответствовали вашей БД:
Замените пароли и имена пользователей на значения вашей среды.
Инициализация и запуск OpenNMS
Добавьте настройки Java для OpenNMS:
/opt/opennms/bin/runjava -sПример вывода:
runjava: Looking for an appropriate JVM...
runjava: Checking for an appropriate JVM in JAVA_HOME...
runjava: Skipping... JAVA_HOME not set.
runjava: Checking JVM in the PATH: "/etc/alternatives/java"...
runjava: Did not find an appropriate JVM in the PATH: "/etc/alternatives/java"
runjava: Searching for a good JVM...
runjava: Found a good JVM in "/usr/lib/jvm/java-11-openjdk-.../bin/java".
runjava: Value of "/usr/lib/jvm/java-11-openjdk-.../bin/java" stored in configuration file.Инициализируйте OpenNMS (процесс может занять несколько минут):
/opt/opennms/bin/install -disВключите и запустите сервис OpenNMS:
systemctl enable --now opennmsПроверка статуса:
systemctl status opennmsПример вывода (сокращённый):
? opennms.service - OpenNMS server
Loaded: loaded (/usr/lib/systemd/system/opennms.service; enabled)
Active: active (running) since ...
Main PID: 27928 (java)
Memory: 555.6MПроверьте, что OpenNMS слушает порт 8980:
ss -antpl | grep :8980Ожидаемый вывод:
LISTEN 0 50 *:8980 *:* users:(("java",pid=27928,fd=988))Настройка SELinux и firewall
По умолчанию SELinux включён в CentOS 8. Для быстрой установки можно временно перевести SELinux в режим permissive, отредактировав /etc/selinux/config:
nano /etc/selinux/configНайдите:
SELINUX=enforcingи замените на:
SELINUX=permissiveСохраните файл и перезагрузите систему. В продакшене предпочтительнее настроить необходимые правила SELinux, вместо полного ослабления.
Откройте порт 8980 в firewalld:
firewall-cmd --permanent --add-port=8980/tcp
firewall-cmd --reloadДоступ к веб-интерфейсу и первичная настройка
Перейдите в браузере по адресу:
http://your-server-ip:8980/opennms

Войдите под учётной записью admin / admin. При первом входе система предложит опцию отправки анонимной статистики — по желанию выберите Opt-in или Opt-out.

После входа вы увидите дашборд OpenNMS.

Измените пароль администратора: Admin → Change password.

Добавление узла (добавление хоста): нажмите + и заполните поля реквизита и параметры устройства.


Заполните данные устройства и нажмите Provision. После успешного добавления увидите страницу подтверждения.


Просмотреть список узлов: Info → Nodes.

Роли и чек-листы (кто что делает)
Администратор сервера:
- Установить JDK и системные пакеты.
- Настроить SELinux и firewall.
- Обеспечить бэкапы базы данных.
DBA / инженер БД:
- Инициализировать PostgreSQL, настроить pg_hba.conf.
- Проводить обслуживание БД и оптимизацию индексов.
Сетевой инженер / NOC:
- Настроить SNMP на устройствах.
- Добавить устройства в реквизиции OpenNMS.
- Настроить оповещения и eskalations.
Разработчик/интегратор:
- Настроить SNMP MIBs, JMX-интеграцию.
- Интегрировать события с внешними системами (SL, CMDB).
Критерии приёмки
- Веб-интерфейс доступен по http://IP:8980/opennms
- Сервис opennms в состоянии active (running)
- OpenNMS успешно подключен к базе PostgreSQL и завершил инициализацию
- Возможность добавить первый узел и получить его статус
- Порт 8980 открыт в firewall и доступен из управляющей сети
Тесты и критерии проверки (минимальные)
- Установка Java: java -version возвращает Java 11
- Проверка прослушивания порта: ss -antpl | grep :8980
- Лог инициализации OpenNMS: /var/log/opennms/ — отсутствие фатальных ошибок
- Алерты: генерация тестового события и получение уведомления на e-mail/систему оповещений
Типичные проблемы и план устранения (runbook)
Проблема: OpenNMS не стартует (служба в failed) Действия:
- Проверить логи: journalctl -u opennms и /var/log/opennms/
- Убедиться, что PostgreSQL запущен и доступен
- Проверить конфигурацию opennms-datasources.xml на корректность URL/паролей
Проблема: Не удаётся войти в веб-интерфейс
- Убедитесь, что порт 8980 открыт и firewall пропускает трафик
- Проверьте, что Java-процесс работает и слушает порт
- Проверить ошибки в /var/log/opennms/event.log
Проблема: Ошибки соединения с PostgreSQL
- Проверить pg_hba.conf и доступы по MD5
- Попробовать подключиться psql от имени пользователя opennms
Безопасность и соответствие (GDPR / приватность)
- Базовые меры: смените дефолтный пароль admin, используйте HTTPS (настраивается через обратный прокси типа Nginx или встроенные возможности сервера).
- Логи и события могут содержать IP и другую PII. Ограничьте доступ к веб-интерфейсу только из доверенных сетей и примените аутентификацию по SSO при необходимости.
- Резервное копирование БД: регулярные бэкапы и шифрование архивов.
Важно: в продуктивной среде не рекомендуется держать SELinux в режиме permissive — вместо этого настройте политики SELinux для OpenNMS.
Альтернативные подходы и инструменты
- Zabbix — популярный open-source мониторинг с активной поддержкой SNMP и шаблонов.
- Prometheus + Grafana — лучше подходит для метрик приложений и контейнерных сред, но требует экспортеров для сетевых устройств.
- Nagios/Icinga — классические решения для проверки доступности и оповещений.
Когда выбирать OpenNMS:
- Если нужно автоматическое обнаружение сети и топология для больших сетей.
- Если требуются продвинутые возможности событийной обработки и масштабируемость.
Когда OpenNMS может не подойти:
- Если нужна лёгкая метрика‑ориентированная система для микросервисов — лучше Prometheus.
- Если приоритет — простая настройка алертов и широкая экосистема плагинов — стоит сравнить с Zabbix.
Модель зрелости внедрения (уровни)
- Пилот: одна зона/сеть, 10–50 устройств, ручная проверка алертов.
- Производство: несколько зон, интеграция с системой оповещений, бэкапы.
- Масштабирование: кластеризация OpenNMS, репликация и оптимизация БД, HA.
Рекомендации по масштабированию и TCO
- Нагрузку OpenNMS увеличивают количество мониторинговых задач и хранение исторических данных. Планируйте рост диска и памяти БД.
- В крупных средах рассматривайте выделение отдельной БД-серверной фермы и механизмы архивации метрик.
Проверочные сценарии (test cases)
- Установка: команда dnf install opennms завершается без ошибок.
- БД: psql подключается к opennms от пользователя opennms.
- Сервис: systemctl status opennms показывает active (running).
- UI: успешный вход в веб-интерфейс и смена пароля.
- Мониторинг: добавление узла и получение первого статуса (UP/DOWN).
Короткий план отката (rollback)
- Остановите сервис: systemctl stop opennms
- Восстановите конфигурации из резервной копии: /opt/opennms/etc/ и /var/lib/opennms
- Восстановите дамп PostgreSQL:
pg_restore -d opennms /path/to/backup.dump- Перезапустите сервисы PostgreSQL и OpenNMS.
Однострочный глоссарий
- SNMP: протокол для получения телеметрии от сетевых устройств.
- JMX: мониторинг Java-приложений.
- pg_hba.conf: файл политик доступа PostgreSQL.
Заключение
Вы успешно установили и запустили OpenNMS на CentOS 8. Дальше рекомендуется:
- Перевести систему на HTTPS и интегрировать SSO для доступа.
- Настроить регулярные бэкапы PostgreSQL.
- Постепенно добавлять устройства и настроить политики оповещений.
Important: при переходе в продакшн замените примеры паролей на безопасные и настройте SELinux, не оставляйте его в permissive без планов по ужесточению.
Summary:
- OpenNMS предоставляет мощный инструмент для централизованного мониторинга.
- Стандартный путь установки включает Java, репозиторий opennms, PostgreSQL и базовую настройку.
- Для производственных сред предусмотрите безопасность, резервное копирование и масштабирование.
Похожие материалы
Как понять, что вас заблокировали в TikTok
Запуск Python в браузере — сайты и советы
Техника Flowtime: гибкий таймер для фокуса
Как изменить имя пользователя в TikTok — пошагово
Как исправить opencl.dll не найден — Windows 11