Copyright © 2004-2018 The OpenNMS Group, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is available at OpenNMS is the creation of numerous people and organizations, operating under the umbrella of the OpenNMS project. The source code is published under the GNU Affero GPL, version 3 or later and is Copyright © 2002-2018 The OpenNMS Group, Inc.

The current corporate sponsor of OpenNMS is The OpenNMS Group, which also owns the OpenNMS trademark.

Please report any omissions or corrections to this document by creating an issue at

What’s New in OpenNMS Horizon 22

System Requirements

  • Java 8: OpenNMS Horizon 22 requires Java 8 as the runtime environment. To run Horizon 22, we recommend the most recent version of Oracle JDK 8 for your platform.

  • PostgreSQL 9 or higher: Horizon 22 requires Any supported version PostgreSQL 9 or higher. As of this writing, PostgreSQL 9.3 is the earliest version under active support, but OpenNMS is known to work with at least PostgreSQL 9.1 and up.

Important Upgrade Notes

  • All collectors using the JMXSecureCollector, MX4JCollector or JBossCollector must be migrated to use the Jsr160Collector instead.

  • All monitors using the JBossMonitor or JMXSecureMonitor must be migrated to use the Jsr160Monitor instead.

  • All detectors using the JBossDetector or MX4JDetector must be migrated to use the Jsr160Detector instead.

  • The configuration of the Elasticsearch ReST plugin has changed. Please refer to Changed Properties with new defaults.

  • The index creation of the Elasticsearch ReST plugin has changed and is now configurable. Please refer to Index Properties.

  • The Elasticsearch ReST plugin no longer supports ElasticSearch version 2.4. A version >= 5.x must be used.

  • All JavaScript code in OpenNMS has been unified under a single build system. While we did quite a bit of testing of the resulting changes, it’s possible something was missed. If you run into any JS-related issues in the UI please create an issue.

  • The default database access implementation is now using HikariCP, rather than C3P0. This will probably not affect you (other than give better performance) but could affect unusual workloads.

  • Backshift is now the default rendering engine for graphs.

Configuration of the Elasticsearch ReST plugin

The configuration of the Elasticsearch ReST plugin has been changed. Some properties have new defaults and have been renamed. It is now also possible to define index settings and provide a index strategy to have more control over the index creation.

Changed Properties with new defaults

Some properties of the plugin have changed. The following table shows the old (no longer supported) and the new property name, as well as the new default, which is used if the configuration is not updated manually. Please update the configuration file etc/ accordingly. For more details on how to configure the plugin to use elasticsearch refer to Configure Elasticsearch.

Old parameter New parameter Default Value
















Besides that the following default values have been changed:

Parameter Old default New default













Index Properties

It is now possible to define index-related properties, e.g. the number of shards and replicas. It is also possible to define a property elasticIndexStrategy to determine if a hourly, daily, monthly or yearly index should be created. It defaults to monthly.

For more details please refer to Configure Elasticsearch.

Breaking Changes

  • JMXSecureCollector, MX4JCollector and JBossCollector have been removed. Please use the Jsr160Collector instead.

  • JBossMonitor and JMXSecureMonitor have been removed. Use the Jsr160Monitor instead.

  • JBossDetector and MX4JDetector have been removed. Use the Jsr160Detector instead.

  • The configuration of the Elasticsearch ReST plugin has changed. Please refer to Changed Properties with new defaults.

  • The index creation of the Elasticsearch ReST plugin has changed and is now configurable. Please refer to Index Properties.

  • The Elasticsearch ReST plugin no longer supports ElasticSearch version 2.4. A version >= 5.x must be used.

  • By default the data collection gathered data twice from SNMP agents supporting the MIB-II with 32bit and 64bit counter on network interfaces. The default 32bit interface counters are now disabled by default and only 64bit counters are collected.

