OpenNMS is a free and open-source Open Network Management System written in Java. It is a network monitoring application that gathers critical information from local and network hosts using the SNPM protocol. It can be installed on Linux and Windows operating systems and provides a web-based interface to monitor network traffics through a web browser. It offers a rich set of features including, Provisioning, Service Monitoring, Event Management, Charting support and Performance Measurement.

In this post, we will show you how to install OpenNMS on Debian 11.

Prerequisites

  • A server running Ubuntu 20.04.
  • A root password is configured on the server.

Install Required Dependencies

First, update your system packages to the latest version using the following command:

apt-get update -y

Once all the packages are updated, you will also need to install Java and other required dependencies to your server. You can install all of them by running the following command:

apt-get install default-jdk gnupg2 curl wget -y

Once all the packages are installed, you can verify the Java version with the following command:

java -version

You should see the Java version in the following output:

openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12 7-post-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.12 7-post-Debian-2, mixed mode, sharing)

Once you are finished, you can proceed to the next step.

Add OpenNMS Repository

By default, the OpenNMS package is not included in the Debian 11 default repository. So you will need to add the OpenNMS repository to the APT. You can add it with the following command:

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

Add the following lines:

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

Save and close the file then add the GPG key with the following command:

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

Once the repository and key is added, update the repository cache with the following command:

apt-get update -y

Once you are finished, you can proceed to the next step.

Install OpenNMS on Debian 11

Now, run the following command to install the OpenNMS package to your system.

apt-get install opennms -y

Once the OpenNMS is installed, you should see the following output:

 *** Installation complete.  You must still run the installer at
 *** $OPENNMS_HOME/bin/install to be sure your database is up
 *** to date before you start OpenNMS.  See the install guide at
 *** http://www.opennms.org/wiki/Installation:Debian and the
 *** release notes for details.

Setting up opennms-webapp-jetty (28.1.1-1) ...
Setting up opennms-source (28.1.1-1) ...
Setting up opennms (28.1.1-1) ...
Setting up liblwp-protocol-https-perl (6.10-1) ...
Setting up libwww-perl (6.52-1) ...
Setting up libxml-parser-perl:amd64 (2.46-2) ...
Setting up libxml-twig-perl (1:3.52-1) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13) ...

The above command will also install the PostgreSQL server package automatically. You can start it using the following command:

systemctl start postgresql

Next, check the status of the PostgreSQL using the following command:

systemctl status postgresql

You will get the following output:,/p>

? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2021-10-24 04:56:37 UTC; 1min 9s ago
   Main PID: 17627 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 4679)
     Memory: 0B
        CPU: 0
     CGroup: /system.slice/postgresql.service

Oct 24 04:56:37 debian11 systemd[1]: Starting PostgreSQL RDBMS...
Oct 24 04:56:37 debian11 systemd[1]: Finished PostgreSQL RDBMS.

Once you are finished, you can proceed to the next step.

Create a Database and User for OpenNMS

Next, you will need to create a database and user for OpenNMS. First, log in to PostgreSQL with the following command:

su - postgres

Once you are login, create a user with the following command:

createuser opennms

Next, set a password for the opennms user with the following command:

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

Next, create a database for OpenNMS with the following command:

createdb -O opennms opennms

Next, set a password for Postgres user with the following command:

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

Next, exit from the PostgreSQL shell using the following command:

exit

Once you are finished, you can proceed to the next step.

Configure OpenNMS

Next, you will need to edit the OpenNMS data source file and define your database settings.

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

Change the following lines as per your database settings:



Save and close the file when you are finished.

Initialize and start OpenNMS

First, you will need to integrate OpenNMS with Java. You can do it by running the following command:

/usr/share/opennms/bin/runjava -s

You will get the following output:

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: "https://www.howtoforge.com/etc/alternatives/java"...
runjava: Did not find an appropriate JVM in the PATH: "https://www.howtoforge.com/etc/alternatives/java"
runjava: Searching for a good JVM...
runjava: Found a good JVM in "https://www.howtoforge.com/usr/lib/jvm/java-11-openjdk-amd64/bin/java".
runjava: Value of "https://www.howtoforge.com/usr/lib/jvm/java-11-openjdk-amd64/bin/java" stored in configuration file.

