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