shell脚本监控服务器状态

post by rocdk890 / 2013-4-25 15:07 Thursday linux技术
  想到公司内部测试服务器还没有系统状态监控,不想装nagios来监控,那样太麻烦了,又不想自己去写脚本,网上找了个,根据自己服务器的情况稍微修改了下,这里还要再多说一句,并不是网上发出来shell脚本就适合你的情况,最好是自己先修改测试下再部署.
  系统:centos 5.5
1.监控服务器状态脚本内容:
#!/bin/bash    
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`  
 
cpu_num=`grep -c 'model name' /proc/cpuinfo`  
 
load_15=`uptime | awk '{print $NF}'`
 
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`  
 
average_int=`echo $average_load | cut -f 1 -d "."`  
  
load_warn=0.70  
 
if (($average_int > 0)); then  
      echo "$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!" | mailx -s "$IP 服务器系统负载严重告警!!!"  rocdk@163.com  
else  
   
load_now=`expr $average_load \> $load_warn`  
   
 if (($load_now == 1)); then  
    echo "$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。" | mailx -s "$IP 服务器系统负载告警"  rocdk@163.com  
 fi  
 
fi  
     
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`  
 
if (($cpu_idle < 20)); then  
    echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" | mailx -s "$IP 服务器CPU告警"  rocdk@163.com  
fi  
 
swap_total=`free -m | grep Swap | awk '{print  $2}'`  
  
swap_free=`free -m | grep Swap | awk '{print  $4}'`  
 
swap_used=`free -m | grep Swap | awk '{print  $3}'`  
 
if (($swap_used != 0)); then    
   swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`  
  
   swap_warn=0.20  
   
   swap_now=`expr $swap_per \> $swap_warn`  
   
  if (($swap_now == 0)); then  
    echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。" | mailx -s "$IP 服务器内存告警"  rocdk@163.com  
  fi  
 
fi  
   
#disk_sda=`df -h | grep /dev/sda3 | awk '{print $5}' | cut -f 1 -d "%"`
disk_sda=`df -Ph |grep /dev/mapper/VolGroup00-LogVol00|awk '{print $5}'|cut -f 1 -d "%"`
   
if (($disk_sda > 80)); then  
      echo "$IP 服务器 /根分区 使用率已经超过80%,请及时处理。" | mailx -s "$IP 服务器硬盘告警"  rocdk@163.com  
fi  
   
users=`uptime | awk '{print $6}'`  
   
if (($users >= 5)); then  
      echo "$IP 服务器用户数已经达到$users个,请及时处理。" | mailx -s "$IP 服务器用户数告警" rocdk@163.com  
fi 

此脚本需要bc和mailx配合才能正常运行,如果没有装这两个的,请先安装或者先单独运行脚本再让crontab去执行.

chmod +x /root/webbak/sys-monitor.sh

2.加入crontab
*/10 * * * * root /root/webbak/sys-monitor.sh

service crond reload
点击查看原图
可以从crond日志里看到,脚本已经被crontab执行了.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-351.html

标签: 服务器 shell 脚本 监控 邮件 状态 mail server

  1. 2015-02-28 15:14
    @沉默:亲,不敢啊,慢慢学吧,我也还在学习中.
  1. gravatar 沉默
    2015-02-27 16:38
    能不能指点指点我

评论: