使用 rrd4j ,如何将多个.rrd
文件合并为一个.rrd
或(理想情况下)到一个图表?
更多详情:
我有几份基本相同的.rrd
副本。每个文件记录多个传感器数据读数,所有文件的名称均为sensor-1
,sensor-2
。因此data1.rrd
,data2.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
答案 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)
并将定义两个变量sensora
和sensorb
,对应于两个不同RRD文件中相同的命名DS。
不要将sensor-1
用作varname,因为它包含' - '符号。
没有看到失败的RRD4j代码我无法肯定地说,但我怀疑它是因为你没有重命名varname,使两个变量共享相同的名称并相互覆盖,或者因为varname中的' - '。