Alejandro, Is there support for fixing provisioning requisitions? NMS-5571, NMS-5630
Ron -----Original Message----- From: Alejandro Galue [mailto:aga...@opennms.org] Sent: Monday, October 28, 2013 8:37 AM To: OpenNMS Code Development and Bugs Subject: Re: [opennms-devel] install/upgrade non-database components? Hi All, The current code on my branch (upgrade-tools-1.12), contains the following: 1) The online version of the tool for fixing SNMP interface directories (NMS-6056). This is the only implementation enabled. 2) The offline version of the tool for fixing SNMP interface directories (NMS-6056). This is currently disabled, as it requires to request the ifPhysAddr from all the interfaces from all nodes and update the DB prior execute the same operation as the online version. 3) The offline version of the tool for fixing the JMX JRBs/RRDs, data sources, etc. (NMS-1539, NMS-3485, NMS-4592, NMS-4612, NMS-5247, NMS-5279, NMS-5824). This is currently disabled because it requires more tests and implement something to fix the graph templates and metric definitions without any other external tool. About the online update: In theory, if Queued is trying to update a file at the same time the tool is trying to do the same, Queued is going to throw an exception and maybe a small hole will be on the graphs (because the data won't be stored for that timestamp). Other than that I'm not expecting something else but I could be wrong. For all the people that wants to try it on a test server, please let me know and I can give the details about how to do that. Les, about your questions: On Oct 10, 2013, at 12:26 PM, Les Mikesell <lesmikes...@gmail.com> wrote: > On Thu, Oct 10, 2013 at 10:23 AM, Alejandro Galue <aga...@opennms.org> wrote: >> >> My feeling is that if we merge the RRD files online, this could cause >> hundreds (or thousands) of errors on Queued (and queued.log). The >> worst case is what could happen if Queued is updating a file while >> the Upgrading task is replacing the file at the same time (here is >> where I'm not sure what could happen). > > Is there any way to tell Queued to flush a specific file and skip > updates until further notice - and then re-open it? No. >> I'm working on both solutions at the same time, I mean, the offline >> version and the online version of the SNMP Interface Upgrader. Then, >> we can decide which should be the final version to use (as I've >> created an annotation to ignore certain implementations of the OnmsUpgrade >> interface at runtime). > > What kind of timing do you anticipate? I have about 65k rrd files > with storegroup - about 20GB to rewrite. The current implementation basically dumps the data as XML for each old and new file (see "rrdtool dump"), no matter if you're using JRobin or RRDtool, and then navigate through each datapoint defined on each RRA and perform the merge if the data on the old file is not null. I don't have a large environment to test, but the operation is really quick in both cases (i.e., JRobin and RRDtool), but I don't have numbers or enough data to answer how long it should take. >> (B) Can this approach and/or tool be generalized for other rrd edit >> tasks like removing spikes or merging histories of continuing >> services that OpenNMS sees on different devices/interfaces? >> >> >> I believe so, this can be an interesting use case, anyone who wants >> to extend the updater to perform additional operations can do that >> without problems, you just need to create a class (on any package >> inside >> org.opennms.upgrade) that implement the OnmsUpgrade interface, and >> place the JAR on /opt/opennms/lib, and that's it. > > I was thinking more of a way to tell opennms you are going to > externally modify one of the rrd files and when you are done than > embedding everything. I don't think that this tool can do that, but the code that I made to manipulate RRDtool files and JRobin files could help. I made the JAXB version of an RRDtool dump and RRDtool xport. Because JRobin is a small sub-set of all the features that RRDtool supports, the JAXB representation is different in both cases. For RRDtool files, I've created a RRDv3 object. For JRobin I've created a RRDv1 object. I've also added methods and helper functions to migrate from RRDv3 to RRDv1 (of course, if you are not using advanced features like computed data sources, or aberrant behavior detection), from RRDv1 to RRDv3, for merge several single-ds RRDs/JRBs into a multi-ds, to split a mult-ds file into a single-ds files, etc. Basically, the code that I made with the dump/xport representation can give us the opportunity to convert from JRobin world to RRDtool world and viceversa no matter if you're using storeByGroup or not, and because it was implemented with JAXB we could make a ReST API to export raw data (dump) or pre-processed data (xport) no matter if you're using RRDtool or JRobin. Of course, these are just ideas about what we can do with the new RRD code that I made. Alejandro. This e-mail message is being sent solely for use by the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by phone or reply by e-mail, delete the original message and destroy all copies. Thank you. ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk _______________________________________________ Please read the OpenNMS Mailing List FAQ: http://www.opennms.org/index.php/Mailing_List_FAQ opennms-devel mailing list To *unsubscribe* or change your subscription options, see the bottom of this page: https://lists.sourceforge.net/lists/listinfo/opennms-devel