使用rrdtool RRD PDP或RRA合并函数计算平均读数的区别?

时间:2019-03-17 21:26:34

标签: rrdtool

我正在每隔1分钟更新一次rrdtool循环数据库。我想将五个更新的平均值存储为rrdtool RRD中的一个RRA条目。一种方法是这样的:

$ rrdtool create foo.rrd --start 1000000500 --step 60 \
> DS:ping:GAUGE:120:0:1000 RRA:AVERAGE:0.5:5:12; \
> rrdtool update foo.rrd 1000000560:10 1000000620:20 \
> 1000000680:30 1000000740:40 1000000800:50

它会累积五个读数,并将这些读数的平均值作为条目存储在RRA中。但是,可以通过以下方法实现相同目的:

$ rrdtool create bar.rrd --start 1000000500 --step 300 \
> DS:ping:GAUGE:600:0:1000 RRA:AVERAGE:0.5:1:12; \
> rrdtool update bar.rrd 1000000560:10 1000000620:20 \
> 1000000680:30 1000000740:40 1000000800:50

如上所述,step是300秒,但是由于RRD PDP接受间隔之间的值并计算平均值,因此两个示例都将30((10+20+30+40+50)/5)存储在RRA中。我可以说的一个区别是,第一个示例至少需要进行三个更新才能存储到RRA的条目,而在第二个示例的情况下,在300秒内完成一个更新就足够了。还有其他区别吗?

1 个答案:

答案 0 :(得分:1)

尽管在某些情况下它们看起来可能相同,但这两个示例在幕后并不是真正的相同。

首先,您走了60秒钟,RRA在每个CDP中平均存储了5个PDP。

第二步,您需要执行300步,并且RRA将每个PDP存储为CDP。

有一些区别:

  • 首先,您每2分钟需要至少一个样本(PDP);因此,三个涵盖了RRA中的每个CDP。在第二个中,每个CDP需要一个样本。
  • 首先,每个样本的数据归一化发生在60秒的窗口内。在第二个过程中,它发生在300秒的窗口内。当样品不规则到达时,这会使情况看起来有所不同。
  • 首先,您最多可以有120s,没有数据,然后才能获得未知数据;在第二秒,最多600秒。

尽管两者的RRA结果几乎相同,但您选择哪种方法取决于输入数据的性质(获取样本的频率,样本的不规则性)以及存储和显示要求(如果需要)存储或显示的更高粒度)。如果您有频繁的采样,第一个选项会更准确;第二个是更少的存储空间和更少的工作,但是如果您更新的频率比步骤多,则可能会丢失一些数据。

请注意,如果您有除AVG以外的其他RRA类型,则减小步长将使计算更加准确。

通常,我建议您将步长设置为接近预期的平均采样频率,并根据数据的正常性进行延迟设置。根据您需要如何查看和显示数据以及需要保留历史记录多长时间来设置RRA合并。创建与正常显示汇总相对应的RRA,以最大程度地减少实时计算量。