一、系统环境
本地Linux: Centos 6.5 x64 192.168.47.139
RRDTool: 1.3.8
二、系统概述
1.Round Robin Database Tool 架构
RRD:一个指定固定大小的环状数据库,每个一段间隔时间(默认300s)去获取直接数据节点PDP,保存含有时间戳的(可以多个不同)时间序列(Data Source)数据到对应的时间槽上,存储上限时会覆盖原有数据。RRD创建时,需要制定保存数据的时间起点,和间隔时间,扇形数据库以此划分数据槽。
RRA:轮转归档信息,获取的数据节点PDP(Primary Data Point)存储到数据库的临时数据区域,获取的PDP以(可以多个不同)解析度(时间跨度resolution)分组归档、进行(可以多个不同)聚合函数运算后的聚合数据节点CDP(Consolidation Data Point)放到对应数据槽。
聚合函数CF:LAST MAX MIN AVERAGE
xff DS多大比例UNKNOW为UNKNOW,steps解析度,row保存数据范围(时间/一个RRA)
2.rrdtool操作
create 创建空的轮转数据库
update 填充数据
updatev
graph 绘图
dump 依次取出数据
fetch 只取一根数据
info 查看文件格式
3.数据源类型
GAUGE(初始值)、COUNTER(相对值递增)、DERIVE(相对值)、ABSOLUTE(相对初始值)
min-max 存取的数据范围 heartbeat 多少时间内等待,越过就unknow
三、安装和使用
1.安装、创建数据库文件
[root@localhost /usr/local/src]#yum install rrdtool
[root@localhost /usr/local/src]#rrdtool create test.rrd --step 5 DS:testds:GAUGE:8:0:U RRA:AVERAGE:0.5:1:17280 RRA:AVERAGE:0.5:10:3456 RRA:AVERAGE:0.5:100:1210
rrdtool命令格式
[root@localhost /usr/local/src]#rrdtool info test.rrd
2.插入数据
[root@localhost /usr/local/src]#rrdtool update test.rrd N:$RANDOM
默认是插入到时间内N的DS1,多个可以指定N:30:40
[root@localhost /usr/local/src]#rrdtool fetch -r 5 test.rrd AVERAGE
[root@localhost /usr/local/src]#rrdtool fetch -r 50 test.rrd AVERAGE
[root@localhost /usr/local/src]#rrdtool fetch -r 10 test.rrd AVERAGE
查看step5 50 10下AVERAGE聚合的数据
3.绘图
rrdtool graph object_filename
[root@localhost /usr/local/src]#rrdtool graph
[root@localhost /usr/local/src]#vim gn.sh
给test.rrd赋DS数据
[root@localhost /usr/local/src]#rrdtool graph a.png --step 5 -s 1459583645 -t Test -v vtest DEF:vtest=test.rrd:testds:AVERAGE LINE1:vtest#ff0000:"testline"
导出到windows查看
[root@localhost /usr/local/src]#rrdtool graph b.png -s 1459583645 -t Test -v vtest DEF:vtest=test.rrd:testds:AVERAGE:step=5 DEF:test2=test.rrd:testds:AVERAGE:step=50 LINE1:vtest#ff0000:"testline" LINE1:test2#00ff00:"testline2"
导出windows查看
[root@localhost /usr/local/src]#rrdtool create mysql2.rrd --step 3 DS:myselect:COUNTER:5:0:U RRA:AVERAGE:0.5:1:28800 RRA:AVERAGE:0.5:1:28800 RRA:AVERAGE:0.5:10:2880 RRA:MAX:0.5:10:2880 RRA:LAST:0.5:10:2880
[root@localhost /usr/local/src]#vim getsel.sh
给mysql.rrd赋DS数据
创建数据库、表
给DS数据增大
[root@localhost /usr/local/src]#rrdtool graph mysql.png -s 1459746534 -t "mysql select" -v "selects/3" DEF:select3=mysql.rrd:myselect:AVERAGE:step=3 LINE1:select3#FF0000:"SELECT"
查看绘成的mysql.png
[root@localhost /usr/local/src]#rrdtool graph mysql.png -s 1459746534 -t "mysql select" -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 LINE1:select30#FF0000:"SELECT"
绘制每30秒一次的平均值
GPRINT vnam:CF:format 显示最大值最后值等
[root@localhost /usr/local/src]#rrdtool graph mysql.png -s 1459746534 -t "mysql select" -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 DEF:max30=mysql.rrd:myselect:MAX:step=30 LINE1:select30#FF0000:"SELECT" GPRINT:max30:MAX:"MAXIMUM\: %6.21f"
我测试的时候ERROR: bad format for GPRINT in 'MAXIMUM: %6.21f' 不指定格式也会报错
[root@localhost /usr/local/src]#rrdtool graph mysql.png -s 1459746534 -t "mysql select" -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 DEF:max30=mysql.rrd:myselect:MAX:step=30 DEF:last30=mysql.rrd:myselect:LAST:step=30 LINE1:select30#FF0000:"SELECT" GPRINT:max30:MAX:"MAXIMUM\: %6.21f" GPRINT:last30:LAST:"LAST\: %6.21f"