加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

monitoring – 当CPU使用率达到100%时通知的Shell脚本

发布时间:2020-12-15 18:30:35 所属栏目:安全 来源:网络整理
导读:sar -u 1 | awk ‘{print $9}’ 所以这会给我每秒“CPU空闲”值.我想在这种情况下收到电子邮件,连续10次将值变为“0”? 这样做的适当方法是什么? 我找到了初步解决方案 sar -u 1 | awk '{ if (int($9)==0) { i=i+1; { print i,$9 } } if (int($9)=0) { i=0

sar -u 1 | awk ‘{print $9}’

所以这会给我每秒“CPU空闲”值.我想在这种情况下收到电子邮件,连续10次将值变为“0”?

这样做的适当方法是什么?

我找到了初步解决方案

sar -u 1 | awk '{ if (int($9)==0) { 
                 i=i+1; {
                           print i,$9
                         }
                  }
       if (int($9)>=0) {
                  i=0
               }
               if (i>=10) print "sending email"
            }'

但在我打印“发送电子邮件”的最后一行,我不能像这样打电话给mutt

sar -u 1 | awk '{ if (int($9)==0) { 
                 i=i+1; {
                           print i,$9
                         }
                  }
       if (int($9)>=0) {
                  i=0
               }
               if (i>=10) mutt -s "VPNC Problem" test@test.com < /home/semenov/strace.output
            }'

问题是它在mutt命令调用中说“语法”错误.有任何想法吗?

适当的方法是不要这样做.

CPU利用率(使用百分比或%空闲)是要监控的虚假值 – 在正常操作期间的不同时间它可以(并且应该)为100%.您是否真的想要一堆警报,因为您的监控系统在检查CPU利用率的同时碰巧得到了5-10个Web请求?我打赌答案是否定的.

相反,您应该监视负载平均值(由其他工具中的正常运行时间报告),这是要立即运行的进程数量(OS调度术语中RunQ的长度)的度量.
该值通常报告为三个值,1分钟负载平均值(“现在”),5分钟负载平均值和15分钟负载平均值.

负载平均值低于1表示“卸载”系统(大量的空闲CPU时间,没有程序等待执行).
高负载平均值(“高”相对于您拥有的CPU数量以及系统在负载下的交互性能)是值得关注的问题,应予以调查.

我通常使用10作为负载平均警报的阈值 – 一个足够高的值,通常不应该在生产中看到它,但是足够低,以至于一旦警报跳闸就应该有时间响应这种情况.

在任何一种情况下监控的脚本都是微不足道的:

# [get your value and stuff it into $value
# Pick an appropriate threshold and stuff it into $threshold
if [ $value -gt $threshold ]; then  # (-gt or -lt as appropriate)
    echo "`hostname` needs attention!" | 
         mail -s "`hostname` monitoring alert" user@host
fi

获取和填充部分留给读者练习.
如果你真的想要做得对,你应该调查some monitoring systems和SNMP ……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读