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 http://www.gnu.org/copyleft/fdl.html 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 http://issues.opennms.org.

What’s New in OpenNMS Horizon 25

System Requirements

  • Java 8 through 11: OpenNMS Horizon 25 runs on JDK 8 through 11. We recommend the most recent version of OpenJDK 11.

  • Default Heap Size: The default heap size is now 2GB.

  • PostgreSQL 10 or higher: Horizon 25 requires any supported version of PostgreSQL 10 or higher.

Breaking Changes

The Flow Classification UI accepted invalid ip address values, e.g. 10,192.1,168.1,5.1-160. When upgrading OpenNMS Horizon existing Flow Classification Rules may be considered invalid. In this case they are silently ignored by the Flow Classification Engine. In order to assure no invalid Flow Classification Rules exist, please run the OSGi shell command opennms-classification:list-invalid-rules to list all invalid rules. If there are any invalid rules, they must be manually fixed using the Flow Classification UI. For more details, refer to issue NMS-12422.

PostgreSQL 10

OpenNMS Horizon 25 is supported on PostgreSQL 10 or later.

If you are upgrading from an OpenNMS using an older PostgreSQL version, you can use the pg_upgrade tool to migrate. For details on the migration process, see the PostgreSQL pg_upgrade documentation.

If you are running on a distribution that does not provide PostgreSQL 10 packages by default, you can download packages provided by PostgreSQL instead.

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.

Flows

While working on improvements to flow support we have modified the index templates and it is no longer possible to query flows stored in indices created with prior version of OpenNMS. We will revisit ways to migrate these in a future release.

Minion Packages Combined

The Minion RPM and Debian/Ubuntu packages have been combined into a single package. Previously it was possible to just install the core container and optionally a set of features on top, but in the real world no one used this, and it’s still possible to choose what features are used with configuration.

If you were previously only installing the sub-packages and not installing the wrapper opennms-minion RPM package, you may need to run this command to upgrade cleanly:
$ yum swap 'opennms-minion*' -- install opennms-minion

Sentinel Now Requires an ID and Location

The documentation for setting up a Sentinel already suggested setting ID and Location, but now they are required for tracing.

Helm 4

Technically not a part of OpenNMS, but it’s important to note that Helm 4 introduces a datasource that replaces the "Faults" datasource. Migration of existing dashboards requires a few manual steps; documentation on how to do so will be available in the latest Helm documentation once Helm 4 goes live.

Removed from Horizon 25

  • The Alarm Change Notifier plugin has been removed due to performance problems. Use the Alarm History function instead.

  • The resourcecli tool has been removed in favor of Karaf shell commands to perform the same operations.

Event (and Alarm) Date/Time Formats

Events and alarms previously used the current locale for formatting timestamps. As of Horizon 25.1.0, we now format dates as ISO-8601 date-time with offsets (eg, 2011-12-03T10:15:30+01:00) and we expect dates in incoming events to be the same. This reduces the amount of code we run through trying to figure out date formats while parsing events, and simplifies things to work no matter what locale you are using.

New Features and Improvements

Docker Containers

  • Docker containers are now built automatically as part of our CI process.

  • The horizon Docker container now runs as non-root by default.

Systemd Updates

The OpenNMS, Minion, and Sentinel packages all contain first-class Systemd files for startup. If you’re upgrading from a previous release, you may need to do a systemctl enable <service> (minion, sentinel, etc.) and systemctl daemon-reload for things to start up as expected.

Poller

  • Pollerd now reloads properly with a daemonReload event.

  • Filters that use <include-url> now reload when Pollerd configuration reloads.

  • It is now possible to configure the poller with wildcard configurations that match multiple services. For details, see the Admin Guide section on Service Patterns.

Thresholding

  • Thresholding state is now persisted to the database, and can also be shared with Sentinel.

  • Thresholding can now be applied to streaming telemetry data, including scaling to multiple Sentinel instances.

  • Thresholding expressions now support meta-data

  • Threshold state can be managed through the Karaf shell.

Flows

