OpenNMS 설치 · 6 min read · Oct 10, 2025

Alma Linux 8에 OpenNMS 설치 및 구성하기

OpenNMS는 Java로 작성된 무료 오픈 소스 네트워크 모니터링 및 관리 플랫폼입니다. 이는 자가 호스팅되며 사용자, 개발자 및 OpenNMS 그룹의 커뮤니티에 의해 개발됩니다. OpenNMS는 성능, 트래픽 모니터링, 프로비저닝, 서비스 모니터링, 이벤트 관리, 차트 지원 등을 포함하여 로컬 및 원격 네트워크의 모든 것을 모니터링할 수 있게 해줍니다. OpenNMS는 SNPM 및 JMX를 사용하여 원격 호스트의 정보를 수집합니다.

이 게시물에서는 Alma Linux 8에서 Nginx와 함께 OpenNMS를 설치하는 방법을 보여줍니다.

필수 조건

  • Alma Linux 8에서 실행되는 서버.
  • 서버 IP를 가리키는 유효한 도메인 이름.
  • 서버에 구성된 루트 비밀번호.

Java JDK 설치

OpenNMS는 Java 기반 애플리케이션입니다. 따라서 Java JDK가 서버에 설치되어 있어야 합니다. 다음 명령어를 실행하여 설치할 수 있습니다:

dnf install java-11-openjdk -y

Java가 설치되면 아래 명령어를 사용하여 Java 설치를 확인할 수 있습니다:

java --version

다음과 같은 출력이 표시됩니다:

openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

Alma Linux 8에 OpenNMS 설치

기본적으로 OpenNMS는 Alma Linux 기본 저장소에 포함되어 있지 않습니다. 따라서 OpenNMS 공식 저장소를 시스템에 추가해야 합니다.

다음 명령어를 실행하여 OpenNMS 저장소와 GPG 키를 추가할 수 있습니다:

dnf install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel8.noarch.rpm  
rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY

다음으로, 다음 명령어를 실행하여 OpenNMS를 설치합니다:

dnf install opennms -y

이 명령은 PostgreSQL 서버도 서버에 설치합니다.

다음으로, OpenNMS 디렉토리로 이동하고 다음 명령어로 PostgreSQL 데이터베이스를 초기화합니다:

cd /opt/opennms  
postgresql-setup initdb

마지막으로, 다음 명령어로 PostgreSQL 서비스를 시작하고 활성화합니다:

systemctl start postgresql  
systemctl enable postgresql

다음 명령어로 PostgreSQL의 상태를 확인할 수 있습니다:

systemctl status postgresql

다음과 같은 출력이 표시됩니다:

? postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 13:34:47 UTC; 5s ago
  Process: 7305 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
 Main PID: 7307 (postmaster)
    Tasks: 8 (limit: 11411)
   Memory: 15.9M
   CGroup: /system.slice/postgresql.service
           ??7307 /usr/bin/postmaster -D /var/lib/pgsql/data
           ??7309 postgres: logger process   
           ??7311 postgres: checkpointer process   
           ??7312 postgres: writer process   
           ??7313 postgres: wal writer process   
           ??7314 postgres: autovacuum launcher process   
           ??7315 postgres: stats collector process   
           ??7316 postgres: bgworker: logical replication launcher   

Jan 15 13:34:47 almalinux8 systemd[1]: Starting PostgreSQL database server...
Jan 15 13:34:47 almalinux8 postmaster[7307]: 2022-01-15 13:34:47.618 UTC [7307] LOG:  listening on IPv6 address "::1", port 5432
Jan 15 13:34:47 almalinux8 postmaster[7307]: 2022-01-15 13:34:47.618 UTC [7307] LOG:  listening on IPv4 address "127.0.0.1", port 5432

OpenNMS를 위한 PostgreSQL 구성

다음으로, OpenNMS를 위한 데이터베이스와 사용자를 생성해야 합니다.

먼저, 다음 명령어로 PostgreSQL에 로그인합니다:

su - postgres -c "psql -U postgres"

다음으로, 다음 명령어로 Postgres 비밀번호를 변경합니다:

alter user postgres with password 'mypassword';

다음으로, 다음 명령어로 OpenNMS를 위한 데이터베이스와 사용자를 생성합니다:

createuser -P opennms  
createdb -O opennms opennms

다음으로, 다음 명령어로 PostgreSQL 셸에서 나갑니다:

\q

다음으로, 다음 명령어로 PostgreSQL 구성 파일을 편집합니다:

nano /var/lib/pgsql/data/pg_hba.conf

다음 줄을 찾습니다:

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

그리고, 다음 줄로 교체합니다:

host           all            all           127.0.0.1/32           md5
host           all            all           ::1/128                   md5

마지막으로, 다음 명령어로 PostgreSQL 서비스를 다시 로드하여 구성 변경 사항을 적용합니다:

systemctl reload postgresql

OpenNMS 구성

다음으로, OpenNMS 데이터 소스 구성 파일을 편집하고 데이터베이스를 정의해야 합니다:

nano /opt/opennms/etc/opennms-datasources.xml

다음 줄을 데이터베이스 자격 증명에 맞게 변경합니다:




파일을 저장하고 닫은 후, 다음 명령어를 실행하여 Java 경로를 감지합니다:

/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-11.0.13.0.8-4.el8_5.x86_64/bin/java".
runjava: Value of "/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java" stored in configuration file.

다음으로, 다음 명령어를 실행하여 데이터베이스를 초기화하고 시스템 라이브러리를 감지합니다:

/opt/opennms/bin/install -dis

