OpenNMS Meridian Development Team

Tarus Balog <>

David Hustace <>

Benjamin Reed <>

Copyright © 2004-2019 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-2019 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

OpenNMS Meridian 2018

System Requirements

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

  • PostgreSQL 9: Meridian 2018 requires PostgreSQL 9.x, version 9.2 or higher.

What’s New in Meridian 2018

The biggest addition in Meridian 2018 is official support for the Minion. Minion is an agent-like tool for remote monitoring isolated networks as if OpenNMS could reach them locally.

On top of that, there have been many smaller improvements and enhancements since Meridian 2017.

Meridian 2018 roughly matches the feature set available in Horizon 21 and parts of Horizon 22.

Important Upgrade Notes
  • org.opennms.newts.nan_on_counter_wrap: If you are using Newts, returning NaN when a counter-wrap is encountered now defaults to true. If you relied on the old behavior, you can change it back by setting org.opennms.newts.nan_on_counter_wrap=false in a file in

  • Event parameters have been moved to their own table, rather than being embedded (preformatted) in the events table. If you have a large number of events and/or event parameters in your database, the conversion while running install may take as long as an hour or even more. It is recommended that you archive and delete old events you do not need anymore before upgrading.

Breaking Changes
  • NMS-9303: Deprecated Capsd and Linkd event definitions are removed. Otherwise unused event definitions are also cleaned up and removed from the code and configurations. For a detailed list of all removed events see NMS-9303.

  • Elasticsearch 1 API: The old Elasticsearch API has been removed in favor of the Elasticsearch ReST plugin, which should support most Elasticsearch API versions. Instructions on configuring the Elasticsearch ReST plugin are available in the Administrators Guide.

  • Property format change of opennms.alarmTroubleTicketLinkTemplate: Originally the opennms.alarmTroubleTicketLinkTemplate defined in $OPENNMS_HOME/etc/ requires the full <a href="…​">${id}</a> link to be configured. This is changed to the ticketer system url, e.g.${id} instead of <a href="${id}">${id}</a>. If the opennms.alarmTroubleTicketEnabled is true then the opennms.alarmTroubleTicketLinkTemplate must be updated as well in order to not break the link to an external ticketing system on the Alarm Details Page.

  • Event parameters: There are a few side-effects of the event parameter changes.

    • When you view or retrieve an alarm it will always have the parameters of the newest event associated with it.

    • Vacuumd no longer honors the add-all-parms attribute on an action-event.

  • Changes to TCPAddress and UDPAddress format in eventd-configuration.xml: When Eventd was converted to use Camel under the covers, the format for listening on all interfaces changed from a wildcard (*) to Note that despite looking like an IPv4 format, the JVM interprets as listening on all interfaces, IPv4 and IPv6.

New Features
  • Minion: OpenNMS Meridian now supports running Minions.

  • IBM Tivoli Event Integration Facility: Support has been added to bridge EIF events into OpenNMS Horizon. (more details)

  • Asset Topology Provider: The Asset Topology Provider generates a GraphML topology based on node metadata including asset fields. (more details).

  • Alarm Sounds: The web UI can now optionally flash and play an alert sound when alarms are created and optionally updated. (more details).

  • ReST Updates: A new experimental ReST API (/opennms/api/v2) has been enabled which supports JEXL.

  • The topology UI now supports scriptable vertex status.

  • Alarm Northbounders: There are new alarm northbounders for running arbitrary BSF scripts or forwarding to Drools.

  • Web UI: It is now possible to customize the date format used in the UI. You can configure it by overriding the org.opennms.ui.datettimeformat property in

  • Hawtio: Hawtio is now included as an optional webapp package (opennms-webapp-hawtio) for convenience.

  • IFTTT: Support has been added for triggering IFTTT events based on alarms.


New or updated trap definitions have been added for the following classes of devices:




  • Other IETF traps

