Add JMX Meters to measure and export performance

Description

similar to org.opennms.netmgt.flows.elastic.DocumentEnricher

Acceptance / Success Criteria

None

Lucidchart Diagrams

Activity

Patrick Schweizer June 12, 2020 at 8:48 PM

Patrick Schweizer June 5, 2020 at 6:22 PM

I moved the different bottlenecks to subtasks and made this ticket the umbrella for all optimizations.

Patrick Schweizer June 2, 2020 at 7:54 PM
Edited

Talking to ,

the goal is to make sure the integration layer is as performant as possible. The current structure is optimized for Newts / Cassandra, not for a tag based storage. We want to be able to wrote 40k samples / second.

In order to stress test and profile the system we can use the following commands:
One off:
admin@opennms> collect --persist --node 2 org.opennms.netmgt.collectd.SnmpCollector 127.0.0.1
Stress:
admin@opennms> stress-metrics --interfaces 5 --strings 2 --interval 30 --nodes 10000 --threads 10 --groups 5 --attributes 5

Patrick Schweizer June 2, 2020 at 2:40 PM

I looked into the different caches we have in the TimeseriesIntegrationLayer:

  • SearchableResourceMetadataCache: used byTimeseriesResourceStorageDao. Stores

  • TimeseriesSearcher.metricsUnderResource: (new) caches all Metrics that can be found under a resource (by a wildcard search). Caches results coming from TimeseriesStorage implementation.

  • TimeSeriesMetaDataDao.cache: caches all attributes associated with a resourceId. Caches results from the database.

Patrick Schweizer June 1, 2020 at 8:30 PM

TimeseriesMetaDataDao.storeMetadata cached only on reads, not on writes. I fixed that. We should see now a lot less writes I suppose...

Fixed

Details

Assignee

Reporter

Sprint

Fix versions

Priority

PagerDuty

Created June 10, 2020 at 2:07 PM
Updated July 8, 2020 at 7:40 PM
Resolved July 8, 2020 at 7:40 PM

Flag notifications