rrdtool学习系列-2

今天去机房,利用早上头脑清楚的时候发吧,今天这讲是如何建立一个(图)库文件test.rrd,很简单,就是

rrdtool create test.rrd

不过这个test.rrd没有属性,我们需要给它加属性,属性有如下几种

1、–start  从1970年1月1日12点到你创建这个(图)库文件的时间,value的单位是秒,如果你对date命令不清楚的话,建议看看date man,否则就成了Outman了,这里给个linux下的执行命令,你能看到你执行命令的时候离1970年1月1日12点有多少秒

date -d "1999/01/01 12:00:00" +%s 

我执行这个命令得出的值是915163200

2、–step value的单位也是秒,有默认值,是300秒(5分钟)表明你设定的这个(图)库文件里的数据每隔5分钟应更新一回数据,这里就引出了一个问题,循环的问题,这个问题推荐用crontab来解决,因为你创建的这个(图)库文件本身是不会根据这个value来进行更新的,它只是个“静态文件”,就像windows桌面的txt一样,txt能自动更新吗?显然不行,需要你添加文字内容后再保存,它才会更新。这个rrd(图)库文件也一样,虽然你这里设置了5分钟,但如果你不给它数据,50分钟它还是那个空白的源文件,所以我们应该用crontab设置每5分钟更新一下这个rrd文件并给它新的数据用于运算。

3、DS 顾名思义,就是定义数据源(Data Source),格式如下
DS:variable_name:DST:heartbeat:min:max
(1)variable_name:数据源的名字,你自己可以按自己的实例随便起,当然原则是自己能看明白
(2)DST:这个你可以理解成Mysql中的data type,你已经很幸运了,rrdtool只提供四种data type ——COUNTER, DERIVE, ABSOLUTE 和 GAUGE。Mysql提供了23种,如果你对Mysql 的 data type 感兴趣,可以参考这里
https://www.htmlite.com/mysql003.php,下面说说rrdtool这四种data type有什么区别
COUNTER:将会每隔间隔时间(step值)保存数值的变化率,只有变量的数值一直增加才能使用,流经路由器的流量很适合使用COUNTER类型;
DERIVE与COUNTER一样,但它允许负值(就是不一定是一直增加),如果你想查看你的服务器可用空间的变化率,你可能会用到DERIVE;
ABSOLUTE也是保存变化率,但它假设前边的数据被置为0,当前数据与前一数据的差异与当前的值是一样的,这样它仅仅存储了当前值与时间间隔的商;
GAUGE并不是保存变化率,它存储了数值本身,并没有任何分割计算,服务器的内存消耗是gauge的一个典型例子。
GAUGE和COUNTER类型将是我们以后用到最多的。引用一个大多数人都看到过的例子(本人并不觉得这个例子最贴切)
Insert data    = 300, 600, 900, 1200  (step=300)
COUNTER 类型保存的数据   =    1,  1,   1,    1
DERIVE   类型保存的数据  =    1,  1,   1,    1
ABSOLUTE 类型保存的数据   =    1,  2,   3,    4
GAUGE 类型保存的数据     = 300, 600, 900, 1200

(3)heartbeat 如果step是300,那么我们一般设置heartbeat为600,意思就是如果(图)库文件在300秒内没有得到新的数值,它将把Unkown值保存到数据库中,Unkown是rrdtool的一个特殊值,它比假设丢失的值是0或是其他的可能数值要好的多,比如路由器的流计数器一直在增长,如果一个值丢失了,0而不是Unkown被存储了,这样当下一个值到来的时候,它将会计算当前值与前一值(也就是0)的差值来生成数据,这显然不合适,可见插入Unkown是很重要的。
(4)min:max 这两个一起说,最大最小值,有数据插数据,没数据插Unkown

4、RRA,就是round robin archive,可以理解为循环存档方法,格式如下
RRA:CF:xff:step:rows
(1)CF 你可以理解为计算方法,它有四个可选项——AVERAGE, MINIMUM, MAXIMUM, 和LAST,平均,最大,最小和最终
(2)xff 只能取值[0,1),这个说白点呢,你可以理解为是个百分比,而且这个百分比只能取小数点后1位数,也就是0,0.1,0.2…一直到0.9,
xff = 0    表示一次循环中不能有未知数据插入 xff = 0.9  表示可以允许 10% 的 未知数据,超过了这个10%的未知数据将被记录为Unkown。
(3)step和rows,举个例子
12:24如果是这样,代表经过12个step时间所得数据运用CF运算后构造成一个数值,24个这样的数值将被存档,如果step是5分钟,那么12个step就是1小时,在这1小时之内的数据都经过CF运算构造成一个值,24个这样的值就是1天(24小时)的值,那么1天的数据量是24笔,同理,你可以知道288:31代表了什么——288个5分钟(step)的数值经过CF运算变成一个数值,这个数值是24小时(1天)的数据值,31个这样的数据值将被存储,这就是1个月的数据量,举一反三,我们可以按小时,按天,按月,按年将数据存储在RRD中,应该这么写
1:12
12:24
288:31
8928:12

到此,第一讲完成,大家消化消化!!

原创文章,转载请注明: 转载自混沌

本文链接地址: rrdtool学习系列-2