论坛风格切换切换到宽版
  • 1428阅读
  • 4回复

[问题求助]RRDtool简体中文教程_8:如何用RRDtool进行绘图_(一) [复制链接]

上一主题 下一主题
离线wscxyy.
 
发帖
2093
C币
-140091
威望
377
贡献值
1
银元
-4
铜钱
4609
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
使用RRDtool 进行绘图

**************************************************************************************************.************.********.<性病>
注 :.该教程参考了如下内容 :电脑
A)官方文档 :http://oss.oetiker.ch/rrdtool/doc/index.en.html          婚庆
B)abel 兄的大作 :http://bbs.chinaunix.net/viewthread.php?tid=552224&highlight=rrdtool--------------彩票
                http://bbs.chinaunix.net/viewthread.php?tid=552220&highlight=rrdtool.
作者 :ailms <ailms{@}263{dot}net..>域名
版本 :v1
最后修改. :2006/11/17 17:35.
*******.*********.******************************.************************************************************************.


一)前言

使用RRDtool 我们最关心什么?当然是如何把数据画出来了。.虽然前面谈了很多,但这.些都是基础来的。掌握好了,可以让你在绘图时更加得心应手。[成人用品]

本.来还有 RPN (反向波兰表达式)一节.的,但考虑一下,觉得还是放到后面,先从基本的绘图讲起。(        游戏          )

这一节的内容虽然很多,但基本都是实验性的内容,只要多.试几.次就可以了。健康

二、graph 操作的语法

rr.dtool graph filename .[option ...] 外贸

   [data definitio.n ...]           建材

   .[data calculation ....]        .

   [varia.ble definition ....]学习

   [graph eleme.nt ...]健康

   [print element ....].
复制代码

其中.的 data definiton.、variable definition 、data calculation、分别是下面的格式域名

DEF:<vname>=<rrdfile>:<ds-na.me>:<CF>[:.step=<step>][:st.art=<time>][:end=<time>][:reduce=<CF>]电脑

VDEF:vname=RPN express.ion服务器

CDEF:vna.me=RPN expression.
复制代码

其中. .filename 就是你想要生成的图片文件的名称,默认是 png 。你可以通过选项修改图片的类型,可以有 PNG、SVG、EPS、PDF四种。.

A)DEF 是 Definition (定义.)的意思。定义什么呢?你要.绘图,总要有数据源.吧?DEF 就是告诉 RRDtool 从那个 RRD 中取出指定.

    D.S(eth0_in、eth0_ou.t)的某个类型的统计值(还可.以指定 resolution、start、end),并把这一切放入到一个变量 <vname>中 。学习
    
    你可能会感到.奇怪,为什么还有一个 CF 字段?因为 RRA 有多种  CF 类型,有些 RRA 可能用来保存.平均值、有些 RRA 可能用于.统计最大值、电影
    
    最小值等等。所以你.必须同时指定使用什.么 CF 类型.的 RRA的数据。至于 :start 和 :end 、:reduce 则用得比较少,最常用的就是 :step 了,.
    
    它可.以让你控制 RRDtool 从那个 RR.A 中取数据。(        游戏          )

B)VDEF 是 Var.i.able. Definition (变量定义)的意思。定义什么呢?记得 MRTG 在图表的下面有一个称之为 Legend 的部分吗?电影

    那里显示了1.个或者2个 DS (MRTG 没有 DS 一说,这里.是借用 RRDtool. 的)的 “最大值”、“平均值”、“当前值”。这些值是如何.
    
    计算的呢?
    
    RRDto.ol 中用 VDE.F 来定义。这个变量专门存放某个 DS 某种类型的值,例如. eth0_in 的最大值、eht0_out 的当前值等。当你需要象.
    
     MRTG  一样输出数字报表(Legend) .时,就可以在 GPRINT 子句(.sub clause)中调用它。             汽车
  
   同样它也需要用一个变量来存放数值。要注意的是,旧版 的 RRDtool 中是用另外一种格式来达到相同的目的。新版的 RRDtool 则推荐使用..(        游戏          )
  
    VDEF  . 语句。但在使用过程中,.却发现 VDEF 的使用反而造成了困扰。 例如你有5个 DS 要画,每个 DS 你都想输出最大值.、最小值、平均值.
    
    、当前值。  如果使用 ...VDEF ,则需要 4 * 5 = 20 个 VDEF 语句,这会造成极大的困扰。具体例子可以看第十一节“数字报表”部分。            杀毒
  
