摘 要:网络流量监测是网络性能分析和通信网络规划设计的基础,分析了snmp模式网络流量采集技术,并利用php语言结合rrdtool、cacti等加以实现,通过http协议实现了客户端用户交互,最终生成实时的png格式流量图,给网络的正常运行网络管理维护工作带来极大的方便。
关键词:snmp;rrdtool;cacti;流量监控
1 引言
随着网络技术的迅速发展和各种网络业务应用的普及, 用户对网络资源的需求不断增长, 网络已成为人们日常工作生活中不可或缺的信息承载工具, 同时人们对网络性能的要求也越高, 在众多影响网络性能的因素中网络流量是最为重要的因素之一, 它包含了用户利用网络进行活动的所有的信息。通过对网络流量的监测分析,可以为网络的运行和维护提供重要信息, 对于网络性能分析、异常监测、链路状态监测、容量规划等发挥着重要作用。
snmp(简单网络维护管理协议)是internet工程任务组(ietf)在sgmp基础上开发的,snmp是由一系列协议组和规范组成的,snmp的体系结构包括snmp管理者(snmpmanager)、snmp代理者(snmpagent)和管理信息库(mib)。每个支持snmp的网络设备中都包含一个代理,不断地收集统计数据,并把这些数据记录到一个管理信息库(mib)中,网络维护管理程序再通过snmp通信协议查询或修改代理所纪录的信息。从被管理设备中收集数据有两种方法:轮询方法和基于中断的方法。wWW.133229.COMsnmp最大的特点是简单性,容易实现且成本低,利用snmp协议能够对被监视的各个网络端口输入字节数、输入非广播包数、输入广播包数、输入包丢弃数、输入包错误数、输入未知协议包数、输出字节数、输出非广播包数、输出广播包数、输出包丢弃数、输出包错误数、输出队长等进行采集。
2 rrdtool的工作原理
rrdtool代表 “round robin database tool”,是tobiasoetiker设计的一个基于perl的功能强大的数据储存和图形生成工具,最初设计目的是为流量统计分析工具mrtg提供更好的数据存储性能和更强的图形生成功能。所谓的“round robin” 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储数据的数据库的空间看成一个圆,上面有很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会随着数据的读写操作自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。这样整个存储空间的大小就是一个固定的数值。所以rrdtool 就是使用类似的方式来存放数据的工具,rrdtool 所使用的数据库文件的后缀名是 '.rrd'。
和其它数据库工具相比,它具有如下特点:
首先 rrdtool 存储数据,扮演了一个后台工具的角色。但同时 rrdtool 又允许创建图表,这使得 rrdtool看起来又像是前端工具。其他的数据库只能存储数据,不能创建图表。
rrdtool 的每个 rrd 文件的大小是固定的,而普通的数据库文件的大小是随着时间而增加的。
其他数据库只是被动的接受数据, rrdtool 可以对收到的数据进行计算,例如前后两个数据的变化程度(rate ofchange),并存储该结果。
rrdtool 要求定时获取数据,其他数据库则没有该要求。如果在一个时间间隔内(heartbeat)没有收到值,则会用 unkn 代替,其他数据库则不会这样做。
3 监测系统的安装与配置
(1)配置路由器和交换机:
开始配置rrdtool之前 ,必须对需要监测的网络及设备进行良好的规划、设计与配置,包括配置设备互联地址、网管地址及路由 ,保证流量监测计算机可以与被监测设备网络层的互通;配置 snmp 通信字符串和端口号 ,掌握需要的监测对象号 ( snmp oid) ,确保流量监测计算机可以获取正确的snmp信息。在路由器和交换机上启动 snmp代理,并设置只读团体名。命令如下:
(config) # snmp - server enable traps
(config) # snmp - server community test ro
(2)安装配置rrdtool:
我们以debian平台来安装配置rrdtool系统,在安装rrdtool前首先要安装支持rrdtool运行的环境:zlib、 libart_lgpl 、cgilib 、libpng、 freetype软件包。
①安装apache、mysql、php:apt-get install apache2 php4 mysql-server php4-mysql;安装成功后通过浏览器访问客户器,可以得到“it works!”的提示;利用mysqladmin工具给mysql添加好管理员密码。
②安装rrdtool:apt-get install rrdtool。
③安装net-snmp:apt-get install snmp。
④安装cacti:apt-get install cacti,在安装过程中会提示你输入mysql管理员密码和cacti数据库管理员密码。
(3)系统配置:
安装好系统后就要进行简单的初始化和配置,步骤如下:
①访问http://x.x.x.x/cacti,按照向导提示进行cacti的初始化安装;
②利用crontab -e添加计划任务:
*/5 * * * * /usr/bin/php /usr/share/cacti/site/poller.php > /dev/null 2>&1
③利用cacti进行设备的添加;
④利用cacti进行绘图管理。
cacti 其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与ldap结合进行用户的验证!我不由得佩服作者考虑的周到!cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!可以说,cacti将rrdtool的所有“缺点” 都补足了!
网络地图
参考文献
[1]江魁,黄云森.基于rrdtool的网络性能监测系统实现[j].中山大学学报(自然科学版),2002,(增刊) :16-19.