Other Improvements
  • The Karaf OSGi container has been upgraded from 2.x to 4.1.5.

  • The IPLIKE C and Pl/pgsql versions have been cleaned up and normalized to work the same between implementations.

  • Many ActiveMQ/Camel/Kafka/etc. RPC-related APIs have been cleaned up and improved.

  • Much of the data collection infrastructure has been updated and cleaned up as part of adding and improving Minion support.

  • Asset addresses are now resolved to coordinates during provisioning, rather than at runtime.

  • A number of improvements have been made to RADIUS support.

  • It is now possible to reload Drools configuration without restarting OpenNMS.

  • Many improvements were made to Enlinkd, especially in the bridge discovery code.

  • Drools has been updated to 7.x. It should be backwards compatible with existing 6.x-based Drools configurations.

  • Many other small enhancements and fixes for the topology UI.

Release Meridian-2018.1.15

Release 2018.1.15 is a tiny update containing a logging fix in Provisiond and an update to allow for choosing a layer when linking to the topology UI.

The codename for 2018.1.15 is Cyclone.

  • Cannot define a specific layer in topology app URL (Issue NMS-12431)

Release Meridian-2018.1.14

Release 2018.1.14 is a small update to 2018.1.13 that fixes a few bugs including a fix to syslog date parsing, Drools fixes, and a few other changes.

The codename for 2018.1.14 is Earthquake.

  • Syslog incorrect dates being parsed into database (Issue NMS-10605)

  • Cannot use poller:poll karaf command with WsManMonitor through Minions (Issue NMS-12365)

  • Upstream Drools Bug: From with modify fires unexpected rule (Issue NMS-12367)

  • "Page Not Found" in alarm-list when choosing number of alarms in dropdown-list (Issue NMS-12379)

  • Elasticsearch event forwarder manipulates in-flight event (Issue NMS-12390)

Release Meridian-2018.1.13

Release 2018.1.13 is a small update to 2018.1.12 that fixes a few UI bugs.

The codename for 2018.1.13 is Flood.

  • Listing monitoring locations from the administrative WebUI is not working (Issue NMS-12377)

  • Availability boxes on node pages including sub pages differ (Issue NMS-12321)

Release Meridian-2018.1.12

Release 2018.1.12 is a small update to 2018.1.11 that fixes a number of (mostly UI) bugs.

The codename for 2018.1.12 is Hurricane Force.

  • "Graph all" fails with 'Request Header Fields Too Large' error (Issue NMS-8712)

  • No class found exception in OSGi for org.osgi.service.jdbc.DataSourceFactory (Issue NMS-9341)

  • Updating external lists referenced by include-url requires restart OpenNMS (Issue NMS-10071)

  • Telephone PIN Field in User Details is Misplaced (Issue NMS-10073)

  • Cannot change the type of a scheduled outage (Issue NMS-12255)

  • Short outages are not visible in Availability-Bar (Issue NMS-12262)

  • vmwarereqtool freezes and never return to the prompt after is executed (Issue NMS-12265)

  • On the scheduled outage UI, the day is displayed as null for weekly schedule (Issue LTS-233)

  • Using special characters on the scheduled outages name breaks the UI (Issue LTS-234)

Release Meridian-2018.1.11

Release 2018.1.11 is a small update to 2018.1.10 that adds improved diagnostics for JMS RPC and fixes a few other small bugs.

The codename for 2018.1.11 is Violent Storm.

This update modifies the file in $OPENNMS_HOME/etc. This is generally not a user-modified file and should always be overwritten, but if you are in the unlikely situation of modifying in your local environment, make sure you incorporate the update.
  • DNS Requisition import fails if location is specified (Issue NMS-11748)

  • Drools engine hangs on shutdown (Issue NMS-12201)

  • Improve diagnostics and resiliency of JMS RPC (w/ embedded ActiveMQ) (Issue NMS-12222)

Release Meridian-2018.1.10

