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 ……
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。