Wie installiere ich OpenNMS Horizon Network Monitoring System unter Debian 11

OpenNMS ist eine kostenlose, quelloffene und eine der leistungsstärksten Netzwerküberwachungs- und -verwaltungsplattformen, die für die Überwachung entfernter Geräte von einer zentralen Stelle aus eingesetzt wird. Es unterstützt viele Funktionen, wie z. B. Provisioning, Überwachung von Diensten, Ereignisverwaltung, Kartenunterstützung und vieles mehr. OpenNMS nutzt SNMP und JMX und sammelt Informationen von entfernten Systemen. Es läuft auf Linux- und Windows-Betriebssystemen und bietet eine webbasierte Schnittstelle zur einfachen Überwachung.

In diesem Lernprogramm zeige ich dir, wie du OpenNMS auf Debian 11 installierst.

Voraussetzungen

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

Java auf Debian 11 installieren

OpenNMS ist eine Java-basierte Anwendung. Daher muss Java auf deinem Server installiert sein. Wenn es nicht installiert ist, kannst du es mit folgendem Befehl installieren:

apt-get install default-jdk -y

Sobald Java installiert ist, überprüfe die Java-Version mit dem folgenden Befehl:

java --version

Du erhältst die Java-Version in der folgenden Ausgabe:

openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb11u1, mixed mode, sharing)

OpenNMS auf Debian 11 installieren

Standardmäßig ist OpenNMS nicht im Haupt-Repository von Debian 11 enthalten. Daher musst du das offizielle OpenNMS-Repository zur APT hinzufügen.

Installiere zunächst alle benötigten Abhängigkeiten mit dem folgenden Befehl:

apt-get install curl gnupg2 wget -y

Sobald alle Pakete installiert sind, erstellst du mit dem folgenden Befehl eine OpenNMS-Repository-Datei:

nano /etc/apt/sources.list.d/opennms.list

Füge die folgenden Zeilen hinzu:

deb https://debian.opennms.org stable main
deb-src https://debian.opennms.org stable main

Speichere und schließe die Datei und importiere dann den GPG-Schlüssel mit dem folgenden Befehl:

wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -

Du erhältst die folgende Ausgabe:

Connecting to debian.opennms.org (debian.opennms.org)|3.214.84.83|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1335 (1.3K)
Saving to: ‘STDOUT’

-                                   100%[=================================================================>]   1.30K  --.-KB/s    in 0s      

2021-11-28 07:58:07 (16.0 MB/s) - written to stdout [1335/1335]

OK

Als Nächstes aktualisierst du den Repository-Cache und installierst OpenNMS mit dem folgenden Befehl:

apt-get update -y
apt-get install opennms -y

Während der Installation wird die folgende Fehlermeldung angezeigt:

Failed to install iplike into the template1 or opennms databases. See /tmp/install_iplike.log for details. To skip this step and install manually, set the         
environment variable SKIP_IPLIKE_INSTALL before installing this package. To install iplike into your database, use the /usr/sbin/install_iplike.sh script.  See    
`install_iplike.sh -h` for more details.

Um diesen Fehler zu beheben, musst du eine Datenbank und einen Benutzer für OpenNMS in PostgreSQL erstellen.

Erstellen einer Datenbank in PostgreSQL

Der PostgreSQL-Server wird während der OpenNMS-Installation automatisch installiert.

Starten Sie zunächst den PostgreSQL-Dienst mit dem folgenden Befehl:

systemctl start postgresql

Als Nächstes verbindest du dich mit der PostgreSQL-Instanz mit dem folgenden Befehl:

su - postgres

Sobald du verbunden bist, erstelle einen Benutzer für OpenNMS und setze ein Passwort mit dem folgenden Befehl:

createuser opennms
psql -c "ALTER USER opennms WITH PASSWORD 'opennms';"

Als Nächstes erstellst du eine Datenbank für OpenNMS und gibst ein Passwort für den Benutzer postgres ein:

createdb -O opennms opennms
psql -c "ALTER USER postgres WITH PASSWORD 'securepassword';"

Als Nächstes beendest du die PostgreSQL-Shell mit dem folgenden Befehl:

exit

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

OpenNMS konfigurieren

Als Nächstes musst du die OpenNMS-Datenquellendatei bearbeiten und deine Datenbankanmeldedaten festlegen:

nano /usr/share/opennms/etc/opennms-datasources.xml

Definiere deine Datenbank-Anmeldedaten wie unten gezeigt:

  <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="securepassword" />
</datasource-configuration>