A large number of improvements have been made to flow support.

  • Flow classification rules are now configurable with custom priorities and custom groups can be created.

  • The node list, node details, and resource graph pages indicate whether flows are available.

  • Basic clock skew detection for flow timestamps has been introduced.

  • Flows can be grouped by monitoring location.

ReST queries and Helm have been enhanced to support new flow features:

  • Support has been added for querying traffic for specific applications over time.

  • Support has been added for querying a list of "Top N" hosts, similar to applications and conversations.

  • Hostnames can now be shown in Helm rather than just IP addresses, when available.

Elasticsearch

  • It is now possible to set a custom prefix for the indices, which allows for multiple OpenNMS instances to share the same cluster.

Detectors, Monitors, and Collectors

  • TTLs can be customized per-detector, monitor, or collector.

  • A JMS/ActiveMQ detector and monitor have been added.

  • The TLS Certificate Monitor now supports using STARTTLS to negotiate.

Reporting

  • The scheduled reporting UI has been updated and improved.

  • It is now possible to configure OpenNMS to integrate with Grafana and schedule PDF reports generated from Grafana dashboards.

  • Time zone is now considered when scheduling reports.

  • Scheduled reports now support multiple recipients.

New or Updated Karaf Shell Commands

The following new commands have been added to support new or existing functionality:

  • events:send - send an OpenNMS event

  • opennms-dns:stress - stress-test the new internal DNS resolver

  • opennms-kv-blob:get - print a record from the blob store

  • opennms-kv-blob:put - inserts a string into the blob store

  • opennms-kv-blob:benchmark - benchmark the internal OpenNMS blob store

  • opennms-kv-json:get - print a record from the JSON store

  • opennms-kv-blob:put - inserts a record into the JSON store

  • opennms-measurements:show-measurements - show measurements data

  • opennms-measurements:show-newts-samples - show raw sample data from Newts

  • opennms-measurements:show-resources - show/filter the resource tree

  • opennms-measurements:delete-resource - delete the measurements and meta-data for a resource

  • opennms-snmp:fit - given an IP address, "fit" that address to an SNMP config profile

  • opennms-snmp:remove-from-definition - remove an IP address from an SNMP config definition

  • opennms-threshold-states:enumerate - list threshold states

  • opennms-threshold-states:details - show the details of a specific threshold state

  • opennms-threshold-states:clear - clear a specific threshold state

  • opennms-threshold-states:clear-all - reset all threshold states

  • provision:import-requisition - import a requisition from a URL

Additionally, a few commands have been updated to have opennms- as their prefix:

  • snmp:show-configopennms-snmp:show-config

  • snmp:walkopennms-snmp:walk

UI Improvements

  • The UI has gone through a refresh, moving to Bootstrap 4 and vastly cleaning up our HTML to make it easier to make further improvements going forward.

  • "Graph All" now works properly even when there are a large number of resources to graph.

  • Node, interface, and service meta-data is now configurable in the requisition UI.

  • The Backshift graph zooming regression introduced with the web asset refactor has been fixed.

  • The rendered graph page can now be searched/filtered to pare down results, and graphs are now lazily loaded.

  • The alarm list can now be filtered by surveillance category.

Development Considerations

Internals

A ton of other internal improvements have been made:

  • The complete node object is now exposed to Scriptd and script policies.

  • A bunch more things have been added to the Karaf health:check command-line.

  • Elasticsearch client performance has been improved by enabling compression where possible.

  • A new DNS resolution service has been introduced internally that should speed up hostname lookups.

  • A new key/value store was added, for internal use in things like thresholding persistence and user session data.

  • The snmp-config.xml file now supports "profiles" for influencing the behavior of IPs that don’t match existing definitions. For details, see the Admin Guide section on SNMP Profiles.

  • Our embedded Drools has been updated to the latest 7.x release.

  • More instrumentation has been added to the Jaeger OpenTracing support introduced in Horizon 24.

  • A ton of performance improvements have been made in various parts of the codebase.

  • 2 new roles have been added:

    • ROLE_REPORT_DESIGNER - use the ReST APIs or UI for manipulating reports and report schedules

    • ROLE_FLOW_MANAGER - use the Rest APIs or UI for managing flow classification rules

