Release 2019.1.0 is the first release in the Meridian 2019 series.
The codename for 2019.1.0 is Mercury.
What’s New in Meridian 2019
Since Meridian 2018, we have introduced a large number of features, most notably Telemetryd (for processing streaming telemetry like NetFlow and sFlow), the Sentinel (for horizontal scaling of telemetry and other processing), and ALEC (for alarm correlation).
On top of that, there have been many other improvements and bug fixes since Meridian 2018.
Meridian 2019 roughly matches the feature set available in Horizon 25.
Architecture for Learning Enabled Correlation
Horizon 23 introduced support for correlation of alarms into meta-alarms called "situations" using an engine called the Architecture for Learning Enabled Correlation.
Situations are OpenNMS alarms that contain one or more triggering alarms, which allows them to be browsed, acknowledged, and unacknowledged just like any other alarm.
A high-level overview of the goal and implementation of correlation can be seen on the ALEC web site.
Changes to the Alarm Lifecycle
Alarm Clearing
Traditionally, OpenNMS has created and resolved alarms in pairs, with one alarm representing the triggering event (or events), and then a second alarm representing the resolution. Horizon 23 changes this default behavior to use a single alarm to track the problem state, incrementing the alarm count when it occurs while in a problem state, or when moving from resolved back into a problem state. Additionally, you can configure OpenNMS to create a new alarm if a problem happens again.
These behaviors are controlled by the introduction of 2 new settings in the opennms.properties
file:
org.opennms.alarmd.legacyAlarmState
- This setting reverts to the old (pre-23) behavior of creating separate alarms for a problem and its resolution.
org.opennms.alarmd.newIfClearedAlarmExists
- This setting forces Alarmd to create a new alarm if a problem reoccurs, rather than incrementing an existing alarm. (Note: this is ignored if
legacyAlarmState
is set totrue
.)
These improvements are covered in a lunch and learn video we published recently, if you would like to learn more.
Alarmd Architecture
To facilitate the implementation of ALEC, alarmd has been rearchitected to use Drools to manage the alarm lifecycle, rather than Vacuumd automations, triggers, and actions.
If are migrating changes to vacuumd-configuration.xml
from an earlier Meridian release, it is strongly recommended you port them to the new Alarmd Drools context. The Drools rules are in the $OPENNMS_HOME/etc/alarmd/drools-rules.d/
directory.
Additionally, we no longer generate alarmCreated
, alarmEscalated
, alarmCleared
, alarmUncleared
, alarmUpdatedWithReducedEvent
, and alarmDeleted
events. Instead, it is recommended that you add Drools rules to react to alarm changes.
For more complicated integrations, we also have a new API — AlarmLifecycleListener
— for reacting to alarm changes.
Kafka Data Collection Sync
In addition to publishing events, alarms, and node inventory to Kafka, we now publish collected time-series data to the Kafka bus as well.
Sentinel
In addition to the Minion, we have added a new container-based subsystem called "Sentinel." The Sentinel is a Karaf container that can be configured to run a subset of OpenNMS daemons as a standalone tool, to aid in horizontal scaling and/or high availability.
Sentinel is designed to run our Karaf/Camel/SQS-based messaging bus, syslog listener, telemetry receiver, and Newts and Elasticsearch persistence.
Node and Interface Metadata
There is now support for associating arbitrary metadata with nodes and interfaces, including configuring arbitrary metadata in the requisition UI.
For details on using the metadata APIs, see the Admin Guide and the Developer Guide.
Elasticsearch 7.x Support
All of the features that leverage integrations with Elasticsearch i.e. event & alarm history, flows & situation feedback have been updated to support Elasticsearch 7.x. Elasticsearch versions before 7.x are no longer supported.
Given the pace of changes and the number of breaking changes between major versions of Elastisearch, we will focus on supporting a single major version of Elasticsearch per release moving forward.
Other Improvements
Since Meridian 2019 is based on Horizon 25, it contains all the fixes and updates that have occurred since Meridian 2018 was created from the Horizon 21 codebase.
For a more complete list of changes included in this release, see the "What’s New" documentation for the following Horizon releases: