Linux作業系統效能指標監控與通知

醋溜包菜發表於2022-09-30

最近整了一臺伺服器,搭建了 web 網站,整了一下監控系統,這樣也方便,我用的是 3A 的伺服器,服務挺不錯的

系統的效能指標監控是比較常見的針對系統的管理場景,比如系統有挖礦程式,或者系統本身存在高CPU 程式 ( 正常應用 ) ,除了 CPU 之外,也可以監控記憶體,硬碟,網路流星等使用情況。透過監控和傳送通知,可以及時對系統的執行情況進行把控進而實現正確的處置。如果發現某些異常 CPU 消耗,甚至可以直接結束掉程式。

(1) 透過相應的命令能夠輸出需要的指標。

(2) 透過 awk 對輸出結果進行過濾,找到對應的值。

(3) 根據對應的值進行判斷,進而決定後續處理方式。

一、使用yes 程式監控 CPU

#獲取總的CPu使用率並轉化為整數用於後續判斷
cpu=$(top -n 1 | grep ^%Cpu | awk '{print int($8)}')
或
cpu=$(top -n 1 | grep ^%Cpu | awk '{print $8}' | awk -F . '{print $1} ')
#獲取是消耗CPU的程式資訊
pcpu=`ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk '{print $3}'`
echo $pcpu / 4 | bc #計算單核CPU的使用率,與總CPU使用率才有可比性
#如何蒐集記憶體使用資訊
top -n 1 | grep "^KiB Mem" | awk '{print $6}'
或者使用free 也可以採集記憶體使用情況
#如何蒐集硬碟使用資訊
df -h | grep ^/dev/mapper
#網路流量
ip -s link


二、傳送郵件通知

1 、安裝 mailx 郵件客戶端

yum install mailx -y

早期的郵件客戶端通常使用sendmail 來傳送郵件,而新版本上使用的是 postfix 進行郵件的傳送和接收。在 Linux 中,只要配置好郵件客戶端及 SMTP 賬號後,不僅可以向當前系統的任意賬號傳送內部郵件,即我們看到的 /var/spool/mail/user 的文字型郵件,也可以向外網正常的郵箱地址傳送郵件,如向 12345678@qq.com 傳送郵件。

2 、向本地系統使用者發郵件

systemctl start postfix #先確保postfix郵件傳送服務啟動
echo "This is email body" | mail -s "test email" root #直接使用管道傳送簡單郵件正文#
mail -s "test email" root < /etc/passwd #直接使用輸入重定向的方式讀取一個檔案內容作為正文
cp /dev/nu1l /var/spool/mai1/root #先清空郵件


使用mail 命令可以直接檢視郵件,輸入序號檢視郵件正文,輸入 q 退出,輸入 h 回到郵件列表

3 、向外部郵箱地址發郵件

(1 )確定郵件賬號的 SMTP 資訊,可以使用蝸牛學院的測試郵箱賬號 , 或使用 QQ 郵箱賬號。

(2 )編輯 /etc/mail.rc ,將上述 SMTP 資訊輸入

set from=student@woniuxy.com
set smtp=smtp.woniuxy.com
set smtp-auth-user=student@woniuxy.com
set smtp-auth-password=Student123
set smtp-auth=login


(3) 使用以下命令傳送郵件

mail -s "test email" 15903523@qq.com < /etc/passwd
mail -s "test.email" -a /opt/picture.png 15903523@qq.com < /etc/passwd #帶附件


1 top -n 1 檢視程式資訊


vm ware 中開啟 yes 程式, [root@numberone ~]# yes ,之後在xshell 中再次 top -n 1 檢視程式資訊


2

[root@numberone ~]# cpu=$(top -n 1 | grep ^%Cpu | awk '{print int($8)}')
[root@numberone ~]# echo $cpu



3

[root@numberone ~]# [ $cpu -lt 75 ]
[root@numberone ~]# echo $?


0
0 ,說明小於 75


[root@numberone ~]# [ $cpu -lt 70 ]
[root@numberone ~]# echo $?



1 說明不小於 70 ,即大於 70


4

[root@numberone ~]# pcpu= `ps aux | sort -k 3 -r | head -n 2 | tail -n 1 |awk ‘{print $3}’[root@numberone ~]# echo $pcpu`99.7[root@numberone ~]# echo $pcpu / 4 | bc24[root@numberone ~]# top -n 1 |grep “^KiB Mem” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 6}̲'` `3113076` `[…(top -n 1 | grep ^%Cpu | awk ‘{print int ($8)}’)
if [ c p u − l t 75 ] ; t h e n p c p u = cpu -lt 75 ]; then pcpu=cpu−lt75];thenpcpu=(ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}̲') ppcp…(echo p c p u / 4 ∣ b c ) p i d = pcpu / 4 | bc) pid=pcpu/4∣bc)pid=(ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk ‘{print $2}’)
echo “CPU is lower, $pid consume $ppcpu%”
else
echo “CPU is OK”
fi




6、[root@numberone ~]# yum install mailx -y


[root@numberone ~]# systemctl start postfix



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70022313/viewspace-2916929/,如需轉載,請註明出處,否則將追究法律責任。

相關文章