搭建免费的实时流量监控系统

数字办公

网络流量监控对于网管人员来说是一项比较重要的工作。笔者采用了MRTG(Multi Router Traffic Grapher,即多路由器流量图形生成器),免费搭建了一个流量监控系统,实现了7×24小时自动更新全天候流量监控。下面笔者以在Windows2000系统下搭建网络流量监控系统为例,将具体实现的全过程介绍如下。

MRTG是一个免费的多平台软件,可运行在Linux、Windows NT/2000/XP、FreeBSD等操作系统上。MRTG通过SNMP协议得到设备的流量、端口等配置信息,并将端口对应流量负载以包含PNG图片的HTML网页形式显示给用户浏览,直观地显示流量负载。

下载地址:http://download.cpcw.com/

一、平台准备

利用MRTG搭建实时流量监控系统,需要WWW服务器配合,以下的安装工作在该服务器上进行。笔者的运行环境是Windows 2000 SERVER 中文版+SP4 +IIS5.0平台,启用SNMP服务。

1.启用SNMP

在运行TCP/IP协议的互联网环境中,管理协议标准是简单网络管理协议SNMP (Simple Network Management Protocol),SNMP协议是运行在UDP协议之上的,它利用的是UDP协议的161/162端口。其中161端口被设备代理监听,等待接收管理者进程发送的管理信息查询请求消息;162端口由管理者进程监听,等待设备代理进程发送的异常事件报告陷阱消息。搭建流量监控系统需要在Windows 2000 SERVER服务器上启用SNMP服务。

SNMP文件是系统光盘中自带的,如果以前没有安装可通过“添加或删除程序”添加;为安全起见,更改系统community默认的public为自己需要的权限,笔者改为cctv只读权限(要与下面需要配置的路由交换设备相对应)。

2.设置IIS

将IIS的目录设定在e:\inetpub\wwwroot中(与下面MRTG将要生成的浏览文件同目录),指定8080端口作为WEB端口,以便接受远程监控,不提供匿名浏览而是集成系统账号认证浏览。

二、配置SNMP

接下来要先设置一下需要监控流量的设备,如路由器、交换机、服务器等,只要它们支持SNMP的traps,都可以作为被监控的对象。笔者以Juniper ssg -550防火墙为例来说明一下,其它设备类似于这几项设置。

在WebUI情况下:

Configuration > Report Settings > SNMP: 输入以下设置,然后单击 Apply:

System Contact: jhhanyi@sohu.com

Location: 3-15-1

Enable Authentication Fail Trap: (选择)

Configuration > Report Settings > SNMP > New Community: 输入以下设置,然后单击“OK”:

Community Name: cctv *注:与服务器上SNMP的community对应一致

Permissions:

Write: (选择)

Trap: (选择)

Including Traffic Alarms: (清除)

Version: ANY (选择)

Hosts IP Address/Netmask and Trap Version:

172.16.51.253/32 v1

172.16.51.252/32 v2c

Network > Interfaces > Edit (对于ethernet0/1): 输入以下设置,然后单击 OK:

Service Options:

Management Services: SNMP

在CLI情况下:

set snmp contact jhhanyi@sohu.com

set snmp location 3-15-1

set snmp auth-trap enable

set snmp community cctv read-write trap-on version any

set snmp host Mage 172.16.51.253/32 trap v1

set snmp host Mage 172.16.51.252/32 trap v2

set interface ethernet0/1 manage snmp

save

三、下载安装软件

下载 ActivePerl(下载地址http://www.skycn.com/soft/1211.html)、MRTG以及Windows NT Resource Kit中的两个小软件Instsrv.exe和Srvany.exe到e:\(用来把应用程序添加为服务)。MRTG需要Perl程序的支持,所以在使用MRTG之前一定要安装Perl。笔者选择了ActivePerl V5.8.8.817 、MRTG 2.11.1版本。

1. 将mrtg-2.11.1 zip 解压到 e:\mrtg目录下(mrtg是用Perl来编译的不用安装);

2. 将perl 解压后,执行批处理文件并根据提示安装,将安装路径修改为e:\perl 目录下;

3.查看系统属性/高级/环境变量,其中变量的path中是否含有e:\perl\bin,若无则编辑加入,以便命令的输入;

4.测试软件安装情况,运行cmd进入DOS窗口,进入e:\perl\bin目录(做完上述第三步可在e:\mrtg\bin 目录中调用perl),执行命令perl mrtg 测试MRTG是否正确;

5.运行cfgmaker生成mrtg.cfg配置文件。

初学者可以利用MRTG软件包提供的cfgmaker配置工具来自动生成配置文件。这也是MRTG易用性的体现。笔者要观测端口的IP地址为172.20.255.33,在命令行方式下运行:

e:\perl\bin>perl e:\mrtg\bin\cfgmaker --globle“WorkDir: e:\inetpub\wwwroot” cctv@172.20.255.33 --output e:\inrtpub\wwwroot\mrtg.cfg

其中,e:\perl\bin>是当前工作目录,生成的配置文件保存到e:\inrtpub\wwwroot\mrtg.cfg。显示的流量图、html文件放在www服务器IIS的文件根目录下,也即e:\inrtpub\wwwroot。在实际情况中,我们要对多个路由交换设备实行流量监控、同时监测多个端口的流量,那么可在配置命令中指定多个目标。如同时对两台设备多个端口实行监控,可配置如下(修改配置后要重新运行MRTG,新的配置才会生效):

e:\perl\bin>perl e:\mrtg\bin\cfgmaker --globle“WorkDir: e:\inetpub\wwwroot” cctv@172.20.255.33 cctv@172.20.255.35 --output e:\inrtpub\wwwroot\mrtg.cfg

四、启动MRTG

启动MRTG读取mrtg.cfg文件中的端口信息然后对设备进行监视。采用命令e:\perl\bin> perl e:\mrtg\bin\mrtg e:\inetpub\wwwroot\mrtg.cfg

35-f12-1.jpg

1.将多个图形输出文件汇总

为了方便观看,生成一个所有端口流量图的总索引主页Index.html文档,页面中列出每个端口的日流量图,每个日流量图又是一个超链接,可进一步显示每个端口的详细流量图(日、周、月、年)。配置命令如下:

e:\perl\bin>perl e:\mrtg\bin\indexmaker e:\inetpub\wwwroot\mrtg.cfg >e:\inetpub\wwwroot\index.html

命令成功执行完成后,将会在指定的WEB目录里面生成以IP+端口命名的网页和一些png图片,这些图片就是网络当时的流量图。笔者远程浏览监控画面如图所示。

2.编辑mrtg.cfg文件

要使MRTG可以随时得到最新的流量图,我们还须要修改一下配置脚本,主要是e:\inrtpub\wwwroot\mrtg.cfg。使用文本编辑器打开它,为了使网络流量图可以每5分钟自动更新一次,我们还需要在Global Config Options的下一行加入一条命令,保存后退出。使MRTG每5分钟自动去获取一次SNMP的数据及更新网络流量图形。

##Global Config Options

RunAsDaemon: yes

Interval: 5

Refresh: 300

在确定客户机可以浏览服务器流量监控页面时候,继续下面步骤。

3.设置开机后自启动MRTG

每次启动MRTG都要进入命令行模式输入“perl mrtg -logging=mrtg.log mrtg.cfg”指令用于启动MRTG,读取mrtg.cfg文件中的端口信息后对设备进行监视。这种方法对于需要24小时监控的设备不太实用。如何解决这个问题呢?

笔者采用了将它们添加为系统的一项服务的办法,有效地解决了这个问题:

首先,利用Windows NT Resource Kit中的两个小软件e:\Instsrv.exe和e:\Srvany.exe运行:e:\ > Instsrv.exe MRTG e:\Srvany.exe,显示添加成功,并可在系统服务中找到MRTG一项,MRTG已经成为系统服务。此时还不能启动MRTG,需要修改注册表项。

打开注册表HKEY_LOCAL_MACHINE\system\currentcontrolset\services\mrtg中添加一个parameters的项,并在parameters子项中添加如下字符串键值::

application 数值数据为e:\perl\bin\ perl.exe

appdirectory 数值数据为e:\mrtg\bin

appparameters数值数据为e:\mrtg\ bin\mrtg --logging=e:\inetpub\wwwroot\ mrtg.log e:\inetpub\wwwroot\mrtg.cfg

再次进入系统服务窗口,找到mrtg服务,将它设置为自动启动后,MRTG即可全天候监视网络流量,即使系统重新启动后程序也将以服务的形式进行自动加载。

五、完善系统与美化页面

1.MRTG的安全性

由于MRTG使用了SNMP协议,应该在安全上采取一些措施。系统默认设置采用的认证名为PUBLIC认证方式,将它修改为其他名称,最大限度地防止黑客的攻击;建议在路由器、交换机上使用SNMP V3版本,提高安全性;采用SNMP的IP筛选功能,对于安全性要求更高的可通过IPSec来保护SNMP。还值得注意的是要提高IIS访问的安全性,在此不再赘述。

2.页面的美化

生成的网页默认情况下是英文注释,且注释信息为端口号,非常不直观。我们要把它修改为自己希望的中文名,方便我们浏览。可选择一种最简单的中文注释来进行编辑工作,先对各个端口、IP对应的实际线路做出一个对应的表格来,再根据这个表格的对应关系对index.html网页进行修改。

选择记事本打开index.html,首先修改标题,再通过查找Traffic Analysis for * 将它替换为自己需要的中文名“外网出口”或“某某小区”等即可。此时,通过客户端电脑将浏览网址加上一个固定的端口号(这种端口号一般不公开的)就可以实现7×24小时、定时自动更新的流量监控了。

六、小结

实际上,MRTG不仅可以监测网络流量,还可监测设备的CPU利用率、内存使用率等;此外,通过手工配置MRTG文件mrtg.cfg,可完全定制MRTG的运行;熟悉SNMP的网管人员还可以直接用SNMP MIB 变量名或OID 值细化你要观测的对象,抑制某个图形的输出、定制语言、图形显示标题、Y轴的方向、单位、参数门限等。