2012-05-03 152 views
4

我使用JavaMelody工具來監視我的應用程序,但可用的時間軸設置不合適。這意味着我只想獲得快速時間線的監控分數,例如30分鐘,但JavaMelody中的最低時間範圍爲1天。可能這個功能可以通過編寫自定義插件來解決,但我熟悉該工具API。從RRD轉換爲CSV

JavaMelody以RRD格式生成輸出文件。我想將這些文件轉換爲更常見的格式,如CSV,並使用Excel生成圖表。我試過在Linux下使用'rrdtool dump'命令,但沒有任何效果。我遇到如下錯誤:is not an RRD file

您是否知道從RRD轉換爲CSV的解決方案?


UPDATE

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

我* .rrd文件由JavaMelody工具生成的,所以我認爲這是正確保存。


更新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.[email protected]| 
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 |................| 
+1

您可以粘貼您使用的整個'rrdtool dump'命令嗎?這聽起來不是很有希望的錯誤。 –

+0

我剛剛粘貼了命令行輸出。 – bontade

回答

2

啊,我只是抓住了,你提到你使用rrdtool dump 「Linux下」,暗示RRD文件來自其他地方。這可能是一個排序問題;由rrdtool/librrd創建和操作的RRD文件是依賴於體系結構的。

而且,可以肯定的是,您可能要確認RRD文件的前三個字節是否爲「RRD」。否則,它們實際上不是rrdtool能夠理解的rrd格式。

(要進行檢查,這樣做dd if=usedMemory.rrd bs=1 count=3 2>/dev/null; echo

+0

我應該只是粘貼'dd if = usedMemory.rrd bs = 1 count = 3 2>/dev/null; echo在Linux控制檯?如果是,輸出是:'J' – bontade

+1

那麼,這就解釋了爲什麼'rrdtool dump'說它不是rrd文件。您可能希望在文本編輯器中打開該文件,或查看「hexdump -C usedMemory.rrd」的輸出以查看其中的實際內容,並確保它是您所期望的文件。我查了一些在線文檔,看起來JavaMelody聲稱使用'rrdtool'使用的相同格式的RRD,所以你的'J'從哪裏來就有點神祕。 –

+0

感謝您的幫助。我剛剛粘貼了rrd文件的一些內容。它有關於'JRobin'工具的入口,而不僅僅是RRD。 – bontade

1

我也得到了同樣的錯誤is not an RRD file
但我現在可以在以下步驟中將usedMemory.rrd轉儲爲XML。

  1. 下載從https://github.com/OpenNMS/jrobin
    項目和執行maven pagckage用於生成jrobin-1.6.1-SNAPSHOT.jar
    Java版本:1.8.0_131 & &的Apache Maven的3.5.2
  2. java -jar jrobin-1.6.1-SNAPSHOT.jar rrdtool dump usedMemory.rrd > test.xml