C)CDEF 是 Calculation Define 的意思。使用过M.RTG 的都会体会到一点,MRTG 的计算.能力实在太差了。例如你有两个 Target .,虚拟主机

      一个是 eth0_in , 一个是 eth0_out,.如果要把它们相加起来,再除.以8,得出 byte.s 为单位的值,如何计算呢?或者说你只想看.
      
      eth0_in 中超过 10Mb/s 的那部分, 其余的不关心,.又如何实现呢?因为 MRTG 不能对它从 log .取出来的数.据进行修改,只能原.
      
      原本本的表现,.所以很难满足我们的要求。而使用 CDEF ,. 这一切都可以很容易的实现。CDEF 支持很多数学运算,甚至还支持简--- 印刷
      
      单的逻辑运算 if-then-else. ,可以解决前面提到的第2个问题:如何只绘制你所关 心的数据。不过这一切都需要熟悉 RPN 的语.法,--- 印刷
      
      所以我们放到下一节介绍,这一节就.介绍如何把 RRDtool .中的数据以图表的方式显示出来。服务器
      
      
三)选项分类

本部分我们按照官方文档的方式,把选项分成几大类,分为  .:..

A)Time range : .用于控制图表的X轴显示的起始/结束.时间,也包括从RRA中提取指定时间的数据。(        游戏          )

B)Labels .:用于控制 X./Y 轴的说明文字。           鲜花

C)Size :用于.控制图片的大小。--------------彩票

D)Limits :.用于控制 Y 轴的上下限。(广告)

E)Grid :用于控制 X./Y 轴.的刻度如何显示。.

F).Misc.ellaneous :其他选项。例如显示中文、水印效果等等。外贸

G)Report :数字报表

需要说明的是,本篇当中并不是列出了所有选项.的.用法,只是列出较为常用的选项,如果想查看所有选项的的用法,可以到官方站点下载文档,    美容

这里就不一.一列出了,望各位见谅。          婚庆


四)时间范围控.制(Time Range)教育

[-s|-.-start time] [-e|--end time] [-.S|--step seconds]电影
复制代码

既然要绘图,就应该有一个起始/结束的时间。.Graph 操作中有 –s ,-e 选项。这两个选项即可以用于控制图表.的 X 轴显示的时间范围,也可以用.

于控制 RRDtool 从 RRA 中提取对应时间的数据。如果没有指定 –-end ,默认为 now;如.果没有指定 –-start,则默认为1.天前。如果两者都没.有电脑

指定,则图表默认显示从当.前算起1天内的。数           女人
回头看一下 DEF 中,也有 :s.tart ,:end , :step ,这些和 –-start、--end、.--step 之间有什么关系呢?(        游戏          )

让我们先看 :step 和 –step之间的关系是如何的..。--- 印刷

下面以 eth0.rrrd 为例,假设要绘制的时间范围 ran.g.e 等于 end -start[服务器

A)如果 0 <  r.agne < 1.80000 (第一个 RRA 的时间覆盖范围) ,则默认从第1个RRA中取数据 :.

     如果 DEF 中给出的 :step > 300 ,例如 1000. ,则从 resolution= 1000. 的或者第一个高于 1.000 的RRA 中挑选数据,由于 eth0.rrd 中没有服务器
    
                            .                       .  resolution = 1000 的 RRA,则 RRDtool 会从 resolution = 120.0 的第2 RRA 中取数据。            杀毒

     如.果 DEF 中给出的 :step <.= 300 ,例如 200 ,则 RRDtool 会忽略该设定,还是从第一个 RRA 中取数据。             电子

B)如果 180000 < range < 720000  ,由于第一个RRA只能保存2天的数据,所以.默认从第2个RRA中取数.据 :--------------彩票

     如果 DEF 中给.出的 :step > 1200 ,例如 1800,则 RRDtool 会从 resolution = 7200. .的第3 RRA 中取数据<性病>

     如果 DEF 中给出 :.step<= 1200,例如 300 ,则 RRDtool 会忽略,还是从第2个 RRA 中.取数据健康

