使用 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
实例(,它似乎会丢失前面的数据并仅绘制文件的一个数据。
我怀疑每个 DS 在文件中具有相同的名称可能是一个问题。
关于如何使用常规RRD工具实现相同目标的建议也可能有所帮助,因为我可能能够转换为rrd4j
此语句:
graph.datasource("varname", "filename.rrd", "dsname", AVERAGE)
定义了一个新的变量,叫做varname
,它对应于文件filename.rrd
中的DS dsname
,使用AVERAGE
安慰函数进行解释。
显然,在同一图形中不能有两个同名的变量;但是,没有什么可以阻止您从多个不同的 RRD 文件中提取数据,也没有什么可以阻止您使用与 DS 名称不同的变量名。
但是,您应该只在变量名称中使用字母数字 - 特别是避免使用"-",即使它应该有效。 下划线是可以的。
所以,这是完全有效的:
graph.datasource("sensora", "sitea.rrd", "sensor", AVERAGE)
graph.datasource("sensorb", "siteb.rrd", "sensor", AVERAGE)
并将定义两个变量,sensora
和 sensorb
对应于两个不同 RRD 文件中的相同命名 DS。
不要将sensor-1
用作变量名,因为它包含"-"符号。
看到失败的RRD4j代码,我不能肯定地说,但我怀疑这是因为您没有重命名varname,使两个变量共享相同的名称并相互覆盖,或者因为varname中的"-"。