在ChinaUnix上看见一篇关于网络流量监控器(Multi Router Traffic Grapher)mrtg全攻略,照着做了遍没想到居然成功了,这不是我主要的工作。也不知道下一次正需要使用它是什么时候了,所以把它写下来以后就不用到处去找了。
需要的软件:
Gd 图形处理库
Li bpng png处理库
Perl mrtg有部分脚本用了perl
Z li b 不知道是什么,这几天安装软件都说要这个
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,结果是gd和 li bpng的版本都太低了,还得去找相应的升级包。
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[_]: gro
wr
ight, bits #还不清楚是什么
Language:big5 #一看就知道是什么了,但是不知道有什么有,以后慢慢学习。
d) 运行mrtg
i. #mrtg /etc/mrtg/mrtg.cfg
按照配置文件中的信息从设置中取数据。但是这是一次性的,取后更新报告的图片。这也我想象中也不一样,以为运行一性就在后台自动的读取数据了。
运行的时候出了一点错如下:
-----------------------------------------------------------------------
ERROR: Mrtg will most li kely 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>
最后:对于 Li nux的学习一直都是断断续续的,有空的时候又学一点,没有留笔记过后就忘记了,用的时候又得重新学习。因为一直徘徊在J2EE和 li nux之间,这两者对来真是痛苦的选择。最近有空弄了一段时间的 Li nux终于从一个初学者长成菜鸟了,虽然很菜,但是总算是有翅膀了。
由于公司一直在做网络数据传输,今天早上突然奇想,打算写一个基于Http协议的JDBC,通过Http访问远程的数据库。说起来也很简单就是使用一个Proxy将JDBC操作序列化后封装到Http中去,基本上是用了板桥里人的通用EJB远程调用框架的思想。这样一来又要把 Li nux放一段时间了。