Changelog

Release 25.2.1

Release 25.2.0 is the fifth release in the Horizon 25 series.

It contains a number of small improvements as well as a few bug fixes and a security fix for an HQL injection bug. Hat tip to Johannes Moritz for the security report.

The codename for 25.2.1 is Gyōza.

Bug
  • Cannot process SNMPv3 Informs due to random Engine ID associated with users (Issue NMS-12473)

  • api/v2/ifservices endpoint does not expose ID and IpInterface in JSON results (Issue NMS-12505)

  • Downtime model change was not updated in the docs (Issue NMS-12520)

  • Topology Map does not show Geocoordinates anymore (Issue NMS-12531)

  • HQL Injection (Issue NMS-12572)

Enhancement
  • Cleanup Interfaces Tagged for Flows (Issue NMS-12279)

  • Allow multiple IP rules for discontinuous IP ranges for flow classification (Issue NMS-12422)

  • Support signing code in CircleCI (Issue NMS-12557)

Release 25.2.0

Release 25.2.0 is the fifth release in the Horizon 25 series.

It contains a number of bug fixes including a performance fix for topology updating, and an enhancement to the sink API to persist to disk when the Minion can’t reach the broker.

The codename for 25.2.0 is Biscuit Dumpling.

Bug
  • changing GUI date/timeformat breaks requisition update/import date/time display (Issue NMS-12428)

  • Inefficient locking in the TopologyUpdater class (Issue NMS-12443)

  • MIB Compiler fails with Null Pointer Exception (Issue NMS-12459)

  • The Karaf poller:test command is not location aware (Issue NMS-12460)

  • NPE while compiling a MIB (Issue NMS-12472)

Enhancement
  • Sink API: Persistent Off-Heap Storage (Issue NMS-10586)

Release 25.1.2

Release 25.1.2 is the fourth release in the Horizon 25 series.

It contains a number of alarm classification bug fixes and performance improvements, flow enhancements, and more.

The codename for 25.1.2 is Pierogi.

Bug
  • possible issue in JCIFS Monitor - contiously increase of threads - finally heap dump (Issue NMS-12407)

  • Wrong links in the Help/Support page (Issue NMS-12418)

  • Classification Engine reload causes OOM when defining a bunch of rules (Issue NMS-12429)

  • TCP Listeners are broken (Issue NMS-12430)

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

  • Classification UI: Error responses are not shown properly (Issue NMS-12432)

  • Classification Engine: The end of the range is excluded, which is not intuitive (Issue NMS-12433)

  • Ticket-creating automations are incorrectly enabled by default (Issue NMS-12439)

  • Enable downtime model-based node deletion to happen when unmanaged interfaces exist (Issue NMS-12442)

  • Improve alarmd Drools engine performance by using STREAM mode (Issue NMS-12455)

Enhancement
  • Refactoring of the Cassandra installation instructions (Issue NMS-12397)

  • SNMP detector should use snmp profiles (Issue NMS-12406)

  • Allow telemetry flows to balance across Kafka partitions (Issue NMS-12427)

  • Add system test for IpfixTcpParser (Issue NMS-12434)

  • Associate exporter node using Observation Domain Id (Issue NMS-12435)

Release 25.1.1

Release 25.1.1 is the third release in the Horizon 25 series.

It contains a number of bug fixes mostly related to alarm and event processing and potential resource leaks, as well as provisioning enhancements to SNMP profiles.

The codename for 25.1.1 is Bánh bột lọc.

Bug
  • Readiness probe with Minion in Kubernetes with health:check does not work (Issue NMS-12120)

  • AlarmLifecycleListenerManagerIT and AlarmdIT flapping (Issue NMS-12309)

  • Strange behavior on used threads and file descriptors on Minion (Issue NMS-12366)

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

  • Build failure during release for 25.1.0 in CircleCI (Issue NMS-12380)

  • Discovery does not honor exclude-range inside a definition (Issue NMS-12385)

  • Discovery exclude-range is not location-aware (Issue NMS-12386)

  • Update OpenJDK 11.0.4 to 11.0.5 (Issue NMS-12387)

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

  • send-event.pl is broken after OpenNMS 25.1.0 update (Issue NMS-12392)

  • SNMP profile fitting is not triggered in some cases when MINION is involved (Issue NMS-12399)

  • Alarmd fails intermittently and OOMs (Issue NMS-12412)

  • SNMP Remove from definitions fails for definitions with profile label (Issue NMS-12413)

