Tomcat 8 on Debian Jessie with PSI Probe and OpenNMS to monitor performance (Part 3)
We looked at Tomcat 8 in Part 1 of this series and
at PSI Probe as a replacement for the default Tomcat Manager application in Part 2.
Now
PSI Probe is great for managing Tomcat and its applications, but it does not actively generate alerts if Tomcat is in
difficulty, or any other part of the application stack for that matter, so this is where OpenNMS plugs the
gap.
Network Management with OpenNMS
If you cut your teeth on the mainframes of the recent past, you will be familiar with network management tools like HP OpenView and IBM Tivoli. These tools are famous for their complexity and cost, so alternatives like Nagios (subsequently forked as Icinga) and OpenNMS emerged as open source alternatives.OpenNMS is a Java-based, agentless monitoring tool that uses SNMP to monitor devices on the network. It was designed to manage service level agreements, so in addition to fault reporting (with trouble ticketing), it has a large number of service monitors to report against service thresholds.
If your device is SNMP-enabled, OpenNMS will auto-discover the device, add it as another node to your network topology and start monitoring it immediately, including vending machines.
OpenNMS Installation
The instructions for installing on Debian are here, but I will deviate slightly because I want to install OpenNMS on a pre-existing installation of Postgresql 9.4 on another server.Create a database for OpenNMS
Login to the database server (called 'my-database-ip' here) and create an empty database called 'opennms', owned by 'opennms':# su - postgres
# psql -c "CREATE USER opennms WITH LOGIN ENCRYPTED PASSWORD 'my-opennms-password';"
# psql -c "CREATE DATABASE opennms WITH OWNER=opennms ENCODING 'UNICODE';"
Install OpenNMS
On the server that you intend to run OpenNMS (called 'my-server-ip' here), add the OpenNMS repository to the APT sources list, add GPG key to verify the integrity of the package, update APT and install OpenNMS:# vi /etc/apt/sources.list.d/opennms.listOnce the installation is complete, the database must be initialised, but before you run the scripts, you must give OpenNMS access to the database that you created by configuring the datasources:
deb http://debian.opennms.org stable main
# wget -O - http://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
# apt-get update
# apt-get install opennms
# vi /etc/opennms/opennms-datasources.xmlNow configure the JRE for OpenNMS and then run the installation:
<jdbc-data-source class-name="org.postgresql.Driver" database-name="opennms" name="opennms" password="my-opennms-password" url="jdbc:postgresql://my-database-ip:5432/opennms" user-name="opennms">
<jdbc-data-source class-name="org.postgresql.Driver" database-name="template1" name="opennms-admin" password="my-postgres-password" url="jdbc:postgresql://my-database-ip:5432/template1" user-name="postgres">
# /usr/share/opennms/bin/runjava -sInstall the iplike package to optimize lookups based on IP addresses, and then start the service:
# /usr/share/opennms/bin/install -dis
# /usr/sbin/install_iplike.shIf all is well, you should be able to browse to your instance of OpenNMS at http://my-server-ip:8980 and log in with admin/admin.
# systemctl start opennms
You can check that all the daemons are running with:
# opennms -v statusNote that OpenNMS uses two ports that you should be aware of: an httpAdaptor at 8181 and the application itself running on Jetty at 8980.
Once you have completed the install, you may want to comment out the OpenNMS repository that you added to APT, to prevent unsolicited updates of OpenNMS, particularly in a Production environment.
Discover nodes
By default OpenNMS monitors no network nodes at all, so the very first thing to do is to register the nodes to be monitored.You can do a range scan but that will register every device in the range, whether you want to manage it or not, so rather register the nodes explicitly.
There are a number of ways to do this, but since you already have the IP address, the easiest is to register it directly:
Admin > Configure OpenNMS > Configure Discovery > Specifics > Add new
This will open a pop-up where you enter the IP address of the node, in this case it would be my-server-ip.
Click on 'Add", then when the pop-up closes, click on 'Save and Restart Discovery'.
Wait a moment while the discovery daemon runs, then list the node that you registered:
Info > Nodes
Now that the node has been discovered, I will show you how to monitor the JVM using JMX and SNMP in a later post. In the meantime, play around with the Service Level Management functionality in OpenNMS that comes out of the box.