top 命令 + 如何验证一小时的 iowait 值

top 命令 + 如何验证一小时的 iowait 值

我的目标是检查等待来自 top 命令的值不高于 50

如果值高于 50 并且持续一小时以上,则需要发出警报(通过脚本或其他选项)

到目前为止我所做的是:

  top-n|grepiowait
  CPUstates:94.3%idle,0.5%user,5.2%kernel,0.0%iowait,0.0%swap

我可以轻松捕获 iowait,如下所示:

 top-n|grepiowait|awk'{print$9}'|seds'/%//'
 0.0

但如何验证等待值至少高于 50 一小时?

答案1

我相信您了解收集数据的一般方法以及收集时间和随时间跟踪值。具体细节将是一个相当复杂的脚本,而我们不是脚本编写服务。

如果你想沿着这条路走下去,你可能会发现特区或者iostat更有用 YMMV。

然而,有比 top 更好的工具可以做这样的事情,大多数人会使用某种监控工具,例如扎比克斯纳吉奥斯穆宁等等。他们将收集统计数据并发送警报等。对于 zabbix 来说,它们甚至易于安装和配置。

答案2

您可以将iostat其用于此目的。只需运行iostat -y 3600 | grep -A 1 avg-cpu

上述命令将每小时报告各种 CPU 状态(idle、iowait、ecc),而以下 grep 将仅推断您关心的两行。显然,在将脚本投入生产之前,请进行一些等待时间较短(例如 5 秒)的测试。

编辑:对于 solaris,你可以使用iostat -c 3600但是,命令grep会有所不同,因此你必须自己测试。

相关内容