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 }'
适当的方法是不要这样做.
原文链接:/bash/385425.htmlcpu利用率(使用百分比或%空闲)是要监控的虚假值 – 在正常操作期间的不同时间它可以(并且应该)为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 ……