C)如果 720000 < range <  4320000 ,则默认从第三..个 RRA 中取数据 :           女人

.    如果 DEF 中给出的 :s.tep > 7200 ,例如 10000 ,则从第4个 RRA中取数据    外汇

     如果 DEF 中给出的 .:step <= 7200 , 例如 1200 ,则忽略.该值,并还是从第3 个 RRA 中取数据外贸

D)如果 4320.000 < range < 630720.00 ,则默认从第4个 RRA 中取数据 :(广告)

     如果 DEF 中给出的.. :step > 86400 ,则行为未知.

  .   如果 DEF 中给出的 :step <=86.400 ,则从第4个 RRA 中取数据.

E)-S 选.项可以直.接控制 RRDtool 如何挑选 RRA 。           建材

   . 例如 -S 1200 ,即使DEF 中不加 :.setp ,则 RRDtool 会从第2个 RRA 中取数据,即使 rang < 180000 .

.   如.果 -S 和 :step 同时出现,则 :step 优先。    美容

F)DE.F 中的 :start. 和 :end 可以覆盖 –-start 和 –-end 的值。.

.    默认情况下,如果 DEF 中不加 :start 和 :end ,则等于 –-st.art 和 –end              乙肝

    如果 DEF. 中定义了 :start 和 :end ,则以 :start 和 :en.d 为准。.

实例1 :使用 –-start 指定 X 轴的起始.时.间(        游戏          )

[root@dns1 bob]# rr.dtool graph 1.png \  .      域名

> --start now-120000 \  .      # 表示起始时间是当前时间往前 120000 秒,也就是. 33 个小时左右    外汇

> DEF:value1=eth0.rrd:e.th0_i.n:AVERAGE \         # 从eth0.rrd 中取出 eth0_.in 的数据,CF 类型为 AVERAGE.

> AREA:value1#f.f00.0.0        # 用“方块”的形式来绘制 value1 ,注意这里是用 value1 ,不是用 eth0_in电影

481x15.4                        # 如果 RRDtool. 有绘图方面的语句,则这里显示图片大小,否则为 0x0。(        游戏          )

[root@d.ns1 bob]#              乙肝
复制代码

外贸

可以看到 X ..轴的文字有些是乱码,不过不要紧,你可以临时已用 env LANG=C rrdtool xxxx 来解决该问题,或者在后面用.

–n 来设定. RRDtool 使用中文字体,就.不会出现这样的情况了           建材


实例2 :使用 :step 从第2个.RRA中取数据--- 印刷


[root@dns1 bob]# rrdto.ol graph 2.p.ng \              乙肝

> --start now-1200.00 \.

> DEF:value1=.eth0.rrd:eth0_in:AVERAGE:step=1000 \        # :step 指定. resolution=.1000 .

> AREA:value1#.ff0000              乙肝

481x154

[.root@dns1 bob]#             杀毒
复制代码

这里是 :step=1000,但 RRDtool 会取 :step=1200 的 第2个. RRA 的数据来绘图,.可以和上面的 1.png 比.较,发现比较平滑。--------------彩票

<性病>


实例3 :使用 –S 从第2个RRA中取.数据          婚庆

[root@dn.s1 bob]# rrdtool grap.h 4.png     健康

> -S 1200 \                .# 使用. –S 控制 RRDtool 从 resolution=1200 的 RRA 中取数据服务器

> --start now-120000. \.

> DEF:value1=eth0.rrd:.eth0_in:AVE.RAGE \             电子

> AR.E.A:value1#ff0000                   女人

481x154

[root.@dns1 bob]# <性病>


复制代码

    外汇

可以看到和上面的图一样,说明 RRDtool. 的确按照 -S 的设置从第2个RRA .中取数据了.

使用 –S 可以对 DEF 中所有的 DS 都使用相同的 resolution.,等于在每个. DEF后都加上 .:step=<value> ,value 是 –S 的值           鲜花

实例4 :同时使用 –S 和 :st.ep 域名

[root@dns1 bob]# rrdtool. graph 5..png 电脑

> -S 120.0 \                                # -S 指定 resolution=.1200           女人

