It's time once again for OpenNMS On the Horizon.

Since last time, we worked on pyroscope profiling, CircleCI improvements, documentation (Grafana dashboard, Quick Start guide, Trapd, graphQL notification query, requisition REST), Horizon Stream (Minion gateway and heartbeat, operator improvements, JMX, Helm charts, PagerDuty, discovery), Sonar bug fixes, OPA (Poller Config and time-series offheap persistence), SNMPv3 traps, Enlinkd, Graphite time-series, smoke tests, flow classification, Provisiond config validation, SNMP metadata provisioning, Helm improvements, ALEC UI, startup progress bar, and web form fixes.

Github Project Updates

Internals, APIs, and Documentation

  • DJ worked on adding support for Pyroscope profiling
  • Morteza tested out reducing build container sizes for RPM/Debian builds
  • Morteza worked on cleaning up some output in the dynamic config scripts
  • Mark Mahacek worked on the grafana dashboard docs
  • Bonnie and Emily did more work on the quick start guide including performance data, system baseline, and thresholding info
  • Morteza fixed some issues in experimental build triggering in dynamic config
  • Mark Frazier did some more work on the Minion gateway in Horizon Stream
  • Yang Li worked on bringing some JMX code over to Stream
  • Gerald did some more work on Helm charts in Stream
  • I worked on cleaning up some leftover Sonar stuff from DevJam
  • Łukasz continued his work on twin/RPC for the Minion gateway
  • Arthur worked on some SNMP utility and testing code in Stream
  • Emily cleaned up the JDK references and some other formatting in the deployment guide
  • Jeffrey-David Kapp worked on some namespace code for the Keycloak operator in Stream
  • I fixed the ActiveMQ initialization to happen lazily so it doesn't yell if not configured
  • James updated the Stream PagerDuty integration to attach alarm details to the payload
  • Chandra continued his work on discovery in Stream
  • Dmitri worked on poller config support in OPA
  • Freddy continued to work on OPA time-series persistence
  • Arthur and Mark Frazier added Minion heartbeat processing in Stream
  • Alex implemented no-op message processors for ignoring spurious chunks in SNMPv3 traps
  • Bonnie added Trapd to the daemon reference
  • I did a bunch of optimization work in our CircleCI pipeline to reduce network usage
  • Antonio refactored the NetworkBuilder used in Enlinkd tests
  • Antonio worked on Enlinkd per-protocol scheduling intervals
  • Alexander worked on fixing the flapping BSM admin integration test
  • Thomas worked on usage statistics in Stream
  • Dustin did more work on flow classification improvements
  • Dmitri added some validation to Provisiond config loading
  • Scott improved the Graphite time-series adapter to support setting the node in groovy scripts
  • Antonio updated our InetAddress tools to include some Netmask-related utility functions
  • Gerald refactored a bunch of configs related to startup in Stream
  • Sean added support for keeping some metadata when the SNMP provisioning adapter runs
  • Jason Berry worked on a bunch of Horizon Stream CI/CD improvements
  • Morteza worked on security scanning our Docker images when we build them
  • DJ implemented a startup progress bar
  • Antonio worked on an improved bridge topology algorithm in Enlinkd

Web, REST, UI, and Helm

  • I cleaned up some branch merge and other CircleCI stuff in Helm
  • Chinh Le worked on the Horizon Stream events table
  • I worked on updating some dependencies in our JavaScript build
  • Anya worked on filtering in the ALEC UI, as well as some bug cleanup
  • Mike Rose fixed up some UI dynamic import code in Stream
  • Christian added CSRF tokens to a bunch of web forms
  • James added graphQL support for notification queries in Stream
  • Emily updated the requisition REST documentation


Thanks to the following contributors for committing changes since last OOH:

  • Antonio Russo
  • DJ Gregor
  • Emily Marsh
  • Arthur Naseef
  • Benjamin Reed
  • Bonnie Robinson
  • Jason Berry
  • Morteza Ershad-Manesh
  • Yang Li
  • Łukasz Dywicki
  • Mark Frazier
  • Freddy Chu
  • Benjamin Janssens
  • Dmitri Herdt
  • James Hutchinson
  • Christian Pape
  • Chinh Le
  • Sean Torres
  • Dustin Frisch
  • Gerald Humphries
  • Chandra Gorantla
  • Scott Theleman
  • Anya Rybalova
  • Mark Mahacek
  • Mike Rose
  • Alexander Chadfield
  • Jeffrey-David Kapp
  • Thomas Bigger
  • Alex May
  • Rob Ellis
  • Patrick Schweizer

Coming Soon: JIRA Migration

We will be migrating our JIRA issue-tracker from a self-hosted version to Atlassian's cloud version.
I don't have a timeline for this yet, but expect it in the coming months.

If you currently have an account at the OpenNMS issue tracker your account should already be migrated to JIRA Cloud, but you will need to perform a password reset with the "Can't log in?" link before you can log in.

