とあるサーバでロードアベレージが上がったときに何が起きているか知りたくなったので書いてみました。他に似たツールがあれば教えて欲しいです
- cpan: https://metacpan.org/release/App-LoadWatcher
- github: https://github.com/kazeburo/App-LoadWatcher
インストール
インストールはcpanmを使います
$ cpanm App::LoadWatcher
cpanmが入っていないなら
$ curl -L http://cpanmin.us/ | perl - App::LoadWatcher
とすると楽です
使い方
ロードアベレージが「0.6」以上のときにuptimeを表示するには
$ load_watcher -l 0.6 -- uptime
こんな感じです。ハイフン2つ書いたあとにコマンドを書きます
オプションは
-load -l = load average ロードアベレージの閾値
-interval -i = interval second ロードアベレージを確認する間隔(秒)
-continue -c デフォルトではコマンド実行後に終了するが、終了させずに繰り返し動作させる
となります
今回、負荷の上がったときのMySQLの通信を見たかったので
$ sudo load_watcher -l 1 -- 'tcpdump -s 65535 -x -nn -q -tttt -i any -c 100000 port 3306 > /tmp/mysql.tcp'
こんな感じで実行しました。
ちなみに最初はこんなシェルを書いて実行してた。
while :
do
LOAD=$(cat /proc/loadavg |awk '{print $1*100}')
if [ $LOAD -gt 80 ]; then
tcpdump -s 65535 -x ...
exit
fi
sleep 5
done
シェル力が低くてすみません