kenanのブログ

闘病生活

munin入れてみた。

最近TwitterIrcGatewayが爆発したりトラフィック量がすごいという話があったので監視するやつ入れた。

munin

sudo aptitude install munin munin-node
sudo vim /etc/munin/munin-node.conf
# Which port to bind to;
host *
user munin
group munin
setsid yes

mysql が途中で切れる問題。

http://gigazine.net/index.php?/news/comments/20070930_munin_mysql_graph_blank/
http://nullpopopo.blogcube.info/2008/05/munin-ip.html

[mysql*]
# env.mysqlopts --defaults-extra-file=/etc/mysql/debian.cnf
env.mysqlopts -u root -pパスワード
env.mysqladmin /usr/bin/mysqladmin
  • pのすぐ後ろにパスワードつなげて書かないといけないのね。
sudo chwon -R munin:munin /var/www/munin

sudo /etc/init.d/munin-node restart

バーチャルホストとか設定して
http://localhost/munin/へアクセス。

見た目こんな感じ

munin1 on Flickr - Photo Sharing!

このままじゃ負荷が高くなったのを指くわえて見てるだけなのでシェルスクリプトで再起動をできるように適当に書いた。(というか教えてもらった。

#!/bin/bash

TIGDIR=/home/kenan/TwitterIrcGateway

while true
do
   Alive=`pgrep -f TwitterIrcGateway | wc -l`
   if [ $Alive = 0 ]; then
      mono $TIGDIR/TwitterIrcGatewayCLI.exe --interval=150 --enable-replies-check=true
 --interval-replies=50 --set-topic-onstatuschanged=true --encoding=utf-8 --channel-name=TimeLine &
      time=`date "+%Y/%m/%d %H:%M"`
      echo "restart $time" >> /home/kenan/tigps.log
      echo `w | head -n 1 | awk -F"," '{print $4"," $5"," $6}'` >> /home/kenan/tigps.log
   fi

   CPUusage=`ps xu | grep TwitterIrcGateway | grep -v grep | head -n 1 | awk '{print $3}'`
   if [ `echo "$CPUusage > 100" | bc` == 1 ]; then
      pgrep -f TwitterIrcGateway | xargs kill
      time=`date "+%Y/%m/%d %H:%M"`
      echo "killed [ cpu usage 100% over ] $time" >> /home/kenan/tigps.log
      echo `w | head -n 1 | awk -F"," '{print $4"," $5"," $6}'` >> /home/kenan/tigps.log
   fi
   sleep 5
done

上がプロセスチェックして再起動するやつで、下がCPUの使用率が100%超えたらプロセス殺すやつ。
再起動するシェルはゆーたさんに以前教えてもらえたのでそれを流用しました。
使用率見てプロセスを殺すやつは、一応コマンド上は使用率の数値は取れてるので一応通るとは思いますがこれを書いてから未だにTIGが暴走したことないのでよくわかりません。

まあ、うちのマシンはCPU使用率が100%を超えて200%まで使われてしまうアプリがmonoで動かすTIGだけなので上のスクリプトでいいかなと。

とかなんとかやってたらswirhenさんがいいものを書いてくれました。

TIGのCPU使用率が突然爆発して戻らなくなるのでなんとかした

こっちの方が無駄な処理が少なくて大変良いですね。