前期规划
**************.**.**************************************************************************************.****************<性病>
注 :该教程参考了如.下内容 :外贸
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 <ailm.s{@}263{dot}n.et>.
版本 :v1
最后修改 :.2006/11/18 0:06 美容
***********************************************************************************.*********..**************************健康
可能大家会觉得奇怪,做个 RRDtool 还要规划什么?.俗话说.:磨刀不误砍柴工。好的规划必须具备灵活性、可扩展性,否则会给 外汇
将来的使用带来不少的麻烦.。我们先谈一下 MRTG 的规划,再谈 RRDto.ol 的规划。 女人
一)MRTG 的前期规划
A)想要监测监测什么对象?并列出一个清.单;(广告)
B)想要以什么方法来取得数.据?是通过 .SNMP 还是 shell 、perl 。如果使用 SNMP ,监测对象所在主机 电影
. 的 SNMP 服.务安装了吗?是否配置完毕; 汽车
C)每个对.象的监测时间是多长时间一次?并以此对.监测对象进行分类。例如笔者本人共用 MRTG 监测了 80 多个对象,并根据虚拟主机
内容分成四类 :
. 重要状态方面 : 例如 HACMP 的切换动作监控;Oracle 服务的状态;LVM 中的 vg. 是否在线;服务器是否宕机等。这些监教育
. 测对象对于一个系统的.运行来说都是十分重要的,一旦发生故障,需要.立即处理的。所以对于这类对象,按最 女人
. . 小时间间隔(5分钟一次)设置.
I/O性能方面 :主要是 I/O 吞吐量、I/O. 服务时间方面的监测.。这类对象是7分钟一次
次要状态方面 :例如 cpu利用率、内存利用率、.在线人数、温度、拨号用户人数等.。20分钟一次.
利用率方面 : 由于实际应用的问题,所以对利用率比较关心。单独拎出来做.一块监.测。主要是监控Oracle 的各个表空间的利.
. 用率,.以及LVM磁盘系统各个分区的利用率。每25分钟一次
监控机本身 :负责监控的监控机本身也需要监控。主要监控当前监测的对象数量,.以.及系统负荷。这类就30分钟一次。服务器
D)每个对象一个 cfg 文件?还是全部集中在一个 cf.g 文件中呢?我本人还是比.较倾向于每个 Target一个 cfg 文件,每个 cfg 中都定 建材
. 义 Workdir、Langua.ge 这两个选项。针对上面的5个分类,建立5个 “大的”cfg .文件,再利用 MRTG 中的 Include 功能导入一个个 外汇
“小的”、具.体的 cfg 文件.。这样当日后对某个监测对象进行修改时(例如修改数据的获取脚本,或者修改图片的外观),可以单独测试.
该对象。不用连.同其他对象也一起跑一次,节省不少时间。如果想取消.那个对象的监测,在前面提到的那个“大的”cfg 文件中,把对应.
的 Incl.ud.e 语句注释掉就可以了,是不是更方便呢? 汽车
E)为个监控对象起.一个合适的名称。一般用 <host_iter.m> 的方式。这一步也满重要的。一开始不注意,随便给个名字,等到后来自己都 杀毒
搞不清楚了,建议一开始就规划好。如果要使用 MRTG 的告警功能,就更应该好好.规划了,要不然收.到告警邮件都不知道是那个对象,那个机
器出现问题,白白浪费时.间。域名
F)是否需要.用到 MRTG 的告警功能。MRTG 有告警功能,可以设置输入./出的最大值,最小值。超过限制就会调用 ThreshProgI 和 .ThreshProgO 健康
选项指定的程序。我一般用.发送邮件和HTML配合的方式。下面是.告警部分的截图 : 汽车

婚庆

