Add the ability or option to store data collection information under foreignsource/foreignid vs. nodeid

Description

In the past we used nodeid to store collected data because there really wasn't another option. Now that we are doing a lot of work with provisiond, it would be nice to be able to store it under foreignsource/foreignid. Thus in the rare case that a requisition is created missing nodes, and it is synchronized which deletes the nodes, it would be easy to add them back without losing data.

It's non-trivial, since I don't know the best way to handle a node without a foreign source (null-nodeid?) but it would be really helpful in the situation described above.

Acceptance / Success Criteria

None

Lucidchart Diagrams

Activity

Alejandro Galue August 8, 2013 at 4:32 PM

In other words, JRobinDirectoryUtil from integrations/opennms-jasper-extensions is not aware of this feature, and is going to build the paths using the old way with the node's ID. But, there are some reports that are building the RRD paths directly, so they should be fixed too.

Here is the list of affected reports:

  • subreports/TotalBytesTransferredByInterface_subreport1.jrxml (called from TotalBytesTransferredByInterface.jrxml)

  • subreports/DiskUsageForCTXServers_subreport1.jrxml (called from DiskUsageForCTX.jrxml)

  • subreports/95thPercentileTrafficRate_subreport.jrxml (called from SerialInterfaceUtilizationSummary.jrxml)

Alejandro Galue August 8, 2013 at 4:23 PM

This is a really cool feature indeed But I'm wondering what could happen with the report templates after enabling this. I believe that all the reports that expect to read data from JRBs/RRDs are going to fail because they won't be able to find them

Bill Ayres June 24, 2013 at 9:32 PM

I marked this as resolved, although you may want to open another issue for the changes David suggested. Documentation has been added to the wiki. See [[Data collection configuration]]

David Hustace July 22, 2012 at 2:55 PM

Bill, should this be marked as fixed so that Tarus can test it?

Also, I'm wondering if it might be a cool idea to allow users to define the path using a fixed set of variables, such as, in your case: "${foreign-source}/${foreignId}". This way I could decide to only use "${foreignId}" and if I changed the provisioning group it would still have all of its data. Another example would be: "${dpName}/${nodeId}" so that when distributed data collection is implemented, persistance is organized by "distributed pollers".

Bill Ayres July 10, 2012 at 12:50 AM

pushed code to master, commit 9a295d9c8fb2677675eeac1529b2c3b6c2ae32dc. Modified data collectors and webapp to store and retrieve in directory ${rrd.base.dir}/snmp/fs/<foreignSource>/<foreignId> instead of ${rrd.base.dir}/snmp/<nodeId> if foreign source and foreign Id exist and if etc/opennms.properties contains org.opennms.rrd.storeByForeignSource=true. Otherwise data is stored under the nodeId as before.

Fixed

Details

Assignee

Reporter

Labels

Components

Fix versions

Affects versions

Priority

PagerDuty

Created November 7, 2011 at 12:10 PM
Updated January 27, 2017 at 4:20 PM
Resolved June 24, 2013 at 9:32 PM