rrdtool 数据处理和PDP CDP

作者: admin 分类: 乱7八糟 发布时间: 2012-07-05 18:33 ė 6 没有评论

RRD 数据库存储的值并不一定等于更新时提供的值。这个值是根据数据库设定对提供的值进行计算得到的。计算过程可以分为三个步骤:根据用户定义的数据类型对提供的值进行计算,;
1.整形;
输入的时间经常会不在时间间隔的边界,所以需要根据前后两个有效的更新进行线性整形。(有效时间是被 heartbeat 设定控制的
)假定你在监视一个增长速度不均匀的计数器,每分钟检查一次,在 4:30 是 2,5:30 是 4,那么第 5 分钟的变化速度为 3。整形后得到的值称为 PDP(Primary Data Points)。

2.合并;

RRDtool 最终会根据设定对 PDP 进行合并,得到 CDP(Consolidated Data Point)。CDP 可以是多个(可以是一个)PDP 的平均值、最小值、最大值以及最近的值。CDP 是 RRD 数据库中最终存储的数据。这对于输出监控数据时是非常有利的。假设每个 PDP 的时间间隔是 1 分钟,如果你想查看 1 天的数据,而且你不需要查看每一分钟具体的监控数据,只是想看一下这一个天中每半个小时的监控数据。如果 RRD 中存储的是 PDP, 在输出时就需要对当天的 PDP 每 30 个进行合并。合并需要时间,如果你需要合并的数据量更大,如 1 个月或是 1 年,那这个合并的时间会非常长。所以 RRDtool 选择在数据库更新时对 PDP 进行合并,保存 CDP。用户可以根据需要设定如何对 PDP(非 UNKNOWN)进行合并

PDP是什么呢?

3,使用
用rrdtool,一般只用到四个命令, 分别是create, update, fetch, graph. 既, 创建rrd数据库,更新rrd数据库,从rrd数据库获取数据,从rrd数据库画图。 下面来一一解说:
rrdtool create filename [–start|-b start time]
[–step|-s step]
[–no-overwrite|-O]
[DS:ds-name:DST:dst arguments]
[RRA:CF:cf arguments]

先给个实例,然后再来详细的解说这些参数是什么意思。

rrdtool create eth.rrd -s 300 -b `date -d “2011/10/18” +%s` \
DS:in:GAUGE:600:0:1000000 \
DS:out:GAUGE:600:0:1000000 \
RRA:AVERAGE:0.5:1:105408 \
RRA:AVERAGE:0.5:4:26352 \
RRA:AVERAGE:0.5:24:4392 \
RRA:AVERAGE:0.5:288:730
运行上面的脚本,没报错的话,将会生成一个叫做eth.rrd的文件。如果报错,请检查一下,是否漏掉了每行后面的反斜杠。这里假设你运行成功了,那下面就解释下上面的这些参数的意思:
-b | –start : 就是这个rrd开始纪录的时间, 当你插入的数据的时间比它小的时候,会报错
-s | –step : 举个列子,假如你设置的是300秒,既5分钟,那么,如果你每1分钟update一次数据,这些数据其实并不会纪录起来,而是当间隔时间大于等于300秒的时候才会纪录起来,同时触发下面的RRA。
-O | –no-overwrite: 不解释
DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max: DS指的是数据源(Data Source),用来定义数据源的。DS:in:GAUGE:600:0:1000000,这里定义的数据源名字为in;采用的DST(数据源类型 Data Source Type)为GAUGE,再详细说明DST;心跳为600, 意思是当600秒还没有数据update,就设置该DS的值为Unknow; min和max自然就是指这个DS的最小值和最大值了。
DST说明:
COUNTER: 这次update的值减去上次update的值,然后除以step。既算出平均每秒的值,update的值必须是递增的。
DERIVE:跟COUNTER类似,不过不强求update的值是递增的
GAUGE:把update的值直接赋值给了PDP,不平均
ABSOLUTE:假定上次的PDP为0,然后再平均
COMPUTE: 自定义rpn来进行赋值,可以根据前面的DS来进行生成
RRA:CF:xff:step:rows: 用来定义一条RRA,注意,RRA的解释很重要,我开始的时候一直弄不清楚数据是怎么存储的,就是RRA和DS以及update的值给搞混了。
1), update的值并不会写进数据库,它只是用来生成DS的值,也叫PDP(Primary Data Point)
2), PDP值根据RRA生成CDP(Consolidated Data Point),每个CDP将保存rows个, 在超过rows个之后,新的会覆盖旧的,这就是一个环路数据
好了,下面继续介绍RRA
CF: 合并方法(Consolidated Function),可以为AVERATE | LAST | MAX | LAST .
xff: unknowns / step. 既这个step里面unknown的比例,超过这个比例,则设置CDP为unknown.
step: 多少个PDP合并成一个CDP
rows: 该PDP保存的个数
现在来解释RRA:AVERAGE:0.5:1:105408, 既我想保存时间间隔为300 * 1的CDP的个数为105408,时间长度为: 300 * 1(1个PDP合并成一个该CDP) * 105408 = 1年, 既我可以查到一年内任何段的这个CDP的纪录。

本文出自 小Q,转载时请注明出处及相应链接。

本文永久链接: http://www.linuxqq.com/archives/859.html

0
更多
Ɣ回顶部