设为首页 收藏本站
查看: 761|回复: 0

shell脚本之短信监控脚本(磁盘、cpu等等)

[复制链接]

尚未签到

发表于 2017-11-23 13:00:49 | 显示全部楼层 |阅读模式
                                                bin下
vim sms_monitor.sh
#!/bin/bash
cd `dirname $0`
timestamp=`date +"%F %H:%M:%S"`
disk_flag=false
inode_flag=false
ping_flag=false
cpu_flag=false
iowait_flag=false
sms_flag=false
disk_over=""
inode_over=""
ping_over=""
cpu_load_average_over=""
iowait_load_over=""
#创建和检查log文件
default_file=../log/runtime.log
audit_file=../log/audit.log
exec 2>>$default_file                #脚本未知错误保存
#读取json配置文件
json_path=../conf
json_file=`find $json_path -type f `
get_value_1 () {
keytmp=$1\"\:\"
cat $json_file |sed s#"^M"##g |tr '\n' ' ' |sed s#[[:space:]]##g |awk -F "$keytmp" '{print $2}' | awk -F '"' '{print $1}'
}
ip=`get_value_1 ip`
ping_target=`get_value_1 ping_target`
ping_count=`get_value_1 ping_count`
sms_server=`get_value_1 sms_server`
#检查磁盘容量使用情况
disk=【磁盘告警】生产服务器$ip磁盘告警,
a=`df -h | awk  '+$(NF-1)>70 {print $(NF-1)$NF}' | grep -v 192 | grep -v 172`
if [ -n "$a" ];then
disk_flag=true
fi
get_value () {
echo $1卷:空间占用率为:$2%。
}
for i in $a
do
number=`echo $i|awk -F%  '{print $1}'`
name=`echo $i|awk -F%  '{print $2}'`
value=`get_value $name $number`
disk_over=$disk_over$value
done
if [ "$disk_flag" = true ];then
disk_monitor=$disk$disk_over
elif [ "$disk_flag" = false ];then
disk_monitor=$disk_over
fi
#检查磁盘inode使用情况
inode=【磁盘告警】生产服务器$ip磁盘告警,
b=`df -hi | awk  '+$(NF-1)>70 {print $(NF-1)$NF}' | grep -v 192 | grep -v 172`
if [ -n "$b" ];then
inode_flag=true
fi
get_value2 () {
echo $1卷:inode百分比为:$2%。
}
for i in $b
do
number2=`echo $i|awk -F% '{print $1}'`
name2=`echo $i|awk -F% '{print $2}'`
value2=`get_value2 $name2 $number2`
inode_over=$inode_over$value2
done
if [ "$inode_flag" = true ];then
inode_monitor=$inode$inode_over
elif [ "$inode_flag" = false ];then
inode_monitor=$inode_over
fi
#检查丢包率
loss=`ping $ping_target -c $ping_count | grep % | tr ',' ' ' | awk  '{print $6}' | awk -F "%" '{print $1}'`
if [ "$loss" -ne 0 ];then
ping_over=【连通性告警】生产服务器"$ip"ping告警,丢包率为$loss%。
ping_flag=true
fi
if [ "$ping_flag" = true ];then
ping_monitor=$ping_over
elif [ "$ping_flag" = false ];then
ping_monitor=$ping_over
fi
#检查CPU负载情况
cpu_count=`grep 'model name' /proc/cpuinfo | wc -l`
define_cpu_load_average=`echo | awk "{print $cpu_count*0.7}"`
cpu_load_average=`uptime | awk -F "[ ,]" '{print $NF}'`
cpu_decimal_compare=$(echo "$cpu_load_average > $define_cpu_load_average" | bc)
if [ $cpu_decimal_compare -eq 1 ];then
cpu_load_average_over="【cpu告警】生产服务器"$ip",最近15分钟的cpu load average超过70%,为$cpu_load_average。"
cpu_flag=true
fi
if [ "$cpu_flag" = true ];then
cpu_load_average_monitor=$cpu_load_average_over
elif [ "$cpu_flag" = false ];then
cpu_load_average_monitor=$cpu_load_average_over
fi
#检查磁盘读写情况
iowait_load=`iostat | awk 'NR==4{print $4}'`
iowait_decimal_compare=$(echo "$iowait_load > 10" | bc)
if [ $iowait_decimal_compare -eq 1 ];then
iowait_load_over=【iowait告警】生产服务器"$ip",iowait超过10%,为$iowait_load%。
iowait_flag=true
fi
if [ "$iowait_flag" = true ];then
iowait_load_monitor=$iowait_load_over
elif [ "$iowait_flag" = false ];then
iowait_load_monitor=$iowait_load_over
fi
#拼接sms内容
if [ $disk_flag = true -o $inode_flag = true -o $ping_flag = true -o $cpu_flag = true -o $iowait_flag = true ];then
sms_flag=true
fi
if [ $sms_flag = true ];then
sms_msg=$disk_monitor$inode_monitor$ping_monitor$cpu_load_average_monitor$iowait_load_monitor
sms_json='{"msg":"'$sms_msg'","ip":"'$ip'","timestamp":"'$timestamp'","tags":"production","remark":"sms报警消息"}'
curl -i -X POST -H "'Content-type':'text/html', 'charset':'utf-8', 'Accept': 'text/plain'" -d "${sms_json}" "http://$sms_server/ots-manager/sp/sms/monitor/send" >>$default_file
else
echo "$timestamp,监控没有异常。" >>$audit_file
fi
conf下

vim conf.json

{
"ip":"192.168.1.1",
"ping_target":"192.168.1.228",
"ping_count":"4",
"sms_server":"192.168.1.228:6400"
}


                                       


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409862-1-1.html 上篇帖子: shell 微信报警脚本 下篇帖子: shell特殊符号,cut,sort,wc,uniq,tee,tr,split命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表