• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種實(shí)用的校園網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)思想及實(shí)現(xiàn)

      2009-05-07 05:48錢愛增
      中國教育信息化·高教職教 2009年4期
      關(guān)鍵詞:腳本

      摘要:文章提出了一種實(shí)用的校園網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)思想,該思想利用PHP、腳本編程和curl命令實(shí)現(xiàn)對校園網(wǎng)各種設(shè)備的監(jiān)控,依據(jù)該思想設(shè)計(jì)開發(fā)了一套校園網(wǎng)監(jiān)控系統(tǒng),運(yùn)行結(jié)果表明該系統(tǒng)能夠起到監(jiān)控校園網(wǎng)運(yùn)行的作用。

      關(guān)鍵詞:cron curl 腳本 校園網(wǎng)監(jiān)控系統(tǒng)

      中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673-8454(2009)07-0027-03

      目前校園網(wǎng)規(guī)模越來越大,核心設(shè)備、各種服務(wù)器越來越多,校園網(wǎng)建設(shè)已逐步從規(guī)模建設(shè)階段轉(zhuǎn)入內(nèi)涵建設(shè)階段,即數(shù)字化校園建設(shè)階段,而數(shù)字化校園建設(shè)階段的首要前提是保障校園網(wǎng)的正常、高效運(yùn)行,而保障校園網(wǎng)正常、高效運(yùn)行的基礎(chǔ)是能夠隨時(shí)隨地了解和監(jiān)控校園網(wǎng)核心設(shè)備、各種服務(wù)器的運(yùn)行狀態(tài)。[1]

      一、校園網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)思路

      校園網(wǎng)中主要設(shè)備一般分為兩大類,一類設(shè)備是用戶只能用其提供的命令對其進(jìn)行操作,不能在其操作系統(tǒng)上用腳本或語言編程控制,在此筆者稱其為“不可編程設(shè)備”,如各種可網(wǎng)管交換機(jī)、防火墻和路由器等;另一類設(shè)備用戶可以用腳本或語言對其編程控制,筆者稱其為“可編程設(shè)備”,如各種服務(wù)器。校園網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)原理如圖1所示,監(jiān)控服務(wù)器通過監(jiān)控程序定時(shí)登錄到各種“不可編程設(shè)備”上,調(diào)用設(shè)備本身提供的命令,取得設(shè)備的各種運(yùn)行狀態(tài)變量,并將結(jié)果存儲(chǔ)到監(jiān)控服務(wù)器的數(shù)據(jù)庫中。對于“可編程設(shè)備”,則由其自身周期性的運(yùn)行腳本取得自身的各個(gè)狀態(tài)參數(shù),然后通過調(diào)用監(jiān)控服務(wù)器上的監(jiān)控程序?qū)⒔Y(jié)果存儲(chǔ)到監(jiān)控服務(wù)器的數(shù)據(jù)庫中,然后由設(shè)備狀態(tài)顯示程序?qū)⒏髟O(shè)備的狀態(tài)參量以某種方式顯示出來,供校園網(wǎng)管理人員即時(shí)地了解校園網(wǎng)各設(shè)備的運(yùn)行狀態(tài),進(jìn)而達(dá)到監(jiān)控整個(gè)校園網(wǎng)主要設(shè)備,保證校園網(wǎng)正常運(yùn)行的目的。

      圖1校園網(wǎng)監(jiān)控系統(tǒng)原理圖

      二、校園網(wǎng)監(jiān)控系統(tǒng)組成

      如圖2所示,校園網(wǎng)監(jiān)控系統(tǒng)共包括三個(gè)模塊,其作用分別如下:

      圖2校園網(wǎng)監(jiān)控系統(tǒng)組成

      (1)“不可編程設(shè)備”采集模塊的主要作用是采集校園網(wǎng)中各個(gè)“不可編程設(shè)備”狀態(tài)數(shù)據(jù),如CPU利用率、設(shè)備反應(yīng)時(shí)間、特定端口利用率等。該模塊又含三個(gè)子模塊,分別是定時(shí)模塊、數(shù)據(jù)采集模塊和存儲(chǔ)模塊,定時(shí)模塊(運(yùn)行于監(jiān)控服務(wù)器上)周期性地調(diào)用數(shù)據(jù)采集模塊采集數(shù)據(jù),然后由存儲(chǔ)模塊將數(shù)據(jù)存儲(chǔ)到監(jiān)控服務(wù)器的數(shù)據(jù)庫中。

      (2)“可編程設(shè)備”數(shù)據(jù)采集模塊的主要作用是采集校園網(wǎng)中各個(gè)“可編程設(shè)備”的狀態(tài)數(shù)據(jù),如磁盤分區(qū)空間利用率、Swap交換空間使用率、系統(tǒng)負(fù)載情況等。該模塊也分定時(shí)模塊、數(shù)據(jù)采集模塊和存儲(chǔ)模塊,“可編程設(shè)備”執(zhí)行腳本程序取得系統(tǒng)自身相關(guān)狀態(tài)參數(shù)后,由定時(shí)模塊(運(yùn)行于“可編程設(shè)備”上)周期性地調(diào)用數(shù)據(jù)采集模塊采集數(shù)據(jù),然后由存儲(chǔ)模塊將數(shù)據(jù)存儲(chǔ)到監(jiān)控服務(wù)器的數(shù)據(jù)庫中。

      (3)設(shè)備狀態(tài)數(shù)據(jù)顯示模塊的主要作用是周期性地將數(shù)據(jù)庫中的數(shù)據(jù)通過IE瀏覽器顯示出來,供校園網(wǎng)管理人員即時(shí)了解和掌握校園網(wǎng)各主要設(shè)備的運(yùn)行狀態(tài)。

      三、校園網(wǎng)監(jiān)控系統(tǒng)實(shí)現(xiàn)

      1.系統(tǒng)運(yùn)行環(huán)境

      監(jiān)控系統(tǒng)服務(wù)器采用Pentium 4以上處理器即可,具有光驅(qū)、100M網(wǎng)卡,以備安裝系統(tǒng)和接入校園網(wǎng)。本系統(tǒng)運(yùn)行平臺(tái)為RedHat Linux9.0,也可為AS系列,要求系統(tǒng)整合安裝MySQL、Apache、PHP和Zend環(huán)境,安裝Cron定時(shí)功能。

      2.數(shù)據(jù)庫結(jié)構(gòu)

      本系統(tǒng)需要建立數(shù)據(jù)表device_wrong,用于存儲(chǔ)設(shè)備的狀態(tài)數(shù)據(jù),表的數(shù)據(jù)字典如表1所示。

      3.具體實(shí)現(xiàn)

      (1)“不可編程設(shè)備”數(shù)據(jù)采集模塊

      由系統(tǒng)組成可知,該模塊由定時(shí)模塊、數(shù)據(jù)采集模塊和存儲(chǔ)模塊3個(gè)子模塊組成。其中,定時(shí)模塊運(yùn)行于監(jiān)控服務(wù)器上,由cron定時(shí)功能周期性地調(diào)用數(shù)據(jù)采集模塊和存儲(chǔ)模塊,定時(shí)模塊實(shí)現(xiàn)如下:[2]

      10,20,30,40,50 * * * * /usr/bin/curl "http://監(jiān)控服務(wù)器ip/path/non_program.php"

      其中,curl是一個(gè)利用URL語法在命令行方式下工作的文件傳輸工具,功能是在命令提示符下執(zhí)行雙引號(hào)內(nèi)的程序。[3]

      數(shù)據(jù)采集模塊、存儲(chǔ)模塊由non_program.php實(shí)現(xiàn),其中,實(shí)現(xiàn)監(jiān)控服務(wù)器登錄到“不可編程設(shè)備”的協(xié)議程序核心代碼如下:[1]

      <?class telnet {

      var $sock=NULL;

      function telnet($host,$port)

      { $this->sock = fsockopen($host,$port,$errno, $errstr, 10);

      if( !$this->sock ) exit("無法連接遠(yuǎn)程主機(jī):".$host.",請稍后再試!");

      socket_set_timeout($this->sock,2,0);

      }

      function close()

      { if ($this->sock) fclose($this->sock); $this->sock = NULL;

      }

      function write($buffer)

      {fwrite($this->sock,$buffer); }

      function getc()

      {return fgetc($this->sock); }

      function input_rate()

      { $buf = ′′; $what="bits/sec";

      while (1)

      {$IAC = chr(255); $theNULL = chr(0);

      $c = $this->getc();if ($c === false) return $buf;

      if ($c == $theNULL) continue; $buf .= $c;

      if ($what == (substr($buf,strlen($buf)-strlen($what))))

      return substr(strstr($buf,"input rate"),10);

      else continue;

      }}}?>

      (2)“可編程設(shè)備”數(shù)據(jù)采集模塊

      由系統(tǒng)組成可知,該模塊也含定時(shí)、數(shù)據(jù)采集和存儲(chǔ)三個(gè)子模塊,其中定時(shí)模塊由各服務(wù)器上的定時(shí)功能實(shí)現(xiàn),同時(shí)需要編寫腳本代碼,以便將服務(wù)器的各個(gè)狀態(tài)變量傳遞給監(jiān)控服務(wù)器上的監(jiān)控程序,本文中主要監(jiān)控各服務(wù)器的磁盤分區(qū)空間利用率、swap交換空間使用率、系統(tǒng)負(fù)載情況三項(xiàng)指標(biāo),腳本實(shí)現(xiàn)如下:

      1)磁盤分區(qū)空間利用率腳本,名稱為disk

      #!/bin/sh

      LANG=zh_cn

      var=$(/bin/df -kP | grep / | awk -F ′′′ {print $6":"$5}′ | awk -F ′%′ ′ {print $1}′ | tr -s ′ ′ ′;′)

      date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")

      ip=$(/sbin/ifconfig | grep "inet addr" | grep -v "127.0.0.1" | awk ′{print $2;}′ | awk -F′:′ ′{print $2;}′ | tr -s ′ ′ ′;′)

      /usr/bin/curl -d menu=disk -d date=$date -d ip=$ip -d data=$var "http://監(jiān)控服務(wù)器/path/program.php"

      2)swap交換空間使用率和系統(tǒng)負(fù)載腳本名稱分別為swap和load,它們和磁盤分區(qū)空間利用率腳本只是var和menu變量不同,其余均相同,分別如下:

      swap腳本:var=$(/usr/bin/free -m | grep Swap | awk ′{print $2":"$3":"$4}′);menu=swap

      load腳本:var=$(/usr/bin/uptime | awk -F′load average: ′ ′{print $2}′ | awk ′{print $1$2$3}′);menu=load

      3)定時(shí)腳本,名稱為server

      10,20,30,40,50 * * * * /usr/bin/disk

      15,30,45 * * * * /usr/bin/swap

      16,31,46 * * * * /usr/bin/load

      4)數(shù)據(jù)采集模塊和存儲(chǔ)模塊實(shí)現(xiàn)核心代碼如下:[4]

      <? $disk_max = "90";//磁盤分區(qū)使用百分比超過此值,則報(bào)警。默認(rèn)為90%

      $swap_max = "50";//Swap交換空間使用百分比超過此值,則報(bào)警。默認(rèn)為50%

      if (htmlspecialchars($_POST["menu"]) == "disk")

      {$date = htmlspecialchars($_POST["date"]);

      $ip = htmlspecialchars($_POST["ip"]);

      $data = htmlspecialchars($_POST["data"]);

      $arr1 = explode(";", $data);

      foreach ($arr1 as $key1 => $value1)

      {$arr2 = explode(":", $value1);

      if ($arr2[0] != "" && $arr2[1] != "" && $arr2[1] >= $disk_max)

      {$subject = "磁盤分區(qū)空間不足" . $ip;

      $message = $message . "報(bào)警服務(wù)器:" . $ip . " ";

      $message = $message . "報(bào)警時(shí)間:" . $date . " ";

      $message = $message . "報(bào)警內(nèi)容: ";

      $message = $message . "磁盤分區(qū) " . $arr2[0] . " 空間不足(空間使用率達(dá)到" . $arr2[1] . "%) ";

      }}

      require("./save.php");//將數(shù)據(jù)內(nèi)容存儲(chǔ)到數(shù)據(jù)庫中}

      if (htmlspecialchars($_POST["menu"]) == "swap")

      {$date = htmlspecialchars($_POST["date"]);

      $ip = htmlspecialchars($_POST["ip"]);

      list($total, $used, $free) = split(":", htmlspecialchars($_POST["data"]));

      $percentage = round($used / $total * 100, 0);

      if ($percentage >= $swap_max)

      {$subject = "Swap交換空間使用率高達(dá)" . $percentage . "%_" . $ip;

      $message = $message . "報(bào)警服務(wù)器:" . $ip . " ";

      $message = $message . "報(bào)警時(shí)間:" . $date . " ";

      $message = $message . "報(bào)警內(nèi)容: ";

      $message = $message . "Swap交換空間使用率高達(dá)" . $percentage . "%。 ";}

      require("./save.php");//將數(shù)據(jù)內(nèi)容存儲(chǔ)到數(shù)據(jù)庫中}

      if (htmlspecialchars($_POST["menu"]) == "load")

      {$date = htmlspecialchars($_POST["date"]);

      $ip = htmlspecialchars($_POST["ip"]);

      list($load_last_1min, $load_last_5min, $load_last_15min) = split(",", htmlspecialchars($_POST["data"]));

      $subject = "系統(tǒng)負(fù)載過高" . $ip;

      $message = $message . "報(bào)警服務(wù)器:" . $ip . " ";

      $message = $message . "報(bào)警時(shí)間:" . $date . " ";

      $message = $message . "報(bào)警內(nèi)容: ";

      $message = $message . "最近 1分鐘系統(tǒng)負(fù)載:" . $load_last_1min . " ";

      $message = $message . "最近 5分鐘系統(tǒng)負(fù)載:" . $load_last_5min . " ";

      $message = $message . "最近15分鐘系統(tǒng)負(fù)載:" . $load_last_15min . " ";}

      require("./save.php");//將數(shù)據(jù)內(nèi)容存儲(chǔ)到數(shù)據(jù)庫中}?>

      (3)設(shè)備狀態(tài)數(shù)據(jù)顯示模塊

      該模塊的主要作用是將存儲(chǔ)在數(shù)據(jù)庫中的設(shè)備狀態(tài)數(shù)據(jù)顯示出來,本系統(tǒng)中采用了圖形化的顯示方法,直觀明了,程序執(zhí)行時(shí)界面如圖3所示,當(dāng)設(shè)備運(yùn)行正常時(shí),圖片顯示正常,否則顯示一個(gè)紅色“╳”號(hào)的圖片,當(dāng)鼠標(biāo)移動(dòng)到圖片上時(shí)動(dòng)態(tài)顯示出設(shè)備的故障情況。

      <img src="http://img1.qikan.com.cn/qkimages/educ/educ200904/educ20090410-4-l.jpg" hspace="15" vspace="5" align="">

      圖3校園網(wǎng)監(jiān)控系統(tǒng)運(yùn)行界面

      四、結(jié)束語

      本監(jiān)控系統(tǒng)自去年運(yùn)行以來,對校園網(wǎng)的正常運(yùn)行起到了較好的監(jiān)控作用,真正扭轉(zhuǎn)了校園網(wǎng)管理的被動(dòng)局面,對各種校園網(wǎng)故障起到了很好的預(yù)防作用。

      參考文獻(xiàn):

      [1]錢愛增.基于Web的簡易實(shí)用校園網(wǎng)管理系統(tǒng)的設(shè)計(jì)思路及實(shí)現(xiàn)[J].重慶工學(xué)院學(xué)報(bào)(自然科學(xué)版),2007,21(11),155-159.

      [2]cron的使用.http://www.hackhome.com/InfoView/Article_ 79273.html,2007-6-2.

      [3]CURL命令行下載工具.http://blog.csdn.net/dbigbear/archive/2006/11/21/1402580.aspx,2006-11-21.

      [4]張宴.linux服務(wù)器監(jiān)控系統(tǒng)ServMon V1.1.http://blog.s135.com/read.php/291.htm,2007-08-31.

      猜你喜歡
      腳本
      酒駕
      此去人海茫茫,各自風(fēng)雨?duì)N爛
      數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
      快樂假期
      神奇的數(shù)學(xué)
      愚人節(jié)大作戰(zhàn)
      小編的新年愿望
      友誼的小船說翻就翻
      404 Not Found

      404 Not Found


      nginx
      香港| 安平县| 涟水县| 湛江市| 南安市| 襄樊市| 中超| 清流县| 三都| 龙井市| 天全县| 休宁县| 九寨沟县| 尼玛县| 宁城县| 宜章县| 通道| 图片| 隆尧县| 德惠市| 寿宁县| 八宿县| 凤城市| 温州市| 海伦市| 长治市| 卢龙县| 安国市| 左权县| 内丘县| 建瓯市| 伽师县| 格尔木市| 本溪| 重庆市| 济源市| 上犹县| 东港市| 平和县| 闽侯县| 教育|