RRDTool 入门攻略(一)

最近在摸摸精度细化的一些,嗯,系统的服务性能如何很好的show出来,即有后台的支持,也有前端的炫,后来在opennms中借鉴了一下,认识了RRD。好东西。网罗了很多,想写点自己的,看看时间也不允许,其实重要的时自己也是一个入门级,这样的想法待修炼到一定程度再续吧,呵呵^..^。现转载点很不错的,入门真的很不错,基础很重要。


RRDtool  简介

**********************************************************************************************************************
注 :该教程参考了如下内容 :
A
)官方文档 :http://oss.oetiker.ch/rrdtool/doc/index.en.html
B
abel  兄的大作 :http://bbs.chinaunix.net/viewthr ... p;highlight=rrdtool
               http://bbs.chinaunix.net/viewthr ... p;highlight=rrdtool
作者 :ailms <ailms{@}263{dot}net>
版本 :v1
最后修改 :2006/12/6 22:20

*2006/12/06 
:修正了第4 篇中 create  命令中 RRA  行数的错误
**********************************************************************************************************************


   
在介绍 RRDtool  之前,让我们先回顾一下它的前身:MRTG 。相信只要做网管工作的朋友,对 MRTG  这个软件一定不会陌生,

至少也可能听过。MRTG  可以通过 SNMP  协议直接访问 SNMP Object  ,例如 ifInOctect  ifOutOctect  ;也可以通过外部 

script 
的方式,来监测cpu 、内存、磁盘利用率、数据库的表空间利用率等信息。只要把 MRTG  放入 crontab  中让其自动运行,

MRTG 
就可以自动为你绘制出每天、每周、每月、每年的统计图表。 MRTG  甚至还为你提供了自动生成配置文件的 cfgmaker 

自动生成 HTML  页面的 indexmaker  这两个工具,让你省去逐个编写 cfg  文件的痛苦。到目前为止,还有很多人在使用它。它现在

 UnixWindows  各种平台,windows  平台上甚至出现了 PRTG  这样和 MRTG  很象的东东,轻点鼠标就可以漂亮的完成工作。

既然如此,我们为什么还要介绍 RRDtool  呢?先让我们看几个问题,几个在 MRTG  使用中常见的问题 :


一)MRTG  不能作什么?

A
MRTG  一张图表只能显示2 个对象,一个输入,一个输出。 如果你想同时显示多个对象呢?例如笔者的单位有12 台服务器。如果想

把它们的负载情况都显示在一个图表上,MRTG  至少需要6 张图。

B
MRTG 无法回放数据。 MRTG  的图是自动生成的,所采用的数据也是由 MRTG  自己提取的,例如5 分钟平均的记录有288 条,   MRTG20 分钟合并一次,

每次合并4 个记录。在50 个小时后,288 条记录将全部变成20 分钟平均的数据。如果你想回放这些数据怎么办呢?对不起,只能去

看第2 个图了(每周)。

C
MRTG  只有 COUNTER  GAUGE  这两种计算类新。 如果我要监测两个数值型的对象之间的大小,它们之间的差值可以是正数,也可以

是负数。MRTG  能实现吗?笔者在多次试验中发现,MRTG  对于负数的和 ‘.15’    这样格式的小数(通常都是bc 的输出)的识别会出错。

例如把 ‘.72’  识别为 72 ,把 -1  识别为 1

D
MRTG  无法实现有条件的绘图。 有时候我们只想看某个服务器在一年之中的宕机时间,正常时间我们不关心;或者我们想看当前值和去年同期相比究竟如何? 这些都是

    MRTG
无法做到的

二) MRTG  的优点

 MRTG  RRDtool  相比就没有优点了吗?也不是。简单、方便 就是它的最大优点。

MRTG  中还有一个好东西就是自动告警功能,相比之下,RRDtool  在这方面的配置比较复杂,

还不如直接作到 shell script 中)

前面提到 MRTG  能够通过 cfgmaker  indexmaker  快速建立配置文件和HTML 页面。而 RRDtool  在这两方面都需要自己动手。

数据的采集 插入数据 提取数据 绘图 建立 HTML  ,这些步骤都是需要你自己动手的。RRDtool  给了使用它的人最大程度的自由。但这种

自由对于新手或者没有耐心的人来说可能是一种考验。相比之下,MRTG  就容易上手多了。


三) RRDtool  的定义

RRDtool 
代表 “Round Robin Database tool”  ,作者同时也是 MRTG  软件的发明人。官方站点位于http://oss.oetiker.ch/rrdtool/  

所谓的“Round Robin”  其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储

   
数据的数据库的空间看成一个圆,上面有很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的

   
一条直线。指针会随着数据的读写操作自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进

   
的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。这样整个存储空间的大小就是一个固定的数值。所以RRDtool  就是使用类似

   
的方式来存放数据的工具,RRDtool  所使用的数据库文件的后缀名是 ‘.rrd’


四)RRDtool  的特殊之处

A
) 首先 RRDtool  存储数据,扮演了一个后台工具的角色。但同时 RRDtool  又允许创建图表,这使得 RRDtoo    看起来又像是前端工具。其他的数据库

      
只能存储数据,不能创建图表。

B
 RDtool  的每个 rrd  文件的大小是固定的,而普通的数据库文件的大小是随着时间而增加的

C
) 其他数据库只是被动的接受数据, RRDtool  可以对收到的数据进行计算,例如前后两个数据的变化程度(rate of   change ),并存储该结果。

D
 RRDtool  要求定时获取数据,其他数据库则没有该要求。如果在一个时间间隔内(heartbeat )没有收到值,则会用 UNKN  代替,其他数据库则不会这样做

五)总结RRDtool  MRTG  的不同之处

A
 MRTG  是采用配置文件的方式来监控的;

   RRDtool 
则没有配置文件一说。所有操作都是通过命令(也可以写成script 方式)执行

B
 MRTG  有自动采集数据的功能(通过 snmp );

    RRDtool 
没有,需要手工或者通过 shell/perl  脚本来获取数据

C
 MRTG  每次运行都会更新图片和日志;

    RRDtool 
默认知识接收数据,并不会绘图,除非手工执行 graph  命令

D
 MRTG  采用明文的 log  方式存放历史数据;

    RRDtool 
采用数据库的方式来存放数据;

E
 MRTG  无法回放日志数据,因为 MRTG  会对日志进行合并;

    RRDtool 
采用 RRA  的概念,把不同统计周期的数据单独存放,所以可以做到历史数据的回放功能

F
 MRTG  log  中每种周期的记录的数量是自动维护的;

    RRDtool 
 RRA  中的记录数是可以自定义的。

G
 MRTG  中数据的统计时间间隔是固定的,例如 5 分钟平均,30 分钟平均,2 小时平均,1 天平均;

   RRDtool 
可以任意设置(试过1 分钟一次)

H
 MRTG  一张图只能显示2 个对象;

    RRDtool 
可以显示多个。

I
 MRTG  的数据类型只有 COUNTER  GAUGE  两种;

RRDtool 
5 种,COUNTERGAUGEDERIVEABSOLUTECOMPUTE

J
 MRTG  的图表只能显示当前值、最大值、平均值;

    RRDtool 
可以显示当前值(LAST )、初值(FIRST )、最大值(MAX) 、最小值(MIN )、平均值(AVG )、总和(TOTAL )等

K
 MRTG  绘图方式只有 AREALINE  方式;

    RRDtool 
则有 AREALINE1|2|3 )、STACK  方式;

L
 MRTG  负责搜集、存储、绘图、建档(HTML );

    RRDtool 
只负责存储、绘图这两个阶段,所以需要自己建立 HTML  文件

M
 MRTG  的运算功能较差;

   RRDtool 
可以通过 CDEF  对取出来的数据进行算术和逻辑运算;

N
MRTG  只能原原本本的显示数据;

RRDtool 
可以对数据进行处理,或者有条件的显示;

看来 RRDtool  的功能是不是比 MRTG  强很多呢?!

具体的差异目前就只能想到这些,不知各位还有没有什么补充呢? !!^_^  !!

相信这么讲的话还是比较抽象的,不过不用急,目前只是一个开始而已。

下一节我们开始讲如何安装 RRDtool 

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/18 0:06
**********************************************************************************************************************


一) 安装前的准备

   
 Redhat 9  为例 :

   
如果要安装 source  包,请到 :http://oss.oetiker.ch/rrdtool/pub/?M=D

   
如果要安装 RPM  包,请到http://dag.wieers.com/packages/rrdtool/ 

   
不管采用那种方式,都需要先确认当前系统中是否有安装如下RPM 包 :

[Copy to clipboard]

CODE:

[root@dns1 bob]# rpm -qa |grep zlib 
zlib-1.1.4-8
zlib-devel-1.1.4-8 
[root@dns1 bob]#



[Copy to clipboard]

CODE:

[root@dns1 bob]# rpm -qa |grep libpng
libpng-1.2.2-20
libpng10-devel-1.0.13-11
libpng10-1.0.13-11
libpng-devel-1.2.2-20
[root@dns1 bob]#



[Copy to clipboard]

CODE:

&#61548;
[root@dns1 bob]# rpm -qa |grep freetype
freetype-utils-2.1.3-6
freetype-devel-2.1.3-6
freetype-2.1.3-6
freetype-demos-2.1.3-6
[root@dns1 bob]#



[Copy to clipboard]

CODE:

[root@dns1 bob]# rpm -qa |grep   libart_lgpl 
libart_lgpl-2.3.11-2
libart_lgpl-devel-2.3.11-2
root@dns1 bob]#


二)RPM  方式安装

Redhat 9 
 RRDtool  相关的 rpm  包如下,并非所有都要装,有些只是同一个rpm 包不同版本而已。

[Copy to clipboard]

CODE:

perl-rrdtool-1.0.50-3.rh9.rf.i386.rpm
perl-rrdtool-1.2.13-1.rh9.rf.i386.rpm
perl-rrdtool-1.2.15-1.rh9.rf.i386.rpm
php-rrdtool-1.0.50-3.rh9.rf.i386.rpm
rrdtool-1.0.50-3.rh9.rf.i386.rpm
rrdtool-1.2.13-1.rh9.rf.i386.rpm
rrdtool-1.2.15-1.rh9.rf.i386.rpm
rrdtool-devel-1.0.50-3.rh9.rf.i386.rpm
rrdtool-devel-1.2.13-1.rh9.rf.i386.rpm
rrdtool-devel-1.2.15-1.rh9.rf.i386.rpm
tcl-rrdtool-1.2.13-1.rh9.rf.i386.rpm


三)source  方式安装

Source 
包就简单了,就一个   http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.14.tar.gz

下面就以 Source  包的方式安装 :

在开始 build RRDtool  之前,要先决定两件事 :

第一是在那个目录下执行 build  操作。

第二是想把 RRDtool  安装在什么位置。

例如 :

[Copy to clipboard]

CODE:

[root@dns1 bob]# BUILD_DIR=/tmp/rrdbuild 
[root@dns1 bob]# INSTALL_DIR=/usr/local/rrdtool-1.2.14
[root@dns1 bob]# mkdir -p $BUILD_DIR
[root@dns1 bob]# cd $BUILD_DIR
[root@dns1 rrdbuild] # tar zxf rrdtool-1.2.14.tar.gz
[root@dns1 rrdbuild] cd rrdtool-1.2.14
[root@dns1 rrdbuild] ./configure --prefix=$INSTALL_DIR && make && make install


然后需要的就是耐心的等待,正常情况下应该是没有问题的,如果还是报错,注意检查是否满足上面的 RPM  需求。

   
当重新出现 shell  提示符时,表示安装结束。这时候可以执行 rrdtool  命令看是否安装成功

四)测试安装是否成功

QUOTE:

[root@dns1 rrdtool-1.2.14]# /usr/local/rrdtool-1.2.14/bin/rrdtool

RRDtool 1.2.14   Copyright 1997-2006 by Tobias Oetiker <tobi@oetiker.ch>
         Compiled Oct 14 2006 10:55:28

Usage: rrdtool [options] command command_options

Valid commands: create, update, updatev, graph, dump, restore,
         last, first, info, fetch, tune, resize, xport

RRDtool is distributed under the Terms of the GNU General
Public License Version 2. (www.gnu.org/copyleft/gpl.html)

For more information read the RRD manpages

[root@dns1 rrdtool-1.2.14]#


如果出现上述输出则表示安装已经成功。不过每次都要输入这么长的命令岂不是很麻烦。最好加入到 PATH  中去。

[Copy to clipboard]

CODE:

[root@dns1 rrdtool-1.2.14]# vi ~/.bashrc


 PATH  一行修改为 :

[Copy to clipboard]

CODE:

PATH=$PATH:$HOME/bin:/usr/local/rrdtool-1.2.14/bin


整个安装过程到此就结束了,是不是很简单呢 ^_^

   
如果你是想安装到别的地方,只要把上面对应的 /usr/local/rrdtool-1.2.14  替换为你想要的目录就可以了

好了,下一节我们讲MRTG RRDtool  实施前的规划问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值