http://oss.oetiker.ch/rrdtool/doc https://calomel.org/rrdtool.html http://www.cnblogs.com/lightideal/archive/2012/03/14/2395613.html http://blog.liuts.com/post/215/ http://www.study-area.org/tips/rrdtool/rrdtool.html http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=864861# http://www.cnblogs.com/orez88/articles/1886654.html
RRDtool是指Round Robin Database工具(环状数据库)。
Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环-这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头-这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。我们使用RRDtool来处理RRD数据库。使用它向RRD数据库存储提取数据。
RRD适合存储时间序列的数据。就是说你必须能够在时间的几个点上度量某些值,并提供这些信息给RRDtool。如果你能够做到这一点,RRDtool就能够存储它们。这些数值必须是数字,但是不一定要是整数。
数据库开始时间,默认是now - 10s,使用utc时间。可以使用now - 1s, now - 1d, now - 1w, now - 1m, now - 1y建立不同开始时间的数据库。
步进时间间隔,默认是5分钟(300s)。
必须是 0-9,a-z,A-Z。
使用GAUGE, COUNTER, DERIVE, DCOUNTER, DDERIVE, ABSOLUTE这几种类型名。注意选择合适的类型。
COUNTER 必须是递增的,除非是计数器溢出(overflows)。在这种情况下,RRDtool会自动修改收到的值。例如网络接口流量、收到的packets 数量都属于这一类型。
DERIVE 和COUNTER类似。可以是递增,也可以递减,或者一会增加一会儿减少。
ABSOLUTE ABSOLUTE比较特殊,它每次都假定前一个interval的值是0,再计算平均值。
GAUGE GAGUE和上面三种不同,它没有平均的概念,RRDtool 收到值之后字节存入RRA中
计算公式 Values = 300, 600, 900, 1200 # 假设RRDtool收到4个值,分别是300,600,900,1200 Step = 300 seconds # step为300
COUNTER = 1,1, 1,1 # (300-0)/300,(600-300)/300,(900-600)/300,(1200-900)/300 ,所以结果为 1,1,1,1 DERIVE = 1,1,1,1 # 同上 ABSOLUTE = 1,2,3,4 # (300-0)/300,(600-0)/300 , (900-0)/300, (1200-0)/300,所以结果为 1,2,3,4 GAUGE = 300, 600, 900, 1200 # 300 , 600 ,900 ,1200 不做运算,直接存入数据库
COMPUTE COMPUTE比较特殊,它并不接受输入,它的定义是一个表达式,能够引用其他DS并自动计算出某个值。 例如DS:eth0_bytes:COUNTER:600:0:U DS:eth0_bits:COMPUTE:bytes,8,*
取值有效区间。设定600,如规定时间没有产生值,则取当前时间-300 ~ +300,共600秒的平均值,用做当前的产生值
取值的选择范围,超过此区间,属无效。
指定数据如何存放。我们可以把一个RRA看成一个表,各保存不同interval的统计结果。比如存储一年,一月,一周,一天,就需要4条。
4种类型:AVERAGE、MIN、MAX、LAST,代表平均,最小,最大,最后AVERAGE类型适合于看‘平均’情况,例如一天的平均流量
MAXIMUM MINIMUM 不适用想知道‘xxx/秒’这样的需求,而是适用于想知道某个对象在各个不同时刻的表现的需求,也就是着重点在于各个时间点 例如要看某个接口在一天内有没有超过50Mb流量的时候就要用 MAXIMUM 例如要看磁盘空间的空闲率在一天内有没有低于20%的时候就要用 MINIMUM
LAST 类型适用于‘累计’的概念
steps步进单位,可以动态调整默认步进的周期.如steps为6, 周期就调整为5m*6=30m(0.5h) rows采样的总记录数
如何选择steps和rows的值? 数据库step是5m(300s), 计算公式 rows = (60 / steps * default step) * 存储总时长(h) 规划存储1天,每5分钟采样1次: (60 / (1 * 5)) * 24 = 288 规划存储1周,每30分钟采样1次: (60 / (6 * 5)) * 24 * 7 = 336
实际情况,存储2倍的样本适合,1d 1:600, 1w 6:700, 1m 24:775, 1y 288:797
如果step是1m(60s)的情况, 1h 60个画图点, 1d 如果需要300左右画图点的话 288 / 24 = 12/h,steps为5(60/12), rows 600(2882) 1w 350 / 7 = 50/d, steps为20(60/3), rows 600(2882) 1m 300 / 30 = /d 1y 360 天,每天画1个 360
RRA:AVERAGE:0.5:1:600 # hour RRA:AVERAGE:0.5:5:600 # day RRA:AVERAGE:0.5:30:700 # week RRA:AVERAGE:0.5:120:800 # month RRA:AVERAGE:0.5:1440:800 # year
在每个interval,RRDtool都会收到一个值,RRDtool在收到脚本给来的值后会计算出另外一个值(例如平均值),这个值就是PDP。 这个值代表的一般是’xxx/秒‘的含义。注意,该值不一定等于RRDtool收到的那个值。除非是GAUGE。
RRDtool使用多个PDP合并为一个CDP。也就是执行上面的CF操作后的结果。这个值就是存入RRA的数据,绘图时使用的也是这些数据。
RRA:AVERAGE:0.5:1:603 # 5分钟采样,存储603条记录 RRA:AVERAGE:0.5:6:603 # 30分钟采样,存储603条记录 RRA:AVERAGE:0.5:24:603 # 2小时采样,存储603条记录 RRA:AVERAGE:0.5:288:800 # 1天采样,存储800条记录 RRA:MAX:0.5:1:603 RRA:MAX:0.5:6:603 RRA:MAX:0.5:24:603 RRA:MAX:0.5:288:800
--start time # 开始时间 --end time # 结束时间
--title # 水平标题 --vertical-label # 垂直标题
--width --height # 宽度 x 高度,默认400 x 100
--upper-limit --lower-limit --rigid --alt-autoscale --alt-autoscale-min --alt-autoscale-max --no-gridfit
--x-grid GTM:GST:MTM:MST:LTM:LST:LPR:LFM # x轴竖线和日期标记位置GTM:GST 控制次要格网线的位置。用于整点内的划分,比如1小时内,每15分钟划1条线。 GTM 是一个时间单位,可以是 SECOND、MINUTE、HOUR、DAY 、WEEK、MONTH、YEAR。GST 则是一个数字,控制每隔多长时间放置一根次要格线。例如我们要画一个1天的图表,决定每15分钟一根次要网格线,则格式为 MINUTE:15。
MTM:MST 控制主要网格线的位置。用于整点,比如每1小时划1条线。
LTM:LST 控制每隔多长时间输出一个label。设置为每2小时。
LPR:LFM LTM:LST只是决定label的显示位置,没有指定要显示什么内容。LPR指的是如何放置label。 如果LPR为0,则数字对齐格线(适用于显示时间)。如果不为0,则会做一些偏移(适用于显示星期几、月份等)。 LFM则需要熟悉一下date命令的参数,常用的有%a(星期几)、%b(月份)、%d(天)、%H(小时)、%M(分)、%Y(年)。 显示小时与分,如'%H:%M'
--week-fmt # 默认使用'Week %V'显示周,可以换用其他
--y-grid grid step:label factor # 类似x-grid,建议不用。
--alt-y-grid # 根据y轴区间自动划分网格
--units-exponent --alt-y-grid自动对Y轴的值进行调整,以k为单位显示。但如果你不想以k显示,而是想固定以某个单位来显示(M,b)。 使用--units-exponent value,value范围是-18、-15、-12、-9、-6、-3、0、3、6、9、12、15、18。 0表示以原值显示,3表示数值除以1000,以k为单位显示,6就是以M显示,9就是以G显示,12则T。
--color COLORTAG#rrggbb[aa]COLORTAG BACK background # 背景 CANVAS for the background of the actual graph # 图形数据区 SHADEA for the left and top border # 左上边界 SHADEB for the right and bottom border # 右下边界 GRID, MGRID for the major grid # 主网格线,次网络线 FONT for the color of the font # 字体 AXIS for the axis of the graph # 箭头线 ARROW for the arrow head pointing up and forward # 箭头 FRAME for the line around the color spots # 数据标志说明边框
[aa] # 透明模式 00 is off, FF is maximum
--font FONTTAG:size[:font]FONTTAG DEFAULT sets the default value for all elements # 全部数据 TITLE for the title # 标题数据 AXIS for the axis labels # x轴数据 UNIT for the vertical unit label # y轴数据 LEGEND for the graph legend # 刻字数据 WATERMARK for the watermark on the edge of the graph # 水印数据
DEF(Definition) DEF:vname=rrdfile:ds-name:CF[:step=step][:start=time][:end=time] vname变更名称 rrdfile文件位置 ds-name数据源名称 CF CF名称
VDEF(Variable Definition) VDEF:vname=RPN expression
CDEF(Calculation Definition) CDEF:vname=RPN expression 使用数组操作,类似于python的join, 操作优先画图,比如byte to bit
COMMENT:text # 打印文本,如换行,最大值,最小值等等 GPRINT:vname:format # 输出值,比如最大值是什么?
LINE[width]:value[#color][:[legend][:STACK][:skipscale][:dashes[=on_s[,off_s[,on_s,off_s]...]][:dash-offset=offset]]] 画线,可以指定color,legend,STACK
rrdtool fetch if_octets-eth0.rrd AVERAGE --start -1h --end now-60s
posted on 2015-06-25 12:26 北京涛子 阅读( ...) 评论( ...) 编辑 收藏转载于:https://www.cnblogs.com/liujitao79/p/4599687.html
相关资源:RRDTool Windows