我每隔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接受间隔之间的值并计算平均值,因此两个示例都在RRA中存储30((10+20+30+40+50)/5
)。我可以说,一个区别是,第一个示例需要至少三次更新才能将条目存储到RRA,而在第二个示例的情况下,300秒内的单个更新就足够了。还有其他差异吗?
这两个例子在封面上并不是真的相同,尽管它们在某些情况下看起来可能相同。
在第一步中,您有60秒的步骤,并且您的RRA在每个CDP中存储5个PDP的平均值。
在第二步中,您有一个300秒的步骤,您的RRA将每个PDP存储为CDP。
以下是一些差异:
虽然RRA结果在两者中几乎相同,但您选择的结果取决于输入数据的性质(获取样本的频率,这些数据的不规则程度)以及存储和显示要求(如果需要更高的粒度存储)或显示)。如果您经常提供样品,第一个选项会更准确;第二个是较少的存储和较少的工作,但如果你的更新比步骤更频繁,可能会牺牲一些数据。
请注意,如果您有其他RRA类型而不仅仅是AVG,则使用较小的步骤可以使计算更准确。
一般情况下,我建议您将步骤设置为接近预期的平均采样频率,并根据数据的常规设置进行延迟设置。根据您查看和显示数据的方式以及需要保留历史记录的时间长度来设置RRA组合。创建与正常显示汇总对应的RRA,以便最小化实时计算量。