下面先介绍几个概念:

  SNMP(Simple Network Management Protocol): SNMP开发于九十年代早期,是一种简单网络管理协议, 广泛使用于帮助网管人员管理TCP/IP网络中各种装置,没有繁复的指令,概念上只有fetch-store(存-取)两种命令,其优点为简单,稳定及灵 活.其目的是简化大型网络中设备的管理和数据的获取。

  NMS(Network Management Station): 通常为一台专用计算机,装有网络管理软件, 使用SNMP指令对路上的各种设备作监视与控制, 并接收SNMP Trap。目前,许多与网络有关的软件包,如HP的OpenView和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的免费软件,都使用SNMP服务来简化网络的管理和维护。

  简单来说,NMS通过专门的软件,利用SNMP协议与网络设备通信,从网络设备那里获得他们的硬件信息并归类、整理、显示出来。方便网管进行检测和评估网络运行情况。其结构示意图如(图一)所示:

图一 

  如上图所示,我们在一台NMS上就能通过SNMP来获取各个网络设备的情况了。再也不用疲于奔波了。

在介绍了这么多令各位网管激动兴奋的特性后,就让我们一起来亲手塑造一位这样优秀的网络检测官NMS吧!

  上面有提到过HPOpenViewNortel NetworksOptivity Network Management System,还有Cisco Works以及华为公司的网管软件等都能满足我们的需要,但以上都是商业产品,在没有足够经费的情况下(事实上对公司BOSS而言,网络部门都属于只出不 进的烧钱部门,因此要经费是很困难的),我个人采用Multi Router Traffic GrapherMRTG)这个免费软件构造了一个满足自己需要的NMS,下面与大家分享构造过程。(事实上,用免费产品经过自己的修改优化大多能取得比 商业软件更好的效果。不少免费软件的质量与商业产品相比毫不逊色,如ApacheSendmailBind等等)。

  实现原理:利用SNMP服务,每隔一定时间从网络设备上取得它们当前的工作情况,利用mrtg制作成图表反映出来。由于需要记录长期以来的工作 情况,所以还需要将以前的记录保存,每隔一段时间取出的数据加以汇总进行数据分析和绘图工作(当然,这些都让mrtg这个软件替我们代劳了,我们什么都不 用做的,只需要打开浏览器访问查看就行了)

  下面是我们构建NMS所需要的程序和它的主页地址:

  操作系统:首先是对操作系统的选择,目前MRTG可以运行于WINNT平台和UNIX两种平台上。由于NMS主要是起对各个网络设备的流量、工 作负载等情况的持续跟踪,因此对操作系统的稳定性要求比较高。因为笔者就个人使用经历中接触到的Unix/Linux操作系统在稳定性方面更好一些。因此 我们还是继续采用RedHat 9.0 作为操作系统,关于安装它的方法很简单,遇到问题可以在www.redhat.com上寻求帮助(记得在安装的时候一定要安装上snmpHTTP、 crontabs PERLzlibgdlibpng这几个软件包;其中snmp是为了和自己、以及其他网络设备通信取得其资料、crontabs是为了定时执行 mrtg命令,跟windows下的任务计划很类似,httpperlzlibgdlibpng都是mrtg所需要的)

  MRTG: http://www.mrtg.org 这就是我们的主角了。它有rpm包和源程序包两种,按理在RedHat上用rpm包的方便快捷,但是我在安装后使用过程中生成index那里遇到错误,而 使用源程序包的时候没有发生这样的情况,因此,我们这里仍然选用源程序包来安装。目前最新的版本为2.10.5版本的,在 http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/mrtg-2.10.5.tar.gz 这里可以下载。

  SYSSAR:通过它可以方便地获得CPU和内存等资源的使用情况,RH9自带它,安装的时候记得选上就好;

  lm_sensors: 通过它可以方便地获得主板上CPU和系统等资源电压/风扇转动速度和温度的情况,RH9自带它,安装的时候记得选上就好;

  1、登陆:

  请确保您在进行以下操作的时候以下的操作具有root权限

  2、下载软件:

  先新建立一个目录

  [root@netserver home]# cd /root

  [root@netserver root]# mkdir nms 

  [root@netserver root]# cd nms

  [root@netserver nms]# wget http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/mrtg-2.10.5.tar.gz

  3、安装软件

  [root@netserver nms]# tar vzxf mrtg-2.10.5.tar.gz

  [root@netserver nms]# cd mrtg-2.10.5

   [root@netserver mrtg-2.10.5]#./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 (其中以上几个参数中—prefix表示安装目录,--with表示相关的库文件和头文件从相应的目录去寻找,以上写成一行)

  [root@netserver mrtg-2.10.5]#make;make install

  好,完成了以上几步,我们就已经把mrtg安装到了/usr/local/mrtg目录下了。

  4、配置MRTG

  mrtg可以同时为多个设备生成图表,此处为方便示范,我以获取内网中的一台192.168.100.1的交换机的资料为例。

  A.www服务的目录中建立mrtg目录,

  [root@netserver mrtg-2.10.5]#mkdir –p /var/www/html/mrtg/switch100

  以上-p参数,可以方便地建立多级目录(即上级目录不存在的情况下,可以连上级目录和该目录一起创立)我使用的RedHat默认安装的 apache,所以WWW主页的放置地点为/var/www/html,请按照你的系统来设定,由于我们内网中可能存在多台需要管理的机器,因此我在 mrtg目录下又单独建立了一个switch100目录(因为交换机的ipc段为100)以方便管理。

  [root@netserver mrtg-2.10.5] #cp p_w_picpaths/* /var/www/html/mrtg/switch100

