RRDTool 存储原理简介
RRDTool 是一套检测工具,可用于存储和展示被监测对象随时间变化情况。比如:我们在Windows 电脑上常见的内存和 CPU 使用情况:
![](https://img.haomeiwen.com/i19687/8dd3135ca014ad52.png)
RRD 的全称 Round Robin Database ,即【环形数据库】。顾名思义,它是一种循环使用存储空间的数据库,适用于存储和时间序列相关的数据。
RRD 数据库在被创建的时候就已经定义了大小,当存储空间满了以后,又从头开始覆盖旧的数据,所以和其他线性增长的数据库不同,RRD 的大小可控且不用维护。
你可以把RRD 理解为 一个有时间刻度的圆环,每个刻度上可以存储一个数值,同时 有一个从圆心指向修心存储值的指针。
可以想象,随着时间的推移,指针会绕着圆心一直移动下去,当它指向下一个刻度的时候,就可以在那个位置存储一个新的数值。但是,指针只能饶一个方向前进,假设你存储了时刻3的监测值,那就不能再存储时刻2的监测值了。如下图所示:
![](https://img.haomeiwen.com/i19687/d283e92657a24a09.png)
创建 RRD 基本语法
rrdtool create filename
[--start|-b start-time]
[--step|-s step]
[DS:ds-name:DST:dst-arguments]
[RRA:CF:xff:step:rows]
其中,
rrdtool create filename
表示使用 rrdtool 命令 create 创建一个名为 filename 的数据库文件,通常 RRD 数据库文件的后缀为 .rrd ,但是你随便使用文件名也不会有影响。
--start|-b start-time
这个选项表示 RRD 数据库的起始 (start/begin) 时间点为 start-time,这是一个从 1970-01-01 00:00:00 开始计时,以秒为间隔的一个整数值。
如图所示:
![](https://img.haomeiwen.com/i19687/f0daee5a888be869.png)
A点是从 1970-01-01 00:00:00 开始经过0秒后到达的时间点;
B点是从 1970-01-01 00:00:00 开始经过658108920秒后到达的时间点 1990-11-09 00:02:00;
C点是从 1970-01-01 00:00:00 开始经过1458763813秒后到达的时间点 2016-03-23 20:10:13。
所以,start-time 是一个代表时间点的整数值,表示 RRD 数据库记录的监测值从这个时刻开始。
[--step|-s step]
这个选项表示监测的时间间隔,即多久时间去获取一次被监测对象的数值,默认值为5分钟(300秒)。比如,我们可以从10:00开始每60秒去获取一次电脑内存的使用值,这个时候 step 就是 60,获取到的数值如下图所示:
![](https://img.haomeiwen.com/i19687/33f553264125353c.png)