OpenNMS, also known as “Open Network Management System”, is a free, open-source, and powerful network management and network monitoring solution. An enterprise network management system monitors and manages various services and devices from a central location. OpenNMS can be installed on Windows and Linux-based operating systems. OpenNMS uses SNMP and JMX to collect information from remote hosts. It can be installed on various operating systems, including Windows, Mac, Linux/Unix, and Solaris.
This tutorial will teach us how to install and configure OpenNMS on an Ubuntu server.
Prerequisites
- A server running Ubuntu. I’ll use Ubuntu 18.04 here.
- At least 2 GB RAM and 2 CPU cores.
- A root password set up on your server.
First steps
Before you start, you need to update your system to the latest version. You can do this by running the following command:
apt-get update -y apt-get upgrade -y
Once your server is updated, restart it to apply the changes.
Install Java
OpenNMS is written in Java. Therefore, you need to install Java for it to work. You can install Java JDK with the following command:
apt-get install default-jdk -y
After installation, check the version of Java with the following command:
java --version
You should get the following output:
openjdk 11.0.4 2019-07-16 OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3) OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing)
When you are done, you can proceed to the next step.
Install PostgreSQL
OpenNMS uses the PostgreSQL database to store its data. Therefore, you need to install PostgreSQL on your server. PostgreSQL is available by default in the Ubuntu 18.04 repository. You can install it by simply running the following command:
apt-get install postgresql -y
After installing PostgreSQL, you need to allow the root user to access this database. You can allow the root user by editing the pg_hba.conf file in the /etc/postgresql/10/main/ directory:
nano /etc/postgresql/10/main/pg_hba.conf
Find the following lines:
local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
Replace all lines with the following lines:
local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust
Save and close the file. Then restart the PostgreSQL service to apply all configuration changes:
systemctl restart postgresql
You can now check the status of the PostgreSQL service by running the following command:
systemctl status postgresql
If everything is ok, you should get the following output:
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2019-08-28 06:19:04 UTC; 14s ago Process: 8653 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 8653 (code=exited, status=0/SUCCESS) Aug 28 06:19:04 ubuntu1804 systemd[1]: Starting PostgreSQL RDBMS... Aug 28 06:19:04 ubuntu1804 systemd[1]: Started PostgreSQL RDBMS.
You can proceed to the next step when you are done with that.
Install OpenNMS
By default, OpenNMS is not available in the default repository of Ubuntu 18.04. Therefore, you need to add the OpenNMS repository to your system.
To add the repository, first download the OpenNMS GPG key and add it using the following command:
wget -O - http://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
Next, add the OpenNMS repository to the APT source list file with the following command:
nano /etc/apt/sources.list
Add the following lines to the end of the file:
deb http://debian.opennms.org stable main deb-src http://debian.opennms.org stable main
Save and close the file. Then update the repository and install OpenNMS with the following command:
apt-get update -y apt-get install default-mta opennms -y
When the installation is successfully completed, you can proceed to the next step.
Create a database for OpenNMS
Before you create the OpenNMS database, you need to set a password for the postgres user. Execute the following command to set the password for postgres:
passwd postgres
Type the desired password and press Enter, as shown below:
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
After setting a new password, you will be prompted to confirm the password whenever you want to access the PostgreSQL interactive shell.
Log in as a postgres user with the following command:
su - postgres
Once logged in, create a user and database for OpenNMS with the following command:
createuser -P opennms createdb -O opennms opennms
Next, set a password for the Postgres superuser with the following command:
psql -c "ALTER USER postgres WITH PASSWORD 'opennmspassword';"
Finally, exit the Postgres shell with the following command:
exit
Next, you need to set the database settings for OpenNMS. You can do this by editing the opennms-datasources.xml file. This is where you set the database name, database user name, database user password, and postgres user for administrative access to PostgreSQL.
nano /etc/opennms/opennms-datasources.xml
Make the following changes:
<jdbc-data-source name="opennms" database-name="opennms" class-name="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/opennms" user-name="opennms" password="opennmspassword" /> <jdbc-data-source name="opennms-admin" database-name="template1" class-name="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/template1" user-name="postgres" password="password" /> </datasource-configuration>
Save and close the file when you are done. Then set the Java environment with the following command:
/usr/share/opennms/bin/runjava -s
If everything works, you should see 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: "/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.
Next you need to initialize the database. You can do this with the following command:
/usr/share/opennms/bin/install -dis
You should see the following output:
Processing DiscoveryConfigurationLocationMigratorOffline: Changes the name for the default location from 'localhost' to 'Default'. See HZN-940. - Running pre-execution phase Backing up discovery-configuration.xml Zipping /usr/share/opennms/etc/discovery-configuration.xml - Running execution phase - Saving the execution state - Running post-execution phase Removing backup /usr/share/opennms/etc/discovery-configuration.xml.zip Finished in 0 seconds Upgrade completed successfully!
Finally, you need to restart the OpenNMS service so that all configuration changes are applied:
systemctl restart opennms
You can check the status of OpenNMS with the following command:
systemctl status opennms
You should get the following output:
? opennms.service - LSB: OpenNMS - Open Source Network Management System Loaded: loaded (/etc/init.d/opennms; generated) Active: active (running) since Wed 2019-08-28 06:40:19 UTC; 16s ago Docs: man:systemd-sysv-generator(8) Process: 14088 ExecStart=/etc/init.d/opennms start (code=exited, status=0/SUCCESS) Tasks: 172 (limit: 4915) CGroup: /system.slice/opennms.service ??15147 /bin/bash /usr/sbin/opennms start ??15148 /usr/lib/jvm/java-11-openjdk-amd64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,java.desktop,java.instru Aug 28 06:40:14 ubuntu1804 systemd[1]: Starting LSB: OpenNMS - Open Source Network Management System... Aug 28 06:40:19 ubuntu1804 opennms[14088]: Starting Open Network Management System: opennmsStarting OpenNMS: (not waiting for startup) ok Aug 28 06:40:19 ubuntu1804 opennms[14088]: . Aug 28 06:40:19 ubuntu1804 systemd[1]: Started LSB: OpenNMS - Open Source Network Management System.
When you are done, you can proceed to the next step.
Accessing OpenNMS
OpenNMS is now installed and listening on port 8980. Now it is time to access the OpenNMS web interface. To do this, open your web browser and enter the URL http://your-server-ip:8980/opennms. You will be redirected to the OpenNMS login page:
Enter the default username and password admin / admin and click the Log In button. On the following page, you should see the default OpenNMS dashboard:
For security reasons, it is recommended that you change the default admin password. To change the admin password, click admin in the right pane and then click the Change Password button. You should see the following page:
Enter your new password and click the Submit button. Once the password is changed, you should see the following page:
Conclusion
That’s it. You have successfully installed OpenNMS on the Ubuntu 18.04 server. You can now add multiple nodes and start monitoring from the OpenNMS dashboard. For more information, see the official OpenNMS documentation at OpenNMS Doc. If you have any questions, feel free to ask me.