다음과 같은 출력이 표시됩니다:

- Running pre-execution phase
  Creating backup of /opt/opennms/etc/service-configuration.xml
    Zipping /opt/opennms/etc/service-configuration.xml
- Running execution phase
  Current configuration: 32 services.
  A service entry named 'OpenNMS:Name=PerspectivePoller' already exists.
  Final configuration: 32 services.
- Saving the execution state
- Running post-execution phase
  Removing backup /opt/opennms/etc/service-configuration.xml.zip

Finished in 0 seconds
Upgrade completed successfully!

마지막으로, 다음 명령어로 OpenNMS 서비스를 시작하고 활성화합니다:

systemctl start opennms  
systemctl enable opennms

다음 명령어로 OpenNMS의 상태를 확인할 수 있습니다:

systemctl status opennms

다음과 같은 출력이 표시됩니다:

? opennms.service - OpenNMS server
   Loaded: loaded (/usr/lib/systemd/system/opennms.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 13:39:33 UTC; 6s ago
  Process: 8638 ExecStart=/etc/init.d/opennms -s start (code=exited, status=0/SUCCESS)
 Main PID: 9722 (java)
    Tasks: 36 (limit: 11411)
   Memory: 181.2M
   CGroup: /system.slice/opennms.service
           ??9721 bash /etc/init.d/opennms -s start
           ??9722 /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,ja>

Jan 15 13:39:22 almalinux8 systemd[1]: Starting OpenNMS server...
Jan 15 13:39:32 almalinux8 systemd[1]: opennms.service: Can't open PID file /opt/opennms/logs/opennms.pid (yet?) after start: No such file or>
Jan 15 13:39:33 almalinux8 systemd[1]: opennms.service: Supervising process 9722 which is not our child. We'll most likely not notice when it>
Jan 15 13:39:33 almalinux8 systemd[1]: Started OpenNMS server.

이 시점에서 OpenNMS가 시작되었으며 포트 8980에서 수신 대기 중입니다. 다음 명령어로 확인할 수 있습니다:

ss -antpl | grep 8980

다음과 같은 출력이 표시됩니다:

LISTEN 0      50                      *:8980             *:*    users:(("java",pid=9722,fd=1031))   

작업이 끝나면 다음 단계로 진행할 수 있습니다.

OpenNMS를 위한 리버스 프록시로 Nginx 구성

다음으로, Nginx를 설치하고 OpenNMS를 위한 리버스 프록시로 구성해야 합니다. 이를 위해, 다음 명령어로 Nginx 서버를 설치합니다:

dnf install nginx -y

Nginx가 설치되면, Nginx 가상 호스트 구성 파일을 생성합니다:

nano /etc/nginx/conf.d/opennms.conf

다음 줄을 추가합니다:

upstream opennms {
  server 127.0.0.1:8980;
}

server {
    listen 80;
    server_name opennms.example.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        proxy_pass http://opennms/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

파일을 저장하고 닫은 후, 다음 명령어로 Nginx 구성을 확인합니다:

ginx -t

다음과 같은 출력이 표시됩니다:

ginx: the configuration file /etc/nginx/nginx.conf syntax is ok
ginx: configuration file /etc/nginx/nginx.conf test is successful

다음으로, 시스템 재부팅 시 Nginx 서비스가 시작되도록 활성화합니다:

systemctl start nginx  
systemctl enable nginx

다음 명령어로 Nginx의 상태를 확인할 수 있습니다:

systemctl status nginx

다음과 같은 출력이 표시됩니다:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 13:44:05 UTC; 6s ago
  Process: 13489 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 13488 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 13486 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 13491 (nginx)
    Tasks: 2 (limit: 11411)
   Memory: 3.7M
   CGroup: /system.slice/nginx.service
           ??13491 nginx: master process /usr/sbin/nginx
           ??13492 nginx: worker process

Jan 15 13:44:05 almalinux8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 15 13:44:05 almalinux8 nginx[13488]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 15 13:44:05 almalinux8 nginx[13488]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jan 15 13:44:05 almalinux8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jan 15 13:44:05 almalinux8 systemd[1]: Started The nginx HTTP and reverse proxy server.

방화벽 구성

다음으로, 방화벽을 통해 포트 80을 허용해야 합니다. 다음 명령어를 실행하여 허용할 수 있습니다:

firebase-cmd --add-service=http --permanent

다음으로, 변경 사항을 적용하기 위해 방화벽을 다시 로드합니다:

firebase-cmd --reload

작업이 끝나면 다음 단계로 진행할 수 있습니다.

OpenNMS 웹 인터페이스에 접근

이제 웹 브라우저를 열고 URL http://opennms.example.com을 사용하여 OpenNMS 웹 인터페이스에 접근합니다. OpenNMS 로그인 화면이 표시됩니다:

기본 관리자 사용자 이름과 비밀번호를 admin/admin으로 입력하고 로그인 버튼을 클릭합니다. 다음 화면에서 OpenNMS 대시보드를 확인할 수 있습니다:

이제 admin => 비밀번호 변경 버튼을 클릭하여 기본 비밀번호를 변경합니다:

기본 비밀번호를 변경하고 제출 버튼을 클릭합니다. 다음 화면이 표시됩니다:

결론

축하합니다! Alma Linux 8에서 Nginx와 함께 OpenNMS를 성공적으로 설치했습니다. 이제 OpenNMS 대시보드에서 원격 호스트를 추가하고 중앙 위치에서 모니터링을 시작할 수 있습니다. 질문이 있으면 언제든지 문의해 주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.