MRTG部署记录

[ 2005/08/10 14:26 | by gOxiA ]
| |

随着设备的增加带宽也急速膨胀,所以参考了网络上的文章选择MRTG这个免费的软件来进行流量监控。

简介

Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件, 它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载(可以在网站http:// www.stat.ee.ethz.ch/mrtg/得到mrtg的输出结果示例)。

关于mrtg的最详细的信息可以从http://people.ee.ethz.ch/~oetiker/webtools/mrtg得 到。

mrtg具有以下特色:

可移植性:目前可以运行在大多数Unix系统和Windows NT之上。
源码开放:Mrtg是用perl编写的,源代码完全开放。
高可移植性的SNMP支持:Mrtg采用了Simon Leinen编写的具有高可移植性的SNMP实现模 块,从而不依赖于操作系统的SNMP模块支持。
支持SNMPv2c:MRTG可以读取SNMPv2c的64位的记数器,从而大大减少了记数器回转次数。
可靠的接口标识:被监控的设备的接口可以以IP地址、设备描述、SNMP对接口的编号及 Mac地址来标识。
常量大小的日志文件:MRTG的日志不会变大,因为这里使用了独特的数据合并算法。
自动配置功能:MRTG自身有配置工具套件,使得配置过程非常简单。
性能:时间敏感的部分使用C代码编写,因此具有很好的性能。
PNG格式图形:图形采用GD库直接产生PNG格式。
可定制性:MRTG产生的web页面是完全可以定制的。
mrtg的主页是http://www.mrtg.org,可以从这里下载软件。

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&T 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 & 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 >= 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)的应 用进程,其实现对被管理设备的各种被管理对象的信息如流量等的搜集和对这些被管对象 的访问的支持;②至少一个管理工作站,该管理站运行着管理平台应用系统,实现为管理 员提供对被管设备的可视化的图形界面,从而使管理员可以方便的进行管理;③一个管理 协议,用来定义设备代理和管理工作站之间管理信息传送的规程。其中管理协议的操作是 在管理框架下进行的,管理框架定义了和安全相关的认证,授权,访问控制和加密策略等各 种安全防护框架。

在运行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中定义,该版本采用了基于共同体 名的安全机制;
SNMPv2c: 这个版本被称为基于共同体名的SNMPv2,使用基于共同体名的安全机制和 SNMPv2p做出的协议操作方面的扩充,由RFC1901-RFC1906定义;
SNMPv3: 该协议版本采用基于用户的安全机制,其安全机制是在SNMPv2u和SNMPv2*基础上 进行大量的评议以后进行了更新,并且对协议机的逻辑功能模块的进行了划分而保证了良 好的可扩充性,由RFC2271-RFC2275所定义。

运行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。

本次的测试平台是本站的服务器,操作系统为Windows Server 2003 With Service Pack 1 英文企业版,Perl被默认安装到C:\Perl,MRTG主程序在E:\mrtg,MRTG的检测结果在E:\Inetpub\mrtg

所涉及的软件:

1、ActiveState Perl
下载地址:http://www.activestate.com/

2、MRTG
下载地址:http://www.mrtg.org/

3、windows2003 resource kit 中只需要两个程序:instsrv.exe和srvany.exe

安装步骤:

1、部署Perl运行环境,直接安装就可以了

2、安装配置SNMP服务

3、安装MRTG,进入CMD环境,进入E:\mrtg\Bin执行:

perl E:\mrtg\bin\mrtg
,运行后结果应该大致如下:
Usage: mrtg <config-file>

mrtg-2.12.1 is the Multi Router Traffic Grapher.

If you want to know more about this tool, you might want
to read the docs. They came together with mrtg!

4、开始配置MRTG,运行:

perl cfgmaker test@10.0.0.1 --global "WorkDir: E:\Inetpub\mrtg" --output config.cfg
说明一下:这个配置的cfg监视的是一个设备,IP是192.168.1.100,他的访问权限就是test,有只读权限就够过了然后"WorkDir: E:\inetpub\mrtg"就是是输出html文件存放的路径,config.cfg就是为这个配置命名的文件名,你自己也可以改成其他的。要注意的是路径,perl和cfgmaker的位置,最后生成的cfg文件应该放在这个命令执行的路径上。

5、当运行了步骤4的命令后,应该是一大片执行perl脚步录取snmp信息的命令,最后结束应该是
--base: Writing myconfig.cfg
注意,这个命令只会读取一次snmp信息,我们需要设置他的监控周期,例如每5分钟更新一次,就在这个config.cfg后面加上:

RunAsDaemon:yes
Interval:5

6、使用indexmaker生成监控浏览文件,运行:

perl indexmaker E:\mrtg\bin\config.cfg > E:\inetpub\mrtg\index.htm

这个命令,就是把放在E:\mrtg\bin\下的config.cfg将来生成的报表输出了一个index.html放在E:\Inetpub\mrtg\

7、运行mrtg。
perl mrtg --logging=config.log config.cfg

运行后,应该会显示
Daemonizing MRTG ...
Do Not close this window. Or MRTG will die

这样MRTG就开始监控流量,可是如果你关闭了这个窗口那么监控就就随之停止,所以我选择了最有效的方法让他自动运行,所用的方法就是将MRTG配置为服务来运行,这里就要用到之前提到的kit中的两个小工具。

1、将instsrv.exe和Srvany.exe复制到mrtg安装目录的BIN目录下。

2、在MRTG\BIN目录下执行instsrv mrtg "E:\mrtg\bin\srvany.exe"安装MRTG为系统服务。

3、配置SRVANY:

在注册表hkey_local_machine\system\currentcontrolset\services\mrtg中添加一个parameters项,再在parameters子键中添加以下项目:
application的字串值,内容为c:\perl\bin\perl.exe
appdirectory的字串值,内容为c:\mrtg\bin\
appparameters的字串值,内容为mrtg -logging=public.log public.cfg

至此MRTG就安装配置完毕,下来打开网址就看到了监控的数据,呵呵!感觉很兴奋,但是现在有几个问题没有明白,因为监控的是服务器,文档中说IP和访问地址要对应,如果我的是test@10.0.0.1那么只能监控10.0.0.1这个网站?我一直没有搞明白,而且从流量上来看我的服务器流量也太小了,应该还有哪里理解错误。只能再找资料翻翻!

技术备忘 | 评论(0) | 引用(1) | 阅读(6062)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我