Enhancement
  • Migrate guide to run with Docker from GitHub repo to Installation guide (Issue NMS-12375)

  • Enhance new snmp profiles to allow fitting to nodes inside requisitions without SNMP service associated to any IPs configured (Issue NMS-12396)

  • Use OpenJDK 8 JDK for build environment (Issue NMS-12398)

Release 25.1.0

Release 25.1.0 is the second release in the Horizon 25 series.

It contains a bunch of bug fixes and enhancements, including packaging fixes, BSM updates, alarmd improvements, and much more.

This release contains a couple of breaking changes:

  1. Dates in event XML (in the ReST API and published to the event port) now must be formatted in standard ISO-8601 format (eg, 2019-11-05T14:36:00-04:00).

  2. Scriptd has been changed to execute scripts in a single read-only transaction by default. If you need the ability to write changes to the database or need to do your own transaction management for any other reason, you will need to add transactional="false" to the <scriptd-configuration …​> tag in the scriptd-configuration.xml file.

The codename for 25.1.0 is Momo.

Bug
  • removed service will break BSM web ui (Issue NMS-9322)

  • Event parameters no longer preserve ordering (Issue NMS-9827)

  • The JMX-Cassandra service goes down for all the cluster when a single instance is down. (Issue NMS-10027)

  • deleting a BSM monitor while an alarm is active doesn’t clear the alarm (Issue NMS-10184)

  • default event description is incorrect (Issue NMS-10346)

  • Config tester doesn’t detect missing xml datacollection file (Issue NMS-10396)

  • Minion fails to start on Raspberry Pi (Issue NMS-10447)

  • BSM alarm severity is not being updated (Issue NMS-10578)

  • snmp authentication error traps with Enhanced Linkd / bridge discovery (Issue NMS-10582)

  • Elasticsearch forwarding fails to recover after outage (Issue NMS-10697)

  • Flow rest results for top N queries are not returned in the correct order (Issue NMS-12104)

  • Flow Classification not functioning as expected (Issue NMS-12259)

  • ReST API for meta-data doesn’t support JSON (Issue NMS-12272)

  • UI for meta-data is only present when using the horizontal layout (Issue NMS-12273)

  • Groups disappear in classification UI (Issue NMS-12291)

  • BSM simulation mode does not reset the last state (Issue NMS-12302)

  • Docker image for sentinel runs the process as root (Issue NMS-12311)

  • Docker image for Minion runs with UID 1001 but the minion user has UID 997 (Issue NMS-12312)

  • Web Assets Dependency Rollup 2019-09-24 (Issue NMS-12320)

  • Memory leak in Drools engine for alarmd (Issue NMS-12322)

  • Minion RPM upgrade deletes /opt/minion (Issue NMS-12324)

  • Threshold state keys do not incorporate the collected resource’s instance label (Issue NMS-12329)

  • Reportd generated reports cause: "No bean named '' is defined" in Persisted Reports (Issue NMS-12337)

  • InterfaceNodeCache doesn’t remove deleted nodes immediately (Issue NMS-12338)

  • Delivering a report with "-" in local part of email address is not working (Issue NMS-12342)

  • XMLMarshalException in ipc.log: Unexpected close tag </inst>; expected </instance> (Issue NMS-12343)

  • Update installation guide to CentOS 8 (Issue NMS-12348)

  • Install guide for R-core is broken for CentOS 8 (Issue NMS-12352)

  • Karaf feature install issue with opennms-core-tracing-jaeger (Issue NMS-12359)

  • Fix requisition cache when accessing the Requisitions UI via "Edit in Requisition" (Issue NMS-12360)

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

