• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

Shell脚本监控系统swap,自动重启服务

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh
#Check system swap, restart syslog-ng server
#Jeson . 2014-12-10
 
#检查syslog-ng服务所占用的vsz 即使用的虚拟内存数目
function GetIDswap_Usage
{
        MeMUsage=`ps -o vsz -p $1|grep -v VSZ`
        (( MeMUsage /= 1000))
        echo $MeMUsage
}
 
#获取某个进程所打开的文件句柄数目
function GetIDfiles_Usage
{
        fileUsage=`ls /proc/$1/fd|wc -l`
        echo $fileUsage
}
 
#检查当前的系统swap使用百分比
function Checkswap_Usage
{
        swapUsage=`free |awk '/Swap/ {print int($3/$2*100)}'`
        echo $swapUsage
}
 
Swap_sys=`Checkswap_Usage`
sys_pid=`pgrep syslog-ng`
checklog='/opt/logs'`date +'%F'`
#定义发邮件脚本
send_message='/bin/sh /home/../sentpage.sh'
#判断系统的swap使用是否超过阀值、判断进程使用swap是否超过阀值
if [ ${Swap_sys} -gt 40 ]
then
        echo_mess="IP: Continue! Check process iD $sys_pid"
        echo $echo_mess>>$checklog
        $send_message "mc:$echo_mess"
        IDswap_Usage=`GetIDswap_Usage ${sys_pid}`
        if [  $IDswap_Usage -gt 20000 ]
        then
                Openfiles_Usage=`GetIDfiles_Usage $sys_pid`
                echo_mess="IP:  Status:openfiles=${Openfiles_Usage} IDwap_Usage=${IDswap_Usage}M Action:restart syslog-ng"
#/etc/init.d/syslog-ng restart
                echo $echo_mess>>$checklog
                $send_message "m: c:'$echo_mess'"
        fi
else
        echo "Break!OK!"
fi

加入crontab,定时在晚上时间(00-04点进行)

1
2
#Check system swap Usage.
*/3 00-04 * * * /bin/sh  /opt/work/check_swap.sh >>/dev/null 2>&1

Shell脚本监控系统swap,自动重启服务

Pingbacks已打开。

引用地址

暂无评论

发表评论