在FreeBSD上用mrtg来监控整网流量

范堡 发布于 2009/05/05 16:11
阅读 463
收藏 0

在BSD板块和这个板块经常看到说mrtg的,刚才还看到有人说论坛里面的资料不对,其实不是不对,是有些说的不详细而已,我刚开始作的时候也是费了不少时间的,整理一下,发到这里吧,希望能为后来的兄弟们省下时间 :em02: 
前言:我实验的机器是FreeBSD4.10,其他版本的应该也一样,其他unix like系统估计也是可以的,因为我只用过FreeBSD,不敢肯定。另外我这篇文章的前提是你的机器上已经安装了apache,并能正常使用,如果没有请参考网上其他文章安装,本文就不再赘述。
一:先介绍如何用mrtg来监控本机的流量
1:安装 snmp

cd /usr/ports/net-mgmt/p5-SNMP
make install clean
当中会叫你填写你的email、操作系统等等,直接回车即可。

可以用以下命令启动snmp,/usr/local/etc/rc.d/snmpd.sh start

2:安装 mrtg

cd /usr/ports/net-mgmt/mrtg
make install clean

3:配置 index.cfg文件监控服务器流量

/usr/local/bin/cfgmaker --output=/usr/www/mrtg/index.cfg public@192.168.0.1
然后修改index.cfg文件,主要修改以下内容,以符合你的实际情况,此处的192.168.0.1是你要监控的网卡的ip地址。

WorkDir: /usr/www/mrtg

Options[_]: growright, bits

Language:GB2312
########################让他5分钟执行一次##############
RunAsDaemon: Yes
Refresh:300
######或者可以这样:#################################
crontab -e
*/5 * * * * /usr/local/bin/mrtg /usr/www/mrtg/index.cfg
建议使用后面的方法,因为前者用RunAsDaemon的方式并不能使MRTG开机自动运行
################################################


下面接着:
/usr/local/bin/mrtg /usr/www/mrtg/index.cfg

这个需要运行3次,前两次都会报错,不用去理会他,第3次就应该没有错误了,不过,
若是有问题的话,就需要改index.cfg,再执行直到没有错误发生为止。

制作首页index.html:

/usr/local/bin/indexmaker --output=/usr/www/mrtg/index.html /usr/www/mrtg/index.cfg


这样以后就可以通过:http://******/mrtg/index.html看你的代理的流量了,注意此处是以你的apache主目录设置为/usr/www来说的,你可以根据实际情况修改。
二、下面来介绍一下如何监控整网的流量
我们的核心交换是cisco6509,下面的交换机是cisco3524,我们没有其他交换机,所以下面我说的命令是针对cisco的,其他的可参考手册自己作相应的修改。
在6509的二层上设置:
set snmp rmon enable
set snmp community read-only mrtg
在FreeBSD机器上:

/usr/local/bin/cfgmaker --output=/usr/www/mrtg/6509.cfg mrtg@10.0.0.1
然后修改6509.cfg文件,主要修改以下内容,以符合你的实际情况,此处的10.0.0.1是6509的ip地址。
ee /usr/www/mrtg/6509.cfg
WorkDir: /usr/www/mrtg
Options[_]: growright, bits
Language:Chinese

/usr/local/bin/mrtg /usr/www/mrtg/6509.cfg
这个需要运行3次,前两次都会报错,不用去理会他,第3次就应该没有错误了,不过,
若是有问题的话,就需要改6509.cfg,再执行直到没有错误发生为止。

制作首页index.html:
/usr/local/bin/indexmaker --output=/usr/www/mrtg/6509.html /usr/www/mrtg/6509.cfg

让它每隔5分钟运行一下:
crontab -e
*/5 * * * * /usr/local/bin/mrtg /usr/www/mrtg/6509.cfg 

三、监控下面交换机的流量
方法类似6509,只是命令有点不同:
snmp-server community mrtg ro,其他的照抄改一下文件的名字就行了。

FAQ:

################Q1############################
Q1:我在英文下
Max In: 935.6 kb/s (0.9%)
Max Out: 5306.4 kb/s (5.3%)
可是在中文下只显示
最大 流入: 935.6 $1$2/秒 (0.9%)
最大 流出: 5306.4 $1$2/秒 (5.3%)
这是怎么回事?
A1:编辑/usr/local/lib/perl5/site_perl/5.8.5/locales_mrtg.pm

查找到sub gb2312的下面
原来是这样的:
代码:

'([kMG]?)([bB])/s' =>; '$1$2/秒',
'([kMG]?)([bB])/min' =>; '$1$2/分',
'([kMG]?)([bB])/h' =>; '$1$2/时',

改成这样:
代码:

'([kMG]?)([bB])/s' =>; '$1$2/秒',
'([kMG]?)([bB])/min' =>; '$1$2/分',
'([kMG]?)([bB])/h' =>; '$1$2/时',
A2:修改你的mrtg.cfg文件。把语言一项改成:Chinese
也就是:
Language:Chinese
##########################################

#######################Q2##################
Q2:我运行了/usr/local/bin/cfgmaker --output=/usr/mrtg/6509.cfg mrtg@10.0.0.1
以后生成了四十多个Traffic Analysis for 1 -- 6509等等,我们的6509上是加了个48口的板子,
总共应该有五十多个,现在只有四十多个是不是因为我在执行这个命令的时候只有这四十多个机
器是开着的?以后他们再开的时候会不会被监控到?会自动给我生成Traffic Analysis for 1 -- 6509
这样的表吗?
A:没有处于connected的端口是不能被cfgmaker抓取的。要想实现不开机流量为0,开机以后就开始监控流量,
需要自己手动更改cfg文件,把所有未使用端口的注释去掉,注意空格和空行,一定要和cfgmaker生成的一致,
否则是抓不到的,然后再执行/usr/local/bin/mrtg /usr/www/mrtg/6509.cfg即可。#######################################################

####################Q3################################
Q3:在这个机器上我只监控全部交换机上的流量,并不监控本身的流量,因为它也在6509上接着,
是不是就不需要运行snmpd了?
A:是交换机上的SNMP模组在做服务,与你的主机没关系,你的主机自然也就不用运行SNMPD了,
但在交换机中抓到的你的这台主机的流量是反的,(即流入和流出是相反的,这个是显然的了)
#########################################################



加载中
返回顶部
顶部