Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1198453
  • 博文数量: 253
  • 博客积分: 5892
  • 博客等级: 大校
  • 技术积分: 1942
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 14:20
文章分类

全部博文(253)

文章存档

2012年(98)

2011年(155)

分类: 系统运维

2011-11-04 22:09:02

Rrdtool非常适合展示 随时间连续变化的数据,例如:网关的流量、apache日志中的访问数量等。

RRD作图的步骤:  

建立数据源,

向其中插入数据,

确定作图的横轴(横轴单位代表的时间刻度)、纵轴, 及各自代表的含义,并画图

RRD命令参考

RRD的名词说明:

PDP:Primary Data Points (PDPs)

CF:consolidation function 合并函数

1. 建数据源的命令:

rrdtool create filename [--start|-b start time] [--step|-s step]

DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE : heartbeat : min : max

[RRA: AVERRAGE | MIN | MAX | LAST : xff : steps : rows

说明:

heartbeat:参考Heartbeat和step的说明。

min 和 max: 是PDP数据的取值范围,如果超过这个范围,则被标志为Unkown。

xff:xfiles factor,在合并的时候,多长时间内的数值为 unknown的情况下,合并后的值仍然是known的,即可以产生具体的值。 这个值被记为在一个interval 时间段内, unknown data的数量与所有data数量的比例,它的取值范围是 [0,1)

steps: 定义多少个step 后对数据用CF进行一次合并。

rows:存储合并后数据的个数

进一步说明Heartbeat 和 step:

    Heartbeat 定义了两个sample/update 间所能接受的最大时间间隔。如果samples间的时间间隔 小于 Heartbeat给定的数值,则为这个间隔计算一个平均数。 如果samples间的间隔 大于 Heartbeat,则这个间隔被认为是unknown。

    PDP在一个step间 know的比例百用于计算PDP的平均值,如果unknown的时间大于 step所指定时间的一半,则这个PDP被标记为unknown。 这意味着在一个单独的PDP step中 存在的 known 和unknown 的取样时间 可能或不能 达到把这个PDP标记位known的程度。

    Heartbeat 可以比step短(不常见) 或者长(常见);一个短的Heartbeat 意味着一个PDP 需要多个samples; 一个长的Heartbeat 可以跨越几个steps,这意味着会从一个 sample中计算出几个PDPs。一个极端的例子就是 step=5分钟, Heartbeat=1天,这种情况下每天一个sample 将导致这天内所有的PDPs都被设置成一个平均值;这个平均值是一个加权平均, 以sample在该step中 占有的时间比做权重;举例如下:

时间轴

60(step)

65: 插入sample=10

120(step), 该处的PDP= (5*10 +55*30)/60

   125:插入sample=30

则120处的PDP 计算结果为:(5*10 +55*30)/60 = 28.33

2. 插入数据的命令

rrdtool {update | updatev} filename

[--template|-t ds-name[:ds-name]...]

N|timestamp:value[:value...] at-timestamp@value[:value...] [timestamp:value[:value...] ...]

解释[--template|-t ds-name[:ds-name]...]: 默认情况下,update命令认为它输入数据的顺序与 RRD中定义的数据源DS的顺序一致(除了 COMPUTE 的数据源)

N:当前时间; :用于分割多个数据源, 空格用于一个数据源中多个数据点的分割。

举例说明:

rrdtool update demo1.rrd N:3.44:3.15:U:23

   向demo1的4个数据源中插入4个数据,时间位当前时间, 数据分别位3.44、 3.15、Unknown、23

rrdtool update demo2.rrd 887457267:U 887457521:22 887457903:2.7

   向demo2的1个数据源中插入3组数据。

3. 作图的命令

rrdgraph

时间范围选项:[-s|--start time] [-e|--end time] [-S|--step seconds]

数据定义:

DEF:=::[:step=][:start=][:end=][:reduce=<CF>]

默认情况下,存有对应 分辨度和 合并函数的RRA中的数据 会被使用;

举例:DEF:ds0weekly=router.rrd:ds0:AVERAGE:step=7200

如果DEF中定义的DS, CF没有对应的RRA存在,则会报如下错误:

ERROR: the RRD does not contain an RRA matching the chosen CF

CDEF,VDEF的逆波兰表达式定义。

绘图例子:

rrdtool graph speed30min.png --start 920804400 --end 920806200 \

--x-grid MINUTE:2:MINUTE:10:MINUTE:10:0:%H:%M \

--vertical-label m/s \

DEF:myspeed=test.rrd:speed:AVERAGE \

CDEF:realspeed=myspeed,1000,\* \

LINE2:realspeed#FF0000


参考:
rrdtool官方Document中的tutorial

繁体的与mrtg比较的, 也很好

阅读(2656) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~