Disk I/Oの使用率を監視するワンライナー

iostat -x の %util を監視してしきい値を超えたらアラートメール飛ばしたいなぁと思って crontab 書いた。こんな感じ。

*/5 * * * * perl -wle 'my $s = `/usr/bin/iostat -xk /dev/sd[abc] 270 2 | tail -4`; print $s if $s =~ m{\s(?:[0-9]{3}|[5-9][0-9])\.[0-9]+$}m'

ポイントは、

  • iostat の後ろから2つ目の引数がサンプリングを行う秒数
  • tail で デバイス数+1 することで、最後のサンプルを取り出す
  • 正規表現で50%以上だった場合に標準出力に iostat の結果を出す=メール送信