分类:
2010-05-06 15:34:17
SNMP是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。SNMP可以提高网络管理员管理网络的效率,发现并解决网络问题,以及规划网络增长。通过SNMP接收随机消息(及事件报告)网络管理系统获知网络出现问题。简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。许多人认为SNMP在IP上运行的原因是Internet运行的是TCP/IP,然而事实并不是这样的。SNMP被设计成与协议无关,所以它可以在IP, IPX, AppleTalk, OSI,以及其他用到的传输协议上被使用。
SNMP运行在UDP之上,它利用的是UDP的161/162端口。其中161端口被设备代理监听,等待接受管理者进程发送的管理信息——查询请求消息;162端口由管理者进程监听等待设备代理进程发送的异常事件报告——陷阱消息,如Trap等。SNMP提供三类操作,分别为Get、Set和Trap。
服务器的操作系统多种多样,使用较多的一般是UNIX类或Windows类操作系统,它们都支持SNMP。例如,对于Windows系统而言,只要增加“管理和监控工具”中的Windows组件,就有了对SNMP的支持。
服务器启动SNMP后,就会开放161/162端口。管理员如果要监控这台机器,就要在自己的机器上安装MRTG,然后通过MRTG向服务器的161/162端口发出查询等请求,取得数据后会生成图形及HTML文档的流量报告。这就是MRTG简单的监控过程。
MRTG通过SNMP从设备中得到使用设备(如交换机)的网络流量信息,并把PNG格式图形以HTML方式显示出来,便于网络管理员对所监控设备(交换机)进行管理。目前市场上可网管型(智能)的交换机都支持SNMP,可以通过MRTG进行网络流量监控。
下面以Red Hat Linux 9.0为例介绍MRTG的安装与配置。
要安装MRTG软件包必须首先安装gcc, perl, gd, libpng, zlib, freetype等软件包。
光盘里有net-snmp的安装RPM包,安装完以后,配置/etc/snmp/snmpd.conf文件,使其能配合MRTG工作。
把下面的#号去掉
#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 start
① 安装tar软件包
# tar zvxf mrtg-2.9.28.tar.gz
# cd mrtg-2.9.28
#./configure --prefix=/usr/local/mrtg \
--with-gd=/usr/include \
--with-gd-lib=/usr/lib \
--with-gd-inc=/usr/include \
--with-png=/usr/include \
--with-zlib=/usr/include &&
# make &&make install
② 生成配置文件
# mkdir /usr/local/mrtg/cfg
#cd /usr/local/mrtg/bin
#./cfgmaker --global 'WorkDir: /usr/local/httpd/htdocs/' \
--global 'Options[_]: bits,growright'\
--global 'Language: GB2312' \
--output /usr/local/mrtg/cfg/xxx.cfg \
public@XXX.XXX.XXX.XXX#
“XXX.XXX.XXX.XXX”是SNMP服务器的IP,以上命令将生成服务器的配置文件。MRTG生成的HTML页面可以完全由用户定制,所有定制都是通过对生成的配置文件的修改来实现的。MRTG配置文件的内容很丰富,相关内容请参考MRTG的帮助文档。
③ 设置MRTG定期执行方式
执行“crontab-e”,加入如下行:
*/5 * * * * /bin/env LANG=en_US /usr/local//mrtg/bin/mrtg
/usr/local/mrtg/cfg/xxx.cfg
以上命令设定每隔5分钟监控一次配置文件xxx.cfg中所定义的服务器。5分钟是一个比较合理的值,也可以按自己的需求重新定义。
④ 建立索引页面
执行以下命令还可以生成一个索引页面:
#cd /usr/local/mrtg/bin
#./indexmaker --output="/usr/local/ /httpd/htdocs/index.html"
--title="Taffic Monitor Center" /usr/local/ /mrtg/cfg/xxx.cfg
到此为止,配置完毕,重新启动snmp和httpd服务,访问,就能看到网络流量图了。如图17-1所示。
图17-1 MRTG监控的网络流量图
在实际应用中,企业可能有多台服务器,通常需要管理员24小时不间断地对服务器的流量进行监控。如果这时还是简单地在管理员的机器上使用MRTG就不适用了。最好的方法是建立一个MRTG监控中心。
MRTG监控中心可以是一台专用的服务器,也可以由其他服务器兼作MRTG监控中心。用于监控中心的机器和其他服务器都位于防火墙背后,由于SNMP也很容易成为攻击的目标,所以在防火墙的规则中,要禁止外界对服务器161/162端口的访问。这样便保证了MRTG监控中心担负起监控其他所有服务器的责任。MRTG监控中心将不断产生流量报告,以Web页面的形式发送给管理员。当然,该Web页面是带有身份认证功能的,以确保只有拥有账号的管理员才能查看相应的流量报告。
使用这样的MRTG监控中心,可以带来以下好处:
① 24小时不间断地工作,能保证产生详细、全面的流量报告;
② 提供带身份认证的Web浏览界面,管理员凭账号可以随时随地通过互联网查看流量报告;
③ 免去管理员安装MRTG的烦恼,只需通过浏览器就能查看流量报告;
④ 只允许MRTG监控中心机器访问服务器161/162端口,安全性更高。
通过三步,已经完成了对一台服务器的监控设定,如果还有其他服务器需要流量监控,重复第三步(安装配置MRTG)即可。如果这些服务器都是位于防火墙后面,还要修改一个防火墙的规则,即开放MRTG监控中心对外的80端口,同时过滤掉所有外界对SNMP服务端口的访问。以上安装配置完成,用户可以通过浏览器访问MRTG监控中心。MRTG监控中心会要求输入用户名、密码才能进入,而Apache的日志会记录相关的事件,以备日后对登录情况进行审查。到此为止,已经可以应用一个简单的MRTG监控中心实现集中管理,并且拥有身份认证。管理员还可以通过编写CGI程序来实现更多的功能。比如详细记录访问情况、提供更直观的监控报告等。此外,还可以使用SSL加密页面来传输数据。
MRTG监测网络流量很方便,但是如果需要监测其他的系统性能,比如CPU负载、系统负载、网络连接数等,就不是那么简单了。即使实现了这些功能,但管理起来非常麻烦。比如公司有一两千个被监测点,分布在不同的机房,为了管理方便需要将这些服务器和网络设备分类,这样的话就需要将这些被监测点放在不同的MRTG配置文件中,运行多个crontab,甚至还要自己写HTML页面对其进行管理。
MRTG毕竟是一套很老的软件,而且存在许多不足的地方,其作者Tobias Oetiker在1999年就已经开始开发另一套开源软件RRDTool来代替MRTG。现在RRDTool已经发展得很成熟,在功能上MRTG难以与其相提并论。
与MRTG一样,RRDTool也是由Tobias Oetiker撰写的开源软件,但RRDTool并非MRTG的升级版本,两者有非常大的区别,也可以说RRDTool是将用来取代MRTG的产品。下面是两个软件的一些优缺点的对比。
(1)MRTG
优点:
简单、易上手,基本安装完了之后只要修改一下配置文件即可使用。
缺点:
— 使用文本式的数据库,数据不能重复使用。
— 只能按日、周、月、年来查看数据。
— 由于MRTG本来只是用来监测网络的流量,所以只能存储两个DS(Data Source),即存储流量的输入和输出。
— 每取一次数据即需要绘图一次,浪费系统资源。
— 图像比较模糊。
— 无用户、图像管理功能。
— 没有详细日志系统。
— 无法详细了解各流量的构成。
— 只能用于TCP/IP网络,对于SAN网络流量无能为力。
— 不能在命令行下工作。
(2)RRDTool
优点:
— 使用RRD(Round Robin Database)存储格式,数据等于放在数据库中,可以方便地调用。比如,将一个RRD文件中的数据与另一个RRD文件中的数据相加。
— 可以定义任意时间段画图,可以用半年数据画一张图,也可以用半小时内的数据画一张图。
— 能画任意个DS,多种图形显示方式。
— 数据存储与绘图分开,减轻系统负载。
— 能任意处理RRD文件中的数据,比如,在浏览监测中我们需要将数据由Bytes转化为bits,可以将原始数据乘8。
缺点:
— RRDTool的作用只是存储数据和画图,它没有MRTG中集成的数据采集功能。
— 在命令行下的使用非常复杂,参数极多。
— 无用户、图像管理功能。