您的位置:首页 > 数据库

监控数据库服务器的shell脚本

2011-09-24 13:12 381 查看
这段时间学习shell编程,特编写一个了监控数据库服务器性能的脚本,这个脚本可以监控进程,内存,swap,PGA连接数,网络,还有load

#!/bin/sh

#creater:danchen
#date:2007-3-27

#local varrible
mailto='username@163.com'

dbname=`hostname|sed 's/_.*//g'`
echo ""
echo $dbname
echo "************************"

#process
echo ""
echo "total processes"
echo "************************"
ps -ef|wc -l

echo ""
echo "PGA processes"
echo "************************"
v_lp=`ps -ef|grep LOCAL|grep -v "grep LOCAL"|wc -l`
f_lp=250
if [ $v_lp -gt $f_lp ]
then
mailmsg="the pga process's number is larger than 100,now is $v_lp"
echo "$mailmsg" > /tmp/pga_$HOSTNAME.log
scp /tmp/pga_$HOSTNAME.log oracle@csdb1:/opt/devtest_db_logs/pga_$HOSTNAME.log
ssh -loracle csdb1 "mail -s "pga_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/pga_$HOSTNAME.log"
else
echo "${dbname}'s pga process's number is normal,now is $v_lp"
fi

echo ""
echo "cron process"
echo "************************"
v_c=`ps -ef|grep cron|grep -v "grep cron"|wc -l`
if [ $v_c -ne 1 ]
then
mailmsg="the cron process error"
echo "$mailmsg" > /tmp/cron_$HOSTNAME.log
scp /tmp/cron_$HOSTNAME.log oracle@csdb1:/opt/devtest_db_logs/cron_$HOSTNAME.log
ssh -loracle csdb1 "mail -s "cron_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/cron_$HOSTNAME.log"
else
echo "the cron process is running normally"
fi

#load
echo ""
echo "load"
echo "************************"
v_ld=`w|grep load|grep -v "grep load"|sed 's/,//g'|awk '{print $10}'`
vv_ld=`printf "%2.0f" $v_ld`
f_ld=3
if [ $vv_ld -gt $f_ld ]
then
mailmsg="${dbname}'s load is larger than $f_ld,now is $v_ld"
echo "$mailmsg" > /tmp/load_$HOSTNAME.log
scp /tmp/load_$HOSTNAME.log oracle@csdb1:/opt/devtest_db_logs/load_$HOSTNAME.log
ssh -loracle csdb1 "mail -s "load_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/load_$HOSTNAME.log"
else
echo "${dbname}'s load is normal,now is $v_ld"
fi

#CPU
echo ""
echo "CPU blocked number"
echo "************************"
v_bp=`vmstat|sed -n 3p|awk '{print $2}'`
f_bp=2
if [ $v_bp -gt $f_bp ]
then
mailmsg="${dbname}'s runquenue is larger than $f_bp,now is $v_bp"
echo "$mailmsg" > /tmp/runquenue_$HOSTNAME.log
scp /tmp/runquenue_$HOSTNAME.log oracle@csdb1:/opt/devtest_db_logs/runquenue_$HOSTNAME.log
ssh -loracle csdb1 "mail -s "runquenue_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/runquenue_$HOSTNAME.log"
else
echo "the runquenue is normal,now the blocked job number is $v_bp"
fi

#swap
echo ""
echo "swap"
echo "************************"
v_swap=`free|sed -n 4p|awk '{print $3}'`
f_swap=200000
if [ $v_swap -gt $f_swap ]
then
mailmsg="${dbname}'s swap is larger than $f_swap,now is $v_swap"
echo "$mailmsg" > /tmp/swap_$HOSTNAME.log
scp /tmp/swap_$HOSTNAME.log oracle@csdb1:/opt/devtest_db_logs/swap_$HOSTNAME.log
ssh -loracle csdb1 "mail -s "swap_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/swap_$HOSTNAME.log"
else
echo "the swap is normal,now is ${v_swap}k"
fi

#memories
echo ""
echo "memories"
echo "************************"
free|sed -n 2p

#network
echo ""
echo "network"
echo "************************"
/sbin/ifconfig|grep "inet addr"|grep -v "127.0.0.1"

echo ""
echo "---------------END---------------------"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: