編寫SHELL腳本監控主機

編寫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="[email protected]"

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

截圖如下:

1

附:

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

使用df-h命令查看磁盤分區的使用情況,其中根分區的已用空間是8%

2

用如下圖中的命令可以過濾磁盤的已用空間

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

3

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

111

4

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

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

5

c:使用free命令查看內存的使用情況。其中劃紅線的表示空餘內存。

6

第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

7

2、使用chmod命令給sysmon.sh文件增加執行(x)權限
8

3、測試sysmon.sh腳本的執行情況

a:本人實驗環境爲Linux 5.5,使用其本身自帶的sendmail發送郵件驗證:

9

【補充:所有發郵件的端口都是: 25號端口、ICMP協議】

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

c:查收名爲[email protected]的郵箱,確認警告郵件內容

10

郵件內容如下:

11

4、設置crontab計劃任務,每隔半小調用一次sysmon.sh腳本程序,並重新啓動crond服務。

12

5、操作完成。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章