画图的语法很多,我只把最有用的列出来,有兴趣的朋友可以到官方网站上去查Manual。
方法:

一、rrdtool graph p_w_picpath-filename


参数介绍如下
p_w_picpath-filename:图的文件名,比如test.png等

[-s|--start seconds]:绘图起始时间,预设是一天前(-1d),可用-s `date …`来指定时间
[-e|--end time]:绘图结束时间, 预设是现在(now),除date 的应用外,可用 -e -1w 表示绘图的时间结束于一周前
[-t|--title title]:图上显示的标题
[-v|--vertical-label text]:Y轴上的说明文字
[-w|--width pixels]:绘图区域,画图区宽的大小
[-h|--height pixels]:绘图区域,画图区高的大小
-u:Y轴正值高度
-l:Y轴负值高度
--no-minor 不要副格线
画图的配套参数就介绍这么多,我们要把重点放在图的数据变量的描述和画图具体过程上面。


二、定义数据源

DEF:vname=rrdfile:ds_name:CF[:step=step][:start=time][:end=time]

主要用处在于您要取出哪个 RRD 档案的 DS Name 到这个 graph 來。
从上很容易看出,你要定义一个虚拟的变量,变量从(.rrd)数据文件中取得数据源(DS)经过数据合并(CF)后的数据。看到这里,大家应该知道,前面在定义文档中为什么有那么多的参数,其实都是为了绘图做准备的。

① vname:虚拟变量名,我们自己取的,以后还要用到。

② rrd_filename:DS_name:CF :数据文件(.rrd)的全路径->数据源变量->合并方法。

③step:指定step数,对比RRA中设置的steps数目*step所得到的时间,选择最接近的那一个RRA


三、开始画图

最常用的是:线(LINE)和区域(AREA)。

AREA:vname[#rrggbb[:legend]]
LINE{1|2|3}:vname[#rrggbb[:legend]]

LINE|AREA:vname[#rrggbb[:legend]]
① vname:根据上面定义的虚拟变量(vname)画图。
② #rrggbb:颜色的16进制表示,可以找个软件来看。
③ legend:对该颜色的提示文字,最后会写在绘图的下方。
④ 特别的,画线有粗细之分,所以有LINE1-LINE3,line1最细,LINE3最粗。
⑤ AREA 可以画出资料数值至0之间的区块图

例子:

rrdtool  fetch -r 5 rrdfile_name.rrd AVERAGE    ##通过rrdtool的fetch查看时间槽上放置的数据。

rrdtool graph a.png -s  1424956845 DEF:testDEF=test.rrd:random1:AVERAGE:step=60 LINE1:testDEF#FF0000:"testline"


例子二、监控mysql的com_select 数目


一、创建一个rrd文件,定义3个RRA

rrdtool create mysql.rrd --step 3 \
DS:myselect:COUNTER:5:0:U \
RRA:AVERAGE:0.5:1:28800 \
RRA:AVERAGE:0.5:10:2880 \
RRA:MAX:0.5:10:2880 \
RRA:LAST:0.5:10:2880


二、利用shell循环脚本,往rrd里面放置数据

#!/bin/bash
while true;do
    SELECT=`mysql --batch  -e "SHOW GLOBAL STATUS LIKE 'com_select'" | awk  '/Com/{print $2}
'`
    rrdtool update mysql.rrd N:$SELECT
done

rrdtool fetch -r 5 mysql.rrd AVERAGE 看看时间槽,选一个起始时间。


三、开始绘图

rrdtool graph mysql2.png -s 1425546525 -t "mysql_select1" -v "select/3" \
DEF:select3=mysql.rrd:myselect:AVERAGE:step=3 \
LINE1:select3#ff0000:"SELECT30~~" GPRINT:select3:AVERAGE:"AVERAGE_NMU\:%lf" \
DEF:se_max=mysql.rrd:myselect:MAX:step=30 \
LINE1:se_max#00ff00:"max" GPRINT:se_max:MAX:"MAX_NUM\:%lf"

GPRINT是在绘成的图形下加说明,GPRING:vname:CF:"%lf" 具体作用我也搞不清了。