[工学]RRDtool简体中文教程.doc

上传人:音乐台 文档编号:1976688 上传时间:2019-01-27 格式:DOC 页数:74 大小:689.50KB
返回 下载 相关 举报
[工学]RRDtool简体中文教程.doc_第1页
第1页 / 共74页
[工学]RRDtool简体中文教程.doc_第2页
第2页 / 共74页
[工学]RRDtool简体中文教程.doc_第3页
第3页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[工学]RRDtool简体中文教程.doc》由会员分享,可在线阅读,更多相关《[工学]RRDtool简体中文教程.doc(74页珍藏版)》请在三一文库上搜索。

1、RRDtool简体中文教程本文转自:http:/ 作者:ailmsRRDtool简介 color=blue * 注:该教程参考了如下内容: A)官方文档:http:/oss.oetiker.ch/rrdtool/doc/index.en.html B)abel兄的大作:http:/ http:/ 作者:ailms 版本:v1 最后修改:2006/11/180:06 * /color 在介绍RRDtool之前,让我们先回顾一下它的前身:MRTG。相信只要做网管工作的朋友,对MRTG这个软件一定不会陌生, 至少也可能听过。MRTG可以通过SNMP协议直接访问SNMPObject,例如ifInOct

2、ect和ifOutOctect;也可以通过外部 script的方式,来监测cpu、内存、磁盘利用率、数据库的表空间利用率等信息。只要把MRTG放入crontab中让其自动运行, MRTG就可以自动为你绘制出每天、每周、每月、每年的统计图表。MRTG甚至还为你提供了自动生成配置文件的cfgmaker和 自动生成HTML页面的indexmaker这两个工具,让你省去逐个编写cfg文件的痛苦。到目前为止,还有很多人在使用它。它现在 有Unix、Windows各种平台,windows平台上甚至出现了PRTG这样和MRTG很象的东东,轻点鼠标就可以漂亮的完成工作。 既然如此,我们为什么还要介绍RRDto

3、ol呢?先让我们看几个问题,几个在MRTG使用中常见的问题: size=4一)MRTG不能作什么?/size A)color=blueMRTG一张图表只能显示2个对象,一个输入,一个输出。/color如果你想同时显示多个对象呢?例如笔者的单位有12台服务器。如果想 把它们的负载情况都显示在一个图表上,MRTG至少需要6张图。 B)color=blueMRTG无法回放数据。/colorMRTG的图是自动生成的,所采用的数据也是由MRTG自己提取的,例如5分钟平均的记录有288条,MRTG每20分钟合并一次, 每次合并4个记录。在50个小时后,288条记录将全部变成20分钟平均的数据。如果你想回放

4、这些数据怎么办呢?对不起,只能去 看第2个图了(每周)。 C)color=blueMRTG只有COUNTER和GAUGE这两种计算类新。/color如果我要监测两个数值型的对象之间的大小,它们之间的差值可以是正数,也可以 是负数。MRTG能实现吗?笔者在多次试验中发现,MRTG对于负数的和.15这样格式的小数(通常都是bc的输出)的识别会出错。 例如把.72识别为72,把-1识别为1。 D)color=blueMRTG无法实现有条件的绘图。/color有时候我们只想看某个服务器在一年之中的宕机时间,正常时间我们不关心;或者我们想看当前值和去年同期相比究竟如何?这些都是 MRTG无法做到的 si

5、ze=4二)MRTG的优点/size 那MRTG和RRDtool相比就没有优点了吗?也不是。简单、方便就是它的最大优点。 (MRTG中还有一个好东西就是自动告警功能,相比之下,RRDtool在这方面的配置比较复杂, 还不如直接作到shellscript中) 前面提到MRTG能够通过cfgmaker和indexmaker快速建立配置文件和HTML页面。而RRDtool在这两方面都需要自己动手。 数据的采集插入数据提取数据绘图建立HTML,这些步骤都是需要你自己动手的。RRDtool给了使用它的人最大程度的自由。但这种 自由对于新手或者没有耐心的人来说可能是一种考验。相比之下,MRTG就容易上手多

6、了。 size=4三)RRDtool的定义/size RRDtool代表“RoundRobinDatabasetool”,作者同时也是MRTG软件的发明人。官方站点位于http:/oss.oetiker.ch/rrdtool/。 所谓的“RoundRobin”其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储 数据的数据库的空间看成一个圆,上面有很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的 一条直线。指针会随着数据的读写操作自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动

