Linux(使っているのはRedhat Enterprise Linux 6.3)でCPU負荷とメモリ使用状況のログを取る必要があったので使い方をメモ。
①CPU使用率とメモリ使用状況の表示
vmstatを使うことでCPU・メモリ使用率のログが取ることができる。
5秒間隔で3回ログを取りたいときは、以下のように引数を指定する。
$vmstat 5 3
②時刻情報の表示
使用率の分析にはいつ出力されたかが知りたいと思うので、時刻と紐づけたいことが多いと思う。これはpipとawkを使うことで実現する。
vmstat 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }'
awkで時刻情報を出力させた後、現在の行(vmstat)を出力させている。
これで1秒間隔で、年/月/日 hh:mm:sssの時刻情報と紐づけて出力することができる。
③ログへの出力
実は上記のコマンドの標準出力をログに出そうとしても出力されない。
vmstat 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }' >> sample.log
これは、pipの後ろの処理が終了してからバッファに保存してある情報をファイルに書き込みむため。
そのため、system()関数を用いてバッファをリフレッシュする。
vmstat 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } {system("")}' >> sample.log
こちらに詳細な解説が。
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_13.html
これでやっと、途中でコマンドを終了させてもログに書き込まれているようになる。