简介
Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件,它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML文档方式显示给用户,以非常直观的形式显示流量负载(可以在网站http://www.stat.ee.ethz.ch/mrtg/得到mrtg的输出结果示例)
www.orchn.com
关于mrtg的最详细的信息可以从http://people.ee.ethz.ch/~oetiker/webtools/mrtg得到
通信
Get操作实现对被管理对象所表示的管理信息的读操作
MRTG的安装配置
安装支持软件
我们这里以Rehat7.2为例子讨论MRTG的配置和安装
Mrtg兼容性
mrtg软件可以运行在以下的操作系统上:
Linux 1.2.x, 2.0.x, 2.2.x, 2.4.x (Intel and Alpha and Sparc and PowerPC) Linux MIPS, Linux S/390 SunOS 4.1.3 Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8 AIX 4.1.4, 4.2.0.0, 4.3.2 HPUX 9,10,11 WindowsNT 3.51, 4.0, 2k, XP IRIX 5.3, 6.2 BSDI BSD/OS 2.1, 4.x, 3.1 NetBSD 1.5.x FreeBSD 2.1.x, 2.2.x, 3.1, 3.4, 4.x OpenBSD 2.x Digital Unix 4.0 SCO Open Server 5.0 Reliant UNIX NeXTStep 3.3 OpenStep 4.2 Mac OS X 10.1 And about and other sensible Unix
可以通过mrtg监控的设备(目前市场上绝大多数产品都支持SNMP协议,只要支持SNMP协议的设备就都可以使用MRTG来监控):
3Com NETBuilders, LANplex 6012 and 2500 3Com etherswitches and hubs 3Com Linkswitch 1000 1100 3300 3Com Superstack II switch 3900, 3300 MX 3Com 812 ADSL Router Alantec powerhub 7000 Allied Telesyn - 8224XL and 8324XL 24 port managed switches Annex terminal server Asante Hub Ascend (Lucent) Max 600, [24]00x, Pipeline 50, TNT, APX-8000, MAX-6000 Alcatel (Assured Access) x1600, OmniSR9, OmniCore 5022 AT%26T Wave Point, Lan BayNetworks (Wellfleet) 7.80 and up, BayStack 350T, Instant Internet, see Nortel BreezeCom AP,SA Cabletron ESX-820 Etherswitch, Smartswitch 2000,6000 and router Centillion Token Ring SpeedSwtich 100 (IBM 8251 Token Ring Switch) About every Cisco Kit there is ... CentreCOM 8116 Compatible Systems DECBridge 620, DEC 900EF, 900EE, Gigaswitch ELSA Lancom L 11 (Wireless Router) Enterasys Matrix E5, VH-4802 and VH-2402S Switche Ericsson Tirgis Series RAS Servers Extreme Networks -- Blackdiamond 6808 %26 Alpine 3808 Layer 3 Switches Fore ASX200 ATM FlowPoint 2200 ATM/DSL Router Formula 8200 series Foundry BigIron 8000 Gigabit, FastIron Switch, ServerIron Switch Cable Modems from Lancity, Terayon and DOCSIS HP - network interfaces, disks, database Informix HP AdvanceStack/Procurve Switch 2000 and 2524, AdvanceStack Switch 200 HP Procurve Switches , model 4000m, 2424m and 2400m IBM 8260 swtich (with 155MB ATM blades installed), IBM 2210 ISDN Routers. Intel switches (details) -- 510T, Intel Gigabit Server adapter IMV Victron NetPro 3000 UPS Kentrox Pacesetter Pro Lantronix Bridge Lucent/Xedia Access PointT 450, 1000 Livingston (Lucent) IRX 3.2.1R, IRX 114, PM2E(R) PM3-2E OR-U Motorola 6560 Regional Node, SB3100 CableModem, 320, 6430 and 6455 routers Morningstar terminal servers/routers MGE (Merlin Gerin) UPSes (details) Network Appliance Netopia R7100C SDSL Netscreen 5 / 10 / 100 Nortel Networks, Bay Routers BCN, BLN, ASN, ARN, AN, Passport 1k and Passport 8k3 series L3 switches, BayStack 450 L2 switches. Nortel Networks, Accelar L3 Switches Nokia IP 330/440/650 Nbase ethernet switch Novell 3.11, 4.11 Rmon probes SGI-Server (Irix 5.3) Any server server running HP-UX, Ultrix, Solaris, SunOS, OSF, NetBSD, FreeBSD, BSDi, Linux, AIX, OpenBSD, Irix or even Windows operating systems (badly), when using NET-SNMP (former UCD-SNMP). Apple Mac (An snmp service is included on the OS CD %26gt;= 8.5 ) Shiva Accesport Solaris Server Squid Web cache US-Robotics Total Control Modemracks Wellfleet (later Bay Networks): see Nortel routers WaveWireless SpeedLan 8x00 RF Routers WinNT, MS Proxy Xylan (today Alcatel) 4024C 24port 10/100 OmniStack Switch, 9k devices, including ATM links. Yamaha rt100i Zyxel Prestige P310, 153X, 642. 不支持mrtg的设备: D-Link switches (details) SNMP简介
一个网络管理系统一般要包含以下几个元素:①若干个(可能很多个)需要被管理的网络设备节点,如路由器、服务器等设备,每个节点上都运行着一个称为设备代理(agent)的应用进程,其实现对被管理设备的各种被管理对象的信息如流量等的搜集和对这些被管对象的访问的支持;②至少一个管理工作站,该管理站运行着管理平台应用系统,实现为管理员提供对被管设备的可视化的图形界面,从而使管理员可以方便的进行管理;③一个管理协议,用来定义设备代理和管理工作站之间管理信息传送的规程
服务器
SNMPv1和SNMPv2c采用了一种简单的基于共同体名的安全机制:
管理站和被管设备上都存储有该充当密码作用的共同体名;消息发送者(一般是管理者)在要发送的消息中的共同体名字段中填入对应于接收者的共同体名,然后以明文方式在网络上发送消息,接收方(被管理设备)接收到消息以后,如果消息格式是正确的,则读取该字段,与自身保存的共同体名相比较,来实现对发送消息者的认证
www.orchn.com
SNMP一共发展有3个主版本,分别为SNMPv1 ,SNMPv2和SNMPv3
SNMP协议操作
SNMP提供有三类操作,分别为Get,Set和Trap
SNMP基本的标准MIB库是MIBII,具体请参考RFC 1213
www.orchn.com
SNMP的消息在发送和传输时消息是采用基本编码规则(BER)对消息进行编码
网络
Set操作实现对被管理对象的管理信息进行写操作,其实现直接对操作参数指定的OID所表示的被管理对象对应的管理信息的值的设置
mrtg具有以下特色:
可移植性:目前可以运行在大多数Unix系统和Windows NT之上
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使用,还要修改snmpd的配置,以使其允许mrtg读取其interface(网络接口)流量数据
www.orchn.com
使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生成统计信息,默认为五分钟运行一次
其中SNMP协议是运行在UDP协议之上,它利用的是UDP协议的161/162端口
通信
其中上述操作的消息都可以在操作参数中一次指定一个或多个管理对象OID信息,也就是说一个消息一次可以实现对多个被管理对象的操作
出于业界对网络管理协议标准化的迫切要求的驱动,IETF于1990发布了SNMPv1的正式RFC文档;其设计思想重点放在保证协议的简单性、灵活性和可扩展性上,并希望把SNMP作为一个过渡性的网管协议来作为实现对互连的网络设备进行管理时遵循的标准,待OSI的网络管理协议—CMIP的开发、实现和标准化成熟和完善到可以在业界推广之后,再用CMIP来替换SNMP
前面几种消息是由管理工作站主动实现对被管理设备进行轮询访问时发出以得到被管理设备的各种信息;而在被管理设备出现异常事件需要及时向管理工作站报告时,就需要Trap操作,该操作实现被管理设备向管理工作站报告设备上出现的异常事件,如网络接口出现故障或恢复工作,设备重新启动等信息
在linux环境下安装snmp软件包是很容易的,只需要安装相应的软件包即可:
[root@mail doc]# rpm -qa|grep snmp ucd-snmp-4.2.1-7 ucd-snmp-utils-4.2.1-7 ucd-snmp-devel-4.2.1-7
这时候运行下面的命令:
[root@mail doc]# /etc/rc.d/init.d/snmpd start Starting snmpd: [ OK ]
如果命令输出如上所示,就表示snmp服务器启动正常
在运行TCP/IP协议的互联网环境中,管理协议标准是简单网络管理协议(Simple Network Management Protocol,SNMP),其定义了传送管理信息的协议消息格式及管理站和设备代理相互之间进行消息传送的规程
对于希望使用mrtg来对多个设备进行监控的情况,举例如下:
cfgmaker --global "WorkDir: /var/www/html/mrtg" --global "Options[_]: growright,bits" --ifref=descr --ifdesc=alias public@router1.place.xyz public@router2.place.xyz --global "Options[_]: growright" --ifref=name --ifdesc=descr public@switch1.place.xyz --ifdesc=name public@switch2.place.xyz %26gt; mrtg.cfg
这里指示监控四个设备:router1.place.xyz、router2.place.xyz、switch1.place.xyz 和switch2.place.xyz,所有的设备都采用共同体名public来进行监控
对于我这里的应用环境来说,生成的mrtg.cfg内容如下:
# Created by # /usr/local/mrtg-2/bin/cfgmaker --global 'WorkDir: /var/www/html/mrtg' --global 'Options[_]: growright,bits' --output /etc/mrtg.cfg --ifref=ip public@192.168.0.1
### Global Config Options
# for UNIX # WorkDir: /home/http/mrtg
# or for NT # WorkDir: c:mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right # Options[_]: growright, bits
WorkDir: /var/www/html/mrtg Options[_]: growright,bits
###################################################################### # System: 192.168.0.1 # Description: Linux 192.168.0.1 2.4.7-10smp #1 SMP Thu Sep 6 17:09:31 EDT 2001 i686 # Contact: Root (configure /etc/snmp/snmp.local.conf) # Location: Unknown (edit /etc/snmp/snmpd.conf) ######################################################################
### Interface 1 %26gt;%26gt; 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: # SetEnv[192.168.0.1_127.0.0.1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo" # MaxBytes[192.168.0.1_127.0.0.1]: 1250000 # Title[192.168.0.1_127.0.0.1]: Traffic Analysis for 127.0.0.1 -- 192.168.0.1 # PageTop[192.168.0.1_127.0.0.1]:
Traffic Analysis for 127.0.0.1 -- 192.168.0.1 #
#
| System: |
192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf) |
#
| Maintainer: |
Root %26lt;root@localhost%26gt; (configure /etc/snmp/snmp.local.conf) |
#
| Description: |
lo |
#
| ifType: |
softwareLoopback (24) |
#
| ifName: |
|
#
| Max Speed: |
10.0 Mbits/s |
#
| Ip: |
127.0.0.1 (localhost) |
#
### Interface 2 %26gt;%26gt; Descr: 'eth0' | Name: '' | Ip: '211.99.43.111' | Eth: '00-d0-b7-b7-bb-30' ###
Target[192.168.0.1_211.99.43.158]: /211.99.43.158:public@192.168.0.1: SetEnv[192.168.0.1_211.99.43.158]: MRTG_INT_IP="211.99.43.158" MRTG_INT_DESCR="eth0" MaxBytes[192.168.0.1_211.99.43.158]: 1250000 Title[192.168.0.1_211.99.43.158]: Traffic Analysis for 211.99.43.158 -- 192.168.0.1 PageTop[192.168.0.1_211.99.43.158]:
Traffic Analysis for 211.99.43.158 -- 192.168.0.1
System: 192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf)
Maintainer: Root %26lt;root@localhost%26gt; (configure /etc/snmp/snmp.local.conf)
Description: eth0
ifType: ethernetCsmacd (6)
ifName:
Max Speed: 10.0 Mbits/s
Ip: 211.99.43.158 (192.168.0.1)
### Interface 3 %26gt;%26gt; Descr: 'eth1' | Name: '' | Ip: '192.168.0.1' | Eth: '00-10-4b-0c-b4-23' ###
Target[192.168.0.1_192.168.0.1]: /192.168.0.1:public@192.168.0.1: SetEnv[192.168.0.1_192.168.0.1]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="eth1" MaxBytes[192.168.0.1_192.168.0.1]: 1250000 Title[192.168.0.1_192.168.0.1]: Traffic Analysis for 192.168.0.1 -- 192.168.0.1 PageTop[192.168.0.1_192.168.0.1]: Traffic Analysis for 192.168.0.1 -- 192.168.0.1 %26gt;
| System: |
192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf) |
| Maintainer: |
Root %26lt;root@localhost%26gt; (configure /etc/snmp/snmp.local.conf) |
| Description: |
eth1 |
| ifType: |
ethernetCsmacd (6) |
| ifName: |
|
| Max Speed: |
10.0 Mbits/s |
| Ip: |
192.168.0.1 (192.168.0.1) |
运行mrtg
一旦生成正确的配置文件,就运行下面的命令:
/usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg
这将查询被监控的设备并在工作目录下创建初始的流量图和web页面,在前三次运行时可能会报告遗失日志文件的告警信息,不要理睬这些信息,只需要连续运行三次以后再运行就不会产生告警信息了
相关的一组对象的集合被定义为一个MIB模块
管理对象库MIB
MIB是一个按照层次结构组织的树状结构(定义方式类似于域名系统),管理对象为定义为树中的相应叶子节点
设备的所有的需要被管理的信息被看作一个各种被管理对象的集合,这些被管理对象由OSI定义在一个被称作管理信息库(Management Information Base,MIB)的虚拟的信息库中
详细情况请参考RFC 1157、RFC 1902、RFC 2273、RFC 2274
运行SNMP管理系统的原理及SNMP协议
使用SNMP协议的网络管理系统管理结构工作一般包括:管理进程通过定时向各个设备的设备代理进程发送查询请求消息(以轮询方式),来跟踪各个设备的状态;而当设备出现异常事件如设备冷启动等时,设备代理进程主动向管理进程发送陷阱消息,汇报出现的异常事件
首先在www服务器的DocumentRoot目录下创建一个子目录用来存放mrtg生成的统计文件,这里假设apache是默认安装,因此DocumentRoot在/var/www/html目录下,我们在该目录下创建子目录mrtg:
mkdir /var/www/html/mrtg
这里的/var/www/html/mrtg就是mrtg的工作目录
自动配置功能:MRTG自身有配置工具套件,使得配置过程非常简单
PNG格式图形:图形采用GD库直接产生PNG格式
mrtg的主页是http://www.mrtg.org,可以从这里下载软件
可定制性:MRTG产生的web页面是完全可以定制的
可靠的接口标识:被监控的设备的接口可以以IP地址、设备描述、SNMP对接口的编号及Mac地址来标识
www.orchn.com 常量大小的日志文件:MRTG的日志不会变大,因为这里使用了独特的数据合并算法
性能:时间敏感的部分使用C代码编写,因此具有很好的性能
支持SNMPv2c:MRTG可以读取SNMPv2c的64位的记数器,从而大大减少了记数器回转次数
源码开放:Mrtg是用perl编写的,源代码完全开放
www.orchn.com 配置SNMP服务
对于不同的设备,配置SNMP支持的方法是不一致的,具体请参考设备的随机文档,一般里面都有详细的介绍
高可移植性的SNMP支持:Mrtg采用了Simon Leinen编写的具有高可移植性的SNMP实现模块,从而不依赖于操作系统的SNMP模块支持
"--output /etc/mrtg.cfg"标识将生成的配置文件存放在/etc/目录下
www.orchn.com "public@192.168.0.1"表示监控IP地址为192.168.0.1的设备,采用public作为共同体名通过snmp协议来监控设备192.168.0.1
|