利用 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記憶體
- nagios監控linux主機監控記憶體指令碼iOSLinux記憶體指令碼
- 使用 Shell 指令碼監控 Linux 系統程式資源指令碼Linux
- shell指令碼:自動記憶體監控及日誌備份指令碼記憶體
- AIX系統資源監控SHELL指令碼AI指令碼
- 監控系統使用情況shell指令碼指令碼
- 利用shell指令碼監控網站狀態指令碼網站
- 【SHELL】Linux系統 Oracle例項監控、重啟 簡易Shell指令碼LinuxOracle指令碼
- nagios-建立記憶體監控指令碼iOS記憶體指令碼
- Solaris linux 系統監控指令碼Linux指令碼
- 監控linux系統的shellLinux
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- 分散式監控系統Zabbix-3.0.3-完整安裝記錄 - 新增shell指令碼監控分散式指令碼
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- 【shell】磁碟監控指令碼指令碼
- Linux系統記憶體監控全面講解:free命令Linux記憶體
- 使用Shell指令碼對Linux系統和程式資源進行監控指令碼Linux
- 常用的主機監控shell指令碼指令碼
- 監控系統告警指令碼集合指令碼
- oracle會話監控shell指令碼Oracle會話指令碼
- linux實現shell指令碼監控磁碟記憶體達到閾值時清理catalina.out日誌Linux指令碼記憶體
- 監控磁碟使用率的shell指令碼指令碼
- 我常用的主機監控Shell指令碼指令碼
- Shell----監控CPU/記憶體/負載高時的程式記憶體負載
- AIX 記憶體監控AI記憶體
- Solaris記憶體監控記憶體
- 記憶體CPU監控記憶體
- 透過shell指令碼監控oracle session指令碼OracleSession
- 通過shell指令碼監控oracle session指令碼OracleSession
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼
- 監控Oracle系統中鎖的常用指令碼Oracle指令碼
- 每5秒監控5000埠的shell指令碼指令碼
- 監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- linux_系統資源監控指令碼_system_monitorLinux指令碼
- iOS微信記憶體監控iOS記憶體
- RabbitMQ - 記憶體磁碟監控MQ記憶體
- Solaris記憶體監控(轉)記憶體
- shell指令碼:監控MySQL服務是否正常指令碼MySql