Release 2018.1.10 is a small update to 2018.1.9 that fixes a KSC report search issue, and adds a tool for evaluating config changes.

The codename for 2018.1.10 is Storm.

  • KSC Reports search box on home page is case sensitive (Issue NMS-12137)

  • Add a command to show configuration diffs (Issue NMS-12129)

Release Meridian-2018.1.9

Release 2018.1.9 is a small update to 2018.1.8 that fixes an issue with timeline graphs in the node details page.

The codename for 2018.1.9 is Strong/Severe Gale.

  • Timeline missing for service names including slashes (Issue NMS-12097)

Release Meridian-2018.1.8

Release 2018.1.8 is an update to Meridian 2018.1.7. It contains a few UI fixes and security updates, as well as a fix for memory leaks in Drools config reloading, WS-Man monitoring, and the JMX collector.

The codename for 2018.1.8 is Gale.

  • Memory Leak on Drools while reloading config (Issue NMS-10678)

  • Node detail page renders with no content when invalid node ID specified (Issue NMS-10679)

  • Apparent memory leak in JMX collector, possibly restricted to "weird" JMX transports (Issue NMS-10684)

  • CVE-2018-20433: XXE Vulnerability in c3p0 < (Issue NMS-10694)

  • Memory leak in WS-Man (Issue NMS-10696)

  • Jetty HTTPS selectors can become unresponsive following CancelledKeyException (Issue NMS-10701)

  • Reflected XSS vulnerability in notification/detail.jsp and outage/detail.htm (Issue NMS-10707)

Release Meridian-2018.1.7

Release 2018.1.7 is an update to Meridian 2018.1.6. It contains a few changes including UI updates and an SNMP loop bug that could cause out-of-memory crashes.

The codename for 2018.1.7 is High Wind.

  • Cannot run Minion as non-root (Issue LTS-231)

  • ROLE_PROVISION doesn’t work on the UI when the ACL feature is enabled. (Issue NMS-9786)

  • Search on KSC Reports page in WebUI does not work (Issue NMS-10416)

  • Incorrect date formatting in (Issue NMS-10602)

  • The MIB Compiler is unable to parse certain MIBs (Issue NMS-10609)

  • ArrayIndexOutOfBoundsException during error handling in SNMP MIB Compiler (Issue NMS-10647)

  • When editing a surveillance category from Admin flow, lists of nodes are not sorted by node label (Issue NMS-10654)

  • Karaf shell history thrown out with bathwater on upgrade (Issue NMS-10664)

  • Improve test coverage of SNMPv3 traps and informs (Issue NMS-10630)

  • Allow the "step" (or interval) to be referenced from a Measurement API expression (Issue NMS-10633)

  • "Event text contains" should search beyond eventlogmsg (Issue NMS-8444)

Release Meridian-2018.1.6

Release 2018.1.6 is an update to Meridian 2018.1.5. It contains a number of changes including a ReST issue with truncated numbers, 3rd-party JDBC support in the Minion, a performance fix for the Measurements API, and a fix for bad (looping) SNMP agents.

The codename for 2018.1.6 is Strong Breeze.

  • Collection results via Minion is limited to MAX_INT (Issue NMS-10516)

  • JDBC via Minion fails to find 3rd party classes (Issue NMS-10559)

  • Poor performance when using filters in the Measurements API (Issue NMS-10589)

  • Update webapp copyright dates to 2019 (Issue NMS-10591)

  • Bad response from SNMP agent leads to infinite loop in SNMP tracker (Issue NMS-10621)


Release Meridian-2018.1.5

Release 2018.1.5 is an update to Meridian 2018.1.4. It contains a number of bug fixes including fixes for sending notifications for events without associated nodes, XSS issues, and more. It also includes a number of performance improvements.