Enhancement
  • Add more information into BSM alarms (Issue NMS-9352)

  • Refactor the compatibility matrix in the documentation (Issue NMS-9684)

  • Be able to change the number of rows for the pagination control on the Requisitions UI (Issue NMS-9793)

  • Documentation typo for /rest/ifservices on the developers guide (Issue NMS-9842)

  • Add Web-Hook as delivery option (Issue NMS-12153)

  • Refactor Event Timestamps to ISO-8601 Format (Breaking Change) (Issue NMS-12263)

  • Improve robustness of CassandraBlobStore for async operations (Issue NMS-12274)

  • Clearing threshold states via shell should take effect immediately and not require restart (Issue NMS-12277)

  • List Kafka RPC/Sink topics, Expose Metrics on Karaf shell (Issue NMS-12294)

  • Create proper systemd files for OpenNMS, Minion and Sentinel (Issue NMS-12299)

  • Add ability to update definitions when SNMP profile changes (Issue NMS-12307)

  • Fix security vulnerability with jackson-databind (Issue NMS-12308)

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

  • OpenNMS 25 Dependency Still Allows Old PostgreSQL Versions (Issue NMS-12341)

  • Update base container image to use CentOS 8 (Issue NMS-12353)

  • Remove floating OpenJDK dependencies in OCI build (Issue NMS-12354)

  • Detect and help resolve Karaf bootstrap issues (Issue NMS-12356)

  • Update CISCO-ENTITY-SENSOR-MIB threshold trap events to include alarm-data (Issue NMS-12362)

  • switch core/web-assets from yarn to npm (Issue NMS-12363)

  • Collect and display file descriptor statistics via JMX for OpenNMS and Minion (Issue NMS-12364)

Release 25.0.0

Release 25.0.0 is the first release in the Horizon 25 series.

It contains a huge number of bug fixes and enhancements, most notably massive thresholding improvements, big changes to netflow and other streaming telemetry data, reporting and UI updates, plus much more.

The codename for 25.0.0 is Baozi.

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

  • reload Pollerd doesn’t work correctly (Issue NMS-9181)

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

  • GenericResourceType is altering index names on class object initialization (Issue NMS-9702)

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

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

  • HealthCheck should not fail for ElasticSearch if flows are not enabled (Issue NMS-10498)

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

  • Zooming with Backshift is broken (Issue NMS-10635)

  • MonitoredServiceDaoIT test fail due to database (Issue NMS-10643)

  • EventdIT test failure (Issue NMS-10644)

  • DuplicatePrimaryAddressIT logs a failure due to logging assertion (Issue NMS-10645)

  • Reflected file download vulnerability in /api/v2/scanreports (Issue NMS-10703)

  • Insecure cache-control for session cookies (Issue NMS-10704)

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

  • Kafka alarm producer synchronization fails due to missing event (Issue NMS-10724)

  • Documentation broken (Issue NMS-10759)

  • [circleci] Building container images fails intermittently (Issue NMS-10834)

  • Fix version range for maven-jaxb-schemagen-plugin version in root pom (Issue NMS-11760)

  • Sentinel container does not contain integration API in maven repository (Issue NMS-11766)

  • Windows is failing tests due to spurious cleanup errors (Issue NMS-12102)

  • AS is stored as signed int in flow doc (Issue NMS-12105)

  • Add local cache to reverse hostname resolution in flows (Issue NMS-12117)

  • karaf.log appears on the root file system when running Minion/Sentinel on Ubuntu/Debian. (Issue NMS-12125)

  • Sentinel cannot persist Telemetry when running under OracleJDK 11 (Issue NMS-12126)

  • Cannot debug Telemetry persistence on Sentinel (Issue NMS-12127)

  • Outage timeline is empty (Issue NMS-12160)

  • Minion not showing label correctly and label cannot be edited (Issue NMS-12164)

  • WsManWQLDetector, ActiveMQDetector missing setBeanProperties (Issue NMS-12175)

  • sFlow adapter drops flows due to NPE (Issue NMS-12185)

  • BulkRequests should log more details of why it failed (Issue NMS-12188)

  • The Cron Expression is only shown for reports which are created with the new UI (Issue NMS-12189)

  • Fix typo in sonar.sh (Issue NMS-12196)

  • Minion memory leak related to new DNS lookup functionality (Issue NMS-12207)

  • JMX Metrics for Newts disappeared (Issue NMS-12216)

  • Can’t change Minion location in the Provisiond UI (Issue NMS-12217)

  • Changing a nodes location breaks the service polling schedule (Issue NMS-12219)

  • Wrong PID in opennms.pid (Issue NMS-12226)

  • interfaceresolv event token is incorrect (Issue NMS-12227)

  • Kafka RPC: Slow callbacks cause lag on response topics (Issue NMS-12232)

  • WS-MAN doesn’t work with JDK 11 (Issue NMS-12235)

  • Kafka RPC: StackOverflowError while unmarshaling causes processing to halt (Issue NMS-12236)

  • Ops wallboard hanging due to Vaadin session deadlock (Issue NMS-12237)

  • Fix flapping DatabaseReportPageIT (Issue NMS-12241)

  • Invalid timestamps used for CollectionSets generated by telemetryd (Issue NMS-12242)

  • DNS resolved hostname should always be reflected in 'iphostname' field in ipinterface table (Issue NMS-12249)

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

  • DefaultReportWrapperService: failed to run or render report (Issue NMS-12258)

  • Rewrite test in ScheduleOutageIT for new UI (Issue NMS-12264)

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

  • EnhancedLinkd-Thread-x-of-x - Null Pointer Exception (Issue NMS-12267)

  • ScriptPolicy scripts encounter LazyInitializationException on calling node.getSnmpInterface() (Issue NMS-12268)

  • Remove old comment from data source configuration (Issue NMS-12270)

  • Fix usage description of vmwarereqtool (Issue NMS-12275)

  • Poller take a long time to startup/initialize on large systems (Issue NMS-12285)

  • Ordering of classification groups does not work (Issue NMS-12286)

  • Default settings in container image don’t write RRD files (Issue NMS-12290)

  • Grafana report generation is timing out (Issue NMS-12297)

  • Default "90% Interface Throughput" Threshold Doesn’t Work (Issue NMS-12301)

  • ConcurrentModificationException when cloning events (Issue NMS-12306)

