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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。