MRTG的安装配置
安装支持软件
我们这里以Rehat7.2为例子讨论MRTG的配置和安装。要安装MRTG需要安装以下软件 包:GCC、Perl、gd、libpng和zlib。可以使用下面的命令来判断系统是否安装有这些软 件包:
[root@mail doc]# rpm -qa|grep gd
gd-1.8.4-4
gd-devel-1.8.4-4
[root@mail doc]# rpm -qa|grep perl
perl-5.6.0-17
mod_perl-1.24_01-3
[root@mail doc]# rpm -qa|grep libp
libpng-1.0.12-2
libpng-devel-1.0.12-2
[root@mail doc]# rpm -qa|grep zlib
zlib-1.1.3-24
zlib-devel-1.1.3-24
[root@mail doc]# rpm -qa|grep gcc
gcc-2.96-98
gcc-g77-2.96-98
gcc-c++-2.96-98
如果发现哪个软件包没有安装,只需直接从redhat安装盘安装对应的rpm包即可,例如:
root@mail doc]# rpm -ivh zlib-1.1.3-24 zlib-devel-1.1.3-24
MRTG的安装
目前mrtg的最新版本为2.9.17:
[root@mail src]# tar xvfz mrtg-2.9.17.tar.gz
[root@mail src]# cd mrtg-2.9.17
[root@mail mrtg-2.9.17]# ./configure --prefix=/usr/local/mrtg-2
[root@mail mrtg-2.9.17]# make
[root@mail mrtg-2.9.17]# make install
到现在我们就已经正确地安装了MRTG系统。
配置SNMP服务
对于不同的设备,配置SNMP支持的方法是不一致的,具体请参考设备的随机文档,一般里 面都有详细的介绍。这里我们讨论在Linux环境下配置SNMP服务器,以实现对本机流出流 入数据的分析和报表(我的应用环境是使用Linux带动一个小型局域网上网,监控本机进出 流量)。
在linux环境下安装snmp软件包是很容易的,只需要安装相应的软件包即可:
[root@mail doc]# rpm -qa|grep snmp
ucd-snmp-4.2.1-7
ucd-snmp-utils-4.2.1-7
ucd-snmp-devel-4.2.1-7
这时候运行下面的命令:
[root@mail doc]# /etc/rc.d/init.d/snmpd start
Starting snmpd: [ OK ]
如果命令输出如上所示,就表示snmp服务器启动正常。
为了配合mrtg使用,还要修改snmpd的配置,以使其允许mrtg读取其interface(网络接口) 流量数据。
vi /etc/snmp/snmpd.conf
将
#view systemview included mib2
的内容修改为:
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
然后将
access notConfigGroup "" any noauth exact systemview none none
修改为:
access notConfigGroup "" any noauth exact mib2 none none
然后再重新启动snmpd:
/etc/rc.d/init.d/snmpd restart
配置MRTG
下一步就是要配置mrtg,实现对网络设备的监控。mrtg的配置信息都是保存在mrtg.cfg文 件中的,创建该文件并且在其中定义希望的监控特性。幸运的是一般不需要直接手工编辑 该配置文件,因为mrtg软件包提供有cfgmaker配置工具,这是一个脚本文件,根据运行参 数可以自动生成mrtg.cfg配置文件。在mrtg源码目录的bin子目录下你可以得到该工具。
首先在www服务器的DocumentRoot目录下创建一个子目录用来存放mrtg生成的统计文件, 这里假设apache是默认安装,因此DocumentRoot在/var/www/html目录下,我们在该目录 下创建子目录mrtg:
mkdir /var/www/html/mrtg
这里的/var/www/html/mrtg就是mrtg的工作目录。下面就生成mrtg配置文件:
cfgmaker --global "WorkDir: /var/www/html/mrtg"
--global "Options[_]: growright,bits"
--ifref=ip
--output /etc/mrtg.cfg
public@192.168.0.1
这里的--global参数表示后面的选项是对后面指定的设备都是有效的(如果希望对多个设 备进行监控时,该参数就会发生作用)。WorkDir用来指示mrtg的工作目录;Options用来 指定一些特定的选项,这里的growright,bits是用来指定默认options配置的,对于常见 的应用来说默认options配置就可以满足需求了。ifref用来指示用什么选项来标识设备接 口,这里指定使用IP地址来标识网络设备接口。ifref可以指定为 nr、ip、eth、descr、name。nr表示用接口在MIBII库中Interface接口的ifIndex来识别 接口;IP表示使用ip地址识别接口;eth表示使用接口的物理地址标识接口;descr表示使 用接口的描述信息来标识接口;name表示使用接口名来标识接口。一般来说ip地址是唯一 的,但是有些情况下接口是没有IP地址的,例如交换机就会出现这种情况。对于接口来说 nr(接口号)是唯一的,因此对于一般情况使用IP地址就可以了,而对于其他一些情况则需 要采用nr了。"--output /etc/mrtg.cfg"标识将生成的配置文件存放在/etc/目录 下。"public@192.168.0.1"表示监控IP地址为192.168.0.1的设备,采用public作为共同 体名通过snmp协议来监控设备192.168.0.1。
对于希望使用mrtg来对多个设备进行监控的情况,举例如下:
cfgmaker --global "WorkDir: /var/www/html/mrtg"
--global "Options[_]: growright,bits"
--ifref=descr
--ifdesc=alias
public@router1.place.xyz
public@router2.place.xyz
--global "Options[_]: growright"
--ifref=name
--ifdesc=descr
public@switch1.place.xyz
--ifdesc=name
public@switch2.place.xyz > mrtg.cfg
这里指示监控四个设备:router1.place.xyz、router2.place.xyz、switch1.place.xyz
和switch2.place.xyz,所有的设备都采用共同体名public来进行监控。并且两个路由器 采用descr来作为设备的描述信息,而两个交换机则采用alias作为设备描述(这两者是不 同的,例如对于cisco路由器来说,对于descr来说设备描述为"Serial0",而对于aliasl 来说则为"Link to HQ")。
对于我这里的应用环境来说,生成的mrtg.cfg内容如下:
# Created by
# /usr/local/mrtg-2/bin/cfgmaker --global WorkDir: /var/www/html/mrtg --global Options[_]: growright,bits
--output /etc/mrtg.cfg --ifref=ip public@192.168.0.1
### Global Config Options
# for UNIX
# WorkDir: /home/http/mrtg
# or for NT
# WorkDir: c:mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
WorkDir: /var/www/html/mrtg
Options[_]: growright,bits
######################################################################
# System: 192.168.0.1
# Description: Linux 192.168.0.1 2.4.7-10smp #1 SMP Thu Sep 6 17:09:31 EDT 2001 i686
# Contact: Root (configure /etc/snmp/snmp.local.conf)
# Location: Unknown (edit /etc/snmp/snmpd.conf)
######################################################################
### Interface 1 >> Descr: lo | Name: | Ip: 127.0.0.1 | Eth: ###
### The following interface is commented out because:
### * it is a Software Loopback interface
#
# Target[192.168.0.1_127.0.0.1]: /127.0.0.1: public@192.168.0.1:
# SetEnv[192.168.0.1_127.0.0.1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"
# MaxBytes[192.168.0.1_127.0.0.1]: 1250000
# Title[192.168.0.1_127.0.0.1]: Traffic Analysis for 127.0.0.1 -- 192.168.0.1
# PageTop[192.168.0.1_127.0.0.1]:
Traffic Analysis for 127.0.0.1 -- 192.168.0.1
#
#
System:
192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf)
Maintainer:
Root
Description:
lo
ifType:
softwareLoopback (24)
ifName:
Max Speed:
10.0 Mbits/s
Ip:
127.0.0.1 (localhost)
### Interface 2 >> Descr: eth0 | Name: | Ip: 211.99.43.111 | Eth:
Target[192.168.0.1_211.99.43.158]: /211.99.43.158: public@192.168.0.1:
SetEnv[192.168.0.1_211.99.43.158]: MRTG_INT_IP="211.99.43.158" MRTG_INT_DESCR="eth0"
MaxBytes[192.168.0.1_211.99.43.158]: 1250000
Title[192.168.0.1_211.99.43.158]: Traffic Analysis for 211.99.43.158 -- 192.168.0.1
PageTop[192.168.0.1_211.99.43.158]:
Traffic Analysis for 211.99.43.158 - - 192.168.0.1
System:
192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf)
Maintainer:
Root
Description:
eth0
ifType:
ethernetCsmacd (6)
ifName:
Max Speed:
10.0 Mbits/s
Ip:
211.99.43.158 (192.168.0.1)
### Interface 3 >> Descr: eth1 | Name: | Ip: 192.168.0.1 | Eth:
Target[192.168.0.1_192.168.0.1]: /192.168.0.1: public@192.168.0.1:
SetEnv[192.168.0.1_192.168.0.1]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="eth1"
MaxBytes[192.168.0.1_192.168.0.1]: 1250000
Title[192.168.0.1_192.168.0.1]: Traffic Analysis for 192.168.0.1 -- 192.168.0.1
PageTop[192.168.0.1_192.168.0.1]:
Traffic Analysis for 192.168.0.1 -- 192.168.0.1
>
System:
192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf)
Maintainer:
Root
Description:
eth1
ifType:
ethernetCsmacd (6)
ifName:
Max Speed:
10.0 Mbits/s
Ip:
192.168.0.1 (192.168.0.1)
运行mrtg一旦生成正确的配置文件,就运行下面的命令:
/usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg
这将查询被监控的设备并在工作目录下创建初始的流量图和web页面,在前三次运行时可 能会报告遗失日志文件的告警信息,不要理睬这些信息,只需要连续运行三次以后再运行 就不会产生告警信息了。如果仍然出现告警那么就需要察看问题出在哪里了。
使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生 成统计信息,默认为五分钟运行一次。作为root身份crontab -e进入编辑状态,添加内容 如下:
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg
然后就可以通过浏览器访问地址http://192.168.0.1/mrtg/选择适当的接口地址察看流量 信息了。如果希望生成类似于http://www.stat.ee.ethz.ch/mrtg/的信息,就需要自己手工编辑一个index.html文档存放在/var/www/html/mrtg目录下,内容为接口说明以及该接 口的日统计信息的图即可。