在WINDOWS下安装MRTG.docx
《在WINDOWS下安装MRTG.docx》由会员分享,可在线阅读,更多相关《在WINDOWS下安装MRTG.docx(17页珍藏版)》请在冰豆网上搜索。
![在WINDOWS下安装MRTG.docx](https://file1.bdocx.com/fileroot1/2023-2/2/8216e01b-ad20-4dcf-bd38-1daf30225cee/8216e01b-ad20-4dcf-bd38-1daf30225cee1.gif)
在WINDOWS下安装MRTG
在一个网络中,作为网络工程师或者网络管理员,需要随时了解网络的各种状态,以判断网络是否处于健康状态或者随时了解网络的流量、每个路由器的流量、每个交换机端口的流量…,以供年度报告时向上级领导提供详实的数据及图形报告。
在这里,我先把自己有关如何获取网络流量的方法向大家讲解一下,如果有必要,您可以立即动手,自己做一个公司的网络流量监控图出来。
网络流量的监控需要涉及到SNMP、PERL、MRTG和一点网页的相关知识,现在我就STEPBYSTEP给大家讲解怎么具体实施。
我的水平有限,如有错误或者更好的解决办法,还恳请大家提出,谢谢!
注:
文中有部份资料从Internet网络收集。
目录
在WINDOWS下安装MRTG全攻略--网络流量监控1
代序1
目录1
SNMP简介2
MRTG简介4
STEPBYSTEP教您安装PERL7
STEPBYSTEP教您设置SNMP11
STEPBYSTEP教您安装MRTG14
把流量图加入您的网站19
SNMP简介
一个网络管理系统一般要包含以下几个元素:
①若干个(可能很多个)需要被管理的网络设备节点,如路由器、服务器等设备,每个节点上都运行着一个称为设备代理(agent)的应用进程,其实现对被管理设备的各种被管理对象的信息如流量等的搜集和对这些被管对象的访问的支持;②至少一个管理工作站,该管理站运行着管理平台应用系统,实现为管理员提供对被管设备的可视化的图形界面,从而使管理员可以方便的进行管理;③一个管理协议,用来定义设备代理和管理工作站之间管理信息传送的规程。
其中管理协议的操作是在管理框架下进行的,管理框架定义了和安全相关的认证,授权,访问控制和加密策略等各种安全防护框架。
在运行TCP/IP协议的互联网环境中,管理协议标准是简单网络管理协议(SimpleNetworkManagementProtocol,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协议定义的;而被管理设备将其各种管理对象的信息都存放在一个称为管理信息库(ManagementInformationBase)库结构中。
其中SNMP协议是运行在UDP协议之上,它利用的是UDP协议的161/162端口。
其中161端口被设备代理监听,等待接受管理者进程发送的管理信息查询请求消息;162端口由管理者进程监听等待设备代理进程发送的异常事件报告陷阱消息,如Trap。
设备的所有的需要被管理的信息被看作一个各种被管理对象的集合,这些被管理对象由OSI定义在一个被称作管理信息库(ManagementInformationBase,MIB)的虚拟的信息库中。
管理对象库MIB
MIB是一个按照层次结构组织的树状结构(定义方式类似于域名系统),管理对象为定义为树中的相应叶子节点。
管理对象是按照模块的形式组织,每个对象的父节点表示该种对象属于上层的哪一个模块。
而且OSI为树中每一层的每个节点定义唯一的一个数字标识,每层中的该数字标识从1开始递增,这样树中的每个节点都可以用从根开始到目的节点的相应的标识对应的一连串的数字来表示,如1.3.6.1.2.1.1表示了MIBII中系统组子树,而1.3.6.1.2.1.1.1.0表示系统组中的系统描述(sytemDescrption)对象。
每个对象的一连串数字表示被称为对象标识符(ObjectIndentifier,OID)。
相关的一组对象的集合被定义为一个MIB模块。
这些模块使用OSI的抽象语法标记(AbstractSyntaxNotationOne,ASN.1)的一个子集写成。
该子集被定义为管理信息结构(ManagementInformation,SMI)。
SNMP的消息在发送和传输时消息是采用基本编码规则(BER)对消息进行编码。
SNMP基本的标准MIB库是MIBII,具体请参考RFC1213。
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采用了一种简单的基于共同体名的安全机制:
管理站和被管设备上都存储有该充当密码作用的共同体名;消息发送者(一般是管理者)在要发送的消息中的共同体名字段中填入对应于接收者的共同体名,然后以明文方式在网络上发送消息,接收方(被管理设备)接收到消息以后,如果消息格式是正确的,则读取该字段,与自身保存的共同体名相比较,来实现对发送消息者的认证。
在一些实现中,对应于每个共同体名还有一个机器地址列表,来表示只有地址在这个列表中的机器使用该共同体名发送的消息才认为是可信的。
这里的共同体名就担任密码的作用。
同时对应于每个共同体名都有一个访问控制权限,可能值为读或读写。
只有请求的操作和使用的共同体名的权限一致才允许进行。
详细情况请参考RFC1157、RFC1902、RFC2273、RFC2274。
MRTG简介
mrtg具有以下特色:
可移植性:
目前可以运行在大多数Unix系统和WindowsNT之上。
源码开放:
Mrtg是用perl编写的,源代码完全开放。
高可移植性的SNMP支持:
Mrtg采用了SimonLeinen编写的具有高可移植性的SNMP实现模块,从而不依赖于操作系统的SNMP模块支持。
支持SNMPv2c:
MRTG可以读取SNMPv2c的64位的记数器,从而大大减少了记数器回转次数。
可靠的接口标识:
被监控的设备的接口可以以IP地址、设备描述、SNMP对接口的编号及Mac地址来标识。
常量大小的日志文件:
MRTG的日志不会变大,因为这里使用了独特的数据合并算法。
自动配置功能:
MRTG自身有配置工具套件,使得配置过程非常简单。
性能:
时间敏感的部分使用C代码编写,因此具有很好的性能。
PNG格式图形:
图形采用GD库直接产生PNG格式。
可定制性:
MRTG产生的web页面是完全可以定制的。
mrtg的主页是http:
//www.mrtg.org,可以从这里下载软件。
Mrtg兼容性
mrtg软件可以运行在以下的操作系统上:
Linux1.2.x,2.0.x,2.2.x,2.4.x(IntelandAlphaandSparcandPowerPC)
LinuxMIPS,LinuxS/390
SunOS4.1.3
Solaris2.4,2.5,2.5.1,2.6,7,8
AIX4.1.4,4.2.0.0,4.3.2
HPUX9,10,11
WindowsNT3.51,4.0,2k,XP
IRIX5.3,6.2
BSDIBSD/OS2.1,4.x,3.1
NetBSD1.5.x
FreeBSD2.1.x,2.2.x,3.1,3.4,4.x
OpenBSD2.x
DigitalUnix4.0
SCOOpenServer5.0
ReliantUNIX
NeXTStep3.3
OpenStep4.2
MacOSX10.1
AndaboutandothersensibleUnix
可以通过mrtg监控的设备(目前市场上绝大多数产品都支持SNMP协议,只要支持SNMP协议的设备就都可以使用MRTG来监控):
不支持mrtg的设备:
D-Linkswitches(details)
STEPBYSTEP教您安装PERL
Perl的安装比较简单了,目前使用的一般是ActivePerlforwindows,现在最新的版本是5.8.0,它需要使用者先安装IIS或者APACHE等常用的WEB服务器平台。
在这里,我就以最常用的IIS作为安装的示例,如果大家需要在APACHE平台里面安装PERL,结果会稍有些不同.
Perl适用于五花八门的各种作业平台,包括所有已知的UNIX/Linux
及微软的作业系统,以及足够支持POSIX的下列平台:
BeOS,Cygwin,Netware,MPE/iX,OS/2,QNX,VMS,VOS,以及z/OS.麦金塔MacOSClassic的用户也可以在http:
//dev.macperl.org/下载专属的移植版本.
在本例子中,我们以ActivePerl-5.6.1作为安装示例教大家怎么安装,PerlForWINDOWS版本是msi的安装包,一般的情况如ActivePerl-5.6.1.633-MSWin32-x86.msi,大家可以去下载最新版本的ActivePerl。
安装Perl的过程很简单的,但还是要讲解一下:
我现在的环境是WINDOWS2000SERVER英文版+PACK3,IIS5.0平台。
1、打开Perl的安装文件,点下一步,
2、没得选择,只有同意协议才能下一步。
3、在这里千万要注意了,系统默认是安装在Perl目录里面,但为了我们以后使用程序的方便,一定要记得修改为usr目录,盘符一般应和web的根目录所在的盘一致,结果如下:
4、下一个画面会让您确认是否使用[PPM3发送个人信息至ASPN],还是省着点儿,不要选它,直接按下一步。
5、这里可以全部选择上,下一步。
6、提示准备好了开始安装了,下一步。
7、开始安装
8、硬盘一阵狂响之后,系统就安装成功了!
大概在等几分钟吧
9、安装Perl到此结束,是不是超级简单。
Perl安装好之后,您可以打开[InternetInformationServices]->[DefaultWebSite]->[Properties]->[HomeDirectory]->[Configuration]看到如下的画面
看到其中有pl,plx,就表示安装成功了,其他.cgi的是我自己手工加上去的,方法是点击其他的[Add…]
在出现的对话框中输入如图所示的字符串即可。
然后我们可以测试一下安装的结果,一般使用所谓的CGI探针,可以在网上找到。
出现如上图所示的内容,就表示我们的PERL安装配置成功,可以进入下一步学习了。
STEPBYSTEP教您设置SNMP
我们将PERL安装好后,要先设置一下您需要监控流量的设备,它可能是路由器、交换机…甚至于一台安装了WIN2K的电脑。
只要其支持SNMP的traps,都可以使用来作用被监控的对象。
我在这里面以一台CISCO2950交换机和华为2600路由器为例给大家介绍,因为涉及到IOS版本和其他不确定因素,在实际操作中,希望大家灵活运用。
当然,下面的例子是我亲手调试通过的,您只需要改变一下相关名称,就可以正常使用了。
为了方便大家阅读,我简单的解释一下:
在设置community字串时,不要使用默认的public,因为它无容易被某些黑客监听,或者出现安全漏洞,可以选择自己认为有意义的字符串;host是接收traps的主机IP名字,可以根据您的实际需要调整。
以下命令在CISCO2950环境里面调试通过:
C:
\telnet您的交换机的IP
TNKSW#conft
TNKSW(config)#snmp-servercommunitychinatnkRO
TNKSW(config)#snmp-servertrap-sourceFastEthernet0/1
TNKSW(config)#snmp-servercontactcqfanli@
TNKSW(config)#snmp-serverhost192.168.0.6chinatnk
TNKSW(config)#snmp-serverenabletraps
TNKSW#shrun
TNKSW#wr
(以下为部份摘录showrun命令)
……
……
可以看到,到此我们的交换机的SNMP已经正常工作了,当然,最重要的是别忘了保存呀,要不然就前功尽弃了,呵呵…
再看看华为2600路由器的配置,其实也差不多的,不过华为的产品好象几个命令的CISCO有些不一样,^_^
C:
\telnet您的交换机的IP
UserAccessVerification
Password:
qjrouter>en
Password:
qjrouter#conf(华为产品不带terminal参数,*_*)
qjrouter(config)#snmp-server?
communityEnableSNMP;setcommunitystring
contactTextformibobjectsysContact
enableEnableSNMPTraps
hostSpecifyhoststoreceiveSNMPTRAPs
locationTextformibobjectsysLocation
trap-authenticationSendTRAPonreceiptofincorrectcommunitystring
qjrouter(config)#snmp-serverenabletraps
qjrouter(config)#snmp-servercontactcqfanli@
qjrouter(config)#snmp-serverlocationchinatnk
qjrouter(config)#snmp-servercommunity?
roRead-onlyaccesswiththiscommunitystring
rwRead-Writeaccesswiththiscommunitystring
qjrouter(config)#snmp-servercommunityrochinatnk
qjrouter(config)#
qjrouter#wr
qjrouter#shru
(以下为部份摘录showrun命令)
……
……
STEPBYSTEP教您安装MRTG
我们首先要从Internet上面下载最新的MRTG回来,MRTG的官方网址是:
http:
//people.ee.ethz.ch/~oetiker/webtools/mrtg/MRTG的中国镜象网址是:
http:
//mrtg.openunion.org/MRTG的下载网址是:
http:
//people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/,现在最新的版本是:
mrtg-2.9.27.zip如果您使用的是LINUX或者UNIX系统,可以直接下载mrtg-2.9.27.tar.gz。
软件下载回来后,我们要先将其解压。
由于MRTG是一个PERL写的程序,不需要安装,稍后有些安装过程需要在DOS里面完成,所以建议解压的路径为C:
\MRTG。
下面给出详细的安装步骤:
1、运行cmd,进入DOS状态;
2、c:
\>cd\mrtg\bin进入刚才解压的MRTG目录,准备执行命令;
3、使用perlmrtg命令测试MRTG是否正确;
4、执行命令行perlcfgmakerchinatnk@192.168.0.254--global"WorkDir:
c:
\www\mrtg"--outputmrtg.cfg
这一行命令我要解释一下:
chinatnk@192.168.0.254使用的是您需要获得SNMP数据的设备的community和它的IP地址;
WorkDir:
c:
\www\mrtg使用的是正确安装MRTG后,需要使用到的WEB目录,要根据实际情况更改;
outputmrtg.cfg则是输出后的配置文件名称;
改好了之后按一下回车,系统就开始执行配置了。
由于我是先使用的是交换机来作为的SNMP源,上面命令执行后,它会绑定24个端口,有一些信息显示出来,而路由器上没有那么多需要绑定的端口,所以信息量会稍微少一些。
此一步骤正常执行完后,系统将在MRTG的目录下生成指定的mrtg.cfg文件,我们下一步要做的就是修改MRTG文件,使之符合我们的要求。
有的设备不支持SNMP协议,在这里将会出现错误的提示信息,请各位朋友注意一下。
注意,如果您是需要同时监控多个设备的流量,则需要修改output参数后面的配置文件名,此例中是mrtg.cfg。
详细资料如下:
C:
\mrtg\bin>perlcfgmakerchinatnk@192.168.0.4--global"WorkDir:
e:
\webroot\mrt
g"--outputmrtg4.cfg
--base:
GetDeviceInfoonchinatnk@192.168.0.4:
--base:
VendorId:
cisco
--base:
Populatingconfcache
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/1-->1
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/2-->2
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/3-->3
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/4-->4
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/5-->5
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/6-->6
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/7-->7
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/8-->8
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/9-->9
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/10-->10
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/11-->11
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/12-->12
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/13-->13
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/14-->14
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/15-->15
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/16-->16
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/17-->17
--snpo:
confcachechinatnk@192.168.0.4:
NameFa0/18-->18
--snpo:
confcachechin