将单独的 RRD 文件合并为一个图形
Combine separate RRD files to a single graph
使用 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 名称使用不同的 varname。
但是,您应该只在变量名中使用字母数字——特别是避免使用“-”,即使它应该有效。下划线可以。
所以,这是完全有效的:
graph.datasource("sensora", "sitea.rrd", "sensor", AVERAGE)
graph.datasource("sensorb", "siteb.rrd", "sensor", AVERAGE)
并将定义两个变量,sensora
和 sensorb
对应于两个不同 RRD 文件中的同名 DS。
不要使用 sensor-1
作为变量名,因为它包含一个“-”符号。
没有看到失败的 RRD4j 代码我不能肯定地说,但我怀疑这是因为您没有重命名 varname,使两个变量共享相同的名称并相互覆盖,或者因为变量名中的“-”。
使用 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 名称使用不同的 varname。
但是,您应该只在变量名中使用字母数字——特别是避免使用“-”,即使它应该有效。下划线可以。
所以,这是完全有效的:
graph.datasource("sensora", "sitea.rrd", "sensor", AVERAGE)
graph.datasource("sensorb", "siteb.rrd", "sensor", AVERAGE)
并将定义两个变量,sensora
和 sensorb
对应于两个不同 RRD 文件中的同名 DS。
不要使用 sensor-1
作为变量名,因为它包含一个“-”符号。
没有看到失败的 RRD4j 代码我不能肯定地说,但我怀疑这是因为您没有重命名 varname,使两个变量共享相同的名称并相互覆盖,或者因为变量名中的“-”。