外贸
差.不多也就这些.了,就可以开始动手写 script 了。电脑
二)RRDt.ool 的前期规划虚拟主机
RRDtool 的前期规划相对多一点,因为 R..RDtool 很多东西需要自己设定。除了上述 MRTG 考虑的几点之外,我一般还考虑以下几点 :.
A)是一个 RRD 文件中包括多个监测对象(DS),还是分成多个 RR.D 文件 ?RRDtool 提供了 tune 操作,可.以增加监测对象或者删除. RRD 文.
. 件中的某个对象,而.且绘图时也可以指定要画的是那个对象,这点看个人喜欢而定。[成人用品]
B)如何统计取得的数据 :MRTG 是.固定的,5分钟、20分钟、2小时.、1天。RRDtool 则可以自己设置电脑
C)如何保存/统计这些数据 :这是和 MRT.G 不同的地方。MRTG log 的建立和维护是自动的,RRDtool 的数据存.放外贸
.则需.要自己定义。但我们可以参照 MRTG 的方式:.
每日统计图(5分钟平均) :. 600 个,大约.2天的时间(广告)
每周统计图(20分钟平均). : 600 个,.大约8天的时间 婚庆
. 每月统计图 (2小时平均) : 600 个,50 天的时.间教育
每年.统计图. (1天平均) :730 个, 2年的时间
D 要以什么方式绘图 :MRTG 只有曲线(LINE)和方块(AREA)两种;RRDtool 除了这两种外,还有一种是 STA.CK 方式。就是..在前一个曲线或者方.
块的基础上绘图图,而不是直接从 X 轴开始绘图。这样绘制出来的图比较清晰,不会.出现交叉的现象,但此时 Y 轴的值等于当前对象的值加上前.一 美容
个绘图对象的值。例如前一个对象(cpu 的系统进程利用率)的值.是10,.采用的是 AREA 方式绘图。当前对象(cpu 的用户级.进程的利用率)是5,.
采用的是 STACK 方式,.则“cpu的用户级进程利用率”对应的Y轴刻度是10+5=15;所以如果不加说明.,别人可能会误解。健康
三)实际例子
A)搞清楚究.竟想要监测什么对象 :监测本地主机的网络流量。包括 eth0 和 lo 接口.的流量。 女人
B)想要以什么方法来取得数据 :sar 也可以统计网卡接口的流量。但这里我们用 SNM.P ,访问 i.fInOctets 和 ifOutOctets 。.
假设脚本名称.是 get_eth.0_traffic.sh 和 get_lo_traffic.sh电影
C)每个对象的.监测时间是多长时间一次 :5分钟.
D)是采用一个 RRD 文件还是多个 :.2个. RRD 文件,一个是 eth0.rrd,一个是 lo.rrd教育
E)[color=bl;ue]为每个监测对象起名 :分.别是 et.h0_in ,eth0_out ,lo_in ,lo_out教育
F)统计.频率 :5分钟、20分钟、2小时、1天.
G)如何保存统计.数据 :600个、600个、600个、73.0个 外汇
H)要以什么.方式绘图 :目前暂不考虑该问题。.等到实际绘图时再体验。虚拟主机
注 :实际上我们可以把数据的插入、绘图一起做到 get_eth0_traffic.sh 和 get._lo_traffic.sh 中,但目前这两.个脚本只是负责.取数据并输出而已,( 游戏 )
. 到最后我们再把这些功能合并到一.起。 健康
四)下面是脚本的内容
[.root@dns1 bob]# cat get_eth0_traf.fic.sh 健康
#!/bin/bash
# 首先取得 et.h0 接口的 ifIndex 教育
index=$(snmpwalk -IR localhost R.FC1.213-MIB::ifDescr |grep eth0|cut -d '=' -f 1|cut -d '..' -f 2) 外汇
# 再.通.过 snmp 协议取得 ififInOctets 和 ifOutOctets 的值.
# 由于在 ./etc/snmp.conf 中配置了 defVersion 和 defCommunity ,所以 snmpg.et 命令不用指定这两个参数 美容
eth0_in=$(snmpget. -IR -Os localhost ifI.nOctets.${index}|cut. -d ':' -f 2|tr -d '[:blank:]').
et.h0_out=$(snmpget -IR -O.s localhost ifOutOctets.${index}|cut -d .':' -f 2 |tr -d '[:blank:]')[成人用品]
echo $eth0_in
echo $eth0_out
[root@dn.s1 bob]#.
复制代码
[root@dns1 bob]# cat ge.t._lo_traffic.sh .
#!/bin/bash
# 首先.取得 eth0 接口的 ifIndex 外汇
index.=$(snmpwalk -IR localhost RFC1213-MIB::ifDescr |.g.rep lo|cut -d '=' -f 1|cut -d '.' -f 2) 杀毒
lo_in=$(snmpget -IR -Os localhost ifInOctets.${index}|cut -d ':' -f 2|t.r -d '[:blank:.].') 健康
lo_out=$(snmpget .-IR -.Os localhost ifOutOctets.${index}|cut -d ':' -f 2 |tr -d '[:blank:.]') 电子
echo $lo_in
echo $lo_out
[root@.dns1 bob]#电影
复制代码
再把这.2个脚.本放入 crontab 中,每5分钟执行一次电脑
*/5 * * .* * /.home/bob/get_eth0_traffic.sh 汽车
*/5 * *. * * /home/bob/get_lo_traff.ic.sh<性病>
复制代码
不过这样会有讨厌的邮件产.生,也可以在脚本中用 w.hile true 循环,配合 sleep 300 让脚本一直运行,而不是重复启.动脚本。具体选择那样你自己决定。虚拟主机
当所有的准备工作都完成后,就可以开始考虑.建库了。域名