What’s New in OpenNMS Horizon 32

System requirements

  • Java 11 and 17: OpenNMS Horizon 32 runs on JDKs 11 and 17.

  • PostgreSQL 10 or higher: Horizon 32 requires any supported version of PostgreSQL from 10 up to (and including) 15.

New features and important changes

JDK 17

Horizon 32 adds support for running on JDK 17, while retaining support for JDK 11. We are not (yet) taking advantage of JDK 17 specific features, but the new JDK provides a bunch of performance improvements under the covers that benefit any application running on it.

Kafka version 3.x

Documentation has been updated to indicate that Kafka version 3 is supported for the message broker.

Newts: DataStax driver for Cassandra upgrade

The DataStax driver for Cassandra was updated from version 3.x to 4.x. This allows us to introduce the following functionality:

  1. Set additional Cassandra driver settings using system properties (for example, you can set datastax-java-driver.basic.request.timeout="30 seconds" to configure the connection timeout). See Configuration in the official DataStax documentation for details.

  2. Configure all driver settings using an external file. To do so, set the following system properties in ${OPENNMS_HOME}/etc/opennms.properties.d/newts.properties:

    org.opennms.newts.config.keyspace=newts
    org.opennms.newts.config.driver_settings_file=/opt/opennms/etc/newts-on-cassandra.conf
    • For example, a minimal version of the file would resemble the following snippet:

      datastax-java-driver {
        basic.contact-points = [ "127.0.0.1:9042" ]
        session-name = "default"
        session-keyspace = "newnewts"
        basic.load-balancing-policy {
          local-datacenter = datacenter1
        }
      }
    • See reference.conf in the DataStax GitHub repository for a complete example.

Native Holt-Winters forecasting

The Holt-Winters forecasting filter no longer depends on the R package, and has been converted to Java. This leverages adaptive alerting work done by the team at Expedia. You can continue to use the filter as-is; no changes are needed to use this forecasting method.

The filter that depends on the R package will be discontinued in a future release.

Enhanced Linkd improvements

Enlinkd has been refactored, improving performance, fixing bugs, and adding a number of new features, most notably new Karaf command-line tools:

  • enlinkd-discovery-bridge-domain: triggers bridge topology discovery

  • enlinkd-run-collection: triggers an SNMP linkd collection

  • enlinkd-reload: restarts Enlinkd

  • enlinkd-reload-config: reload the Enlinkd configuration

  • enlinkd-reload-topology: refresh topology to force an update based on enlinkd data

  • enlinkd-snmp-collect: perform an Enlinkd SNMP group/table collection

Poll Status History enabled by default

Our service monitor infrastructure has had support for storing the up/down history of poll status, but it is now enabled by default, including graph definitions for all included services. This allows you to get historical availability per-service beyond 24 hours.

Experimental asynchronous polling

The poller engine has been updated to support asynchronous polling, allowing OpenNMS to use fewer Pollerd threads to handle the same amount of load. This will become the default in a future Horizon release.

Details on enabling it are in the operation manual.

OpenNMS Plugin API

The OpenNMS Plugin API has been updated to version 1.5.0, which includes additional alarm- and ticketer-related APIs for plugin authors.

Usage statistics

Consent to share collected usage statistics is now assumed by default on new installs. Existing installs respect the setting in effect before upgrading.

For more details, see the admin guide.

Additional self-monitoring

Additional JDBC collections for tracking database performance have been added to the built-in monitoring of the localhost node.

Breaking changes

Newts: DataStax driver for Cassandra upgrade

The DataStax driver for Cassandra was updated from version 3.x to 4.x. This introduces the following breaking changes:

  1. org.opennms.newts.config.datacenter is now required. Set this to the value of your local datacenter for the best performance.

  2. org.opennms.newts.config.core-connections-per-host and org.opennms.newts.config.max-connections-per-host have been removed. Use org.opennms.newts.config.connections-per-host to configure the number of connections per host.

JMX MBean name changes

Because of an upgrade of the Dropwizard Metrics library, some JMX MBeans object names have changed. The built-in data collection configurations have been updated to use the new object names, and will continue to work as-is. If you have other collections, or you are otherwise relying on MBeans, you may need to adjust the object references there. For example, org.opennms.newts:name=search.update has become org.opennms.newts:name=search.update,type=timers, and the type attribute has been added to the object.

Important internal updates

  • The embedded Groovy interpreter has been updated to version 3

  • Newts APIs have been updated to version 3