> --start now-12000.0 \投资

> DEF:value.1=eth0..rrd:eth0_in:AVERAGE:step=300 .\        # :step 指定 resolution=300[成人用品]

> AREA:.value1#ff0000     投资

481x154

[r.oot@dns1 bob]#<性病>
复制代码

          婚庆


可以看到 5.png 和 1.png 是一样的.,也就是说 –S 1200 并没有起作用,而是 :step=300 起作用.了--- 印刷

实例5 :使用 :.start 和 :.end 只显示指定时间内的数据电影

[root@dns1 bob]# rrdtool graph. 1.png .\.

> --start now-1h \         . .              # X 轴显示1个小时的长度电脑

> DEF:va.lue1=et.h0.rrd:eth0_in:AVERAGE:start=now-600:end=no.w-300 \        # 但只取10分钟前到5分钟前的这部分             汽车

> AREA:value1#0.0ff00:in  .

475x168

[root@dns.1 bob]#<性病>
复制代码

域名

如果我们.不加 :start 和 :end ,则效果如.下 :电脑

(        游戏          )

我们甚至可以让两个对象显示不同的时.间,例如 域名

实例6 :让两个对象显示不.同时间段的数据.

[root@dns1 bob]# rrd.tool .graph 1.png \服务器

> --.start now-2h \                # 规定时间为2小.时内--------------彩票

> DEF:value1=eth0.rrd:eth0_in:AVERAGE:end=now:start=e.nd-1h \        # 规.定时间为1小时.内                    外汇

> DEF:value2=eth0.rrd:eth0_out:AVERAG.E \        # 没有指定 :start 和. :end,默认和 –-st.art 一样也是2小时    健康

> AREA:v.alue1#00ff00:in \.

> LINE2:v.al.ue2#ff0000:out:STACK .

475x168

[ro.ot@dns1 bob]#(广告)
复制代码

.


实例7 :把一段时间分为.几段分别显示 :虚拟主机

[root@dns1 bob]# rr.dtool gr.aph 1.png \          婚庆

> DEF:value1=eth0.rrd:eth0._in:AVERAGE:en.d=now:start=end-1h \        # 当前1小时.内           建材

> DEF:value2=eth.0.rrd:e.th.0_in:AVERAGE:end=now-1h:start=now-2h \        # 2小时前电影

> DEF:value3=eth0.rrd:eth0_in:AVERAGE:end=now-2h:start=now.-3h \.        # 3小时.前(        游戏          )

> LIN.E1:value1#0.0ff00:"1 hours ago" \健康

> LIN.E2:value2#ff.0000:"2 hours ago" \              乙肝

> LINE.3:value3#000000:"3 hour.s ago"  服务器

475x168

[.root@dns1 bob]学习
复制代码


健康

我们把3个小时内的数据用三.种不同粗细、.不同颜色的曲线画了出来。            杀毒

看到了吗,out部.分(红色)显示了2个小时内的流量,而in部分(绿色)则只显示了1个小时.内的部分.

在这里要提一点,.虽然我们指定了 –-start 或者 –-end ,或者 :start , :end,但并不意味着曲线就一定会从指定的时间点.开始和结束.。.

例如我们上面.指定了 :start=now-600:end=now-300 ,也就是只显示5分钟的数据。但图表.出来的效果却是10(10:05-.10:15)分钟教育

的数据,这是因为我们挑选的时间当中“不慎”横垮了两个周期(10:05-10.:10,10:10-10:15),所以 RRDt.ool 会把它们全部画.出来,而(        游戏          )

不是只画其中的5分钟。

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线cylczzj.
发帖
2088
C币
-60539
威望
413
贡献值
1
银元
-4
铜钱
4850
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
先收下,慢慢研究

离线labman.
发帖
2090
C币
-235599
威望
350
贡献值
1
银元
-3
铜钱
4524
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
我真诚呼吁搂住都出新作品

离线liangsyuan.
发帖
1924
C币
-60854
威望
337
贡献值
1
银元
-4
铜钱
4266
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
我真诚呼吁楼主多出新 贴

发帖
2113
C币
-235288
威望
388
贡献值
1
银元
-2
铜钱
4716
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
好贴,收下先了
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个