(由于mrtg是免费软件,作者在它的作品上打打广告当然我们也应该高高兴兴地接受,所以把图片copy过来吧)

B.配置好关于获取交换机的cfg,并生成页面

  [root@ netserver mrtg-2.10.5]# cd /usr/local/mrtg/bin

  [root@ netserver bin]# ./cfgmaker [email protected] > /var/www/html/mrtg/switch100/mrtg.cfg

  以上这句中,[email protected] 表示我们以SNMP协议获取162.168.100.1这个交换机资料的时候使用public这个通信字符串(一般来说,网络设备出厂的时默认以 public作为只读权限和private作为读/写权限,具体情况请根据您的网络设备设置进行改进)

  为图方面,我以上使用的cfgmaker没有带参数,因此默认生成的mrtg.cfg中并不太完美,我们来手工修改得更适合一些:

  [root@ netserver bin]#vi /var/www/html/mrtg/switch100/mrtg.cfg

  修改以下几行为(没有的请添加)

  WorkDir: /var/www/html/mrtg/switch100/

  Options[_]:growright,bits #默认的mrtg图表是以左方为坐标轴,加上这句以换成我们习惯的右上坐标系。

  Language:chinese #这里有不少站推荐用GB2312但我发现chinese更完美一些。

   Refresh: 300 #表示每300秒自动刷新客户的浏览器一次,至于为什么是300秒呢?因为snmp访问的时候是需要网络设备传输资料的,会消耗网络设备的资源,因此如果 时间定得太短,会让网络设备的传输受到影响;而如果时间间隔太长,又不能比较准确地反映出网络设备的即时流量。而且一般来说,在检测到5分钟内的数据中如 果存在平均的网络流量超过最大流量的75%,就说明在这5分钟内,有一些瞬间的流量是达到上限了的。因此只要每5分钟抓取一次流量,就可以根据网络公式来 分析网络设备的负载情况了。

  WriteExpires: Yes

  WithPeak[_]: ym

  C.运行mrtg

  执行以下命令3次(前两次会提示一些警告信息,不用理会)

  [root@ netserver bin]#./mrtg /var/www/html/mrtg/switch100/mrtg.cfg

  之后会发现在/var/www/html/mrtg/switch100/ 目录下生成了很多文件htmlpng文件(前提当然是你这个网络设备是要运行着的咯)

  接下来生成主页面index.htm

  [root@ netserver bin]#./indexmaker --title='楼宇交换机统计' --output='/var/www/html/mrtg/switch100/index.htm' /var/www/html/mrtg/switch100/mrtg.cfg 

  以上的命令中 –-title表示的是生成的html的标题,--output表示输出的文件名。

  好了,现在打开 http://你的ip/mrtg/switch100/ 目录,应该就能看到(图二)所示的画面了。

图 二 

  啊~~为什么我的页面上没有你这样的流量走线呢??别急。我不是说过么,我们是需要每5分钟抓一次流量来形成走线图的,也就是说,要将mrtg 命令每5分钟执行一次。那不是很麻烦?不用,linux中,我们使用crontabs就能很容易做到这点了。(请在服务中,将crond服务打开)

  [root@ netserver bin]# crontab –e

  然后添加任务,输入下面一行:

  5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/switch100/mrtg.cfg > /dev/null 2&1(请写成一行,并且空格的地方只能空一格,不可以多空格)

好了,休息一下,去忙忙别的,等你回来的时候,是不是发现漂亮的走线图(图三)已经形成了?

  怎么样?是不是很一目了然?高兴之余,不禁想到,如果是通过web方式能查看,那不是除了管理者之外,其他的用户也能获取到这些信息么?事实 上,当网络设备开放着snmp的时候,除非在设备上进行ip限制,否则是无法阻止内网用户查看网络设备信息的。不过如果只是不想让其他用户访问我们的 mrtg图表倒是能很简单地就做到。

  [root@ netserver bin]# mkdir /var/www/passwords

  [root@ netserver bin]# htpasswd -c /var/www/passwords/passwords mrtg

  (这句命令中最后的mrtg是用户名,当然你也可以改成你喜欢的,记得要和我们等一下修改的apache中的httpd.conf要配套哟)

  接着会要你输入密码,小心输入就是了。

  好了,接着修改我们的apache的设置。

  [root@ netserver bin]#vi /etc/httpd/conf/httpd.conf

  将下面一段插入:

  <Directory "/var/www/html/mrtg"> #我们所要限制的访问目录的真实地址

  AuthType Basic #验证类型

  AuthName "MRTG" #验证窗口的名字

  AuthUserFile /var/www/passwords/passwords #存放用户名和密码的文件

  Require user mrtg #用户名,这里要和上面的命令行那里设置的用户名一致

  </Directory

  保存后,使用命令重新启动Apache

  [root@ netserver bin]# service httpd restart

  好,再输入刚才的地址,怎么样?是不是要输入用户名和密码才能进去了?

  Ok,我们的检测管已经屹立在网络长城之上了,我们的网络设备的运行情况它都会记录下来,以供我们分析。事实上如果结合脚本程序,还能做到及时 反映ftp空间使用容量、在线人数、待发邮件数量等等有针对性的服务。Mrtg是一个好用而强大的工具,是我们网管人员的好助手。