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

图 三
如上图所示,笔者这里的的star(实达)交换机的资料、流量、持续工作时间、最大流量等等都以中文的方式显示出来,可以方便地查询与分析了。
这里笔者只以一台获取交换机为例,简单介绍了mrtg的使用方法,其实mrtg更可以监视router、打印机、服务器、甚至ups电源等设备。当您使用mrtg来查看网络中大量设备的流量和负载情况的时候,您才会真正体会到它的方便之处。
5、本机信息的监管
或许您跟笔者一样,您的这台NMS同时也担任着内网中其他的服务,您也想将该机的CPU、内存和网卡流量都记录下来,方便监视,利用mrtg和snmp服务,我们自己再配合写两个小的shell脚本,就能完成上面的功能了。
A.获取本机网卡流量
在前面,我们已经安装snmp包,现在让我们来配置/etc/snmp/snmpd.conf文件,使其能配合mrtg很好地工作了。
首先,编辑/etc/snmp/snmpd.conf文件:
[root@ netserver bin]#vi /etc/snmp/snmpd.conf
把下面一行前面的#号去掉:
#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服务
[root@ netserver bin]#snmpd
如果想要每次开机的时候就自动执行snmpd,请
[root@ netserver bin]#setup
然后将System services下面的snmpd服务打开
接下来,我们用与刚才设置交换机相似的步骤来进行。
新建立一个目录来存放net相关信息:
[root@ netserver bin]#mkdir –p /var/www/html/mrtg/local/net [root@ netserver bin]# ./cfgmaker public@你本机的ip > /var/www/html/mrtg/local/net /mrtg.cfg |
修改自动生成的mrtg.cfg文件(因为和上面的交换机的设置类似,就不解释了)
[root@ netserver bin]#vi /var/www/html/mrtg/local/net/mrtg.cfg
修改以下几行为(没有的请添加)
WorkDir: /var/www/html/mrtg/local/net Options[_]:growright,bits Language:Chinese Refresh: 300 WriteEXPires: Yes |
运行mrtg:
执行以下命令3次(前两次会提示一些警告信息,不用理会)
[root@ netserver bin]#./mrtg /var/www/html/mrtg/local/net/mrtg.cfg
这里我们就不生成index.html页面了,等一下自己手工编写一个,将cpu和内存的放在一起,方便查看一些。 B.获取本机CPU使用情况
新建立一个目录来存放net相关信息:
[root@ netserver bin]#mkdir –p /var/www/html/mrtg/local/cpu
手工编辑一个mrtg.cfg文件:
[root@ netserver bin]#vi /var/www/html/mrtg/local/cpu/mrtg.cfg
输入以下内容:
|
#/var/www/html/mrtg/local/cpu/mrtg.cfg WorkDir: /var/www/html/mrtg/local/cpu Language:chinese EnableIPv6: no Refresh: 300 WriteExpires: Yes
Target[CPU]: `/var/www/html/mrtg/local/cpu/cpu.sh` #调用的外部脚本命令的地址,等一下我会给出cpu.sh的代码 MaxBytes[CPU]: 100 #限制绘图的最大值,CPU Loading 的最高值就是100% Title[CPU]: CPU Watch #生成的HTML 网页的窗口标题 PageTop[CPU]: <H1> CPU Watch</H1> #生成的HTML 网页的主标题 Options[CPU]: gauge,nopercent,growright Ylegend[CPU]: CPU Loading (%) #图表的Y轴的名称 YSize[CPU]: 100 #Y轴的最大值 ShortLegend[CPU]: % #定义的标准單位(此处为%) LegendI[CPU]: CPU USER # CPU USER表示用户负载,CPU SYSTEM表示系统负载 LegendO[CPU]: CPU SYSTEM #注意,Legend后面是字母I和O,不是数字,mrtg中它们本来是表示Input 和 Output的,这里被我借用了过来的 |
好,接下来让我们写一个获取我们所需要值的脚本文件cpu.sh
[root@ netserver bin]#vi /var/www/html/mrtg/local/cpu/cpu.sh
脚本内容如下:
#!/bin/bash tmp=`sar -u 1 5 tail -n 1` |
#上面一句的sar –u 1 5 表示以1秒为单位,连续取5次cpu的负载,这样得到的平均值更加准确一些:
cpuuser=`echo $tmp awk ' {print $3}' ` cpusystem=`echo $tmp awk ' {print $5}' ` echo $cpuuser echo $cpusystem echo 0 echo 0#因为我没有取当前时间和系统已运行的时间,所以这里取两个0,读者朋友可以试一下取消他们输出的html会变成怎样 |
然后改变cpu.sh的权限为755:
[root@ netserver bin]#chmod 755 /var/www/html/mrtg/local/cpu/cpu.sh
运行mrtg,执行以下命令3次(前两次会提示一些警告信息,不用理会)
[root@ netserver bin]#./mrtg /var/www/html/mrtg/local/cpu/mrtg.cfg
C.获取本机内存/Swap使用情况
与上面一个例子很类似,我给出操作,只解释不同的地方:
[root@ netserver bin]#mkdir –p /var/www/html/mrtg/local/memory
手工编辑一个mrtg.cfg文件:
[root@ netserver bin]#vi /var/www/html/mrtg/local/memorty/mrtg.cfg
输入以下内容:
|
WorkDir: /var/www/html/mrtg/local/memory Language:chinese EnableIPv6: no Refresh: 300 WriteExpires: Yes
Target[MEMORY]: `/var/www/html/mrtg/local/memory/memory.sh` MaxBytes[MEMORY]: 100 Title[MEMORY]: Memory & Swap Watch PageTop[MEMORY]: <H1> Memory & Swap Watch</H1> Options[MEMORY]: gauge,growright Ylegend[MEMORY]: Used (%) YSize[MEMORY]: 100 ShortLegend[MEMORY]: % LegendI[MEMORY]: Used Memory LegendO[MEMORY]: Used Swap |
接下来是一个小脚本程序memory.sh:
[root@ netserver bin]#vi /var/www/html/mrtg/local/memory/memory.sh
脚本内容如下:
#!/bin/bash tmp=`sar -r 1 5 tail -n 1` #上面一句的sar –r 1 5 表示以1秒为单位,连续取5次内存和Swap的负载,这样得到的平均值更加准确一些 memory=`echo $tmp awk ' {print $4}' ` swap=`echo $tmp awk ' {print $10}' ` echo $memory echo $swap echo 0 echo 0 | 然后改变memory.sh的权限为755:
[root@ netserver bin]#chmod 755 /var/www/html/mrtg/local/memory/memory.sh
运行mrtg,执行以下命令3次(前两次会提示一些警告信息,不用理会)
[root@ netserver bin]#./mrtg /var/www/html/mrtg/local/memory/memory.cfg
D.获取本机CPU和I/O电压情况
由于我们的NMS很可能同时也是一台服务器,例如笔者用HP Netserver LH6000作为NMS,一旦CPU/主板烧毁,维护价格不低,因此随时获得该机器的电压/风扇/温度等情况以方便我监视管理是非常必要的。
首先,让我们将lm_sensors使用起来。
[root@ netserver bin]# sensors-detect
之后会询问一些问题,各位可以自行决定,当然如果觉得麻烦,可以一路回车就行了。最后出现类似如下信息:
|
WARNING! If you have some things built into your kernel, the below list will contain too many modules. Skip the appropriate ones! To load everything that is needed, add this to some /etc/rc* file:
#----cut here---- # I2C adapter drivers modprobe i2c-isa # I2C chip drivers modprobe via686a #----cut here----
To make the sensors modules behave correctly, add these lines to either /etc/modules.conf or /etc/conf.modules:
#----cut here---- # I2C module options alias char-major-89 i2c-dev #----cut here---- (根据各位机器不同,所以也会有差异) [root@ netserver bin]#vi /etc/rc.local |
将下面部分(这是上面的第一段cut中的部分,具体内容请根据您测试出的结果为准)加入,以方便开机就能引导:
# I2C adapter drivers modprobe i2c-isa # I2C chip drivers modprobe via686a [root@ netserver bin]#vi /etc/modules.conf |
将下面部分(这是上面的第二段cut中的部分,具体内容请根据您测试出的结果为准)加入,以方便开机加载:
alias char-major-89 i2c-dev
之后,请重新启动计算机:
[root@ netserver bin]#reboot
重新启动后,输入sensors命令查看主版信息
[root@ netserver root]# sensors
如果出现了类似:
CPU core: +1.59 V (min = +0.00 V, max = +2.18 V) +2.5V: +2.40 V (min = +2.24 V, max = +2.74 V) I/O: +3.25 V (min = +2.95 V, max = +3.62 V) +5V: +4.92 V (min = +4.47 V, max = +5.49 V) +12V: +11.27 V (min = +10.79 V, max = +13.18 V) CPU Fan: 6428 RPM (min = 3000 RPM, div = 2) P/S Fan: 0 RPM (min = 3000 RPM, div = 2) |
这样的消息,表示我们已经成功了。
下来,让我们将它和mrtg配合起来工作:
[root@ netserver root]#cd /usr/local/mrtg/bin
与上面的思路类似,我给出操作,只解释不同的地方:
[root@ netserver bin]#mkdir –p /var/www/html/mrtg/local/vol
手工编辑一个mrtg.cfg文件
[root@ netserver bin]#vi /var/www/html/mrtg/local/vol/mrtg.cfg 输入以下内容:
|
WorkDir: /var/www/html/mrtg/local/vol Language:chinese Refresh: 300 WriteExpires: Yes
Target[VOL]: `/var/www/html/mrtg/local/vol/vol.sh` MaxBytes[VOL]: 4000 Title[VOL]: CPU & I/O Voltage Watch PageTop[VOL]: <H1> CPU & I/O Voltage Watch </H1> Options[VOL]: gauge,growright Ylegend[VOL]: Voltage (mV) #请注意这里的单位是毫伏哦 YSize[VOL]: 100 ShortLegend[VOL]: mV LegendI[VOL]: CPU Voltage LegendO[VOL]: I/O Voltage |
接下来是一个小脚本程序vol.sh
[root@ netserver bin]#vi /var/www/html/mrtg/local/vol/vol.sh
脚本内容如下:
#!/bin/bash sensors > vol.temp tmp1=`grep 'CPU core' vol.temp awk ' {print $3}'` cpu_core_vol=`expr substr $tmp1 2 4` echo $cpu_core_vol*1000 bc #为精确表示电压,我采用毫V作为电压单位 tmp2=`grep 'I/O' vol.temp awk ' {print $2}'` io_vol=`expr substr $tmp2 2 4` echo $io_vol*1000 bc echo 0 echo 0 |
然后改变vol.sh的权限为755:
[root@ netserver bin]#chmod 755 /var/www/html/mrtg/local/vol/vol.sh
运行mrtg,执行以下命令3次(前两次会提示一些警告信息,不用理会)
[root@ netserver bin]#./mrtg /var/www/html/mrtg/local/vol/mrtg.cfg
E.获取本机风扇CPU和显卡风扇转速情况 (基本和上面相似,只有mrtg.cfg和sh脚本文件不同,所以不解释)
[root@ netserver bin]#mkdir –p /var/www/html/mrtg/local/fan [root@ netserver bin]#vi /var/www/html/mrtg/local/fan/mrtg.cfg |
输入以下内容:
|
WorkDir: /var/www/html/mrtg/local/fan Language:chinese Refresh: 300 WriteExpires: Yes
Target[FAN]: `/var/www/html/mrtg/local/fan/fan.sh` MaxBytes[FAN]: 8000 Title[FAN]: CPU & P/S Fan Watch PageTop[FAN]: <H1> CPU & P/S Fan Watch </H1> Options[FAN]: gauge,growright Ylegend[FAN]: FAN (RPM) YSize[FAN]: 100 ShortLegend[FAN]: RPM LegendI[FAN]: CPU Fan LegendO[FAN]: P/S Fan |
接下来是一个小脚本程序fan.sh:
[root@ netserver bin]#vi /var/www/html/mrtg/local/temp/temp.sh
脚本内容如下:
#!/bin/bash sensors > fan.temp grep 'CPU Fan' fan.temp awk ' {print $3}' grep 'P/S Fan' fan.temp awk ' {print $3}' echo 0 echo 0 |
然后改变fan.sh的权限为755:
[root@ netserver bin]#chmod 755 /var/www/html/mrtg/local/fan/fan.sh
运行mrtg,执行以下命令3次(前两次会提示一些警告信息,不用理会)
[root@ netserver bin]#./mrtg /var/www/html/mrtg/local/fan/mrtg.cfg
|