Гид по технологиям

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

7 min read Сетевой мониторинг Обновлено 27 Nov 2025
Установка OpenNMS на CentOS 8
Установка OpenNMS на CentOS 8

Обзор

Логотип и экран приветствия OpenNMS

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 по умолчанию.

План установки (мини-методология)

  1. Установить Java и утилиты.
  2. Добавить репозиторий OpenNMS и установить пакет.
  3. Инициализировать PostgreSQL и создать базы/пользователей.
  4. Настроить datasource для OpenNMS.
  5. Инициализировать OpenNMS и запустить сервис.
  6. Открыть порт в firewall и скорректировать SELinux.
  7. Первичный вход в веб-интерфейс и смена пароля администратора.

Установка 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

Главная страница OpenNMS — вход в систему

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

Страница входа OpenNMS

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

Дашборд OpenNMS

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

Смена пароля администратора

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

Добавление нового узла в мониторинг

Страница добавления узла

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

Информация об устройстве

Новый узел добавлен

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

Мониторинг узла в OpenNMS

Роли и чек-листы (кто что делает)

Администратор сервера:

  • Установить 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.

Модель зрелости внедрения (уровни)

  1. Пилот: одна зона/сеть, 10–50 устройств, ручная проверка алертов.
  2. Производство: несколько зон, интеграция с системой оповещений, бэкапы.
  3. Масштабирование: кластеризация OpenNMS, репликация и оптимизация БД, HA.

Рекомендации по масштабированию и TCO

  • Нагрузку OpenNMS увеличивают количество мониторинговых задач и хранение исторических данных. Планируйте рост диска и памяти БД.
  • В крупных средах рассматривайте выделение отдельной БД-серверной фермы и механизмы архивации метрик.

Проверочные сценарии (test cases)

  1. Установка: команда dnf install opennms завершается без ошибок.
  2. БД: psql подключается к opennms от пользователя opennms.
  3. Сервис: systemctl status opennms показывает active (running).
  4. UI: успешный вход в веб-интерфейс и смена пароля.
  5. Мониторинг: добавление узла и получение первого статуса (UP/DOWN).

Короткий план отката (rollback)

  1. Остановите сервис: systemctl stop opennms
  2. Восстановите конфигурации из резервной копии: /opt/opennms/etc/ и /var/lib/opennms
  3. Восстановите дамп PostgreSQL:
pg_restore -d opennms /path/to/backup.dump
  1. Перезапустите сервисы PostgreSQL и OpenNMS.

Однострочный глоссарий

  • SNMP: протокол для получения телеметрии от сетевых устройств.
  • JMX: мониторинг Java-приложений.
  • pg_hba.conf: файл политик доступа PostgreSQL.

Заключение

Вы успешно установили и запустили OpenNMS на CentOS 8. Дальше рекомендуется:

  • Перевести систему на HTTPS и интегрировать SSO для доступа.
  • Настроить регулярные бэкапы PostgreSQL.
  • Постепенно добавлять устройства и настроить политики оповещений.

Important: при переходе в продакшн замените примеры паролей на безопасные и настройте SELinux, не оставляйте его в permissive без планов по ужесточению.

Summary:

  • OpenNMS предоставляет мощный инструмент для централизованного мониторинга.
  • Стандартный путь установки включает Java, репозиторий opennms, PostgreSQL и базовую настройку.
  • Для производственных сред предусмотрите безопасность, резервное копирование и масштабирование.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как понять, что вас заблокировали в TikTok
соцсети

Как понять, что вас заблокировали в TikTok

Запуск Python в браузере — сайты и советы
Программирование

Запуск Python в браузере — сайты и советы

Техника Flowtime: гибкий таймер для фокуса
Продуктивность

Техника Flowtime: гибкий таймер для фокуса

Как изменить имя пользователя в TikTok — пошагово
соцсети

Как изменить имя пользователя в TikTok — пошагово

Как исправить opencl.dll не найден — Windows 11
Windows

Как исправить opencl.dll не найден — Windows 11

Стикеры в Signal: создать, загрузить, управлять
Руководство

Стикеры в Signal: создать, загрузить, управлять