1.判断磁盘使用空间
- df -h | grep -v File | sed 's/%//g' | awk '{if($5>80)print"使用空间超过了80%:", $6}'
- 或
- #!/bin/bash
- #Filename: disk.sh
- #Date: 20110322
- DISK_warn=80
- DISK_per=`df -h | grep -v Filesystem| awk '{print int($5)}'`
- for i in $DISK_per
- do
- if [ "$i" -gt "$DISK_warn" ]; then
- partion=`df -h | grep "$i%"|awk '{print $6}'`
- echo "已使用空间超过80%: $partion"
- fi
- done
判断磁盘使用百分比是否超过设定值,这里可以修改为通过邮件报警
2.监控CPU的负载情况
- #!/bin/bash
- #Filename: cpu_load.sh
- #Date: 20120322
- LOAD_15=$(uptime | awk '{print $NF}')
- CPU_num=$(grep -c 'model name' /proc/cpuinfo)
- LOAD_avg=`echo "scale=2;a=$LOAD_15/$CPU_num;if(length(a)==scale(a))print 0;print a"|bc`
- INT_avg=`echo $LOAD_avg |cut -f 1 -d "."`
- LOAD_warn=0.70
- if (($INT_avg > 0)); then
- echo "当前服务器15分钟的平均负载为$LOAD_avg,超过警戒值1.0,请立即处理"
- else
- LOAD_now=`expr $LOAD_avg \> $LOAD_warn`
- if (($LOAD_now == 1)); then
- echo "当前服务器15分钟的平均负载为$LOAD_avg,超过警戒值0.70,请及时处理。"
- fi
- fi
判断cpu负载情况,就否超出设定值。
3.监控SWAP使用情况
- #!/bin/bash
- #Filename: swap.sh
- #Date: 20120322
- TOTAL=$(free -m | grep "Swap:" | awk '{print $2}')
- USED=$(FREE=$(free -m | grep "Swap:" | awk '{print $3}'))
- FREE=$(free -m | grep "Swap:" | awk '{print $4}')
- SWAP_per=$(expr $FREE \* 100 / $TOTAL)
- SWAP_warn=50
- if [ $SWAP_per -lt $SWAP_warn ]; then
- echo "当前服务器SWAP空间可用为:$FREE M,剩余不足50%."
- fi
判断swap使用百分比是否超过设定值,这里可以修改为通过邮件报警
4.使用curl判断网站是否能正常访问
- #!/bin/bash
- #Filename: web.sh
- #Date: 20110322
- url=${1?"请输入检测的url地址"}
- Status=$(curl -s --head $url | awk '/HTTP/{print $2}')
- [ -z $Status ] && Status=400
- if [ "$Status" -eq 200 ]; then
- echo "$url能正常访问"
- else
- echo "$url不能访问,请检查!"
- fi
PS:
.可以实现通过调用飞信API接口实现短信提示
API接口:http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto=13912345678&message=短信内容
.
以上shell脚本可通过配合crontab实现自动监控。