The codename for 2018.1.5 is Fresh Breeze.

  • JDBC collector event reason provides no useful information (Issue NMS-9633)

  • syslog events are creating notifications and disregarding rules in place (Issue NMS-10486)

  • Node page very slow to load for nodes with more than 1000 events (Issue NMS-10506)

  • SNMP configuration UI should select location "Default" by default, not the first location alphabetically (Issue NMS-10514)

  • Wallboard URLs with board name should be permalinks, but return "Nothing to display" instead (Issue NMS-10515)

  • Event parameters table have strong limits for the columns (Issue NMS-10525)

  • Cross-Site Scripting: Reflected (Issue NMS-10546)

  • Cross-Frame Scripting (Issue NMS-10547)

  • syslog parsing of messages without a year will sometimes infer the wrong year (Issue NMS-10548)

Release Meridian-2018.1.4

Release 2018.1.4 is an update to Meridian 2018.1.3. It contains a number of bug fixes and a few enhancements, including a bunch of performance fixes to topology maps and a number of other smaller changes.

The codename for 2018.1.4 is Moderate Breeze.

  • BestMatchPingerFactory returns NullPinger when better options are available (Issue NMS-9659)

  • When selecting a vertex which is neither visible nor in focus the ui state is stuck (Issue NMS-10451)

  • Building the menu takes forever if a visible node has an invalid ip address set (Issue NMS-10452)

  • "Use Default Focus" may not show the "add nodes manual" indicator if "getDefaults().getCriteria()" returns empty list rather than null (Issue NMS-10453)

  • Kafka Producer: Sync timing issues cause erroneous deletes (Issue NMS-10474)

  • When using the events:stress command, the node-id or interface passed as parameters are ignored when using jexl (Issue NMS-10475)

  • Alarm Dashlet CriteriaBuilder In-Restriction not working (Issue NMS-10479)

  • Performance problems with the Topology Map on large networks (Issue NMS-10369)

  • Find out why intial loading of the topology map takes so long, fix for CDP (Issue NMS-10398)

  • Apply initial loading improvements to IsIs, lldp, ospf protocols (Issue NMS-10439)

  • Allow PostgreSQL 11.x (Issue NMS-10450)

  • Support Additional EIF Protocol Version (Issue NMS-10454)

  • Meassure and improve performance of Interface loading and mapping (Issue NMS-10459)

  • Meassure and improve performance of Cdp/Lldp/IsIsElement loading (Issue NMS-10487)

Release Meridian-2018.1.3

Release 2018.1.3 is an update to Meridian 2018.1.2. It contains a number of bug fixes and a few enhancements, including additional HTTP proxy support, reliability updates, and UI performance improvements.

The codename for 2018.1.3 is Gentle Breeze.

  • Other classes that use Http (Issue NMS-10379)

  • Sink API drops messages when there is no connectivity with Kafka (Issue NMS-10395)

  • Discovery UI should not allow selection of Minions as Foreign Source (Issue NMS-10400)

  • Find out why selecting a node takes so long in a big topology (Issue NMS-10419)

  • Typo in BSFMonitor Documentation (Issue NMS-10428)

  • Default Metaspace configuration is insufficient (Issue NMS-10437)

  • Improve performance of node search (Issue NMS-10445)

  • Change eventconf for newSuspect to include location name in logmsg (Issue HZN-814)

  • Be able to use Proxy for any Monitor or Collector that uses HttpClient (Issue NMS-9710)

  • Detect and Attempt to Restart Failed Drools Engines (Issue NMS-10363)

Release Meridian-2018.1.2

Release 2018.1.2 is an update to Meridian 2018.1.1. It contains a number of bug fixes and a few enhancements, including improvements to VMware connection pooling.

