使用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。
发布于 2016-02-05 21:28:31
这个语句: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),并将在两个不同的RRD文件中定义两个变量,sensora和sensorb对应于相同的命名为DS。
不要使用sensor-1作为变名,因为它包含“-”符号。
没有看到失败的RRD4j代码,我不能肯定地说,但我怀疑这可能是因为您没有重命名变量名,使两个变量共享相同的名称并覆盖另一个变量,或者因为变量名中的'-‘。
https://stackoverflow.com/questions/35227433
复制相似问题