目前,电信运营商已经建立了IP综合网管系统,实现了对基于IP的网络设备的拓扑、性能和告警的管理,功能非常强大。但在实际使用过程中发现,由于接入层设备种类繁多,端口数量也非常多。如果全部由这个系统管理,会增加系统的负荷,造成系统过大,影响实际使用效果。当网络出现故障时,我们希望能尽快找到故障,定位故障,解决故障。所以,要管理所有连接的设备,就要知道网络的详细运行情况,包括端口数据流(如总端口速率、包速率)、设备性能(如CPU利用率)、网络健康状况(如网络延迟)等指标,并直观地展示出来。因此,一个操作简单、功能齐全的流量监控软件将为网络管理提供更多的便利,解决网络管理者面临的许多技术难题。MRTG(多路由器流量图示器)是一个典型的流量监控工具。由于其良好的可移植性、可扩展性和图形界面,又是一个免费的开源软件,因此在世界范围内得到了广泛的应用。
1 SNMP协议
简单网络管理协议(SNMP)是一种基于TCP/IP的互联网管理协议,由SGMP协议发展而来。SNMP定义了传输管理信息的协议消息格式和管理站与设备代理之间消息传输的规则,可以监控和管理互联网中不同类型的设备。互联网上的SNMP运行在TCP/IP协议族之上,但其传输层协议采用无连接的UDP而不是TCP。
基于SNMP的网络管理模型包括四个要素:网络管理站(NMS)、管理代理、管理信息库(MIB)和网络管理协议。采用SNMP模型的特殊形式——代理/管理站模型,通过管理站与SNMP代理的交互完成对网络设备的管理。其工作原理如图1所示。
代理是驻留在被管理对象上的软件。它接收来自NMS的指令,发送响应信息,操作MIB,监控和配置网络设备。NMS和代理通过发送SNMP消息进行通信。SNMP提供三种类型的操作:Get、Set和Trap。SNMP协议使用UDP协议的161/162端口进行通信。在SNMP中,采用符合ASN.1(AbstractSyntax Notation)规范的OID(ObjectIdentifier)来唯一标识网络所管理的对象或对象组。例如,IP协议的OID是{1,3,6,1,2,1,4}。
SNMP主要有三个版本,分别是SNMPv1、SNMPv2和SNMPv3。其中,SNMPv2又分为几个子版本,其中SNMPV2的应用最为广泛。它在计数时使用64位字长,而SNMPv1使用32位。
MRTG的工作原理和组成
MRTG是一个基于SNMP协议的开源管理工具,用于监控网络流量和主机资源。它通过SNMP请求获取被监控对象的流量信息,将流量信息以PNG格式表示,并通过Web将包含这些图形的HTML文档显示给用户,直观的展现流量负载。
MRTG是用Per1和C编写的,可以在Unix和Windows NT环境下工作。使用MRTG的Perl脚本来读取使用SNMP的路由器的流量信息,而使用高性能的C程序来记录负载数据并生成表示被监控网络连接的图形,并嵌入到网页中。除了获取日常细节,MRTG还可以创建前7天、前4周甚至前12个月的网络流量的可视化表示。
MRTG主要由四个模块组成:
基础模块包括SNMP模块和MRTG支持模块,定义了SMI所需的数据结构,并提供相应的方法通过SNMP操作获取被管理对象的信息。
日志文件MRTG以ASCII文本记录测量的流量数据,并且日志文件由速率上升模块更新。
在该模块中,MRTG使用C语言程序更新日志文件并生成统计图,与原来用Perl实现相比,大大提高了效率。
而配置网页组织工具MRTG提供了相关的配置文件生成工具cfgmaker和网页组织工具indexmaker。运行cfgmaker,通过SNMP协议读取被管设备中的对象信息,自动生成设备的框架配置文件。Index-maker通过读取配置文件中的目标描述来获取对象信息,并将信息组织到对象的HTML页面中。
基于MRTG的交通监控实现与分析
3.1安装MRTG
MRTG是用Perl写的,它的运行需要Perl支持,所以在安装MRTG之前必须下载安装Perl语言。因为MRTG 的流量监控是基于网页的,必须安装Web服务器软件,所以这里选择了应用广泛的Apache。安装MRTG时,选择了相对稳定的版本MRTG-2.12.2。
3.2的配置
MRTG的配置是实现网络流量监控的关键,MRTG的配置信息保存在mrtg.cfg文件中。MRTG的配置实际上是mrtg.cfg文件的生成和配置。
在配置系统之前,您需要收集以下信息:被监控设备的IP地址或主机名;如果要监控除字节流量以外的其他信息,需要知道SNMP OID;设备的;最后要知道被监控设备的SNMP社区认证名(社区字符串)信息,默认值是public。
MRTG的配置信息保存在mrtg.cfg文件中,该文件是创建的,其中定义了所需的监控特征。一般不需要直接手工编辑这个配置文件,因为MRTG软件包提供了cfgmaker配置工具,可以根据运行参数自动生成mrtg.cfg配置文件。
首先,在www服务器的文档根目录下创建一个子目录,存储mrtg生成的统计文件。这里,apache被假定为默认安装,所以Document Root在/var/www/html目录中创建了一个子目录MRTG。MRTG配置文件生成如下:
这里,一个全局参数表示以下选项对指定的设备有效(如果您想要监视多个设备,此参数将生效)。WorkDir用于指示MRTG的工作目录;Options用于指定一些特定的选项。此处的右增长位用于指定默认选项配置。对于常见的应用,默认的选项配置可以满足需求。
3.3设备端口流量监控
您可以手动生成配置文件,但通常可以使用MRTG附带的脚本来生成配置文件,例如:
如前所述,SNMPv1使用32位字长进行计数,因此如果收集间隔为5分钟,则可以正确表示的最大流量应为:
因此,当链路流量接近或超过该值时,如果计算结果不再准确,则只能使用SNMPv2计数器。配置MRTG脚本时,可以使用public @ x.x.x.x. 2来指定用于读取SNMPv2的MIB值。
3.4 PING延迟监控
在监控PING延迟时,我们使用另一个Perl脚本mrtg-ping,它也可以监控数据包丢失率。配置文件如下所示:
从上面的例子可以看出,MRTG被监控的对象是Target语句之后的内容,可以是SNMP的MIB对象,也可以是执行脚本得到的值。可以看出,MRTG监控的扩展性非常好,可以自己编写脚本获取感兴趣的数据,比如服务器CPU利用率、内存利用率、磁盘空间、DNS服务器查询次数、缓存服务器命中次数,甚至CPU温度等。MRTG可以向他们展示直观的图表。
4结论
综上所述,MRTG在网络管理中的应用非常有效。只要灵活运用SNMP查询工具、系统状态检测工具,并用Per1编写返回字符串处理程序,就可以完成MRTG的插件程序,最后配合适当的MRTG配置命令,就可以生成备选的实时流量统计图表。因此,MRTG的应用和不断发展,不仅可以帮助网络管理员随时掌握网络系统和设备的运行状态,还可以降低企业或组织的网络设备维护成本。
标签:MRTGSNMP流量