rrdtoolrrd

Transformation from RRD to CSV


I use JavaMelody tool to monitoring my application, but the available timeline settings aren't suitable. It means I want to get monitoring scores for only quick timeline, like 30 minutes, but the lowest time range in JavaMelody is 1 day. Probably this feature can be solved by writing custom plugin, but I'm familiarized with that tool API.

JavaMelody generates output files in RRD format. I want to transform that files to more common format, like CSV, and generate chart with Excel. I've tried to use 'rrdtool dump' command under Linux, but with no effects. I've got errors like: is not an RRD file.

Do you know any solution to transform from RRD to CSV?


UPDATE

  adam@adam-desktop:/tmp/javamelody/car-rental_adam-desktop$ rrdtool dump usedMemory.rrd > filename.xml
  ERROR: 'usedMemory.rrd' is not an RRD file
  adam@adam-desktop:/tmp/javamelody/car-rental_adam-desktop$ rrdtool dump usedMemory.rrd > filename.csv
  ERROR: 'usedMemory.rrd' is not an RRD file

My *.rrd files are generated by JavaMelody tool so I think that are correctly saved.


UPDATE 2

00000000  00 4a 00 52 00 6f 00 62  00 69 00 6e 00 2c 00 20  |.J.R.o.b.i.n.,. |
00000010  00 76 00 65 00 72 00 73  00 69 00 6f 00 6e 00 20  |.v.e.r.s.i.o.n. |
00000020  00 30 00 2e 00 31 00 20  00 00 00 00 00 00 00 3c  |.0...1. .......<|
00000030  00 00 00 01 00 00 00 08  00 00 00 00 4f b9 47 0f  |............O.G.|
00000040  00 75 00 73 00 65 00 64  00 4d 00 65 00 6d 00 6f  |.u.s.e.d.M.e.m.o|
00000050  00 72 00 79 00 20 00 20  00 20 00 20 00 20 00 20  |.r.y. . . . . . |
00000060  00 20 00 20 00 20 00 20  00 47 00 41 00 55 00 47  |. . . . .G.A.U.G|
00000070  00 45 00 20 00 20 00 20  00 20 00 20 00 20 00 20  |.E. . . . . . . |
00000080  00 20 00 20 00 20 00 20  00 20 00 20 00 20 00 20  |. . . . . . . . |
00000090  00 00 00 00 00 00 00 78  00 00 00 00 00 00 00 00  |.......x........|
000000a0  7f f8 00 00 00 00 00 00  41 93 36 05 40 00 00 00  |........A.6.@...|
000000b0  41 e5 03 15 be 00 00 00  00 00 00 00 00 00 00 00  |A...............|
000000c0  00 41 00 56 00 45 00 52  00 41 00 47 00 45 00 20  |.A.V.E.R.A.G.E. |
000000d0  00 20 00 20 00 20 00 20  00 20 00 20 00 20 00 20  |. . . . . . . . |
000000e0  00 20 00 20 00 20 00 20  3f d0 00 00 00 00 00 00  |. . . . ?.......|
000000f0  00 00 00 01 00 00 05 a0  7f f8 00 00 00 00 00 00  |................|
00000100  00 00 00 00 00 00 00 00  00 00 00 21 41 89 70 79  |...........!A.py|
00000110  00 00 00 00 41 92 ae 5a  55 55 55 55 41 8f 9f 49  |....A..ZUUUUA..I|
00000120  95 55 55 55 41 96 43 4d  00 00 00 00 7f f8 00 00  |.UUUA.CM........|
00000130  00 00 00 00 7f f8 00 00  00 00 00 00 7f f8 00 00  |................|

Solution

  • Ah, I just caught that you mentioned that you used rrdtool dump "under Linux", implying that the RRD files came from somewhere else. This could possibly be an endianness problem; the RRD files created and manipulated by rrdtool/librrd are architecture-dependent.

    And, to be sure, you may want to confirm that the first three bytes of your RRD files say "RRD". Otherwise, they're not actually in the format of rrd that rrdtool understands.

    (To check, do something like dd if=usedMemory.rrd bs=1 count=3 2>/dev/null; echo.)