网络流量监控器(MRTG)配置

来源:互联网 发布:灭蚊器软件 编辑:程序博客网 时间:2024/04/27 19:12

ChinaUnix上看见一篇关于网络流量监控器(Multi Router Traffic Graphermrtg全攻略,照着做了遍没想到居然成功了,这不是我主要的工作。也不知道下一次正需要使用它是什么时候了,所以把它写下来以后就不用到处去找了。

需要的软件:

Gd   图形处理库

Libpng    png处理库

Perl         mrtg有部分脚本用了perl

       Zlib         不知道是什么,这几天安装软件都说要这个

       Apache    用来发布检测结果

       Gcc        c++编译器,如果用rpm安装就不需要。

       Net-snmp       网络管理协议代理。

       以前一直以为mrtg是一个类似嗅探器一样工作在网络中,采用抓包的方式分析每一个结点的流量。而且是实时分析,看到需要net-snmp的时候,一下明白了根本不像想象的那样。Mrtg只是一个snmp的客户端而已(我只了解一点snmp),通过snmp从各个设备的snmp代理上取得数据,然后以图形的方式生成报表。真正的流量统计分析,是由各个结点设置完成。每隔一段时间后mrtg从设置中取一次数据,然后再更新报告。仔细想一想这样的工作方式也可以啊,实现简单,而且扩展性强,只要设置支持snmp管理就行,而且不会因为网络临听影响到网络通信质量。明白了mrtg的工作原理后,安装起来也不至于是一头雾水,只是照着别人说的那样做,出了错自己也不能解决。Mrtg安装主要需要熟悉snmp的一些知识,至少必要概念需要知道,apache也需要了解,至少要知道虚拟目录是怎么回事。前面两样配置好了,mrtg就简单多了(我是只是简单应用)。

       下面以监视本机的网络流量为例进行安装:(RedHat9.0

1.  安装net-snmp,RedHat光盘中有rpm安装包。

a)         安装完以后,修改配置文件/etc/snmp/snmpd.conf

把下面的#符号去掉:

#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服务了。

#/sbin/service snmpd start

2.  安装mrtg,下载网站: http://mrtg.matrix.com.br/

a)         可以直接下载rpm包,下载的时候注意一下前面依赖的软件版本。我下载的mrtg-2.10.5-1.i386.rpm,结果是gdlibpng的版本都太低了,还得去找相应的升级包。

b)        可以下载tar.gz下来编译,我开始下了一个但是没有编译通过,主要是我以前都是直接通过rpm安装的依赖的包,所有有些头文件没有找到。编译没有什么复杂的主要就是要准备正确的头文件。如果有时间在网上找就行了。

c)        配置mrtg,

                                       i.              cfgmaker --output=/etc/mrtg/mrtg.cfg public@202.115.29.94

                                     ii.              为设备202.115.29.94生成一个配置文件名为:/etc/mrtg/mrtg.cfg,后面取分析数据的时候就按照/etc/mrtg/mrtg.cfg来取。这里面配置了些什么暂时也没有看懂,好像和snmp相关。

1.         修改上面生成的配置文件。

vi /etc/mrtg/mrtg.cfg

WorkDir: /var/www/html/mrtg  #apache的一个目录,将这儿生成html格式的报告文件。按自己的实际情况修改
Options[_]: growright, bits
 #还不清楚是什么
Language:big5                   
#一看就知道是什么了,但是不知道有什么有,以后慢慢学习。

d)        运行mrtg

                                       i.              #mrtg /etc/mrtg/mrtg.cfg

按照配置文件中的信息从设置中取数据。但是这是一次性的,取后更新报告的图片。这也我想象中也不一样,以为运行一性就在后台自动的读取数据了。

                     运行的时候出了一点错如下:

                     -----------------------------------------------------------------------

ERROR: Mrtg will most likely not work propperly when the environment

                   variable LANG is set to UTF-8. Please run mrtg in an environment

      where this is not the case:

                     env LANG=C /usr/bin/mrtg ...

-----------------------------------------------------------------------

这可能与Language:big5设置有关,因为我没有找到Language,所以也就没有修改。我是修改了环境变量:

#export LANG=C

运行:

#mrtg /etc/mrtg/mrtg.cfg

前面两次都出现了错误信息,好像主要是因为snmp没有初始化之类,运行第三次后就正常了。

运行成功后就可以在前面设置的WorkDir那个目录下面,生成了html格式的文件和一些png的图片。一看就明白是怎么回事了,也说明了前面在分析工作原理时是正确的。

e)         生成报告的主页。

                                       i.              indexmaker mrtg.cfg --output=/var/www/html/mrtg/index.html

f)         mrtg添加到cron中,定期运行就可以一直监视设备的网络流量了。

  # crontab -e

       */5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg

g)        监视多个设备。

#. Chgmaker <config.cfg> <snmp>

crontab -e

#indexmaker <config.cfg> >><index.html>

             

              最后:对于Linux的学习一直都是断断续续的,有空的时候又学一点,没有留笔记过后就忘记了,用的时候又得重新学习。因为一直徘徊在J2EElinux之间,这两者对来真是痛苦的选择。最近有空弄了一段时间的Linux终于从一个初学者长成菜鸟了,虽然很菜,但是总算是有翅膀了。

       由于公司一直在做网络数据传输,今天早上突然奇想,打算写一个基于Http协议的JDBC,通过Http访问远程的数据库。说起来也很简单就是使用一个ProxyJDBC操作序列化后封装到Http中去,基本上是用了板桥里人的通用EJB远程调用框架的思想。这样一来又要把Linux放一段时间了。

原创粉丝点击