7、,而不用担心到达终点后就无法前进 的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。这样整个存储空间的大小就是一个固定的数值。所以RRDtool就是使用类似 的方式来存放数据的工具,RRDtool所使用的数据库文件的后缀名是.rrd。 size=4四)RRDtool的特殊之处/size A)首先RRDtool存储数据,扮演了一个后台工具的角色。但同时RRDtool又允许创建图表,这使得RRDtoo看起来又像是前端工具。其他的数据库 只能存储数据,不能创建图表。 B)RDtool的每个rrd文件的大小是固定的,而普通的数据库文件的大小是随着时间而增加的 C)其他数据库只是被动的接

8、受数据,RRDtool可以对收到的数据进行计算,例如前后两个数据的变化程度(rateofchange),并存储该结果。 D)RRDtool要求定时获取数据,其他数据库则没有该要求。如果在一个时间间隔内(heartbeat)没有收到值,则会用UNKN代替,其他数据库则不会这样做 size=4五)总结RRDtool和MRTG的不同之处/size A)MRTG是采用配置文件的方式来监控的; RRDtool则没有配置文件一说。所有操作都是通过命令(也可以写成script方式)执行 B)MRTG有自动采集数据的功能(通过snmp); RRDtool没有,需要手工或者通过shell/perl脚本来获取数据

9、 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可以任意设置(试过

10、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)

11、; RRDtool只负责存储、绘图这两个阶段,所以需要自己建立HTML文件 M)MRTG的运算功能较差; RRDtool可以通过CDEF对取出来的数据进行算术和逻辑运算; N)MRTG只能原原本本的显示数据; RRDtool可以对数据进行处理,或者有条件的显示; 看来RRDtool的功能是不是比MRTG强很多呢?! color=red具体的差异目前就只能想到这些,不知各位还有没有什么补充呢?!_!/color 相信这么讲的话还是比较抽象的,不过不用急,目前只是一个开始而已。 下一节我们开始讲如何安装RRDtool。本帖最后由ailms于2006-12-409:24编辑zhdh1999 回复于:

12、2006-12-03 23:09:06收藏中。:D 谢谢lzplatinum 回复于:2006-12-04 07:45:38希望你能将这些贴子合并,现在这样太分散了不便于管理和阅读ailms 回复于:2006-12-04 09:21:41回斑竹大人,之前是考虑到内容太长,放在一个贴子里可能看得太类累了。 我现在已经把全部内容放到一个帖子了,不过有些原来的贴子由于被回复了,所以删除不了。 RRDtool的安装 color=blue * 注:该教程参考了如下内容: A)官方文档:http:/oss.oetiker.ch/rrdtool/doc/index.en.html B)abel兄的大作:ht

13、tp:/ http:/ 作者:ailms 版本:v1 最后修改:2006/11/180:06 * /color size=4一)安装前的准备/size 以Redhat9为例: 如果要安装source包,请到:http:/oss.oetiker.ch/rrdtool/pub/?M=D, 如果要安装RPM包,请到http:/ 不管采用那种方式,都需要先确认当前系统中是否有安装如下RPM包: rootdns1bob#rpm-qa|grepzlibzlib-1.1.4-8zlib-devel-1.1.4-8rootdns1bob#rootdns1bob#rpm-qa|greplibpnglibpng-

14、1.2.2-20libpng10-devel-1.0.13-11libpng10-1.0.13-11libpng-devel-1.2.2-20rootdns1bob#rootdns1bob#rpm-qa|grepfreetypefreetype-utils-2.1.3-6freetype-devel-2.1.3-6freetype-2.1.3-6freetype-demos-2.1.3-6rootdns1bob#rootdns1bob#rpm-qa|greplibart_lgpllibart_lgpl-2.3.11-2libart_lgpl-devel-2.3.11-2root

15、dns1bob#size=4二)RPM方式安装/size Redhat9上RRDtool相关的rpm包如下,并非所有都要装,有些只是同一个rpm包不同版本而已。 perl-rrdtool-1.0.50-3.rh9.rf.i386.rpmperl-rrdtool-1.2.13-1.rh9.rf.i386.rpmperl-rrdtool-1.2.15-1.rh9.rf.i386.rpmphp-rrdtool-1.0.50-3.rh9.rf.i386.rpmrrdtool-1.0.50-3.rh9.rf.i386.rpmrrdtool-1.2.13-1.rh9.rf.i386.rpmrrdtool-

16、1.2.15-1.rh9.rf.i386.rpmrrdtool-devel-1.0.50-3.rh9.rf.i386.rpmrrdtool-devel-1.2.13-1.rh9.rf.i386.rpmrrdtool-devel-1.2.15-1.rh9.rf.i386.rpmtcl-rrdtool-1.2.13-1.rh9.rf.i386.rpmsize=4三)source方式安装/size Source包就简单了,就一个:http:/oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.14.tar.gz 下面就以Source包的方式安装: 在开始buildRRDto

17、ol之前,要先决定两件事: 第一是在那个目录下执行build操作。 第二是想把RRDtool安装在什么位置。 例如: rootdns1bob#BUILD_DIR=/tmp/rrdbuildrootdns1bob#INSTALL_DIR=/usr/local/rrdtool-1.2.14rootdns1bob#mkdir-p$BUILD_DIRrootdns1bob#cd$BUILD_DIRrootdns1rrdbuild#tarzxfrrdtool-1.2.14.tar.gzrootdns1rrdbuildcdrrdtool-1.2.14rootdns1rrdbuild./configure-

18、prefix=$INSTALL_DIR&make&makeinstall然后需要的就是耐心的等待,正常情况下应该是没有问题的,如果还是报错,注意检查是否满足上面的RPM需求。 当重新出现shell提示符时,表示安装结束。这时候可以执行rrdtool命令看是否安装成功 size=4四)测试安装是否成功/size 引用: rootdns1rrdtool-1.2.14#/usr/local/rrdtool-1.2.14/bin/rrdtool RRDtool1.2.14Copyright1997-2006byTobiasOetiker CompiledOct14200610:55:28 Usage:

19、rrdtooloptionscommandcommand_options Validcommands:create,update,updatev,graph,dump,restore, last,first,info,fetch,tune,resize,xport RRDtoolisdistributedundertheTermsoftheGNUGeneral PublicLicenseVersion2.(www.gnu.org/copyleft/gpl.html) FormoreinformationreadtheRRDmanpages rootdns1rrdtool-1.2.14# 如果出

20、现上述输出则表示安装已经成功。不过每次都要输入这么长的命令岂不是很麻烦。最好加入到PATH中去。 rootdns1rrdtool-1.2.14#vi/.bashrc把PATH一行修改为: PATH=$PATH:$HOME/bin:/usr/local/rrdtool-1.2.14/bin整个安装过程到此就结束了,是不是很简单呢_ 如果你是想安装到别的地方,只要把上面对应的/usr/local/rrdtool-1.2.14替换为你想要的目录就可以了 好了,下一节我们讲MRTG和RRDtool实施前的规划问题。本帖最后由ailms于2006-12-409:36编辑ailms 回复于:2006-12

21、-04 09:22:13前期规划 color=blue * 注:该教程参考了如下内容: A)官方文档:http:/oss.oetiker.ch/rrdtool/doc/index.en.html B)abel兄的大作:http:/ http:/ 作者:ailms 版本:v1 最后修改:2006/11/180:06 * /color 可能大家会觉得奇怪,做个RRDtool还要规划什么?俗话说:磨刀不误砍柴工。好的规划必须具备灵活性、可扩展性,否则会给 将来的使用带来不少的麻烦。我们先谈一下MRTG的规划,再谈RRDtool的规划。 size=4一)MRTG的前期规划/size A)color=b

22、lue想要监测监测什么对象?/color并列出一个清单; B)color=blue想要以什么方法来取得数据?/color是通过SNMP还是shell、perl。如果使用SNMP,监测对象所在主机 的SNMP服务安装了吗?是否配置完毕; C)color=blue每个对象的监测时间是多长时间一次?/color并以此对监测对象进行分类。例如笔者本人共用MRTG监测了80多个对象,并根据 内容分成四类: 重要状态方面:例如HACMP的切换动作监控;Oracle服务的状态;LVM中的vg是否在线;服务器是否宕机等。这些监 测对象对于一个系统的运行来说都是十分重要的,一旦发生故障,需要立即处理的。所以对于

