利用 Shell 指令碼來監控 Linux 系統的記憶體
導讀 | 運維實戰中都會用 寫 來提高工作效率,接下來為大家介紹shell實現 監控系統記憶體。 |
一、安裝Linux下面的一個郵件客戶端Msmtp軟體(類似於一個Foxmail的工具) 1、下載安裝: ... 206451&big_mirror=0
# tar jxvf msmtp-1.4.16.tar.bz2 # cd msmtp-1.4.16 # ./configure --prefix=/usr/local/msmtp # make # make install
2、建立msmtp配置檔案和日誌檔案(host為郵件域名,郵件使用者名稱test,密碼123456)
# vim ~/.msmtprc account default host 126.com from test@126.com auth login user test password 123456 logfile ~/.msmtp.log # chmod 600 ~/.msmtprc # touch ~/.msmtp.log
3、mutt安裝配置:(一般linux下有預設安裝mutt)
# vim ~/.muttrc set sendmail="/usr/local/msmtp/bin/msmtp" set use_from=yes set realname="memory" set from=test@126.com set envelope_from=yes set rfc2047_parameters=yes set charset="utf-8"
4、郵件傳送測試(-s郵件標題,-a表加附件)
# echo "郵件內容123456" | mutt -s "郵件標題測試郵件" -a /scripts/test.txt test@126.com
二、使用Free 監控系統記憶體 1、使用free 檢視 記憶體使用情況:(以M為單位)
# free -m (執行結果如下樣式) total used free shared buffers cached Mem: 3952 3414 538 0 168 484 -/+ buffers/cache: 2760 1191 Swap: 8191 86 8105
2、檢視擷取剩餘記憶體free的數值命令:
(1) 實體記憶體free值:# free -m | grep Mem | awk '{print $4}' (2) 緩衝區的free值:# free -m | grep - | awk '{print $4}' (3) Swap分割槽free值:# free -m | grep Swap | awk '{print $4}'
3、編寫記憶體監控的 檔案:
# vim /scripts/free-mem.sh #!/bin/bash #使用free命令監控linux系統記憶體變化 #取系統當前時間(以追加的方式寫入檔案>>) date >> /scripts/date-time.txt #抓取實體記憶體free值(以追加的方式寫入檔案>>) echo Mem-free: `free -m | grep Mem | awk '{print $4}'`M >> /scripts/mem-free.txt #抓取緩衝區的free值(以追加的方式寫入檔案>>) echo buffers/cache-free: `free -m | grep - | awk '{print $4}'`M >> /scripts/buffers-free.txt #抓取Swap分割槽free值(以追加的方式寫入檔案>>) echo Swap-free: `free -m | grep Swap | awk '{print $4}'`M >> /scripts/swap-free.txt #逐行連線上面的時間和記憶體相關行資料(每次重新寫入檔案>) paste /scripts/date-time.txt /scripts/mem-free.txt /scripts/buffers-free.txt /scripts/swap-free.txt > /scripts/freemem.txt # chmod a+x /scripts/free-mem.sh # /scripts/free-mem.sh
4、檢視記憶體監控的結果檔案:
# cat /scripts/freemem.txt
5、編寫free結果檔案郵件傳送指令碼:
# vim /scripts/sendmail-mem.sh #!/bin/bash #把生成的freemem.txt檔案透過郵件傳送給使用者 #提取本伺服器的IP地址資訊 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` #提取當前日期時間 today=`date -d "0 day" +%Y年%m月%d日` #傳送記憶體監控結果郵件 echo "這是$IP伺服器$today的記憶體監控報告,請下載附件。" | mutt -s "$IP伺服器$today記憶體監控報告" -a /scripts/freemem.txt test@126.com # chmod a+x /scripts/sendmail-mem.sh
三、監控系統交換分割槽Swap的情況,當使用超過80%的時候發告警郵件
# vim /scripts/swap-warning.sh #!/bin/bash #提取本伺服器的IP地址資訊 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` #系統分配的交換分割槽總量 swap_total=`free -m | grep Swap | awk '{print $2}'` #當前剩餘的交換分割槽free大小 swap_free=`free -m | grep Swap | awk '{print $4}'` #當前已使用的交換分割槽used大小 swap_used=`free -m | grep Swap | awk '{print $3}'` if ((swap_used != 0)); then #如果交換分割槽已被使用,則計算當前剩餘交換分割槽free所佔總量的百分比,用小數來表示,要在小數點前面補一個整數位0 swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc` #設定交換分割槽的告警值為20%(即使用超過80%的時候告警)。 swap_warn=0.20 #當前剩餘交換分割槽百分比與告警值進行比較(當大於告警值(即剩餘20%以上)時會返回1,小於(即剩餘不足20%)時會返回0 ) swap_now=`expr $swap_per > $swap_warn` #如果當前交換分割槽使用超過80%(即剩餘小於20%,上面的返回值等於0),立即發郵件告警 if (($swap_now == 0)); then echo "$IP伺服器swap交換分割槽只剩下 $swap_free M 未使用,剩餘不足20%,使用率已經超過80%,請及時處理。" | mutt -s "$IP 伺服器記憶體告警" test@126.com fi fi # chmod a+x /scripts/swap-warning.sh
四、加入任務計劃:記憶體每十分鐘檢測一次,有告警則立即發郵件(十分鐘發一次),記憶體檢測結果郵件每天早上8點發一次
# crontab -e */10 * * * * /scripts/free-mem.sh */10 * * * * /scripts/swap-warning.sh 0 8 * * * /scripts/sendmail-mem.sh # service crond restart
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2724906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- Shell 系統資訊監控指令碼指令碼
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- 【shell】磁碟監控指令碼指令碼
- linux實現shell指令碼監控磁碟記憶體達到閾值時清理catalina.out日誌Linux指令碼記憶體
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼
- 監控系統告警指令碼集合指令碼
- 監控磁碟使用率的shell指令碼指令碼
- Shell----監控CPU/記憶體/負載高時的程式記憶體負載
- shell實戰之Linux主機系統監控Linux
- 記憶體CPU監控記憶體
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- Shell指令碼監控MySQL主從狀態指令碼MySql
- RabbitMQ - 記憶體磁碟監控MQ記憶體
- Linux中顯示記憶體和CPU使用率最高的程式的SHELL指令碼例子Linux記憶體指令碼
- shell指令碼監控啟動停止weblogic服務指令碼Web
- Shell指令碼——Linux系統中的時間猜數字指令碼Linux
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼
- Linux Shell指令碼Linux指令碼
- 使用Shell指令碼程式監控網站URL是否正常指令碼網站
- iOS微信記憶體監控iOS記憶體
- linux常用的shell指令碼Linux指令碼
- Linux 系統監控指南Linux
- Linux上執行記憶體中的指令碼和程式Linux記憶體指令碼
- 用於自動監控磁碟使用情況的 Shell 指令碼指令碼
- Flutter 上的記憶體洩漏監控Flutter記憶體
- Linux記憶體子系統——Locking Pages(記憶體鎖定)Linux記憶體
- Linux系統Shell指令碼如何執行?linux運維繫統工程師Linux指令碼運維工程師
- 透過shell指令碼監控日誌切換頻率指令碼
- Linux系統配置檔案簡易shell備份指令碼Linux指令碼
- Shell指令碼執行有哪些方式?linux系統學習指令碼Linux
- Android 分割槽和記憶體監控Android記憶體
- 記憶體檢查指令碼記憶體指令碼
- Linux系統安裝zabbix 4.4監控軟體Linux
- linux shell指令碼中 =~ 的作用Linux指令碼
- linux系統 物理硬碟監控Linux硬碟