我的目标是从top命令中检查不大于50的iowait值。
如果一个小时以上的值大于50,则需要对此发出警报(通过脚本或其他选项)。
到目前为止我所做的是:
top-n|grepiowait
CPUstates:94.3%idle,0.5%user,5.2%kernel,0.0%iowait,0.0%swap我可以轻松地将iowait捕获如下:
top-n|grepiowait|awk'{print$9}'|seds'/%//'
0.0但是,如何在至少一个小时内验证大于50的iowait值呢?
发布于 2015-07-29 06:56:57
我相信您理解收集数据的一般方法以及收集的时间和跟踪值随时间的变化。细节将是相当复杂的脚本,我们不是一个脚本编写服务。
如果您想沿着这条路线走下去,您可能会发现沙尔或碘化钾更有用。
然而,有比顶部更好的工具来做这样的事情,大多数人都会使用某种监控工具,比如扎比、纳古斯、穆宁等等。他们会收集统计数据、发送警报等等。如果是扎比,它们甚至很容易安装和配置。
发布于 2015-07-29 07:27:38
您可以为此目的使用iostat。只需运行iostat -y 3600 | grep -A 1 avg-cpu
上面的命令将每小时报告不同的CPU状态(空闲、iowait、ecc),下面的grep将只外推您关心的两行。显然,在将脚本投入生产之前,用较低的等待时间(例如:5秒)进行一些测试。
编辑:对于solaris,您可以使用iostat -c 3600,但是grep命令会有所不同,所以您必须自己测试。
https://serverfault.com/questions/709257
复制相似问题