Speichere und schließe die Datei, wenn du fertig bist, und führe den folgenden Befehl aus, um die Java-Umgebung zu erkennen:

sudo -u opennms /usr/share/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-amd64/bin/java".
runjava: Value of "/usr/lib/jvm/java-11-openjdk-amd64/bin/java" stored in configuration file.

Als Nächstes führst du den folgenden Befehl aus, um die Einrichtung von OpenNMS abzuschließen:

sudo -u opennms /usr/share/opennms/bin/install -dis

Du erhältst die folgende Ausgabe:

Finished in 0 seconds

Processing RemotePollerServiceConfigMigratorOffline: Remove deprecated RemotePoller service entry from service-configuration.xml, see NMS-12684
- Running pre-execution phase
  Creating backup of /usr/share/opennms/etc/service-configuration.xml
    Zipping /usr/share/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 /usr/share/opennms/etc/service-configuration.xml.zip

Finished in 0 seconds

Upgrade completed successfully!

Start OpenNMS Service

Nachdem du OpenNMS eingerichtet hast, starte den OpenNMS-Dienst und aktiviere ihn mit dem folgenden Befehl, damit er beim Neustart des Systems gestartet wird:

systemctl start opennms
systemctl enable opennms

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

systemctl status opennms

Du erhältst die folgende Ausgabe:

? opennms.service - OpenNMS server
     Loaded: loaded (/lib/systemd/system/opennms.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-28 08:10:51 UTC; 16s ago
    Process: 22990 ExecStart=/usr/share/opennms/bin/opennms -s start (code=exited, status=0/SUCCESS)
   Main PID: 24106 (java)
      Tasks: 68 (limit: 4679)
     Memory: 559.2M
        CPU: 48.083s
     CGroup: /system.slice/opennms.service
             ??24105 bash /usr/share/opennms/bin/opennms -s start
             ??24106 /usr/lib/jvm/java-11-openjdk-amd64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,java.desktop,java.in>

Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so.  Attempting to loa>
Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp library.
Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp6' set to '/usr/lib/jni/libjicmp6.so.  Attempting to l>
Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp6 library.
Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so.  Attempting to loa>
Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp library.
Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp6' set to '/usr/lib/jni/libjicmp6.so.  Attempting to l>
Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp6 library.
Nov 28 08:11:07 debian11 opennms[24106]: Nov 28, 2021 8:11:07 AM org.hibernate.validator.internal.util.Version 
Nov 28 08:11:07 debian11 opennms[24106]: INFO: HV000001: Hibernate Validator 4.3.2.Final

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=24106,fd=1046))     

Nginx als Reverse Proxy für OpenNMS konfigurieren

Als Nächstes empfiehlt es sich, Nginx als Reverse Proxy für OpenNMS zu installieren und zu konfigurieren. Installiere zunächst den Nginx-Server mit dem folgenden Befehl:

apt-get install nginx -y

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

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

Füge die folgende Konfiguration hinzu:

server {
  listen 80;
  server_name opennms.example.com;
    access_log /var/log/nginx/opennms.access.log;
    error_log /var/log/nginx/opennms.error.log;

  location /

  {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-OpenNMS-Server-URL https://nms.hacc.edu/;
    proxy_pass http://server-ip:8980;

  }
}

Speichere und schließe die Datei und überprüfe den Nginx auf Syntaxfehler:

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 anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Um den Betriebsstatus von Nginx zu überprüfen, führe folgenden Befehl aus:

systemctl status nginx

Du solltest die folgende Ausgabe sehen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-28 08:17:14 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 25964 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 25965 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 25967 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 3.2M
        CPU: 53ms
     CGroup: /system.slice/nginx.service
             ??25967 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??25968 nginx: worker process
             ??25969 nginx: worker process

Nov 28 08:17:14 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 28 08:17:14 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Zugriff auf OpenNMS Dashboard

Öffne nun deinen Webbrowser und rufe die OpenNMS-Weboberfläche über die URL http://opennms.example.com auf. Du solltest die OpenNMS-Anmeldeseite sehen:

OpenNMS-Horizont

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

Horizon Dashboard

Klicke nun auf admin > Passwort ändern, um das Standardpasswort für den Administrator zu ändern (siehe unten):

Passwort ändern

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

Passwort geändert

Fazit

Herzlichen Glückwunsch! Du hast OpenNMS mit Nginx als Reverse Proxy erfolgreich auf einem Debian 11 Server installiert. Jetzt kannst du die entfernten Geräte zu OpenNMS hinzufügen und sie über den Webbrowser überwachen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …