监控脚本之进程监控部分:
监控内容 监控进程的CPU和内存使用情况以及进程是否正在运行,调试环境是HA AIX 5.3,所以区分了服务器1和服务器2,形成insert的sql语句,上传到正在运行的主服务器上,并用其它脚本运行sql,脚本适合在主备或者单独运行的服务器上运行。
#!/bin/bash
#tnslsnr
#取服务器名
SERVERNAME=$(uname -a | awk '{ print $2}')
#定义文件名
filename="/export/home/monitorsh/"$SERVERNAME"_PROCESSMONITOR.sql"
#数据库连接部分
echo "connect username/password" >>${filename}
#取processmonitor.conf文件中的配置的进程进行监控
while read line
do
PROCESS_PATH=$(echo ${line}|awk '{print $2}')
#取监控进程的pid
PID=$(ps -ef | grep $PROCESS_PATH |grep -v grep| awk '{print $2}' | head -1)
# Pcpu=$(ps -p $PID -o pcpu| tail -1)
# Pmem=$(ps -p $PID -o pmem| tail -1)
# Pmemused=$(echo $Pmem * 8388608 | bc)
SERVERNAME=$(uname -a | awk '{ print $2}')
#if判断进程是否在线 pid为空则进程不在线,否则进程在线
if [ -z $PID ]
then
echo $PROCESS_PATH"DOWN" >/export/home/monitorsh/PROCESS.LOG
echo "insert into tab_processmonitor values (0,'"$PROCESS_PATH"','"$Pcpu"','"$Pmem"','"$Pmemused"','"$SERVERNAME"');">>${filename}
echo "commit;">>${filename}
else
#取在线进程的cpu和内存使用情况并构建sql语句
Pcpu=$(ps -p $PID -o pcpu| tail -1)
Pmem=$(ps -p $PID -o pmem| tail -1)
Pmemused=$(echo $Pmem * 8388608 | bc)
echo "insert into tab_processmonitor values ("$PID",'"$PROCESS_PATH"','"$Pcpu"','"$Pmem"','"$Pmemused"','"$SERVERNAME"');">>${filename}
echo "commit;">>${filename}
fi
done echo "exit">>${filename}
filename=$SERVERNAME"_PROCESSMONITOR.sql"
#上传至服务器
ftp -i -n 10.43.94.15 <user username password
cd /export/home/monitorsh/sql
lcd /export/home/monitorsh
binary
prompt
put ${filename}
bye
!
rm ${filename}
-------------------------
processmonitor.conf文件的格式
1 /export/home/oracle/product/10.0/bin/tnslsnr
2 /aaaa/aaa/aaa/aaa
收起