最近在摸摸精度细化的一些,嗯,系统的服务性能如何很好的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 文件的痛苦。到目前为止,还有很多人在使用它。它现在
有 Unix 、Windows 各种平台,windows 平台上甚至出现了 PRTG 这样和 MRTG 很象的东东,轻点鼠标就可以漂亮的完成工作。
既然如此,我们为什么还要介绍 RRDtool 呢?先让我们看几个问题,几个在 MRTG 使用中常见的问题 :
一)MRTG 不能作什么?
A )MRTG 一张图表只能显示2 个对象,一个输入,一个输出。 如果你想同时显示多个对象呢?例如笔者的单位有12 台服务器。如果想
把它们的负载情况都显示在一个图表上,MRTG 至少需要6 张图。
B )MRTG 无法回放数据。 MRTG 的图是自动生成的,所采用的数据也是由 MRTG 自己提取的,例如5 分钟平均的记录有288 条, MRTG 每20 分钟合并一次,
每次合并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 种,COUNTER 、GAUGE 、DERIVE 、ABSOLUTE 、COMPUTE
J ) MRTG 的图表只能显示当前值、最大值、平均值;
RRDtool 可以显示当前值(LAST )、初值(FIRST )、最大值(MAX) 、最小值(MIN )、平均值(AVG )、总和(TOTAL )等
K ) MRTG 绘图方式只有 AREA 、LINE 方式;
RRDtool 则有 AREA 、LINE (1|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 包 :
CODE:
[root@dns1 bob]# rpm -qa |grep zlib
zlib-1.1.4-8
zlib-devel-1.1.4-8
[root@dns1 bob]#
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]#
CODE:

[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]#
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 包不同版本而已。
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 安装在什么位置。
例如 :
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 中去。
CODE:
[root@dns1 rrdtool-1.2.14]# vi ~/.bashrc
把 PATH 一行修改为 :
CODE:
PATH=$PATH:$HOME/bin:/usr/local/rrdtool-1.2.14/bin
整个安装过程到此就结束了,是不是很简单呢 ^_^
如果你是想安装到别的地方,只要把上面对应的 /usr/local/rrdtool-1.2.14 替换为你想要的目录就可以了
好了,下一节我们讲MRTG 和 RRDtool 实施前的规划问题。