The codename for 2018.1.2 is Light Breeze.

  • Wrong data type for certain Cassandra JMX counters (Issue NMS-10352)

  • Cannot override TTL when running the Karaf Command collections:collect through Minions (Issue NMS-10367)

  • Erroneous INFO-level log messages during every forced node rescan (Issue NMS-10370)

  • Wrong JMX MBeans for minions (Issue NMS-10372)

  • doesn’t understand newer JDK output (Issue NMS-10401)

  • int overflow in InstallerDb causes bamboo failures (Issue NMS-10402)

  • Be able to use Proxy for any Monitor or Collector that uses HttpClientWrapper directly (Issue NMS-10312)

  • Be able to use Proxy for any Monitor or Collector that uses HttpClient via UrlFactory (Issue NMS-10313)

  • Improve concurrency in Vmware Connection Pool (Issue NMS-10373)

Release Meridian-2018.1.1

Release 2018.1.1 is an update to Meridian 2018.1.0. It contains a few bug fixes and enhancements.

The codename for 2018.1.1 is Light Air.

  • Minions without nodes should show "unknown" status (Issue NMS-10338)

  • navbar.ftl not rendering (Issue NMS-10342)

  • add polling interval definition on service UI (Issue NMS-9747)

  • Improve CDP topology calculation performance (Issue NMS-10317)

  • Memory related env-variables from /etc/sysconfig/minion are not honored (Issue NMS-10332)

  • Manage Minions page should link to the node for the minion (Issue NMS-10296)

Release Meridian-2018.1.0

Release 2018.1.0 is the first release in the Meridian 2018 series.

The codename for 2018.1.0 is Calm.

  • maxRetCode in HttpDetector does not work (Issue NMS-3974)

  • VMWare-Center-Monitoring make for every virtual machine a login/logout (Issue NMS-8204)

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

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

  • Content-Type tag wrong in emailed reports (Issue NMS-9027)

  • The upgrade task for fails because of the read-only attribute (Issue NMS-9267)

  • Topology on Map is not properly displayed (Issue NMS-9288)

  • Exceptions in Bridge Discovery (Issue NMS-9557)

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

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

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

  • 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)

  • Radius Login Problem (Issue NMS-10212)

  • Trapd does not validate config against XSD (Issue NMS-10242)

  • Drools correlation engine do not always respond to targeted reloadDaemonConfig events (Issue NMS-10257)

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

  • Change in JMS NBI Date Format (Issue NMS-10282)

  • NoClassDefFoundError for net/sf/json/JSONSerialize with the JSON collector on Minion (Issue NMS-10286)

  • DefaultProvisionService logs noisily for monitored service having state "N" (Issue NMS-10291)

  • Doughnut chart shows certain closed outages as "current" (Issue NMS-10293)

  • KSC Report Changes Destroys Existing Reports (Issue NMS-10309)

  • Minions can’t be deleted from minion menu (Issue NMS-10321)

  • Remove Telemetryd from the configuration files to avoid confusions (Issue LTS-223)

  • Release notes in Help / Support links to 2015 (Issue LTS-214)

  • UI stack trace is truncated (Issue NMS-7555)

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

  • Make hawtio available for OpenNMS as installable RPM/DEB (Issue NMS-9858)

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

  • Subsume "Event Configuration How-To" from wiki into admin guide (Issue NMS-9926)

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

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

  • Normalize date formats across the WebUI (Issue NMS-10072)

  • 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)

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

  • Two Port Bridge - Topology mismatch (Issue NMS-10225)

  • use user defined time zone for date formatting (Issue NMS-10228)

  • render date for Javascript with moment.js (Issue NMS-10233)

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

  • apply centralized datetime rendering to freemarker template(s) (Issue NMS-10239)

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

  • Update log4j2.xml with kafka logging (Issue NMS-10269)

  • Syslog messages should default to using the time at which they were received (Issue NMS-10271)

  • Syslog messages should default to being associated with the hosts from which they were received (Issue NMS-10272)

  • implement minion "status" field (Issue NMS-10295)

  • expose datetimeformat in InfoService REST Endpoint (Issue NMS-10301)

  • Set the default resource graph time range to "Last Day" (Issue NMS-10324)