分类: 系统运维
2007-09-28 02:20:01
简单网络管理协议(SNMP)速览
简单网络管理协议(Simple Network Management Protocol,SNMP)是由互联网工程任务组(Internet Engineering Task Force,IETF)定义的一套网络管理协议。一个管理工作站利用SNMP可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。
SNMP协议运行在UDP协议之上,它利用的是UDP协议的161/162端口。其中161端口被设备代理监听,等待接受管理者进程发送的管理信息查询请求消息;162 端口由管理者进程监听等待设备代理进程发送的异常事件报告陷阱消息,如Trap等。SNMP提供三类操作,分别为Get、Set和Trap。
MRTG通过SNMP协议从设备中得到使用设备(如交换机)的网络流量信息,并把PNG 格式图形以HTML方式显示出来,便于网络管理员对所监控设备(交换机)进行管理。目前市场上可网管型(智能)的交换机都支持SNMP协议,可以通过MRTG进行网络流量监控。
MRTG的安装与配置
1. 安装软件包
要安装MRTG软件包必须首先安装gcc、perl、gd、libpng、zlib、freetype等软件包。可以使用“rpm -R -qp mrtg-2.9.17-3.i386.rpm”命令检查需要安装哪些文件及软件包。
具体操作如下:
# mount /mnt/cdrom
# cd /mnt/cdrom/Redhat/RPMS
# rpm -ivh mrtg-2.9.17-3.i386.rpm
⒉生成配置文件/etc/mrtg/mrtg.cfg
命令如下:
cfgmaker --global "WorkDir: /var/www/html/mrtg/6" --global "icondir: /mrtg" --global "language: chinese" --global "Options[_]: growright,bits" --show-op-down --ifref=nr --ifdesc=descr --output=/etc/mrtg/mrtg.cfg public@192.168.1.6 2>/dev/null
说明:--global参数表示后面的选项对后面指定的设备都是有效的(如果希望对多个设备进行监控时,该参数就会发生作用)。WorkDir用来指示mrtg的工作目录;icondir用来指定图标的目录;language 表示指定生成HTML页面的语言;Options用来指定一些特定的选项。在Options设置中,growright表示时间增长的箭头方向向右;bits表示接口的带宽。对于常见的应用来说,默认Options配置就可以满足需求(如果想了解有那些选项,可以参看/usr/lib/mrtg2/MRTG_lib.pm文件)。此外,--show-op-down表示显示down的接口;--ifref表示设备接口的标示;--ifdesc用于选择参数来描述接口。其中,ifref可以指定的参数为nr、ip、eth、descr和name;ifdesc可以指定的参数为nr、ip、eth、descr、name、type和alias。后面的--output的参数表示输出文件(缺省输出到屏幕);public@192.168.1.6中public表示Community串,一般交换机出厂设置为public;192.168.1.6表示监控网络交换机设备的IP地址。更详细的说明可以参考man cfgmaker文档。
⒊生成index.html文件
执行indexmaker来生成index.html文件,代码如下:
$ indexmaker -t "title" -o /var/www/html/mrtg/6/index.html /etc/mrtg/mrtg.cfg
其中,-t后面的参数指定HTML页面的标题,-o后面的参数指定生成的HTML页面所放的位置。最后的参数为cfgmaker生成的mrtg 配置文件。更详细的说明可以参考man indexmaker文档。
⒋设置/etc/crontab文件
先检查/etc/crontab文件是否存在以下代码:
0- 59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg
如果没有,则需要在文件中加入上述代码。
需要注意的是,如果监测的交换机比较多可以适当地延长执行该命令的时间间隙。在开始执行时可能会报告遗失LOG日志文件的警告信息,可以不理睬这些信息,连续运行三次以后就不会出现警告信息。
⒌启动Apache,执行/etc/rc.d
/init.d/httpd start
可以发现,生成的HTML页面存在如下缺陷:仅仅知道监测的是哪一个端口,但无法很好地了解端口连接在哪台计算机上,并且当监测很多交换机时,更新的PNG文件位于同一目录层次上,不方便系统管理员查找所要监测的交换机端口。人工修改这些HTML页面非常费时,如果网络发生变动,更改会更加麻烦。因此,可以通过建立一个bash脚本使整个配置过程自动化,而且生成的HTML页面包含更多的信息和更加直观。
通过bash脚本实现自动化配置
通过建立bash脚本自动化配置mrtg.cfg文件,步骤如下。
⒈建立/etc/mrtg/mrtgip和/etc/mrtg/mrtglocate文件(权限为600)
文件/etc/mrgt/mrtgip的格式如下:
建立HTML的目录|监测交换机的IP地址|Community串|交换机的安装地点与说明|
示例如下:
1|192.168.1.1|public|ACCELAR1200交换中心|
.....
6|192.168.1.6|public|办公楼|
7|192.168.1.7|public|计算机房|
文件/etc/mrgt/mrtglocate的格式如下:
监测交换机的IP地址|端口号|该端口所连接的计算机设备的安装地点与说明|
示例如下:
#accelar1200中心交换(192.168.1.1)
...
192.168.1.1|20|办公楼光纤|
192.168.1.1|21|计算机光纤|
...
192.168.1.1|59|测试服务器|
#办公楼(192.168.1.6)
192.168.1.6|1|F5P01-V2财务科核算组01|
192.168.1.6|2|F5P02-V2财务科核算组02|
192.168.1.6|3||
#192.168.1.6|4||
...
开头为#的行为注释行,如果一些端口没有联接计算机设备,可以注释,也可适当加入一些空行,使用|作为字段的分隔符。在加入文字说明的同时也可以加入符号,如F5P01-V2,含义如下:F5表示办公楼5楼,P01表示顺序号,V2表示该端口的VLAN为2。还可以按照自己的意愿加入一些易于理解的文字说明。
⒉建立bash脚本文件
建立bash脚本文件crmrtg,生成mrtg.cfg配置文件和index.html页面脚本。建立/usr/local/sbin/crmrtg文件,内容如下:
#!/bin/sh
# create mrtg.cfg & index.html file
htmldir=/var/www/html/mrtg
conf=/etc/mrtg
tmp1=/tmp/mrtg1.tmp
tmp2=/tmp/mrtg2.tmp
tmpmrtg=/tmp/mrtg.cfg
rm -f $conf/mrtg.cfg $tmp1 $tmp2 $tmpmrtg
for i in `cat $conf/mrtgip`
do
dir=`echo $i | cut -f1 -d"|"`
ip=`echo $i | cut -f2 -d"|"`
community=`echo $i|cut -f3 -d"|"`
locate=`echo $i | cut -f4 -d"|"`
echo "create $ip at $locate "
mkdir -p $htmldir/$dir
cfgmaker --global "WorkDir: $htmldir/$dir" --global "icondir: /mrtg" --global "language: chinese" --global "Options[_]: growright,bits" --show-op-down --ifref=nr --ifdesc=descr --output=$htmldir/$dir/mrtg$dir $community@$ip 2>/dev/null
cfgmaker --global "WorkDir: $htmldir" --global "icondir: /mrtg" --global "language: chinese" --global "Options[_]: growright,bits" --global "directory[_]: $dir" --show-op-down --ifref=nr --ifdesc=descr --output=$tmpmrtg $community@$ip 2>/dev/null
# create ports & describe file for modify mrtg.cfg configuration
grep "^$ip|" $conf/mrtglocale >| $tmp1
for j in `cat $tmp1`
do
port=`echo $j | cut -f2 -d"|"`
describe=`echo $j | cut -f3 -d"|"`
#PageTop[192.168.1.6_2]: BayStack 450-12T - 2 -- computer
echo "s|^PageTop[$ip_$port]: |&$describe |" >> $tmp2
done
sed -f $tmp2 $htmldir/$dir/mrtg$dir >| $htmldir/$dir/mrtg$dir.cfg
sed -f $tmp2 $tmpmrtg >> $conf/mrtg.cfg
indexmaker -t "$locate $ip" -o $htmldir/$dir/index.html
$htmldir/$dir/mrtg$dir.cfg
rm -f $htmldir/$dir/mrtg$dir $tmp1 $tmp2 $tmpmrtg
done
⒊建立/var/www/html/mrtg/index.html文件
HTML代码如下:
Switch Traffic Information
...
/A>
⒋为Web服务器建立密码
以Red Hat 7.3自带的Apache 1.3.23为例进行说明。
⑴修改/etc/httpd/conf/httpd.conf。将下面代码:
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
改为以下代码:
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Order allow,deny
Allow from all
⑵在/var/www/html目录建立一个.htaccess文件,内容如下:
AuthName "Switch Traffic Information"
AuthType Basic
AuthUserFile /var/www/html/.htpasswd
require valid-user
⑶执行htpasswd命令,在/var/www/html目录建立一个.htpasswd文件:
$ htpasswd -bc /var/www/html/.htpasswd admin XXXX
其中XXXX表示密码,也可以增加更多的用户。具体操作可参看man htpasswd文档。
⑷启动httpd服务
使用以下代码启动httpd服务:
$ /etc/rc.d/init.d/httpd restart
通过以上设置,如果网络的节点位置发生变化,只要修改及编辑mrtgip和mrtglocate文件,执行bash脚本命令crmrtg重新生成mrtg.cfg配置文件与index.html页面文件,并利用MRTG软件包就能够非常方便地管理与监控交换机设备的网络流量信息