• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    shell监控系统资源并通过短信报警的脚本
    POST TIME:2021-10-18 15:55

    目标分析:

    所需的监控资源:

    1、登陆用户数
    2、CPU负载
    3、服务探测
    4、硬盘空间(根分区、应用分区、备份分区)
    5、内存资源

    短信接口、邮件接口

    格式上传至附件

    脚本:

    #!/bin/bash
    #监控用户登录
    Usermonitor () {
    LoginUser=`uptime | awk '{print $6}'`
    if [ $LoginUser -ge 2 ]
    then
    Critical="当前系统登录用户人数超过1人,具体人数为:$LoginUser 个,请确认操作者人数。"
    status=0
    else
    echo "loginuser ok"
    status=1
    fi
    013.
    }
    #监控内存
    MemMonitor () {
    MemTotal=`free -m | grep Mem | awk -F: '{print $2}' | awk '{print $1}'`
    MemFree=`free -m | grep cache | awk NR==2 | awk '{print $4}'`
    MemFreeB=`awk 'BEGIN{printf "%.2f%\n",'$MemFree/$MemTotal\*100'}'`
    MemFreeS=`awk 'BEGIN{printf "%.f",'$MemFree/$MemTotal\*100'}'`
    if [ $MemFreeS -lt 10 ]
    then
    Critical="系统可用内存小于10%,实际可用内存为:$MemFreeB ,请处理。"
    status=0
    elif [ $MemFreeS -lt 20 ]
    then
    Warning="系统可用内存小于20%,实际可用内存为:$MemFreeB ,请查看。"
    WarningT="内存报警"
    status=1
    else
    echo "Mem OK"
    status=2
    fi
    }
    #监控分区空间大小
    DiskMonitorG () {
    #根分区
    DiskGB=`df -h | awk NR==2 | awk '{print $5}'`
    DiskGS=`df -h | awk NR==2 | awk '{print $5}' | awk -F% '{print $1}'`
    if [ $DiskGS -gt 90 ]
    then
    Critical="根分区使用率超过90%,实际已使用 $DiskGB ,请处理。"
    status=0
    elif [ $DiskGS -gt 80 -a $DiskGS -lt 90 ]
    then
    Warning="根分区使用率超过80%,实际已使用 $DiskGB , 请查看。"
    WarningT="根分区报警"
    status=1
    else
    echo "DiskGB Ok"
    status=2
    fi
    }
    DiskMonitorA () {
    #应用分区
    ApplyB=`df -h | awk NR==4 | awk '{print $5}'`
    ApplyS=`df -h | awk NR==4 | awk '{print $5}' | awk -F% '{print $1}'`
    if [ $ApplyS -gt 90 ]
    then
    Critical="应用分区使用率超过90%,实际已使用 $ApplyB ,请处理."
    status=0
    elif [ $ApplyS -gt 80 -a $ApplyS -lt 90 ]
    then
    Warning="应用分区使用率超过80%,实际已使用 $ApplyB ,请查看。"
    WarningT="应用分区报警"
    status=1
    else
    echo "Apply ok"
    status=2
    fi
    }
    #监控CPU负载
    CPULoad () {
    CPULoad1=`uptime | awk '{print $10}' | awk -F. '{print $1}'`
    CPULoad2=`uptime`
    if [ $CPULoad1 -gt 5 ]
    then
    Critical="CPU负载过高,请即使处理。 $CPULoad2 "
    status=0
    elif [ $CPULoad1 -gt 3 -a $CPULoad1 -lt 5 ]
    then
    Warning="CPU负载警告, $Warning "
    WarningT="CPU负载报警"
    status=1
    else
    echo "CPU OK"
    status=2
    fi
    }
    #监控服务状态
    ServerMonitor () {
    #服务状态监控
    timeout=10
    makfails=2
    fails=0
    success=0
    while true
    do
    /usr/bin/wget --timeout=$timeout --tries=1 http://192.168.20.84/ -q -O /dev/null
    if [ $? -ne 0 ]
    then
    let fails=fails+1
    success=0
    else
    fails=0
    let success=1
    fi
    if [ $success -ge 1 ]
    then
    exit 0
    fi
    if [ $fails -ge 1 ]
    then
    Critical="应用服务出现故障,请紧急处理!"
    echo $Critical | mutt -s "服务down" hao.lulu@chinaebi.com
    exit -1
    fi
    done
    }
    #发送报警短信、报警邮件
    for n in Usermonitor MemMonitor DiskMonitorG DiskMonitorA CPULoad ServerMonitor
    do
    $n
    if [ $status -eq 0 ]
    then
    curl "http://172.20.36.118/app/tms.do?tranCode=TM0311;content=$Critical"
    elif [ $status -eq 1 ]
    then
    curl "http://172.20.36.118/app/tms.do?tranCode=TM0310;title=$WarningTcontent=Warning"
    else
    echo "ok"
    fi
    done

    总结

    以上所述是小编给大家介绍的shell监控系统资源并通过短信报警的脚本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    您可能感兴趣的文章:
    • Shell脚本监控服务器在线状态和邮件报警的方法
    • 用shell+sendmail实现服务器监控报警小脚本
    上一篇:浅析Shell中的定时任务 crontab
    下一篇:shell自动安装python3的脚本写法
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信