将单独的RRD文件合并到单个图形中

时间:2016-02-05 15:12:42

标签: java rrdtool rrd rrd4j

使用 rrd4j ,如何将多个.rrd文件合并为一个.rrd或(理想情况下)到一个图表?

更多详情:

我有几份基本相同的.rrd副本。每个文件记录多个传感器数据读数,所有文件的名称均为sensor-1sensor-2。因此data1.rrddata2.rrd将包含sensor-1等数据源

DS定义如下。

DS:sensor-1:GAUGE:35:U:U DS:sensor-2:GAUGE:35:U:U DS:sensor-3:GAUGE:35:U:U

我可以通过向这样的图形添加数据源来为每个单独生成图形;

val graph = new RrdGraphDef()
graph.datasource("sensor-1", data1.rrd", "sensor-1", AVERAGE)
graph.datasource("sensor-2", data1.rrd", "sensor-1", AVERAGE)
graph.line("sensor-1", green)
graph.line("sensor-2", red)

但如果我对data2.rrd执行相同的操作(将另一个数据源添加到同一个graph实例),它似乎会丢失前面的数据并仅显示文件的一个数据

我怀疑每个文件在文件中具有相同名称可能是个问题。

关于如何使用常规RRD工具实现相同的建议可能也会有所帮助,因为我可以将其翻译为rrd4j

1 个答案:

答案 0 :(得分:0)

本声明: graph.datasource("varname", "filename.rrd", "dsname", AVERAGE) 定义一个名为varname的新变量,它对应于文件dsname中的DS filename.rrd,使用AVERAGE Consolodation函数进行合并。

显然,您不能在同一个图表中使用相同名称的两个变量;但是,没有什么可以阻止您从多个不同的RRD文件中提取数据,也没有什么可以阻止您对DS名称使用不同的varname。

但是,你应该只在变量名中使用字母数字 - 特别是避免使用' - ',即使它应该有效。下划线没问题。

所以,这是完全有效的: graph.datasource("sensora", "sitea.rrd", "sensor", AVERAGE) graph.datasource("sensorb", "siteb.rrd", "sensor", AVERAGE) 并将定义两个变量sensorasensorb,对应于两个不同RRD文件中相同的命名DS。

不要将sensor-1用作varname,因为它包含' - '符号。

没有看到失败的RRD4j代码我无法肯定地说,但我怀疑它是因为你没有重命名varname,使两个变量共享相同的名称并相互覆盖,或者因为varname中的' - '。