23、这类对象,按最 小时间间隔(5分钟一次)设置 I/O性能方面:主要是I/O吞吐量、I/O服务时间方面的监测。这类对象是7分钟一次 次要状态方面:例如cpu利用率、内存利用率、在线人数、温度、拨号用户人数等。20分钟一次 利用率方面:由于实际应用的问题,所以对利用率比较关心。单独拎出来做一块监测。主要是监控Oracle的各个表空间的利 用率,以及LVM磁盘系统各个分区的利用率。每25分钟一次 监控机本身:负责监控的监控机本身也需要监控。主要监控当前监测的对象数量,以及系统负荷。这类就30分钟一次。 D)color=blue每个对象一个cfg文件?还是全部集中在一个cfg文件中呢?/color我本

24、人还是比较倾向于每个Target一个cfg文件,每个cfg中都定 义Workdir、Language这两个选项。针对上面的5个分类,建立5个“大的”cfg文件,再利用MRTG中的Include功能导入一个个 “小的”、具体的cfg文件。这样当日后对某个监测对象进行修改时(例如修改数据的获取脚本,或者修改图片的外观),可以单独测试 该对象。不用连同其他对象也一起跑一次,节省不少时间。如果想取消那个对象的监测,在前面提到的那个“大的”cfg文件中,把对应 的Include语句注释掉就可以了,是不是更方便呢? E)color=blue为个监控对象起一个合适的名称/color。一般用的方式。这一步也满

25、重要的。一开始不注意,随便给个名字,等到后来自己都 搞不清楚了,建议一开始就规划好。如果要使用MRTG的告警功能,就更应该好好规划了,要不然收到告警邮件都不知道是那个对象,那个机 器出现问题,白白浪费时间。 F)color=blue是否需要用到MRTG的告警功能。/colorMRTG有告警功能,可以设置输入/出的最大值,最小值。超过限制就会调用ThreshProgI和ThreshProgO 选项指定的程序。我一般用发送邮件和HTML配合的方式。下面是告警部分的截图: 差不多也就这些了,就可以开始动手写script了。 size=4二)RRDtool的前期规划/size RRDtool的前期规划

26、相对多一点,因为RRDtool很多东西需要自己设定。除了上述MRTG考虑的几点之外,我一般还考虑以下几点: A)color=blue是一个RRD文件中包括多个监测对象(DS),还是分成多个RRD文件?/colorRRDtool提供了tune操作,可以增加监测对象或者删除RRD文 件中的某个对象,而且绘图时也可以指定要画的是那个对象,这点看个人喜欢而定。 B)color=blue如何统计取得的数据:/colorMRTG是固定的,5分钟、20分钟、2小时、1天。RRDtool则可以自己设置 C)color=blue如何保存/统计这些数据:/color这是和MRTG不同的地方。MRTGlog的建立和

27、维护是自动的,RRDtool的数据存放 则需要自己定义。但我们可以参照MRTG的方式: 每日统计图(5分钟平均):600个,大约2天的时间 每周统计图(20分钟平均):600个,大约8天的时间 每月统计图(2小时平均):600个,50天的时间 每年统计图(1天平均):730个,2年的时间 Dcolor=blue要以什么方式绘图:/colorMRTG只有曲线(LINE)和方块(AREA)两种;RRDtool除了这两种外,还有一种是STACK方式。就是在前一个曲线或者方 块的基础上绘图图,而不是直接从X轴开始绘图。这样绘制出来的图比较清晰,不会出现交叉的现象,但此时Y轴的值等于当前对象的值加上前一

28、 个绘图对象的值。例如前一个对象(cpu的系统进程利用率)的值是10,采用的是AREA方式绘图。当前对象(cpu的用户级进程的利用率)是5, 采用的是STACK方式,则“cpu的用户级进程利用率”对应的Y轴刻度是10+5=15;所以如果不加说明,别人可能会误解。 size=4三)实际例子/size A)color=blue搞清楚究竟想要监测什么对象:/color监测本地主机的网络流量。包括eth0和lo接口的流量。 B)color=blue想要以什么方法来取得数据:/colorsar也可以统计网卡接口的流量。但这里我们用SNMP,访问ifInOctets和ifOutOctets。 假设脚本名称