If you have legacy SNMP agents which only support 32bit interface counters, the data collection for this interfaces will stop after you upgraded to 22.0.0. To get them enabled, you have to create a data collection package and add the mib2-interfaces data collection group manually for this devices with the example below.
Example to collect 32bit MIB-2 Interface counter from nodes in a category configured in collectd-configuration.xml
<package name="Legacy-MIB2-Interfaces" remote="false">
    <filter>categoryName == 'Legacy-MIB2-Interfaces'</filter>
    <include-range begin="" end=""/>
    <include-range begin="::1" end="ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"/>

    <service name="SNMP" interval="300000" user-defined="false" status="on">
        <parameter key="collection" value="legacy-32bit-mib2"/>
        <parameter key="thresholding-enabled" value="true"/>
Load the Legacy MIB-2 Interfaces metrics configured in the datacollection-config.xml
<snmp-collection name="legacy-32bit-mib2" snmpStorageFlag="select">
    <rrd step="300">
    <include-collection dataCollectionGroup="Legacy_MIB2-Interfaces"/>
    <include-collection dataCollectionGroup="REF_MIB2-Interfaces"/>

New Features

Telemetryd (Drift)

The focus of OpenNMS Horizon 22 is the introduction of support for consuming and indexing flow data in a new subsystem called Telemetryd (code name: Drift).

Telemetryd supports receiving real-time telemetry data in a variety of formats, including JTI (Junos Telemetry Interface), Netflow 5 and 9, IPFIX, SFlow, and Cisco NX-OS. Data is then stored in Elasticsearch for display using the OpenNMS Grafana-based companion application, Helm.

Accessing flow data from Helm requires Helm 2.0 or higher.

SNMP Session Tracking

To aid in debugging problematic SNMP hosts, an SNMP session tracker/logger has been added.

By default it will print a summary of the top 10 oldest threads every 60 seconds to the SNMP debug log.

