赵本山国籍是加拿大吗:RRDtool 系列连载-8 :绘图(中篇) - RRDtool - 阿勃的 blog

来源:百度文库 编辑:中财网 时间:2024/04/28 04:33:18
RRDtool 系列连载-8 :绘图(中篇)



这是没有采用 STACK 方式绘图的效果 :



可以看得出上面采用 STACK 方式的比较清晰,但要注意,采用 STACK 方式后,在读取 out 流量时,Y 轴的刻度不再是 out 的值,

应该用刻度值减去 in 的值,才是 out 真正的值。这点比较麻烦。需要配合 GPRINT 语句才能达到一定的效果。

六)图表大小(Size)

[Copy to clipboard] [ - ] CODE: [-w|--width pixels] [-h|--height pixels]
这里说图表大小而不是图片大小,是因为 –w ,-h 控制的是 X/Y 轴共同围起来的那部分大小,而不是整个图片的大小,这点在前面就可以看出了。

默认的图表大小是 400 (长)x 100 (高),但一般会返回497x179 这样的数字,这个才是图片的大小。

RRDtool 比 MRTG 好的一个地方就是 MRTG 一放大图片,就会变得模糊。RRDtool 则不会。

在官方文档中,-w 似乎是一个比较敏感的参数,我们看下面的描述 :

QUOTE: First it makes sure that the RRA covers as much of the graphing time frame as possible. Second it looks at the resolution of the

RRA compared to the resolution of the graph. It tries to find one which has the same or higher better resolution. With the ``-r''

option you can force RRDtool to assume a different resolution than the one calculated from the pixel width of the graph.


QUOTE: By default, rrdtool graph calculates the width of one pixel in the time domain and tries to get data from an RRA with that resolution.

With the step option you can alter this behaviour. If you want rrdtool graph to get data at a one-hour resolution from the RRD, set

step to 3'600. Note: a step smaller than one pixel will silently be ignored
这两段话分别是从rrd-beginners  和 rrd_graph 文档中摘出来的。似乎看起来 –w 会影响到图表的 resolution ,进一步影响到 RRDtool 如何选择 RRA ,

但经过实验却发现并非如此。

我对这两段话中的图表的 resolution 一词不知如何理解和计算,希望好心的朋友能够指点一下 ^_^ .


实例1 :使用 –w 设定图表大小为 300 像素

[Copy to clipboard] [ - ] CODE: [root@dns1 bob]# rrdtool graph 3.png
> -w 300 \                                # 设定 size 为 300 pixel
> --start now-120000 \
> DEF:value1=eth0.rrd:eth0_in:AVERAGE \
> AREA:value1#ff0000           
381x154
[root@dns1 bob]#


可以看到图表是不是变小了呢?而且整个图片的大小也变小了。

如果用前面的话来推理,由于 120000/300(-w的值)= 400 > 300 (step),由于没有 resolution=400 的 RRA,

所以应该采用 resolution=7200 的第2个 RRA 的数据来绘图,但实际上不是。



上面这个才是 300 pixel 宽,resolution=7200 的效果

所以我觉得 –w 和 –h 并不能影响 RRDtool 如何选择 RRA ,只能起到缩小放大的作用。

BTW:当你绘制的时间范围较大时,可以使用 –w 增大图表大小,这样看起来比较“舒服“




七) Y 轴上下限(Limits)

[Copy to clipboard] [ - ] CODE: [-u|--upper-limit value] [-l|--lower-limit value] [-r|--rigid]

默认情况下,RRDtool 会和 MRTG 一样自动调整 Y 轴的数字,来配合当前的数值大小。如果想禁止该特性,可以通过 –upper-limit 和

-–lower-limit 来做限制,表示Y轴显示的值从多少到多少。如果没有指定 –rigid ,则在图表的上下边界处还是会有一些延伸,但如果指定了
  
-–rigid ,则严格按照 –-upper-limit 和 –-lower-limit 绘制。

在使用 –lower-limit 时要注意,如果数据中有负数,如果 -–lower-limit 为 0,则负数部分是显示不出来的。

实例1 :使用 –-upper-limit 和 –-lower-limit 限制 Y 轴的上下限

[Copy to clipboard] [ - ] CODE: [root@dns1 bob]# rrdtool graph 1.png \
> --start now-120000 \
> -v "Traffic" -t "33 Hours ago" \
> --lower-limit -5000 \                # 限制Y轴下限为 -5000
> --upper-limit 10000 \                # 上限为 10000
> --rigid \                                         # 严格按照上面的规定来画
> DEF:value1=eth0.rrd:eth0_in:AVERAGE \
> DEF:value2=eth0.rrd:eth0_out:AVERAGE \
> AREA:value1#00ff00:in \
> LINE1:value2#ff0000:out:STACK
497x179
[root@dns1 bob]#



