【メモ】 サーバのLoad Averageなどを監視するコマンド「top」をログに保存する(PHP版)

前回の続きです。

前回

【メモ】 サーバのLoad Averageなどを監視するコマンド「top」をログに保存する – NOBODY:PLACE – MUTTER

よくよく考えると生ログが欲しいわけじゃない

前回はコマンドラインから起動させてログを保存する方法と、cronに設定する方法を調べてメモしたんだけどよくよく考えたら生ログが欲しいわけでもないので、cronに設定するのは処理プログラム(例えばでPHP。シェルが一番良いと思うけど)にして、そこからログに記録するなり処理してDBに突っ込むなりしてやった方が有益だってことに気付いた。

要は生ログではなく数字の推移が見たいだけで、生ログで推移を追うのは無理だし後で処理するんだったら同じことなので。



popenを使う

というわけで、処理プログラムの例。PHPからtopコマンドを起動するのにはpopenを使う。

$pp = popen('/usr/bin/top -b -n 2 -d 10', 'r');
while(!feof($pp)):
echo fgets($pp) . '';
endwhile;
pclose($pp);

10秒間隔で2回というコマンドなので処理に時間は掛かるけれども別に重いわけでもないので問題ない。これを適当に正規表現とかでゴニョってやれば期待するデータが得られると思われ。

あ、もちろんWindowsでは動きません。はい。