shell监控系统资源并通过短信报警的脚本
目标分析:
所需的监控资源:
1、登陆用户数
2、CPU负载
3、服务探测
4、硬盘空间(根分区、应用分区、备份分区)
5、内存资源
短信接口、邮件接口
格式上传至附件
脚本:
#!/bin/bash
#监控用户登录
Usermonitor(){
LoginUser=`uptime|awk'{print$6}'`
if[$LoginUser-ge2]
then
Critical="当前系统登录用户人数超过1人,具体人数为:$LoginUser个,请确认操作者人数。"
status=0
else
echo"loginuserok"
status=1
fi
013.
}
#监控内存
MemMonitor(){
MemTotal=`free-m|grepMem|awk-F:'{print$2}'|awk'{print$1}'`
MemFree=`free-m|grepcache|awkNR==2|awk'{print$4}'`
MemFreeB=`awk'BEGIN{printf"%.2f%\n",'$MemFree/$MemTotal\*100'}'`
MemFreeS=`awk'BEGIN{printf"%.f",'$MemFree/$MemTotal\*100'}'`
if[$MemFreeS-lt10]
then
Critical="系统可用内存小于10%,实际可用内存为:$MemFreeB,请处理。"
status=0
elif[$MemFreeS-lt20]
then
Warning="系统可用内存小于20%,实际可用内存为:$MemFreeB,请查看。"
WarningT="内存报警"
status=1
else
echo"MemOK"
status=2
fi
}
#监控分区空间大小
DiskMonitorG(){
#根分区
DiskGB=`df-h|awkNR==2|awk'{print$5}'`
DiskGS=`df-h|awkNR==2|awk'{print$5}'|awk-F%'{print$1}'`
if[$DiskGS-gt90]
then
Critical="根分区使用率超过90%,实际已使用$DiskGB,请处理。"
status=0
elif[$DiskGS-gt80-a$DiskGS-lt90]
then
Warning="根分区使用率超过80%,实际已使用$DiskGB,请查看。"
WarningT="根分区报警"
status=1
else
echo"DiskGBOk"
status=2
fi
}
DiskMonitorA(){
#应用分区
ApplyB=`df-h|awkNR==4|awk'{print$5}'`
ApplyS=`df-h|awkNR==4|awk'{print$5}'|awk-F%'{print$1}'`
if[$ApplyS-gt90]
then
Critical="应用分区使用率超过90%,实际已使用$ApplyB,请处理."
status=0
elif[$ApplyS-gt80-a$ApplyS-lt90]
then
Warning="应用分区使用率超过80%,实际已使用$ApplyB,请查看。"
WarningT="应用分区报警"
status=1
else
echo"Applyok"
status=2
fi
}
#监控CPU负载
CPULoad(){
CPULoad1=`uptime|awk'{print$10}'|awk-F.'{print$1}'`
CPULoad2=`uptime`
if[$CPULoad1-gt5]
then
Critical="CPU负载过高,请即使处理。$CPULoad2"
status=0
elif[$CPULoad1-gt3-a$CPULoad1-lt5]
then
Warning="CPU负载警告,$Warning"
WarningT="CPU负载报警"
status=1
else
echo"CPUOK"
status=2
fi
}
#监控服务状态
ServerMonitor(){
#服务状态监控
timeout=10
makfails=2
fails=0
success=0
whiletrue
do
/usr/bin/wget--timeout=$timeout--tries=1http://192.168.20.84/-q-O/dev/null
if[$?-ne0]
then
letfails=fails+1
success=0
else
fails=0
letsuccess=1
fi
if[$success-ge1]
then
exit0
fi
if[$fails-ge1]
then
Critical="应用服务出现故障,请紧急处理!"
echo$Critical|mutt-s"服务down"hao.lulu@chinaebi.com
exit-1
fi
done
}
#发送报警短信、报警邮件
forninUsermonitorMemMonitorDiskMonitorGDiskMonitorACPULoadServerMonitor
do
$n
if[$status-eq0]
then
curl"http://172.20.36.118/app/tms.do?tranCode=TM0311&;content=$Critical"
elif[$status-eq1]
then
curl"http://172.20.36.118/app/tms.do?tranCode=TM0310&;title=$WarningT&content=Warning"
else
echo"ok"
fi
done
总结
以上所述是小编给大家介绍的shell监控系统资源并通过短信报警的脚本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。