【问题标题】:Combine separate RRD files to a single graph将单独的 RRD 文件合并到一个图形中
【发布时间】:2016-02-06 05:28:31
【问题描述】:

使用 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 实例),它似乎会丢失前面的数据并仅绘制文件数据之一。

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

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

【问题讨论】:

    标签: java rrdtool rrd rrd4j


    【解决方案1】:

    此声明: 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) 并将定义两个变量,sensorasensorb,对应于两个不同 RRD 文件中的同名 DS。

    不要使用sensor-1 作为变量名,因为它包含一个“-”符号。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2011-10-07
      相关资源
      最近更新 更多