注:此文完善中,为我自己和需要配置MRTG流量监控的朋友们参考。MRTG安装环境为windows2003;被监控服务为windows2003,CentOS4.4服务器。MRTG默认配置对100M以上端口流量监控不准确,需要加上--snmp-options=:::::2选项;更推荐使用PRTG,简单易用,可以使用免费版试用,但只支持一个sensor。
 
被监控服务器设置:
 
snmp配置:
 
Windows2003:
1.安装简单管理协议(snmp)
2.管理工具--服务--SNMP Service属性--安全,接受团体名称,添加一个团体名称(如public),指定其只能只读权限;
3.管理工具--服务--SNMP Service属性--代理,勾选所有或1,2,5选项;
3.接受来自这些主机的SNMP数据包,添加,填入你要使用mrtg监测的服务器IP;
4.如果你有防火墙的话开通udp协议的161端口给你要使用mrtg监测的服务器;
5.重起snmp service即可;
 
Linux:
检查是否安装snmp并安装
#service snmpd status
snmpd: unrecognized service
#chkconfig --list | grep snmpd
#mkdir -p /mnt/dvd
#mount /dev/dvd /mnt/dvd
According to CentOS4.4
need packets:
net-snmp-libs-5.1.2-11.EL4.7
lm_sensors-2.8.7-2.40.3.i386.rpm
net-snmp-5.1.2-11.EL4.7
net-snmp-utils-5.1.2-11.EL4.7
启动snmpd服务并配置snmpd.conf
#chkconfig --level 35 snmpd on
#service snmpd start
#vi /etc/snmp/snmpd.conf
(1)首选是定义一个共同体名(community),这里是public,及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:)
# sec.name source community
com2sec notConfigUser default public
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notCconfigUser这个用户加到这个组中。
groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3)定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
view all included .1 80
(4)定义notConfigGroup这个组在all这个view范围内可做的操作,这时定义了notConfigGroup组的成员可对.1这个范围做只读操作。
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all none none
防火墙上放开udp161协议
#iptables -L -n
#iptables -A INPUT -i eth0 -p udp --dport 161 -s 192.168.1.10 -j ACCEPT
#service iptables save
 
监控服务器设置(IP:192.168.1.10):
安装:
1.安装Perl支持;
2.下载最新MRTG软件件包解压到硬盘适当位置如D:\MRTG;
 
设置:
监控对象为服务器,设置一例:
perl cfgmaker  --global "WorkDir: d:\www\MRTG" --global "Options[_]: growright,bits" --output mrtg.cfg  public@192.168.1.2 public@192.168.1.3
监控对象为交换机,设置一例:
perl cfgmaker --global "WorkDir: d:\www\MRTG" --global "Options[_]: growright,bits" --ifref=nr --ifdesc=descr --output mrtg.cfg public@192.168.1.1
 
为了让MRTG每个五分钟监视一次,在DOS下MRTG\bin目录用下面的命令:
(1)echo RunAsDaemon:yes>>mrtg.cfg
(2)echo Interval:5>>mrtg.cfg
perl indexmaker --output=d:\www\mrtg\index.htm mrtg.cfg
//系统将会自动生成index.htm在我们指定的WEB目录里面
 
perl indexmaker --output=d:\www\mrtg\index.htm mrtg.cfg
//系统将会自动生成index.htm在我们指定的WEB目录里面
 
运行MRTG:
wperl MRTG --logging=event.log mrtg.cfg
 
将MRTG 配置为系统服务
使用windows 2003 resource kit中的Instsrv.exe和srvany.exe。首先安装win2003 rerouse kit
将srvany.exe拷贝到d:\MRTG\bin 目录
1.添加srvany.exe为服务
instsrv MRTG "d:\MRTG\bin\srvany.exe"
2. 配置srvany:
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG中,添加一个parameters子键。在该子键中添加以下项目:
Application的字串值,内容为c:\perl\bin\wperl.exe ---该值为wperl程序目录。
AppDirectory的字串值,内容为d:\MRTG\BIN\ ----该值为MRTG程序目录。
AppParameters的字串值,内容为MRTG --logging=event.log mrtg.cfg。
 
添加其他服务器监控一例:
1.perl cfgmaker --output mrtg1.cfg public@192.168.1.4
2.复制mrtg1.cfg相关内容至mrtg.cfg
3.重起MRTG服务
4.编辑index.htm添加相关链接网页,进一步优化index.htm
 
以下内容为解决,MRTG监控端口流量大于100M的交换机,数据不准确的问题所用的参考。
--snmp-option=:::::2  //在cfgmaker中加入此项用于支持snmpv2.