It can be enabled by adding org.opennms.core.snmp.trackSessions=true in (or a file in

To change how often the summary is printed, set org.opennms.core.snmp.trackSummaryDelay=number-of-seconds.

To change how many sessions are posted to the debug log, set org.opennms.core.snmp.trackSummaryLimit=number-of-sessions.

New/Updated Device Support (Data Collection and/or Traps)

  • AsyncOS Mail

  • Cisco Virtual CallManager

  • Dell (OpenManage cooling devices, temperature probe, and power usage)

  • Net-SNMP disk I/O and load


Release 22.0.0

Release 22.0.0 is the latest stable release of OpenNMS. It contains a large number of bug fixes and enhancements, most notably adding support for real-time telemetry flow processing. For a high-level overview of what’s changed in OpenNMS 22, see What’s New in OpenNMS 22.

The codename for 22.0.0 is Space.

  • MockLogAppender.setupLogging() doesn’t override default log level (Issue NMS-8905)

  • ONMS starts with broken threshold configuration file (Issue NMS-9064)

  • rescan-exitsing attibute of requisition-def tag in provisiond-configuration.xml is not passed to scanNode() in CoreImportActivities (Issue NMS-9492)

  • Interface delete from a node does not work (Issue NMS-9506)

  • Topology map node icons vanish (IE10, IE11 only) when alarm status unchecked (Issue NMS-9614)

  • Access Denied With Surveillance View In Ops Board (Issue NMS-9678)

  • Topology Default Theme has too many dependencies (Issue NMS-9716)

  • Karaf client shell script fails on missing inc directory (Issue NMS-9728)

  • Release notes are duplicated with every release (Issue NMS-9807)

  • Karaf opennms-es-rest Plugin - Creating OID mappings causing ES index mappings to exceed 1000 (Issue NMS-9831)

  • Enlinkd startup fails due to NPE in BroadcastDomain class (Issue NMS-9852)

  • opennms-flows feature does not depend on opennms-web-api (Issue NMS-9865)

  • Inconsistent handling of keyboard navigation on top menu (Issue NMS-9867)

  • Error message is not cleared in Test Classification Panel (Issue NMS-9880)

  • PageSequenceMonitor broken in Minion (Issue NMS-9882)

  • Cached values interfere with typeahead functionality in "Test Classification" form (Issue NMS-9883)

  • collection:collect command fails with ClassCastException (Issue NMS-9885)

  • Value of ${nodeLabel} for PSM services apparently not eagerly updated (Issue NMS-9900)

  • Thousands of non harmful errors on ipc.log when using Kafka (Issue NMS-9910)

  • JasperStudio extension dependency error (Issue NMS-9915)

  • SNMP Interface Poller shows wrong information on the logs (Issue NMS-9917)

  • Flows API doesn’t recognize the exporters (Issue NMS-9919)

  • Possible StackOverflow in DefaultRequestExecutor (Issue NMS-9920)

  • Backshift graph fails to load with jQuery error (Issue NMS-9927)

  • Wrong initial message displayed on AngularJS based tables. (Issue NMS-9932)

  • Alarm favorite link URL does not have AddRefreshHeader-30 applied (Issue NMS-9938)

  • webpack compilation fails on Windows (due to invalid path separator) (Issue NMS-9942)

  • Cannot see StrafePing graphs when using Backshift. (Issue NMS-9946)

  • Vaadin Maven Plugin fails on Windows (Issue NMS-9948)

  • The JDBC Collector doesn’t work (Issue NMS-9952)

  • Correct sysoidmask lines in default datacollection files (Issue NMS-9958)

  • foreign-id with space (%20) at end causes issues with Newts (Issue NMS-9961)

  • Kafka Producer: Alarm datasync does not respect alarm filter (Issue NMS-9964)

  • perfdata-receiver doesn’t compile (Issue NMS-9967)

  • Home Page Map does not display node details (Issue NMS-10008)

  • Downtime model documentation is deprecated (Issue NMS-10069)

  • /rest/flows/exporters throws NPE when no flows are found (Issue NMS-10134)

  • Add button is not working in "Add Ranges" in opennms (Issue NMS-10135)

  • Remove Dell Open-Manage from all Net-SNMP devices (Issue NMS-10136)

  • Remove default PoE data collection (Issue NMS-10138)

  • Remove Checkpoint Firewall data collection from all Windows devices (Issue NMS-10142)

  • Remove default data collection for Compaq Insight Manager stats from all Windows Server (Issue NMS-10143)

  • Remove Cisco Call Manager statistics from all Windows Servers (Issue NMS-10144)

  • wrong statement in event description for serviceDeleted (Issue NMS-10148)

  • NPEs when making REST requests to the /flows endpoints when no data is present (Issue NMS-10149)

  • Installer should check DB time (Issue NMS-9448)

  • Refactor the compatibility matrix in the documentation (Issue NMS-9684)

  • Admin Guide Typos (Issue NMS-9707)

  • Refactor JavaScript Web Assets to Share Code (Issue NMS-9761)

  • Split Help/Support in "Documentation" and "Support" (Issue NMS-9771)

  • Suppress HTTP Basic Auth Requests for AJAX Calls (Issue NMS-9783)

  • Add Ironport AsyncOS Mail Gateway Events (Issue NMS-9794)

  • Monitor Linux disk performance with Net-SNMP by default (Issue NMS-9816)

  • Improve spaces and label in the Test Classification panel (Issue NMS-9878)

  • Improve placeholder in Test Classification field (Issue NMS-9879)

  • Add filtering support to events forwarded to kafka (Issue NMS-9898)

  • Make NodeCache configurable (Issue NMS-9931)

  • Datacollection for Cisco Call Manager has old OID (Issue NMS-9936)

  • Improve performance of newts.indexing to avoid overwhelm Cassandra cluster (Issue NMS-9959)

  • Enhance warning message (Issue NMS-9962)

  • Can’t receive SNMP v3 Trap (Issue NMS-10009)

  • Enhance AlarmPersisterImpl to support updating acknowledgment values on reduction (Issue NMS-10067)

  • Make interface octet counter 64bit as default instead of 32bit (Issue NMS-10139)

  • Remove overlapping data collections for MIB2-X-Interfaces (Issue NMS-10141)

  • Make Backshift the Default Graph Strategy (Issue NMS-10152)