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.2

Release 22.0.2 is the latest stable release of OpenNMS. It contains a number of bug fixes and enhancements, including partial support for custom date formatting in the web UI. This will be expanded to cover the entire web UI in an upcoming release. For a high-level overview of what’s changed in OpenNMS 22, see What’s New in OpenNMS 22.

The codename for 22.0.2 is Mind.

  • bridge topology is wrong on nodelink.jsp (Issue NMS-8295)

  • Config-tester not validating varbind matching in event files (Issue NMS-9821)

  • IllegalStateException when restoring persisted sessions in Drools (Issue NMS-9907)

  • Can’t install OpenNMS on Ubuntu 18.04 (Issue NMS-9925)

  • The KSC Dashlet for the Ops-Board is not working (Issue NMS-10191)

  • MIB2 interface errors are missing (Issue NMS-10195)

  • BsonInvalidOperationException on Telemetryd with Sflow (Issue NMS-10240)

  • MIB2 SNMP Interface counters missing from Windows data collection (Issue NMS-10247)

  • newSuspect events do not get processed when they reference a missing system id (aka distpoller) (Issue NMS-10261)

  • Heatmap stopped working in centerUrl after upgrading to 22.0.0 (Issue HZN-1316)

  • AbstractAdapter always logs 0 packets (Issue HZN-1336)

  • Optionally persist the results when calling collectors:collect (Issue NMS-10173)

  • write custom tag for date time formatting (Issue NMS-10229)

  • repace current formatting in JSPs by custom tag (Issue NMS-10230)

  • define a property in for date formatting (Issue NMS-10231)

  • plpgsql IPLIKE does not behave the same as the C version (Issue NMS-10238)

  • apply custom tag to ncs-alarms.jsp (Issue NMS-10243)

  • Add additional fields to the alarms and events generated by the Kafka Producer (Issue NMS-10263)

Release 22.0.1

Release 22.0.1 is the latest stable release of OpenNMS. It contains a number of bug fixes and enhancements, including an update to Drools 7, performance improvements to the flow exporter ReST endpoint, and new karaf shell tools for diagnosing nodes. For a high-level overview of what’s changed in OpenNMS 22, see What’s New in OpenNMS 22.

The codename for 22.0.1 is Reality.

  • ConcurrentModificationException in DefaultEventHandlerImpl (Issue NMS-8413)

  • The ReST API used to return XMLs with namespace, and now it doesn’t (Issue NMS-8524)

  • config-tester doesn’t check (Issue NMS-9117)

  • Event-Analysis Report shows incorrect numbers for big values in Top25 Events (Issue NMS-9202)

  • Exceptions in Bridge Discovery (Issue NMS-9557)

  • MBean "TasksCompleted" for Collectd and Pollerd returns wrong counters (Issue NMS-9741)

  • Unregistered product specification (Issue NMS-9913)

  • The auto-acknowledge-alarm tag with no content doesn’t work on notifd-configuration.xml (Issue NMS-10085)

  • Asset record is not being updated with user name that performed the update (Issue NMS-10087)

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

  • The KSC Dashlet for the Ops-Board is not working (Issue NMS-10191)

  • Incorrect Release Notes Link (Issue NMS-10204)

  • AlarmChangeNotificationClient - Unable to parse time value (Issue HZN-1282)

  • Upgrade Drools to 7.x (Issue NMS-9923)

  • Provide a way to configure the date formats used by the Syslog NBI (Issue NMS-10158)

  • Typos in Horizon 22.0.0 release notes (Issue NMS-10161)

  • Support customizing the default time zone when parsing dates in syslog messages (Issue NMS-10164)

  • Consolidate Kafka client library versions (Issue NMS-10165)

  • Link to privacy policy from Data Choices UI elements (Issue NMS-10169)

  • Karaf shell command to enumerate nodes that match a given filter (Issue NMS-10172)

  • Ubiquiti AirMax 8 support (Issue NMS-10210)

  • Improve performance of /rest/flows/exporters endpoint (Issue HZN-1280)

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)