Linuxメモリモニタshellスクリプトとタイマ設定

5657 ワード

  nagios        ,          ,                         
一、linuxの下にあるメールクライアントmsmtpソフトウェア(foxmailのようなツール)をインストールする
1、ダウンロードインストール:
コードは次のとおりです.
# tar jxvf msmtp-1.4.16.tar.bz2
# cd msmtp-1.4.16
# ./configure --prefix=/usr/local/msmtp
#./configure --prefix=/usr/local/mutt
# make
# make install
2、msmtpプロファイルとログファイルの作成(hostはメールドメイン名、メールユーザー名test、パスワード123456)
コードは次のとおりです.
# vim ~/.msmtprc
account default
host 192.168.0.5
from      addr
auth login
user test
password    pw
logfile ~/.msmtp.log 
# chmod 600~/.msmtprc
# touch ~/.msmtp.log

3、muttインストール構成:(一般linuxの下にデフォルトのインストールmuttがある)
yum install mutt
 
コードは次のとおりです.
# vim ~/.muttrc
set sendmail="/usr/local/msmtp/bin/msmtp" 
set use_from=yes 
set realname="qqqqqq" 
set [email protected]
set envelope_from=yes 
set rfc2047_parameters=yes 
set charset="utf-8" 

4、メール送信テスト(-sメールタイトル、-a表添付ファイル)
 
コードは次のとおりです.
# echo "Linux          " | mutt [email protected] -s "Linux            " -a /scripts/freemem.txt 

二、freeコマンドを使用してシステムメモリを監視する:
1、freeコマンドを使用してlinuxシステムメモリの使用状況を表示する:(M単位)
 
コードは次のとおりです.
# free -m
(実行結果は次のようになります.
コードは次のとおりです.
total used free sharedbuffers cached
Mem:3952 34145380168484
-/+ 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
#      
echo 'df -hl' >>/scripts/disk-free.txt
#                 (        >)
paste /scripts/date-time.txt /scripts/mem-free.txt/scripts/buffers-free.txt /scripts/swap-free.txt > /scripts/freemem.txt
 
  
#!/bin/bash
#            (     )
percent=`df -k | grep -v Filesystem| awk '{print int($5)}'`
 
#             90%
for each_one in $percent
do
        #         90%
        if [ $each_one -ge 90 ];then
                #    90         mail_address mail_address        
                df | mail -s "Disk Critical" mail_address
        fi
done

# 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 [email protected] -s "$IP   $today      " -a /scripts/freemem.txt  
# 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 [email protected] -s "$IP   $today      " -a /scripts/freemem.txt
fi
fi


# chmod a+x /scripts/swap-warning.sh

、 : , ( ), 8
:


 # crontab -e
*/1 * * * */scripts/diskfree.sh
*/1 * * * */scripts/free-mem.sh
*/1 * * * * /scripts/swap-warning.sh
* /1 * * * /scripts/sendmail-mem.sh
 # service crond restart


crontab :
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} 
o minute: 0 – 59 
o hour: 0 – 23 
o day-of-month: 0 – 31 
o month: 1 – 12. 1 1 . 12 12 . 
o Day-of-week: 0 – 7. 0 7.

rm -f buffers-free.txt diskfree.txt  freemem.txt mem-free.txt swap-free.txt test.txt date-time.txt disk-date-time.txt disk-free.txt