Enhancement
  • Remove alarm-change-notifier plugin (Issue NMS-10658)

  • Enforce VertexRef to be immutable (Issue NMS-11138)

  • View traffic for specific hosts over time (flows) (backend work) (Issue NMS-11153)

  • Initial CircleCI pipeline (Issue NMS-11157)

  • Update flow indicators for SNMP interfaces to link to deep dive tool (Issue NMS-11169)

  • Refactor GraphProvider to return Graph instead of being the Graph itself (Issue NMS-11264)

  • Design new header for PDF reports (Issue NMS-11305)

  • Edges should allow to contain vertices of different namespaces (Issue NMS-11343)

  • View traffic for specific conversations over time (flows) (backend work) (Issue NMS-11345)

  • Core structure/API of new Graph Service (Issue NMS-11366)

  • Implement domain specific graph objects in New Graph service (Issue NMS-11408)

  • View traffic for specific applications over time (flows) - back end work (Issue NMS-11458)

  • Use composite aggregation instead of convo_key field from flow documents (Issue NMS-11473)

  • Provide new GraphProvider implementation for the ApplicationTopologyProvider (Issue NMS-11506)

  • Indicators for nodes with flow data (Issue NMS-11523)

  • The GraphService interface should return GenericGraph instead of Graph<?, ?> (Issue NMS-11554)

  • Provide capability to expose GraphContainerProviders with only one graph (SingleGraphContainerProvider) (Issue NMS-11574)

  • Make GraphRepository accessible via OSGI (Issue NMS-11575)

  • Make GraphRepository persist collections (Issue NMS-11624)

  • Implement ReST Service for the new Graph Service (Issue NMS-11636)

  • Search for nodes that have flow data (Issue NMS-11654)

  • Refactoring Docker Container Images towards Horizon 25 (Issue NMS-11719)

  • Run container image as non-root (Issue NMS-11720)

  • Replace custom bash templating with Confd and streamline entrypoint script (Issue NMS-11721)

  • Replace current (Spring Webflow) Reporting UI with an angular implementation (Issue NMS-11723)

  • CircleCI (Issue NMS-11830)

  • Thresholding for streaming metrics & more (Issue NMS-11834)

  • Project Drift Enhancements (Issue NMS-11836)

  • Grafana Integration (Issue NMS-11844)

  • Enterprise Reporting Enhancements (Issue NMS-11861)

  • Grouped flow classification rules (Issue NMS-11975)

  • Make Graph immutable (Issue NMS-11985)

  • Skew detection for flow timestamps (Issue NMS-11993)

  • Run system tests using OpenJDK 11 (Issue NMS-11995)

  • Top N hosts (flows) (Issue NMS-11998)

  • Dynamically change a node’s location (Issue NMS-12053)

  • Customize priority of flow classification rules (Issue NMS-12058)

  • Flow classification role (Issue NMS-12065)

  • Add support for sending events from a Minion (Issue NMS-12078)

  • Hostname resolution for flows (Issue NMS-12087)

  • Provide search capabilities (Issue NMS-12092)

  • KPIs for resource graphs (Issue NMS-12095)

  • Migrate system tests to use TestContainers framework (Issue NMS-12107)

  • Remove hack from opennms-spring-extender to expose ServiceRegistry (Issue NMS-12122)

  • Upgrade Bootstrap to latest 4.3.x version (Issue NMS-12124)

  • Allow tarball installation in Docker images for Horizon (Issue NMS-12133)

  • Add the ability to trigger a requisition import via the Karaf shell (Issue NMS-12135)

  • Store and read thresholding configuration from PostgreSQL (Issue NMS-12140)

  • Add support for sending events from Sentinel (Issue NMS-12141)

  • Stickiness for distributed processing in telemetryd (Issue NMS-12142)

  • Share thresholding state across Sentinels (Issue NMS-12143)

  • Create Jasper report templates for Grafana dashboards (Issue NMS-12144)

  • Improve Grafana report rendering speed (Issue NMS-12145)

  • Implement easier datetime selection (Issue NMS-12147)

  • Consider timezone when scheduling reports (Issue NMS-12148)

  • Allow multiple recipients when delivering/scheduling a report (Issue NMS-12149)

  • Add ability to edit existing scheduled reports (Issue NMS-12150)

  • Allow for searching a dashboard (Issue NMS-12152)

  • Easier Schedule Definition (Issue NMS-12154)

  • Improve performance of hostname resolution for flows (Issue NMS-12157)

  • Remove Legacy Database Reports (Web Flow) (Issue NMS-12158)

  • UsersRestService: /users/whoami returns 404 on ldap authenticated user (not in users.xml) (Issue NMS-12159)

  • User conceptualizes profile-fitting for SNMP across enterprise (Issue NMS-12167)

  • User provisions nodes with SNMP profiles in place (Issue NMS-12169)

  • Grafana reporting: Render exceptions in images instead of aborting (Issue NMS-12170)

  • Collect and graph packet reception rates for telemetryd listeners (Issue NMS-12182)

  • Allow developer to push OCI’s to docker hub from arbitrary branches (Issue NMS-12187)

  • Enable flow UDP listener by default on Minion and OpenNMS (Issue NMS-12190)

  • Upgrade Drools to latest 7.x release (Issue NMS-12191)

  • Grafana Reporting: Add time to date range in report header of template (Issue NMS-12200)

  • Show configured rule groups (Issue NMS-12212)

  • Edit (CRUD) rule groups via rest & gui (Issue NMS-12213)

  • Add reply-to field to notification emails (Issue NMS-12224)

  • Ensure the reporting jar for jasperstudio is still working and containing all the relevant jars (Issue NMS-12229)

  • Verify Database Reporting Documentation is still up to date (Issue NMS-12230)

  • Dependency based testing (Issue NMS-12233)

  • Update minimum required version of PostgresSQL for H25 (Issue NMS-12238)

  • Report scheduler should be disableable (Issue NMS-12240)

  • Add support for meta-data fields in thresholding expressions (Issue NMS-12247)

  • Manage persisted threshold state via shell (Issue NMS-12248)

  • Increase default heap size to 2GB (Issue NMS-12276)

  • Expose Kafka Lag on Sink/RPC through Karaf shell (Issue NMS-12295)

  • Expose RPC/Sink Metrics on Karaf shell (Issue NMS-12296)

  • Expose health:check via ReST (Issue NMS-12298)

  • Add a JMS broker monitor (Issue NMS-7188)

  • Expose the complete OnmsNode object in Scriptd to avoid LazyInitializationExceptions (Issue NMS-8294)

  • Document RPC TTL tuning (Issue NMS-10376)

  • Redesign default threshold events (Issue NMS-10672)

  • Filter alarm list by surveillance categories (Issue NMS-10695)

  • use sevntu-checkstyle-maven-plugin from maven-central (Issue NMS-10717)

  • use org.asteriskjava:asterisk-java from maven-central (Issue NMS-10718)

  • Angular requests do not handle 401 responses from the OpenNMS backend (Issue NMS-10719)

  • Increase logging clarity for flow processing (Issue NMS-10723)

  • Support compression in JestClient for Elasticsearch (Issue NMS-10859)

  • Publish Docker images from CircleCI to DockerHub (Issue NMS-11722)

  • Improve the sample content for the NXOS GPB Parser Groovy Script. (Issue NMS-11759)

  • Design thresholding support for telemetryd on Sentinel (Issue NMS-11776)

  • Thresholding support for push metrics (Issue NMS-11797)

  • View traffic for specific conversations over time (flows) (frontend work) (Issue NMS-12074)

  • Provide possibility to add Grafana Instances (Issue NMS-12075)

  • View traffic for specific applications over time (flows) - front end work (Issue NMS-12076)

  • View traffic for specific hosts over time (flows) (frontend work) (Issue NMS-12077)

  • Support wildcards in service names (Issue NMS-12080)

  • Refactor threshd out of opennms-services (Issue NMS-12081)

  • Configurable index name for Event & Alarm Forwarder (Issue NMS-12082)

  • Add a UI to edit meta-data in requisition (Issue NMS-12083)

  • Custom TTLs for detectors, monitors and collectors (Issue NMS-12096)

  • Update Elasticsearch integrations to support ES 7.x (Issue NMS-12099)

  • Update Webpack Build to Latest Babel and TypeScript (Issue NMS-12130)

  • Enhance CircleCI workflow to reduce build times and tests (Issue NMS-12136)

  • Add SonarQube Code Coverage to CircleCI Workflow (Issue NMS-12163)

  • Create feature to install thresholding service on sentinel (Issue NMS-12180)

  • Postgres KeyValueStore implementation via JDBC (Issue NMS-12181)

  • Update warmerge plugin dependency to 0.5 (Issue NMS-12194)

  • Enhance Jaeger OpenTracing Logging with tag for thread name (Issue NMS-12195)

  • Upgrade Kafka components to 2.3.0 (Issue NMS-12203)

  • Add enhancements to DNS Resolver and Circuit Breaker (Issue NMS-12215)

  • Leverage telemetry sequencing for better thresholding performance (Issue NMS-12243)

  • Remove session lock from Drools in alarmd (Issue NMS-12244)

  • Karaf shell command for benchmarking performance of BlobStore (Issue NMS-12245)

  • Add support for STARTTLS to TLS certificate monitor (Issue NMS-12252)

  • Resource Graphs : Graph Selection fails to render when many resources are selected (Issue NMS-12256)

  • split shell utilities into a separate module (Issue NMS-12266)

  • allow using fetched RPMs in build_container_image.sh (Issue NMS-12271)

  • Add documentation about classification rule & group sorting (Issue NMS-12278)

  • Migrate resourcecli to the Karaf shell (Issue NMS-12280)

  • Add Karaf shell command to view raw sample stored in Newts (Issue NMS-12281)

  • Be able to execute ICMP requests through Java when running as non-root (Issue NMS-12283)

  • Update Minion packaging to use single RPM/Deb (Issue NMS-12300)