当前位置:
文档之家› shell脚本监控服务器状态
shell脚本监控服务器状态
shell
post byrocdk890/ 2013-4-25 15:07 Thursdaylinux技术
发表评论
想到公司内部测试服务器还没有系统状态监控,不想装nagios来监控,那样太麻烦了,又不想自己去写脚本,网上找了个,根据自己服务器的情况稍微修改了下,这里还要再多说一句,并不是网上发出来shell脚本就适合你的情况,最好是自己先修改测试下再部署.
30
fi
31
32
swap_total=`free-m | grepSwap | awk'{print $2}'`
33
34
swap_free=`free-m | grepSwap | awk'{print $4}'`
35
36
swap_used=`free-m | grepSwap | awk'{print $3}'`
52
disk_sda=`df-Ph |grep/dev/mapper/VolGroup00-LogVol00|awk'{print $5}'|cut-f 1 -d "%"`
53
54
if(($disk_sda > 80)); then
55
echo"$IP 服务器 /根分区 使用率已经超过80%,请及时处理。"| mailx -s "$IP 服务器硬盘告警"rocdk@
46
echo"$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。"| mailx -s "$IP 服务器内存告警"rocdk@
47
fi
48
49
fi
50
51
#disk_sda=`df -h | grep /dev/sda3 | awk '{print $5}' | cut -f 1 -d "%"`
11
12
load_warn=0.70
13
14
if(($average_int > 0)); then
15
echo"$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!"| mailx -s "$IP 服务器系统负载严重告警!!!"rocdk@
16
else
17
18
load_now=`expr$average_load \> $load_warn`
19
20
if(($load_now == 1)); then
21
echo"$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。"| mailx -s "$IP 服务器系统负载告警"rocdk@
22
fi
23
24
fi
25
26
cpu_idle=`top-b -n 1 | grepCpu | awk'{print $5}'| cut-f 1 -d "."`
27
28
if(($cpu_idle < 20)); then
29
echo"$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。"| mailx -s"$IP 服务器CPU告警"rocdk@
05
06
load_15=`uptime | awk'{print $NF}'`
07
08
average_load=`echo"scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a"| bc`
09
10
average_int=`echo$average_load | cut-f 1 -d "."`
56
fi
57
58
users=`uptime | awk'{print $6}'`
59
60
if(($users>= 5)); then
61
echo"$IP 服务器用户数已经达到$users个,请及时处理。"| mailx -s "$IP 服务器用户数告警"rocdk@
62
fi
此脚本需要bc和mailx配合才能正常运行,如果没有装这两个的,请先安装或者先单独运行脚本再让crontab去执行.
系统:centos 5.5
1.监控服务器状态脚本内容:
01
#!/bin/bash
02
IP=`ifconfigeth0 | grep"inet addr"| cut-f 2 -d ":"| cut-f 1 -d " "`
03
04
cpu_num=`grep-c 'model name'/proc/cpuinfo`
chmod +x /root/webbak/sys-monitor.sh
2.加入crontab
*/10 * * * * root /root/webbak/sys-monitor.sh
service crond reload
可以从crond日志里看到,脚本已经被crontab执行了.
37
38
if(($swap_used != 0)); then
39
swap_per=0`echo"scale=2;$swap_free/$swap_total"| bc`
40
41
swappr$swap_per \> $swap_warn`
44
45
if(($swap_now == 0)); then