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

前端之家收集整理的这篇文章主要介绍了monitoring – 当CPU使用率达到100%时通知的Shell脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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 ……

原文链接:/bash/385425.html

猜你在找的Bash相关文章