科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>路由交换>构建网络安全长城之安全设备的管理

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

构建安全的网络长城,除了坚实的“城墙”、机警的“烽火台”,还要有“内明军纪,赏罚分明”的“检测官”才能管理好部下的工作。

来源:zdnet网络安全 2008年03月11日

关键字:网络维护 安全管理 网络管理 企业内部网

  构建安全的网络长城,除了坚实的“城墙”、机警的“烽火台”,还要有“内明军纪,赏罚分明”的“检测官”才能管理好部下的工作。作为一个优秀的网管,不仅要对来自内外的入侵活动随时监控,而且要对自己内部的网络设备的使用情况保持关注。

  随着网络建设的扩大,或许我们的网络内部已经有了几个路由器、一个核心交换机、四五个汇聚层交换机、数十个接入交换机,那么 我们怎么样来及时检测它们的工作情况呢?随着网络的建设,我们原本空闲的汇聚层交换机是否已经不堪负载了呢?这段时间的一场雷雨,是否对我们的网络设备造成了破坏呢?而且这些设备大多在物理上分散于不同区域,以笔者管理的网络而言,它们常常是散布在办公室、教学楼、家属区各地,为我们的检测工作带来很大的困难。那是不是就只能这样呢?

  事实上,生产网络设备的商家早为我们考虑到了这一点。在目前的网络设备中,大多已经包含了SNMP服务。利用它,我们就能方便地获知网络设备的工作情况了。

  下面先介绍几个概念:

  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吧!

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

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

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

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

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

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

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

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

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

  以上这句中,public@192.168.100.1表示我们以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/ 目录下生成了很多文件html和png文件(前提当然是你这个网络设备是要运行着的咯)

  接下来生成主页面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(请写成一行,并且空格的地方只能空一格,不可以多空格) 

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

  

  图 三

  如上图所示,笔者这里的的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

  F.获取本机CPU和系统温度情况

  (基本和上面相似,只有mrtg.cfg和sh脚本文件不同,所以不解释)

  [root@ netserver bin]#mkdir –p /var/www/html/mrtg/local/temp

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

  输入以下内容:

  WorkDir: /var/www/html/mrtg/local/temp

  Language:chinese

  Refresh: 300

  WriteExpires: Yes

  Target[TEMP]: `/var/www/html/mrtg/local/temp/temp.sh`

  MaxBytes[TEMP]: 60

  Title[TEMP]: CPU &SYS Temperature Watch

  PageTop[TEMP]: <H1> CPU &SYS Temperature Watch </H1>

  Options[TEMP]: gauge,growright

  Ylegend[TEMP]: Temperature (C)

  YSize[TEMP]: 100

  ShortLegend[TEMP]: C

  LegendI[TEMP]: CPU Temperature

  LegendO[TEMP]: SYS Temperature

  接下来是一个小脚本程序temp.sh:

  [root@ netserver bin]#vi /var/www/html/mrtg/local/temp/temp.sh

  脚本内容如下:

  #!/bin/bash

  sensors > temp.temp

  expr substr "`grep 'CPU Temp' temp.temp | awk ' {print $3}'`" 2 4

  expr substr "`grep 'SYS Temp' temp.temp | awk ' {print $3}'`" 2 4

  echo 0

  echo 0

  然后改变temp.sh的权限为755:

  [root@ netserver bin]#chmod 755 /var/www/html/mrtg/local/temp/temp.sh

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

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

  G设置定时执行和写个简单的主页面:

  [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(以上为一行,这是我们刚才添加的管理交换机的)

  2,7,12,17,22,27,32,37,42,47,52,57 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/local/net/mrtg.cfg > /dev/null 2>&1(以上为一行)

  3,8,13,18,23,28,33,38,43,48,53,58 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/local/cpu/mrtg.cfg > /dev/null 2>&1(以上为一行)

  4,9,14,19,24,29,34,39,44,49,54,59 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/local/memory/mrtg.cfg > /dev/null 2>&1(以上为一行)

  2,7,12,17,22,27,32,37,42,47,52,57 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/local/vol/mrtg.cfg > /dev/null 2>&1(以上为一行)

  3,8,13,18,23,28,33,38,43,48,53,58 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/local/fan/mrtg.cfg > /dev/null 2>&1(以上为一行)

  4,9,14,19,24,29,34,39,44,49,54,59 * * * * /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/local/temp/mrtg.cfg > /dev/null 2>&1(以上为一行)

  好了,这样我们就把本机的网卡、CPU、内存和Swap每5分钟采样一次,制作成图表方便监管了。

  最后,让我们写一个简单的html,将几者放到一起。

  [root@ netserver bin]#vi /var/www/html/mrtg/local/index.html

  代码如下:

  <HTML>

  <HEAD>

  <TITLE>信息统计</TITLE>

  <META HTTP-EQUIV="Refresh" CONTENT="300">

  <META HTTP-EQUIV="Pragma" CONTENT="no-cache">

  <META HTTP-EQUIV="Cache-Control" content="no-cache">

  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">

  </HEAD>

  <BODY BGCOLOR="#ffffff">

  <H1>信息统计</H1>

  <B>今日CPU运行情况</B>

  <A HREF=cpu/cpu.html><IMG VSPACE=10 WIDTH=500 HEIGHT=135 ALIGN=TOP

  SRC="cpu/cpu-day.png" ALT="day"></A>

  <p>

  <B>今日网卡运行情况</B>

  <A HREF=net/net.html><IMG VSPACE=10 WIDTH=500 HEIGHT=135 ALIGN=TOP

  SRC="net/net-day.png" ALT="day"></A>

  <p>

  <B>今日内存&Swap运行情况</B>

  <A HREF=memory/memory.html><IMG VSPACE=10 WIDTH=500 HEIGHT=135 ALIGN=TOP

  SRC="memory/memory-day.png" ALT="day"></A>

  <p>

  <B>今日主板CPU &I/O电压情况</B>

  <A HREF=vol/vol.html><IMG VSPACE=10 WIDTH=500 HEIGHT=135 ALIGN=TOP

  SRC="vol/vol-day.png" ALT="day"></A>

  <p>

  <B>今日主板CPU &P/S风扇情况</B>

  <A HREF=fan/fan.html><IMG VSPACE=10 WIDTH=500 HEIGHT=135 ALIGN=TOP

  SRC="fan/fan-day.png" ALT="day"></A>

  <p>

  <B>今日主板CPU &SYSTEM温度情况</B>

  <A HREF=temp/temp.html><IMG VSPACE=10 WIDTH=500 HEIGHT=135 ALIGN=TOP

  SRC="temp/temp-day.png" ALT="day"></A>

  <p>

  </BODY>

  </HTML>

  怎么样?是不是很一目了然?高兴之余,不禁想到,如果是通过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是一个好用而强大的工具,是我们网管人员的好助手。

  清楚设备管理才能为informix数据库划分chunk提供前提,

  OpenServer中每个硬盘做多四个分区(unix分区,dos分区,linux等),每个分区最多7个slice

  在/dev/hd0a 第1块硬盘活动分区      --------   /dev/rhd0a (系统默认设备)

  hd0d 第1块硬盘dos分区      ---------  /dev/rdh0d

  hd00 第1块硬盘整个硬盘      ----------  /dev/rdh00

  hd01-->hd04 第1块硬盘四个分区  ----------  /dev/rdh01 rdh02 rdh03 rdh04

  在/dev/hd1a 第2块硬盘活动分区      --------   /dev/rhd0a

  hd1d 第2块硬盘dos分区      ---------  /dev/rdh0d

  hd10 第2块硬盘整个硬盘      ----------  /dev/rdh00

  hd11-->hd14 第2块硬盘四个分区  ----------  /dev/rdh01 rdh02 rdh03 rdh04

  判断OpenServer中有几块硬盘: hwconfig  查找 name=disk项 容量=cyl*hds*sec*512byte

  如系统里存在scsi硬盘和磁盘阵列则一般会做raid,分为虚拟的几个盘,再对虚拟盘用FDSIK分区,在分区中

  再用divvy对分区进行分片,一般作为数据库的chunk就对应一个分片(裸设备)。

  那么这样在操作系统里看到的设备文件不一定与物理硬盘对应,

  在系统里一般是:

  /dev/rdsk

  0s0(第1块硬盘整个硬盘)

  0s1(第1块硬盘第1个分区)

  0s2(第1块硬盘第2个分区)

  0s3(第1块硬盘第3个分区)

  0s4(第1块硬盘第4个分区)

  1s0(第1块硬盘整个硬盘)

  1s1(第1块硬盘第1个分区)

  1s2(第1块硬盘第2个分区)

  1s3(第1块硬盘第3个分区)

  1s4(第1块硬盘第4个分区)

  用FDSIK来分区,用divvy来做子区(划分文件系统和裸设备,或在硬盘的unix分区中再划分数据分区)

  fdisk /dev/hdXY

  divvy -i /dev/hdxx

  divvy -m /dev/hd0a

  选项:

  -m 把指定的子区作成可安装的(mountable)

  -i 仅在安装时使用。它指明的设备将包含一个root文件系统。通过此选项,建立一个与新的root相关的设备节点。

  通常这个设备是一个非活动的分区活一张软盘。

  子命令:

  n 给一个子区命名或重新命名

  c 在一个未被使用的子区上建立文件系统

  t 给一个新的文件系统确定类型或修改类型

  p 阻止在一个子区上建立新的文件系统

  s 一个子区的起始块号

  e 一个子区的结束块号

  r 恢复修改前的divvy表

  那么informix最多使用的空间:(设每个chunk<=2g)

  4(分区)*7(片)*2G=36G

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题