【问题标题】:Transformation from RRD to CSV从 RRD 到 CSV 的转换
【发布时间】:2012-05-03 18:47:45
【问题描述】:

我使用 JavaMelody 工具来监控我的应用程序,但可用的时间线设置不合适。这意味着我只想获得快速时间线的监控分数,比如 30 分钟,但 JavaMelody 的最低时间范围是 1 天。可能这个功能可以通过编写自定义插件来解决,但我熟悉那个工具 API。

JavaMelody 生成 RRD 格式的输出文件。我想将这些文件转换为更常见的格式,如 CSV,并使用 Excel 生成图表。我尝试在 Linux 下使用 'rrdtool dump' 命令,但没有任何效果。我遇到如下错误:is not an RRD file

您知道从 RRD 转换为 CSV 的任何解决方案吗?


更新

  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

我的 *.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.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  |................|

【问题讨论】:

  • 您能粘贴您使用的整个rrdtool dump 命令吗?这听起来不像是一个很有希望的错误。
  • 我刚刚粘贴了命令行输出。
  • Jrobin 虽然提供与 RRDTool 相同的功能,但不会生成与 RRDTool 二进制兼容的 RRD 文件。所以你不能使用 rrdtool 二进制文件来操作它们。始终使用 JRobin 工具转储到 XML。

标签: rrdtool rrd


【解决方案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 &gt; test.xml

【讨论】:

    【解决方案2】:

    啊,我刚刚发现你提到你在“Linux 下”使用了rrdtool dump,暗示 RRD 文件来自其他地方。这可能是字节顺序问题; rrdtool/librrd 创建和操作的 RRD 文件是依赖于架构的。

    而且,可以肯定的是,您可能需要确认您的 RRD 文件的前三个字节是“RRD”。否则,它们实际上不是 rrdtool 理解的 rrd 格式。

    (要检查,请执行dd if=usedMemory.rrd bs=1 count=3 2&gt;/dev/null; echo 之类的操作。)

    【讨论】:

    • 我应该将dd if=usedMemory.rrd bs=1 count=3 2&gt;/dev/null; echo 粘贴到Linux 控制台吗?如果是,则输出为:J
    • 嗯,这就解释了为什么rrdtool dump 说它不是一个rrd 文件。您可能想在文本编辑器中打开文件或查看hexdump -C usedMemory.rrd 的输出以查看其中的实际内容,并确保它是您期望的文件。我查了一些在线文档,看起来 JavaMelody 声称使用与 rrdtool 使用的相同格式的 RRD,所以你的 J 来自哪里有点神秘。
    • 感谢您的帮助。我刚刚粘贴了 rrd 文件的一些内容。它有关于JRobin 工具的条目,而不仅仅是RRD。
    • 我做了一些挖掘工作。看起来JRobin 工具(网站:jrobin.org)的界面非常像rrdtool(所以你可以用它来做DUMP)——它只是文件格式有点不同。
    • 嗨,这似乎是一个很老的帖子。我也遇到了同样的问题,不知道有没有解决办法。我所有由 javamelody 生成的 .rrd 文件都是 34kb 大小,并且没有任何文本是可读格式。有没有办法查看这个文件中包含的信息?
    【解决方案3】:

    如 chifangjang 所说,jrobin 控制台可用于从 javamelody rrd 文件中转储或获取数据。

    并为下一个 javamelody 版本 (1.83) 添加浏览器或脚本中的 xml 或 txt 转储,请参阅doc

    快照版本位于http://javamelody.org/downloads/javamelody-core-1.83.0-SNAPSHOT.jar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 2012-08-05
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      相关资源
      最近更新 更多