本文参考:
rrd4j的介绍和使用:http://blog.chinaunix.net/uid-29962463-id-4568454.html
rrdtool的介绍和使用:http://www.cnblogs.com/lightideal/archive/2012/03/14/2395613.html
rrdtool官网:http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html
rrdtool的使用
1.创建RRD数据库语法
rrdtool create filename
[--start|-b start time]
[--step|-s step]
[--no-overwrite]
[DS:ds-name:DST:dst arguments]
[RRA:CF:cf arguments]
1.create关键字:创建数据库。 filename:数据库的名称,后缀最好为.rrd。比如:time.rrd
2.start:第一个记录开始的时间,默认是当前时间-10秒
3.step:每条记录的时间间隔,默认是300秒
4.no-overwrite:不覆盖同文件名的数据库文件
5.DS:ds-name:DST:dst arguments 各参数说明:
a:DS关键字:用于定义数据源,一个rrd文件可以有多个DS(相当于MySQL数据库的列)
ds-name:数据源的名称,一个rrd文件可以有多个数据源
b:DST关键字:数据源的数据类型,支持的数据类型有:
GAUGE: 将采样的值直接存入RRD中
COUNTER: (当前采样值-上个采样值)/间隔时间
DERIVE: 与COUNTER类似, 但采样数据可以是递增的,也可以是递减, 或一会递增, 一会递减
ABSOLUTE: 当前采样的值/时间间隔
COMPUTE: 表达式
使用方式:
DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max
DS:ds-name:COMPUTE:rpn-expression
COMPUTE 存放对其他数据源进行公式计算的结果。
heartbeat 心跳,一般设置为step的2倍,在心跳期间,如果没有接收到任何数据(即step > heartbeat)
则下一次记录会记为unknown,如果心跳大于step但不是step的整数倍,则下次记录会被记为未知。
参考http://blog.chinaunix.net/uid-29962463-id-4568454.html
min:max PDP 的最小值 / 最大值。
6.RRA:CF:cf arguments 各参数说明:
a:RRA关键字:用于定义RRA(Round robin archive)文档,一个RRD数据库文件至少有一个RRA档,CDP就被保存在RRA中
b:CF合并方式:有以下几种类型
AVERAGE,MIN,MAX,LAST
使用方式:
RRA:AVERAGE | MIN | MAX | LAST:xff:steps:rows
xff 定义合并时间间隔内允许的 PDP 为 UNKNOWN 的比例,超过这个比例时,CDP 被置为 UNKNOWN。 一般设置为0.5不用管了。
steps 定义多少个 PDP 合并一个 CDP。
rows 定义一个 RRA 档保存有多少条记录。
7.特殊字段说明:
PDP:Primary Data Point, 基本数据点,就是我们采集的每个样值
CDP:Consolidation Data Point, 合并数据点,由多个PDP按照一定的规则计算出来的
简单的来说:每个PDP是我们存储的样值,两个PDP之间的时间就是step,多个PDP按照一定的方式整合,就是CDP
2.更新/插入数据库语法
rrdtool {update | updatev} filename
[--template|-t ds-name[:ds-name]...]
[--daemon address] [--]
N|timestamp:value[:value...] at-timestamp@value[:value...] [timestamp:value[:value...] … ]
1.update/updatev:用于更新数据库
updatev 会输出磁盘上数据库文件更新后输出更新信息。由于 updatev 需要直接的磁盘访问,所有不能与 --daemon 共用。
filename 需要更新的 RRD 数据库的文件名
2.–template|-t ds-name[:ds-name]…
默认情况下,需要按照数据源定义的顺序更新。该参数允许你指定要更新的数据。
3.–daemon address
使用缓存后台程序更新数据库,而不直接访问磁盘。
4.N|timestamp:value[:value…]
更新时间及数据。时间格式可以是 N| 时戳;N 表示现在;时戳以自 1970-01-01 以来的秒数来表示。
如果使用负数时间(当前时间之前多长时间),需要使用 "-" 与其它选项区分开。用 U 表示数据的值为 UNKNOWN。
at-timestamp@value[:value...]
更新时间也可以使用 AT 风格表示。
环境变量 RRDCACHED_ADDRESS 与 --daemon 选项的作用是一样的,如果两者都出现的话,前者优先。
3.读取数据语法
rrdtool fetch filename
CF
[--resolution|-r resolution]
[--start|-s start]
[--end|-e end]
[--daemon address]
1.fetch关键字:用于取数据
2.CF 需要读取数据的合并方式(AVERAGE,MIN,MAX,LAST)
3.–resolution|-r resolution (default is the highest resolution)
解析度,也就是你要取数据的时间间隔(单位:秒);
rrdfetch 会尽量找到最匹配的 RRA。默认为数据库文件支持的最高解析度,即时间间隔最短的;
如果想取的不是最高解析度的 RRA,假设要取得的是解析度为 x 的 RRA,开始时间和结束时间必须落在期望解析度的边界点上,即需要满足以下条件:
a.start 时间和 end 时间都是 x 的倍数
b.start 时间和 end 时间都在 RRA 记录的时间范围内。
4.–start|-s start (default end-1day)
开始时间;支持时戳和 AT 风格;默认是 1 天前。
5.–end|-e end (default now)
结束时间;格式与开始时间相同;默认是现在;
6.–daemon address
缓存后台程序地址。如果指定的话,在读取之前,会发 flush 指令给缓存后台程序将缓存的数据同步到磁盘。
4.绘图的语法(参数很多,可在官网上查明,我挑几个重要的写一下)
rrdtool graph|graphv filename
[-s|--start time] [-e|--end time] [-S|--step seconds]
[-t|--title string] [-v|--vertical-label string]
[-w|--width pixels] [-h|--height pixels] [-j|--only-graph] [-D|--full-size-mode]
1.时间范围:[-s|–start time] [-e|–end time] [-S|–step seconds]
2.设置标题:
图片顶部: [-t|--title string]
图片左边: [-v|--vertical-label string] --垂直显示
3.设置大小:[-w|–width pixels] [-h|–height pixels]
默认是400px,100px