OpenNMS auf Alma Linux 8 installieren und konfigurieren

OpenNMS ist eine freie und quelloffene Netzwerküberwachungs- und -verwaltungsplattform, die in Java geschrieben wurde. Sie wird selbst gehostet und von einer Gemeinschaft von Nutzern, Entwicklern und der OpenNMS Group entwickelt. Mit OpenNMS kannst du alles in deinen lokalen und entfernten Netzwerken überwachen, z. B. die Leistung, den Datenverkehr, die Bereitstellung, die Überwachung von Diensten, die Verwaltung von Ereignissen, die Unterstützung von Diagrammen und vieles mehr. OpenNMS nutzt SNPM und JMX, um die Informationen von entfernten Hosts zu sammeln.

Dieser Beitrag zeigt dir, wie du OpenNMS mit Nginx auf Alma Linux 8 installierst.

Voraussetzungen

  • Ein Server, auf dem Alma Linux 8 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Java JDK installieren

OpenNMS ist eine javabasierte Anwendung. Daher muss Java JDK auf deinem Server installiert sein. Du kannst es installieren, indem du den folgenden Befehl ausführst:

dnf install java-11-openjdk -y

Sobald Java installiert ist, kannst du die Java-Installation mit dem unten stehenden Befehl überprüfen:

java --version

Du erhältst die folgende Ausgabe:

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)

OpenNMS auf Alma Linux 8 installieren

Standardmäßig ist OpenNMS nicht im Alma Linux Standard-Repository enthalten. Daher musst du das offizielle OpenNMS-Repository zu deinem System hinzufügen.

Du kannst das OpenNMS-Repository und den GPG-Schlüssel hinzufügen, indem du den folgenden Befehl ausführst:

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

Als Nächstes installierst du OpenNMS, indem du den folgenden Befehl ausführst:

dnf install opennms -y

Dadurch wird auch der PostgreSQL-Server auf deinem Server installiert.

Wechsle dann in das Verzeichnis des OpenNMS und initialisiere die PostgreSQL-Datenbank mit folgendem Befehl:

cd /opt/opennms
postgresql-setup initdb

Starte und aktiviere schließlich den PostgreSQL-Dienst mit dem folgenden Befehl:

systemctl start postgresql
systemctl enable postgresql

Du kannst nun den Status von PostgreSQL mit dem folgenden Befehl überprüfen:

systemctl status postgresql

Du erhältst die folgende Ausgabe:

? 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

PostgreSQL für OpenNMS konfigurieren

Als nächstes musst du eine Datenbank und einen Benutzer für OpenNMS erstellen.

Melde dich zunächst mit folgendem Befehl bei PostgreSQL an:

su - postgres -c "psql -U postgres"

Als Nächstes änderst du das Postgres-Passwort mit dem folgenden Befehl:

alter user postgres with password 'mypassword';

Als Nächstes erstellst du eine Datenbank und einen Benutzer für OpenNMS mit dem folgenden Befehl:

createuser -P opennms
createdb -O opennms opennms

Verlasse die PostgreSQL-Shell mit folgendem Befehl:

\q

Bearbeite als Nächstes die PostgreSQL-Konfigurationsdatei mit dem folgenden Befehl:

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

Finde die folgenden Zeilen:

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

Und ersetze sie durch die folgenden Zeilen:

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

Zum Schluss lädst du den PostgreSQL-Dienst neu, um die Konfigurationsänderungen zu übernehmen:

systemctl reload postgresql

OpenNMS konfigurieren

Als Nächstes musst du die Konfigurationsdatei der OpenNMS-Datenquelle bearbeiten und deine Datenbank definieren:

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

Ändere die folgenden Zeilen, damit sie mit den Anmeldedaten deiner Datenbank übereinstimmen:

<jdbc-data-source name="opennms"
                    database-name="opennms"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/opennms"
                    user-name="opennms"
                    password="opennms" />

<jdbc-data-source name="opennms-admin"
                    database-name="template1"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/template1"
                    user-name="postgres"
                    password="mypassword" />

Speichere und schließe die Datei und führe dann den folgenden Befehl aus, um den Java-Pfad zu ermitteln:

/opt/opennms/bin/runjava -s

Du erhältst die folgende Ausgabe:

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.

Als Nächstes führst du den folgenden Befehl aus, um die Datenbank zu initialisieren und die Systembibliotheken zu erkennen:

/opt/opennms/bin/install -dis

Du erhältst die folgende Ausgabe:

- 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!

Starte und aktiviere schließlich den OpenNMS-Dienst mit dem folgenden Befehl:

systemctl start opennms
systemctl enable opennms

Du kannst den Status von OpenNMS mit dem folgenden Befehl überprüfen:

systemctl status opennms

Du erhältst die folgende Ausgabe:

? 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.

Zu diesem Zeitpunkt ist OpenNMS gestartet und lauscht auf Port 8980. Du kannst das mit dem folgenden Befehl überprüfen:

ss -antpl | grep 8980

Du erhältst die folgende Ausgabe:

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

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Nginx als Reverse Proxy für OpenNMS konfigurieren

Als Nächstes musst du Nginx installieren und als Reverse-Proxy für OpenNMS konfigurieren. Dazu installierst du den Nginx-Server mit dem folgenden Befehl:

dnf install nginx -y

Sobald Nginxx installiert ist, erstellst du eine Konfigurationsdatei für den virtuellen Nginx-Host:

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

Füge die folgenden Zeilen hinzu:

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;
    }
}

Speichere und schließe die Datei und überprüfe die Nginx-Konfiguration mit dem folgenden Befehl:

nginx -t

Du erhältst die folgende Ausgabe:

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

Starte als Nächstes den Nginx-Dienst und aktiviere ihn, damit er beim Neustart des Systems startet:

systemctl start nginx
systemctl enable nginx

Jetzt kannst du den Status von Nginx mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du erhältst die folgende Ausgabe:

? 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.

Firewall konfigurieren

Als Nächstes musst du Port 80 in der Firewall zulassen. Du kannst ihn mit folgendem Befehl zulassen:

firewall-cmd --add-service=http --permanent

Lade dann die Firewall neu, um die Änderungen zu übernehmen:

firewall-cmd --reload

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Zugriff auf die OpenNMS-Webschnittstelle

Öffne nun deinen Webbrowser und rufe die OpenNMS-Weboberfläche über die URL http://opennms.example.com auf. Du erhältst den OpenNMS-Anmeldebildschirm:

Gib den Standard-Benutzernamen und das Passwort admin/admin ein und klicke auf die Schaltfläche Anmelden. Auf dem folgenden Bildschirm siehst du das OpenNMS Dashboard:

Klicke jetzt auf die Schaltfläche admin => Passwort ändern, um das Standardpasswort zu ändern (siehe unten):

Ändere dein Standardpasswort und klicke auf die Schaltfläche Senden. Du erhältst den folgenden Bildschirm:

Fazit

Herzlichen Glückwunsch! Du hast OpenNMS mit Nginx erfolgreich auf Alma Linux 8 installiert. Jetzt kannst du die Remote-Hosts über das OpenNMS-Dashboard hinzufügen und sie von der zentralen Stelle aus überwachen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …