google adsense
Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件, 它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载(可以在网站http:// www.stat.ee./mrtg/得到mrtg的输出结果示例)。
关于mrtg的最详细的信息可以从http://people.ee./~oetiker/webtools/mrtg得 到。 mrtg具有以下特色: 可移植性:目前可以运行在大多数Unix系统和Windows NT之上。 Mrtg兼容性 mrtg软件可以运行在以下的操作系统上: Linux 1.2.x, 2.0.x, 2.2.x, 2.4.x (Intel and Alpha and Sparc and PowerPC) 可以通过mrtg监控的设备(目前市场上绝大多数产品都支持SNMP协议,只要支持SNMP协议 的设备就都可以使用MRTG来监控): 3Com NETBuilders, LANplex 6012 and 2500 Asante Hub Novell 3.11, 4.11 SNMP简介 一个网络管理系统一般要包含以下几个元素:①若干个(可能很多个)需要被管理的网络设 备节点,如路由器、服务器等设备,每个节点上都运行着一个称为设备代理(agent)的应 用进程,其实现对被管理设备的各种被管理对象的信息如流量等的搜集和对这些被管对象 的访问的支持;②至少一个管理工作站,该管理站运行着管理平台应用系统,实现为管理 员提供对被管设备的可视化的图形界面,从而使管理员可以方便的进行管理;③一个管理 协议,用来定义设备代理和管理工作站之间管理信息传送的规程。其中管理协议的操作是 在管理框架下进行的,管理框架定义了和安全相关的认证,授权,访问控制和加密策略等各 种安全防护框架。 在运行TCP/IP协议的互联网环境中,管理协议标准是简单网络管理协议(Simple Network Management Protocol,SNMP),其定义了传送管理信息的协议消息格式及管理站和设备代 理相互之间进行消息传送的规程。 出于业界对网络管理协议标准化的迫切要求的驱动,IETF于1990发布了SNMPv1的正式RFC 文档;其设计思想重点放在保证协议的简单性、灵活性和可扩展性上,并希望把SNMP作为 一个过渡性的网管协议来作为实现对互连的网络设备进行管理时遵循的标准,待OSI的网 络管理协议—CMIP的开发、实现和标准化成熟和完善到可以在业界推广之后,再用CMIP来 替换SNMP。但是由于各种的原因,CMIP并没有替代SNMP,而SNMP发展为业界的标准。 SNMP一共发展有3个主版本,分别为SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分为若干个 子版本,其中SNMPv2c应用最为广泛: SNMPv1: 是第一个正式协议版本,在RFC1155-RFC1158中定义,该版本采用了基于共同体 名的安全机制; 运行SNMP管理系统的原理及SNMP协议 使用SNMP协议的网络管理系统管理结构工作一般包括:管理进程通过定时向各个设备的设 备代理进程发送查询请求消息(以轮询方式),来跟踪各个设备的状态;而当设备出现异常 事件如设备冷启动等时,设备代理进程主动向管理进程发送陷阱消息,汇报出现的异常事 件。这些轮询消息和陷阱消息的发送和接受规程及其格式定义都是由SNMP协议定义的;而 被管理设备将其各种管理对象的信息都存放在一个称为管理信息库(Management Information Base)库结构中。 其中SNMP协议是运行在UDP协议之上,它利用的是UDP协议的161/162端口。其中161端口被 设备代理监听,等待接受管理者进程发送的管理信息查询请求消息;162端口由管理者进 程监听等待设备代理进程发送的异常事件报告陷阱消息,如Trap。 设备的所有的需要被管理的信息被看作一个各种被管理对象的集合,这些被管理对象由 OSI定义在一个被称作管理信息库(Management Information Base,MIB)的虚拟的信息库 中。 管理对象库MIB MIB是一个按照层次结构组织的树状结构(定义方式类似于域名系统),管理对象为定义 为树中的相应叶子节点。管理对象是按照模块的形式组织,每个对象的父节点表示该种对 象属于上层的哪一个模块。而且OSI为树中每一层的每个节点定义唯一的一个数字标识, 每层中的该数字标识从1开始递增,这样树中的每个节点都可以用从根开始到目的节点的 相应的标识对应的一连串的数字来表示,如1.3.6.1.2.1.1表示了MIBII中系统组子树,而 1.3.6.1.2.1.1.1.0表示系统组中的系统描述(sytem Descrption)对象。每个对象的一连 串数字表示被称为对象标识符(Object Indentifier,OID)。 相关的一组对象的集合被定义为一个MIB模块。这些模块使用OSI的抽象语法标记 (Abstract Syntax Notation One,ASN.1)的一个子集写成。该子集被定义为管理信息结 构(Management Information,SMI)。 SNMP的消息在发送和传输时消息是采用基本编码规则(BER)对消息进行编码。 SNMP基本的标准MIB库是MIBII,具体请参考RFC 1213。 SNMP协议操作 SNMP提供有三类操作,分别为Get,Set和Trap。 Get操作实现对被管理对象所表示的管理信息的读操作。在SNMPv1中,GET操作具体一共有 两种形式 Get和GetNext操作: Get操作指示直接读取操作参数指定的OID所表示的被管理对象的管 理信息值。GetNext操作指示读取操作参数指定的OID所表示的被管理对象在MIB树中按照 字典顺序的下一个被管理对象的管理信息的值。在SNMPv2中,增加了一种GetBulk操作, 其是Get和GetNext的综合,是为了提高对被管理信息的访问的效率而增加的。 Set操作实现对被管理对象的管理信息进行写操作,其实现直接对操作参数指定的OID所表 示的被管理对象对应的管理信息的值的设置。 前面几种消息是由管理工作站主动实现对被管理设备进行轮询访问时发出以得到被管理设 备的各种信息;而在被管理设备出现异常事件需要及时向管理工作站报告时,就需要Trap 操作,该操作实现被管理设备向管理工作站报告设备上出现的异常事件,如网络接口出现 故障或恢复工作,设备重新启动等信息。另外在SNMPv2中新增加了一种Inform操作来实现 管理站与管理站之间的通信。 其中上述操作的消息都可以在操作参数中一次指定一个或多个管理对象OID信息,也就是 说一个消息一次可以实现对多个被管理对象的操作。 SNMPv1和SNMPv2c采用了一种简单的基于共同体名的安全机制: 管理站和被管设备上都存储有该充当密码作用的共同体名;消息发送者(一般是管理者)在 要发送的消息中的共同体名字段中填入对应于接收者的共同体名,然后以明文方式在网络 上发送消息,接收方(被管理设备)接收到消息以后,如果消息格式是正确的,则读取该字 段,与自身保存的共同体名相比较,来实现对发送消息者的认证。在一些实现中,对应于 每个共同体名还有一个机器地址列表,来表示只有地址在这个列表中的机器使用该共同体 名发送的消息才认为是可信的。这里的共同体名就担任密码的作用。同时对应于每个共同 体名都有一个访问控制权限,可能值为读或读写。只有请求的操作和使用的共同体名的权 限一致才允许进行。 详细情况请参考RFC 1157、RFC 1902、RFC 2273、RFC 2274。 MRTG的安装配置 安装支持软件 我们这里以Rehat7.2为例子讨论MRTG的配置和安装。要安装MRTG需要安装以下软件 包:GCC、Perl、gd、libpng和zlib。可以使用下面的命令来判断系统是否安装有这些软 件包: [root@mail doc]# rpm -qa|grep gd [root@mail doc]# rpm -qa|grep perl [root@mail doc]# rpm -qa|grep libp [root@mail doc]# rpm -qa|grep zlib 如果发现哪个软件包没有安装,只需直接从redhat安装盘安装对应的rpm包即可,例如: MRTG的安装 目前mrtg的最新版本为2.9.17: [root@mail src]# tar xvfz mrtg-2.9.17.tar.gz 到现在我们就已经正确地安装了MRTG系统。 配置SNMP服务 对于不同的设备,配置SNMP支持的方法是不一致的,具体请参考设备的随机文档,一般里 面都有详细的介绍。这里我们讨论在Linux环境下配置SNMP服务器,以实现对本机流出流 入数据的分析和报表(我的应用环境是使用Linux带动一个小型局域网上网,监控本机进出 流量)。 在linux环境下安装snmp软件包是很容易的,只需要安装相应的软件包即可: [root@mail doc]# rpm -qa|grep snmp 这时候运行下面的命令: [root@mail doc]# /etc/rc.d/init.d/snmpd start 如果命令输出如上所示,就表示snmp服务器启动正常。 为了配合mrtg使用,还要修改snmpd的配置,以使其允许mrtg读取其interface(网络接口) 流量数据。 vi /etc/snmp/snmpd.conf 将 #view systemview included mib2 的内容修改为: 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: /etc/rc.d/init.d/snmpd restart 配置MRTG 下一步就是要配置mrtg,实现对网络设备的监控。mrtg的配置信息都是保存在mrtg.cfg文 件中的,创建该文件并且在其中定义希望的监控特性。幸运的是一般不需要直接手工编辑 该配置文件,因为mrtg软件包提供有cfgmaker配置工具,这是一个脚本文件,根据运行参 数可以自动生成mrtg.cfg配置文件。在mrtg源码目录的bin子目录下你可以得到该工具。 首先在www服务器的DocumentRoot目录下创建一个子目录用来存放mrtg生成的统计文件, 这里假设apache是默认安装,因此DocumentRoot在/var/www/html目录下,我们在该目录 下创建子目录mrtg: mkdir /var/www/html/mrtg 这里的/var/www/html/mrtg就是mrtg的工作目录。下面就生成mrtg配置文件: cfgmaker --global "WorkDir: /var/www/html/mrtg" 这里的--global参数表示后面的选项是对后面指定的设备都是有效的(如果希望对多个设 备进行监控时,该参数就会发生作用)。WorkDir用来指示mrtg的工作目录;Options用来 指定一些特定的选项,这里的growright,bits是用来指定默认options配置的,对于常见 的应用来说默认options配置就可以满足需求了。ifref用来指示用什么选项来标识设备接 口,这里指定使用IP地址来标识网络设备接口。ifref可以指定为 nr、ip、eth、descr、name。nr表示用接口在MIBII库中Interface接口的ifIndex来识别 接口;IP表示使用ip地址识别接口;eth表示使用接口的物理地址标识接口;descr表示使 用接口的描述信息来标识接口;name表示使用接口名来标识接口。一般来说ip地址是唯一 的,但是有些情况下接口是没有IP地址的,例如交换机就会出现这种情况。对于接口来说 nr(接口号)是唯一的,因此对于一般情况使用IP地址就可以了,而对于其他一些情况则需 要采用nr了。"--output /etc/mrtg.cfg"标识将生成的配置文件存放在/etc/目录 下。"public@192.168.0.1"表示监控IP地址为192.168.0.1的设备,采用public作为共同 体名通过snmp协议来监控设备192.168.0.1。 对于希望使用mrtg来对多个设备进行监控的情况,举例如下: cfgmaker --global "WorkDir: /var/www/html/mrtg" 这里指示监控四个设备:router1.place.xyz、router2.place.xyz、switch1.place.xyz 对于我这里的应用环境来说,生成的mrtg.cfg内容如下: # Created by
# for UNIX # or for NT ### Global Defaults # to get bits instead of bytes and graphs growing to the right WorkDir: /var/www/html/mrtg ###################################################################### ### Interface 1 >> Descr: lo | Name: | Ip: 127.0.0.1 | Eth: ### ### The following interface is commented out because: ### * it is a Software Loopback interface # # Target[192.168.0.1_127.0.0.1]: /127.0.0.1:public@192.168.0.1:
Traffic Analysis for 127.0.0.1 -- 192.168.0.1 # # # # # # # # System: Maintainer: Description: ifType: ifName:
Ip: ### Interface 2 >> Descr: eth0 | Name: | Ip: 211.99.43.111 | Eth: Target[192.168.0.1_211.99.43.158]: /211.99.43.158:public@192.168.0.1: Traffic Analysis for 211.99.43.158 - - 192.168.0.1
System: Maintainer: Description: ifType: ifName:
Ip: ### Interface 3 >> Descr: eth1 | Name: | Ip: 192.168.0.1 | Eth: Target[192.168.0.1_192.168.0.1]: /192.168.0.1:public@192.168.0.1: Traffic Analysis for 192.168.0.1 -- 192.168.0.1 >
System: Maintainer: Description: ifType: ifName:
Ip: 运行mrtg 一旦生成正确的配置文件,就运行下面的命令: /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg 这将查询被监控的设备并在工作目录下创建初始的流量图和web页面,在前三次运行时可 能会报告遗失日志文件的告警信息,不要理睬这些信息,只需要连续运行三次以后再运行 就不会产生告警信息了。如果仍然出现告警那么就需要察看问题出在哪里了。 使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生 成统计信息,默认为五分钟运行一次。作为root身份crontab -e进入编辑状态,添加内容 如下: */5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg 然后就可以通过浏览器访问地址http://192.168.0.1/mrtg/选择适当的接口地址察看流量
信息了。如果希望生成类似于http://www.stat.ee./mrtg/的信息,就需要自己手
工编辑一个index.html文档存放在/var/www/html/mrtg目录下,内容为接口说明以及该接 口的日统计信息的图即可。 |
|