八) X/Y 轴刻度(Grid)

[Copy to clipboard] [ - ] CODE: [-x|--x-grid GTM:GST:MTM:MST:LTM:LST:LPR:LFM]
[-x|--x-grid none]
[-y|--y-grid grid step:label factor]
[-y|--y-grid none]
[-Y|--alt-y-grid]
[-X|--units-exponent value]
RRDtool 中设置 X 轴的刻度比较复杂,如果没有必要,可以交给 RRDtool 自动去处理。

例如上面的图,33 小时的情况下,X 轴只有2个值,显得很不足。这时候有两种方法 :

A)一是使用 –w 增大图表的宽度,这样 RRDtool 会自动加多一些刻度上去。



不过需要增加多大才会有上面的这种效果不得而知,所以这种方法不是很方便。

B)二是通过上面的选项自己设置 X/Y 轴的刻度如何显示。首先看上图,在垂直的线中,红色的线称为 Major Grid(主要网格线),

    灰色的线称为 Base Grid (次要网格线)(这里是借用 EXCEL 中的概念 ^_^ )。 X 轴下面的时间文字成为 Label 。了解这
   
    三样东西后,就可以动手调整刻度了。
   
C)有两种方法可以快速去掉 X/Y 轴的刻度,就是 –-x-grid none 和 –-y-grid none

D)GTM:GST :控制次要格网线的位置。GTM 是一个时间单位,可以是 SECOND、MINUTE、HOUR、DAY 、WEEK、MONTH、YEAR 。

     GST 则是一个数字,控制每隔多长时间放置一根次要格线。例如我们要画一个1天的图表,决定每15分钟一根次要网格线,则格式为 MINUTE:15
     
E)MTM:MST :控制主要网格线的位置。MTM 同样是时间单位,MST 是一个数字。接上面的例子,决定一个小时1根主要网格线。则格式为 HOUR:1

     LTM:LST :控制每隔多长时间输出一个label 。决定为1小时1个 label 。则格式为 HOUR:1

G)LPR:LFM :LTM:LST 只是决定了 label 的显示位置了,没有指定要显示什么内容。LPR 指的是如何放置 label 。如果LPR 为0,则数字对齐格线

    (适用于显示时间)。如果不为0,则会做一些偏移(适用于显示星期几、月份等)。至于LFM 则需要熟悉一下 date 命令的参数,常用的有 %a(星期几)、
   
    %b(月份)、%d(天)、%H(小时)、%M(分)、%Y(年)。我们决定显示小时和分,所以用 %H%M

H)综合起来,X 轴的刻度定义就是 –-x-grid MINUTE:15:HOUR:1:HOUR:1:0:’%H:%M’。最好把 %H:%M 括起来

     建议 MST是 GST 的2-6倍,MST 和 LST 相同。这样画出来的图比较美观一些


   

这明显就是图片太小了,不够显示。把上面的 :%M 去掉就可以了,只显示小时,不显示分钟

   

如果把图片放大一点就更好了 (-w 800)

   

所以在设置 X 轴的刻度时,要记得不要显示太多东西,否则需要增大图片的大小

   

I)Y 轴刻度的设置又不一样了

   grid step :用于控制Y轴每隔多少显示一根水平线

   label factor :默认为1,也就是在每根水平线的高度那里显示一个值。

   例如下面就是一个例子 (每隔800显示一根水平线)

   

J)Y 轴还有一个很方便的选项就是 –Y ,它可以最大限度的优化 Y 轴的刻度,建议每次绘图都加上去。

K)Y 轴另外一个有用的选项就是 –X (虽然选项名是 -X ,但确实是用来设置 Y 轴刻度值的)。在上面的图我们看到 RRDtool 自动对 Y 轴的值进行调整,

     以 k 为单位显示。但如果你不想以 k 显示,而是想固定以某个单位来显示(M,b)该怎么办呢?这就要用到 –X 选项了。-X 后面跟一个参数,参数值
     
     范围是 -18、-15、-12、-9、-6 、-3、0、3、6、9、12、15、18 。0 表示以原值显示,3 表示数值除以1000,也就是以 k 为单位显示,6 就是以
     
     M 显示,9 就是以 G 显示。如果你给出1或者2,则 RRDtool 也可以接受,但会被“静悄悄”的改为0。下面就是一个以原值(-X 0)显示的例子