29、是get_eth0_traffic.sh和get_lo_traffic.sh C)color=blue每个对象的监测时间是多长时间一次:/color5分钟 D)color=blue是采用一个RRD文件还是多个:/color2个RRD文件,一个是eth0.rrd,一个是lo.rrd E)color=bl;ue为每个监测对象起名:/color分别是eth0_in,eth0_out,lo_in,lo_out F)color=blue统计频率:/color5分钟、20分钟、2小时、1天 G)color=blue如何保存统计数据:/color600个、600个、600个、730个 H)color=blu

30、e要以什么方式绘图:/color目前暂不考虑该问题。等到实际绘图时再体验。 color=red注:实际上我们可以把数据的插入、绘图一起做到get_eth0_traffic.sh和get_lo_traffic.sh中,但目前这两个脚本只是负责取数据并输出而已, 到最后我们再把这些功能合并到一起。/color size=4四)下面是脚本的内容/size rootdns1bob#catget_eth0_traffic.sh#!/bin/bash#首先取得eth0接口的ifIndexindex=$(snmpwalk-IRlocalhostRFC1213-MIB:ifDescr|grepeth0|cut

31、-d=-f1|cut-d.-f2)#再通过snmp协议取得ififInOctets和ifOutOctets的值#由于在/etc/snmp.conf中配置了defVersion和defCommunity,所以snmpget命令不用指定这两个参数eth0_in=$(snmpget-IR-OslocalhostifInOctets.$index|cut-d:-f2|tr-d:blank:)eth0_out=$(snmpget-IR-OslocalhostifOutOctets.$index|cut-d:-f2|tr-d:blank:)echo$eth0_inecho$eth0_outrootdns1

32、bob#rootdns1bob#catget_lo_traffic.sh#!/bin/bash#首先取得eth0接口的ifIndexindex=$(snmpwalk-IRlocalhostRFC1213-MIB:ifDescr|greplo|cut-d=-f1|cut-d.-f2)lo_in=$(snmpget-IR-OslocalhostifInOctets.$index|cut-d:-f2|tr-d:blank:)lo_out=$(snmpget-IR-OslocalhostifOutOctets.$index|cut-d:-f2|tr-d:blank:)echo$lo_inecho$lo

33、_outrootdns1bob#再把这2个脚本放入crontab中,每5分钟执行一次 */5*/home/bob/get_eth0_traffic.sh*/5*/home/bob/get_lo_traffic.sh不过这样会有讨厌的邮件产生,也可以在脚本中用whiletrue循环,配合sleep300让脚本一直运行,而不是重复启动脚本。具体选择那样你自己决定。 当所有的准备工作都完成后,就可以开始考虑建库了。ailms 回复于:2006-12-04 09:22:46建立RRD数据库 color=blue * 注:该教程参考了如下内容: A)官方文档:http:/oss.oetiker.ch/r

34、rdtool/doc/index.en.html B)abel兄的大作:http:/ http:/ 作者:ailms 版本:v1 最后修改:2006/11/1717:35 * /color 准备工作都做完了,脚本也写完了,就可以开始建库了。建库实际上就是建立后缀名为.rrd的RRD文件。 size=4一)语法格式/size rrdtoolcreatefilename-start|-bstarttime-step|-sstepDS:ds-name:DST:dstargumentsRRA:CF:cfarguments其中filename、DS部分和RRA部分是必须的。其他两个参数可免。 size=

35、4二)参数解释/size A):默认是以.rrd结尾,但也以随你设定。 B)-step:就是RRDtool“期望”每隔多长时间就收到一个值。和MRTG的interval同样含义。默认是5分钟。我们的脚本也应该是 每5分钟运行一次。 C)-start:给出RRDtool的第一个记录的起始时间。RRDtool不会接受任何采样时间小于或者等于指定时间的数据。也就是说-start 指定了数据库最早的那个记录是从什么时候开始的。如果update操作中给出的时间在-start之前,则RRDtool拒绝接受。-satrt选项也是 可选的。按照我们在前一篇中的设定,则默认是当前时间减去600*300秒,也就是50个小时前。如果你想指定-start为1天前,可以用 -start$(date-d1daysaog+%s)注意,-start选项的值必须是timestamp的格式。 D)DS:DS用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1