Releases and Roadmap

Upcoming September Releases

OpenNMS is on a monthly release schedule, with releases happening on the second Wednesday of the month.

The next OpenNMS release day is October 12th, 2022.

We currently expect updates to Horizon 30.

Next Horizon: 31 (Q4 2022)

The next major Horizon release will be Horizon 31.

It will contain a number of improvements, including:

  • a refactoring of flow APIs including support for some flow hooks in the plugin API (plugin API 1.1.0+)
  • major improvements and refactoring in Enlinkd's bridge topology mapping and collection scheduling
  • a bunch of improved analytics in our datasources plugin
  • support for Hashicorp Vault in SCV
  • promoting a number of the "UI preview" enhancements to become part of the main UI
  • improvements to the requisitions REST API
  • a new Quick Start Guide in the documentation

Next Meridian: 2023 (Q1 2023)

Meridian 2023 is still reasonably early in its development cycle, but you can expect it to contain, at the very least, the work that's going into Horizon 30.


Note that this is just based on current plans; dates, features, and releases can change or slip depending on how development goes.

The statements contained herein may contain certain forward-looking statements relating to The OpenNMS Group that are based on the beliefs of the Group’s management as well as assumptions made by and information currently available to the Group’s management. These forward-looking statements are, by their nature, subject to significant risks and uncertainties.

...We apologize for the excessive disclaimers. Those responsible have been sacked.

Mynd you, møøse bites Kan be pretti nasti...

We apologise again for the fault in the disclaimers. Those responsible for sacking the people who have just been sacked have been sacked.

Calendar of Events

All Things Open - Raleigh, NC - October 30th through November 2nd, 2022

All Things Open is local to our headquarters, and is a truly fantastic event.
We love it so much, we will be the exclusive live stream sponsor. 😉

We'll also have a booth in the exhibition hall.
A bunch of OpenNMS folks will be attending and/or helping out in the booth, so please be sure to say hi!

Open Source Monitoring Conference - Nuremberg, Germany - November 14th through 16th

The OpenNMS Group is a gold sponsor of OSMC this year, and will have a booth as well.
Stop by and say hello!

Until Next Time…

If there’s anything you’d like me to talk about in a future OOH, or you just have a comment or criticism you’d like to share, don’t hesitate to say hi.

- Ben

Resolved Issues Since Last OOH

  • HELM-346: Docs for 8.0.1 did not publish
  • HS-249: Grafana support in the Operator
  • HS-252: Stabilize local-sample/ & Sync It with Skaffold Build
  • HS-318: GeoMap and Topology Contextual Actionable Intelligence LF Wireframes
  • HS-337: Stats: Create platform module for data choices
  • HS-338: Stats: Make REST call to post data choices to UsageStatsHandler
  • HS-362: FE - Add events and metric to device page
  • HS-363: FE - Use widget to display device event table
  • HS-364: Auto update config to subscribed modules
  • HS-366: Single Keycloak operator instance
  • HS-369: Once opennms/horizon-stream-notification repo has been added to Dockerhub, create a github actions pipeline to publish it
  • HS-379: Add Event Driven Discovery for Trapd
  • HS-394: Notifications: Add alarm to custom details
  • HS-396: Migrate and save JMX config in Json config store.
  • NMS-12629: Trapd is missing in the docs
  • NMS-14158: provide documentation for DCB feature
  • NMS-14220: Leaflet geo-map bug roundup
  • NMS-14221: H30 upgrades should not hurt
  • NMS-14222: Things that need updating to work well with Grafana 8.x
  • NMS-14223: Dependencies that need upgrading in H30
  • NMS-14241: Enable authorized web users to edit config files in OPENNMS_HOME/etc
  • NMS-14251: Make sure the DCB config files are in working order
  • NMS-14647: Cortex TSS release prep
  • NMS-14659: MOS CDR Processor: Tie to node
  • NMS-14670: DCB fails on newly provisioned nodes
  • NMS-14672: Velocloud API v1 / v2 support
  • NMS-14711: Release Work (September)
  • NMS-14718: Duplicate V3 trap security names causing spurious errors on non V3 traps
  • NMS-14752: On saving of the provisiond configuration must be ensured, that all requsition-def's have unique names
  • NMS-14756: Update QS based on ONMSU feedback
  • NMS-14762: Refactor Enlinkd Test NetworkBuilder Class
  • NMS-14764: Set Up Enlinkd schedule time interval based on protocols
  • NMS-14770: MOS CDR Processor: Send to multiple OpenNMS instances
  • NMS-14774: Add network/netmask tools to InetAddressUtils
  • NMS-14775: Ability to Assign Device Configuration Backup to Foreign Source

Jump to section

About the Author: RangerRick

Principal Software Engineer. Manages the release process of OpenNMS Horizon and Meridian, and a bunch of other stuff.