編寫shell指令碼監控主機

來源:互聯網
上載者:User

編寫SHELL指令碼監控主機

1、用vi命令在/root目錄是建立一個指令檔sysmon.sh:

內容如下:

      #!/bin/bash

      dug=$(df -h | grep "/$" | awk '{print $4}' | awk -F% '{print $1}')

      cug=$(expr 100 - $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))

      mug=$(expr $(free | grep "cache:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

      alog="/tmp/alert.txt"

      AMAIL="root@localhost.localdomain"

      if [ $dug -gt 3 ]

      then

      echo "磁碟佔用率:$dug%" >> $alog

      fi

      if [ $cug -gt 2 ]

      then

      echo "CPU使用率:$cug%" >> $alog

      fi

      if [ $mug -gt 2 ]

      then

      echo "記憶體使用量率:$mug%" >> $alog

      fi

      if [ -f $alog ]

      then

      cat $alog | mail -s "Host Alert" $AMAIL

      rm -fr $alog

      fi

   如下:

650) this.width=650;" title="image001.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5103H7-0.png" />

          這裡使用率都取的小值,為了使驗證結果更加明顯,根據實際環境而有所不同)

附:

a:使用df命令提取根分區的磁碟佔用率:如所示:

使用df-h命令查看磁碟分割的使用方式,其中根分區的已用空間是8%

650) this.width=650;" title="image003.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q51035c-1.png" />

用如中的命令可以過濾磁碟的已用空間

[root@shell ~]# df -h | grep "/$" | awk '{print $4}' | awk -F% '{print $1}'

650) this.width=650;" title="image005.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5104418-2.png" />

b:使用mpstat命令提取CPU使用率需要先安裝sysstat軟體包)。如所示:其中%idle表示CPU空閑時間百分比

650) this.width=650;" title="image007.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q510D94-3.png" />

650) this.width=650;" title="image009.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5102923-4.png" />

用如中的命令可以得到CPU已用空間並賦值給變數CUG

[root@shell ~]# cug=$(expr 100 - $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))[root@shell ~]# echo $cug

650) this.width=650;" title="image011.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5102149-5.png" />

c:使用free命令查看記憶體的使用方式。其中劃紅線的表示空餘記憶體。

650) this.width=650;" title="image013.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5102I0-6.png" />

第1行:

total 記憶體總數: 1035108
used 已經使用的記憶體數: 500928
free 閒置記憶體數: 534180
shared 當前已經廢棄不用,總是0
buffers Buffer Cache記憶體數: 28968
cached Page Cache記憶體數: 348204

關係:total = used + free

第2行:
-/+ buffers/cache的意思相當於:
-buffers/cache 的記憶體數:123756 (等於第1行的 used - buffers - cached)
+buffers/cache 的記憶體數: 911352 (等於第1行的 free + buffers + cached)

所以:-buffers/cache反映的是被程式實實在在吃掉的記憶體,而+buffers/cache反映的是可以挪用的記憶體總數。

第三行單獨針對交換分區:

為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行緩衝(用於VFS,加速檔案路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。

用如中的命令可以得到記憶體使用量率並賦值給變數mug:

[root@shell ~]# mug=$(expr $(free | grep "cache:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

[root@shell ~]# echo$mug

650) this.width=650;" title="image015.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5105620-7.png" />

2、使用chmod命令給sysmon.sh檔案增加執行x)許可權
650) this.width=650;" title="image017.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q510N27-8.png" />

3、測試sysmon.sh指令碼的執行情況

a:本人實驗環境為Linux 5.5,使用其本身內建的sendmail發送郵件驗證:

650) this.width=650;" title="image019.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5102131-9.png" />

補充:所有發郵件的連接埠都是: 25號連接埠、ICMP協議】

b:確認有可用的郵件伺服器,然後調低監控閾值,執行sysmon.sh指令碼進行測試

c:查收名為root@localhost.localdomain的郵箱生產環境寫具體警示郵箱),確認警告郵件內容

650) this.width=650;" title="image021.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q510D26-10.png" />

郵件內容如下:

650) this.width=650;" title="image023.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5106304-11.png" />

4、設定crontab計劃任務,每隔半小調用一次sysmon.sh指令碼程式,並重新啟動crond服務。

650) this.width=650;" title="image025.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q51050I-12.png" />

650) this.width=650;" title="image027.png" src="http://www.bkjia.com/uploads/allimg/131227/1Q5101231-13.png" />

5、操作完成。

 

本文出自 “聽聞” 部落格,請務必保留此出處http://wenzhongxiang.blog.51cto.com/6370734/1213518

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.