首页 > 学技术 > 技术网文 > 网络技术 > 正文

[精彩] 在FreeBSD上用mrtg来监控整网流量


来源 chinaunix.net 酷勤网整理

在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了,
但在交换机中抓到的你的这台主机的流量是反的,(即流入和流出是相反的,这个是显然的了)
#########################################################



 dgvri 回复于:2005-01-24 12:49:51

===>;  Vulnerability check disabled
>;>; SNMP_Session-1.03.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>;>; Attempting to fetch from ftp://ftp.switch.ch/software/sources/network/snmp/perl/./.
fetch: ftp://ftp.switch.ch/software/sources/network/snmp/perl/./SNMP_Session-1.03.tar.gz: Host not found
>;>; Attempting to fetch from ftp://ftp.switch.ch/software/sources/network/snmp/perl/old/.
fetch: ftp://ftp.switch.ch/software/sources/network/snmp/perl/old/SNMP_Session-1.03.tar.gz: Host not found
>;>; Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
fetch: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/SNMP_Session-1.03.tar.gz: File unavailable (e.g., file not found, no access)
>;>; Couldn't fetch it - please try to retrieve this
>;>; port manually into /usr/ports/distfiles/ and try again.
*** Error code 1

Stop in /usr/ports/net-mgmt/p5-SNMP_Session.
*** Error code 1

Stop in /usr/ports/net-mgmt/mrtg.


 剑心通明 回复于:2005-01-24 15:05:36

那个文件没下载到,你可以自己用google搜一下,然后放到/usr/ports/distfiles/下


 dgvri 回复于:2005-02-18 18:01:12

www# /usr/local/bin/mrtg /usr/home/i110/mrtg/index.cfg
Daemonizing MRTG ...
www# Rateup WARNING: /usr/local/bin/rateup could not read the primary log file for 203.81.29.72_1
Rateup WARNING: /usr/local/bin/rateup The backup log file for 203.81.29.72_1 was invalid as well
Rateup WARNING: /usr/local/bin/rateup Can't remove 203.81.29.72_1.old updating log file
Rateup WARNING: /usr/local/bin/rateup Can't rename 203.81.29.72_1.log to 203.81.29.72_1.old updating log file
Rateup WARNING: /usr/local/bin/rateup Can't remove 203.81.29.72_1.old updating log file

到这就死在这了,不动了


 剑心通明 回复于:2005-02-19 16:03:39

执行这个就是会出两次错误的,第三次以后就可以了,不动的时候敲几下回车吧


 wdongtao 回复于:2005-02-24 13:13:22

请教:如果交换机没有ip,如何写这个cfgmaker?
看资料好像是用nr,但是没有说清楚,弄了一阵没弄明白~


 jieer 回复于:2005-03-21 16:21:03

配置有点问题:
RunAsDaemon: Yes 

有这个参数,只需要开机的时候运行一次就可以了,不用每5分钟运行一次。


引用:原帖由 "剑心通明" 发表:
=>; '$1$2/时',
A2:修改你的mrtg.cfg文件。把语言一项改成:Chinese
也就是:
Language:Chinese
##########################################

#######################Q2##################
Q2:我运行了/us..........




 dgvri 回复于:2005-03-21 16:35:26

搞定。


 mjgzln 回复于:2006-02-11 00:47:02

cisco# /usr/local/bin/cfgmaker --output=/usr/local/www/data/mrtg/index.cfg public@10.0.0.8
--base: Get Device Info on public@10.0.0.8:
SNMP Error:
no response received
SNMPv1_Session (remote host: "10.0.0.8" [10.0.0.8].161)
                  community: "public"
                 request ID: -160284377
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/local/lib/perl5/site_perl/5.8.7/SNMP_util.pm line 627
SNMPWALK Problem for 1.3.6.1.2.1.1 on public@10.0.0.8::::::v4only
 at /usr/local/bin/cfgmaker line 858
WARNING: Skipping public@10.0.0.8: as no info could be retrieved

--base: Writing /usr/local/www/data/mrtg/index.cfg

什么问题?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=487469
转载请注明作者名及原文出处



收藏本页到: