我的目标是从top命令中检查不高于50的iowait值
如果价值高于50多个小时,则需要对此发出警报(通过脚本或其他选项)
我到现在为止做的是:
top-n|grepiowait CPUstates:94.3%idle,0.5%user,5.2%kernel,0.0%iowait,0.0%swap
我可以很容易地捕捉到爱荷华州如下:
top-n|grepiowait|awk'{print$9}'|seds'/%//' 0.0
但如何validation至less一个小时以上的50以上的爱奥华值?
我相信你了解收集数据的一般方法,随着时间的推移收集和跟踪价值。 具体将是一个相当复杂的脚本,我们不是一个脚本写作服务。
如果你想要沿着这条路线走,你可能会发现sar或者iostat更有用。
然而,有比这更好的工具来做这样的事情,大多数人会使用某种监控工具,如zabbix , nagios , munin等。他们将收集统计发送警报等。在zabbix的情况下,他们甚至很容易安装和configuration。
你可以使用iostat
来达到这个目的。 只需运行iostat -y 3600 | grep -A 1 avg-cpu
iostat -y 3600 | grep -A 1 avg-cpu
上面的命令将每小时报告各种CPU状态(idle,iowait,ecc),下面的grep只会推断你关心的两行。 显然,在剧本投入生产之前,可以用较less的等待时间(例如:5秒)进行一些testing。
编辑:对于solaris,你可以使用iostat -c 3600
grep
命令将是不同的,所以你必须testing自己。