Next, initialize the database and detect system libraries using the following command:

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

You will get the following output:

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!

Finally, start the OpenNMS and enable it to start at system reboot:

systemctl start opennms

systemctl enable opennms

You can also verify the status of the OpenNMS with the following command:

systemctl status opennms

You should see the following output:

? opennms.service - OpenNMS server
     Loaded: loaded (/lib/systemd/system/opennms.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-10-24 05:00:11 UTC; 3s ago
    Process: 22231 ExecStart=/usr/share/opennms/bin/opennms -s start (code=exited, status=0/SUCCESS)
   Main PID: 23326 (java)
      Tasks: 43 (limit: 4679)
     Memory: 212.8M
        CPU: 21.168s
     CGroup: /system.slice/opennms.service
             ??23325 bash /usr/share/opennms/bin/opennms -s start
             ??23326 /usr/lib/jvm/java-11-openjdk-amd64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,java.desktop,java.ins>

Oct 24 05:00:13 debian11 opennms[23326]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so.  Attempting to load>
Oct 24 05:00:13 debian11 opennms[23326]: [INFO] Successfully loaded jicmp library.
Oct 24 05:00:13 debian11 opennms[23326]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so.  Attempting to load>
Oct 24 05:00:13 debian11 opennms[23326]: [INFO] Successfully loaded jicmp library.
Oct 24 05:00:13 debian11 opennms[23326]: [DEBUG] System property 'opennms.library.jicmp6' set to '/usr/lib/jni/libjicmp6.so.  Attempting to lo>
Oct 24 05:00:13 debian11 opennms[23326]: [INFO] Successfully loaded jicmp6 library.
Oct 24 05:00:13 debian11 opennms[23326]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so.  Attempting to load>
Oct 24 05:00:13 debian11 opennms[23326]: [INFO] Successfully loaded jicmp library.
Oct 24 05:00:13 debian11 opennms[23326]: [DEBUG] System property 'opennms.library.jicmp6' set to '/usr/lib/jni/libjicmp6.so.  Attempting to lo>
Oct 24 05:00:13 debian11 opennms[23326]: [INFO] Successfully loaded jicmp6 library.

At this point, OpenNMS is started and listens on port 8980. You can check it with the following command:

ss -antpl | grep 8980

You will get the following output:

LISTEN 0      50                      *:8980             *:*    users:(("java",pid=23326,fd=815)) 

Access OpenNMS Web Interface

Now, open your web browser and access the OpenNMS web console using the URL http://your-server-ip:8980/opennms. You should see the OpenNMS login page:

<img alt="OpenNMS Login" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p1.png61792f2e86c97.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="360" loading="lazy" src="data:image/svg xml,” width=”750″>

Provide the default admin username and password as admin/admin and click on the Login button. You should see the OpenNMS dashboard on the following page:

<img alt="OpenNMS dashboard" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p2.png61792f2eb9d15.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="393" loading="lazy" src="data:image/svg xml,” width=”750″>

Now, click on the icon to add the new host. You should see the following page:

<img alt="Add new node" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p3.png61792f2f07b05.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="223" loading="lazy" src="data:image/svg xml,” width=”501″>

Provide the name of your requisition and click on the OK. You should see the following page:

<img alt="Node settings" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p4.png61792f2f2d887.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="392" loading="lazy" src="data:image/svg xml,” width=”750″>

<img alt="Device settings" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p5.png61792f2f58f85.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="336" loading="lazy" src="data:image/svg xml,” width=”750″>

Provide your remote host’s name, IP, username, password, access method and click on the Provision button. Once the host is added, you will get the following screen:

<img alt="Node added successfully" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p7.png61792f2f7a5b7.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="164" loading="lazy" src="data:image/svg xml,” width=”449″>

Click on the Ok button. You should see your newly added host on the following screen:

<img alt="OpenNMS Network Monitoring" data-ezsrc="https://kirelos.com/wp-content/uploads/2021/10/echo/p8.png61792f2f94d10.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="391" loading="lazy" src="data:image/svg xml,” width=”750″>

Conclusion

Congratulations! you have successfully installed and configured OpenNMS on Debian 11. You can now add more hosts to the OpenNMS and start monitoring them from the web-based interface.