Search




TOPページへ

このブログのフィードを取得
[フィードとは]

Powered by
Movable Type 4.23-ja

template by tokyobuddha

 ■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
 -------------------------

Galler Chocolate
ベルギー王室御用達として認定されたチョコレートブランド、ガレー。

監視サーバのPCMCIAのハングアップ?

会社で使っている監視サーバは、相当古いノートPCで行っている。
※SHARP Mebius PC-PJ1(CPU:MMX233)

2年前程まえにこの監視サーバ(Nagios)を作成したが、監視する必要が無くなったため、お蔵入りになっていたが、最近サーバ関連の監視が必要になった為、引っ張り出してきた。

2年前に使っていたときも、NICに負荷が掛かると「PCMCIA」が死んでしまう現象が出ていたが、これと言って対策は行っていなかった。
しかし、現在監視しているサーバの特性を考えると24時間365日の監視が必要になる。
監視サーバが死んでしまっては何にもならない・・・・。
っと言うことで、対策を行ってみた。

PCMCIAの死んでしまう原因は「負荷」に有るようで、NICを流れるトラフィックを制限することで回避出来そう。

CBQ(Class-based Queueing)を利用し、トラフィック制限を行ったが一向に改善されない。
通過するトラフィックは制限出来ても、負荷が掛かった状態のようだ。

そこで、負荷により死んでしまったNICを検知し、PCMCIAを再起動させる仕組みを取り入れる。
ググってみると「Swatch」と言うserviceが良いらしい。

最新のswatch-3.2.1.tar.gzをGETし「make」&「make install」するが、テンプレートが無い・・・。
テンプレートが無くても、問題は無いが何となく気持ちが悪い。
※インストール方法はココを参照

再度、swatch-3.1.1.tar.gzをGETし「make」&「make install」
テンプレートも出来ている。

出来たテンプレートを cp -pf swatchrc.personal /root/.swatchrc としてコピー

これで、準備OK

コピーした「.swatchrc」に必要な記述を行えば監視が出来るのだが、どのLogをどの様に関しすれば良いのだろうか?

NICが死んでしまうLogを探してみる。

色々探していると「/var/log/messages」のLogに書き込みされている
書き込み内容はこんな感じ・・・・

============================================
kernel: eth0: next frame inconsistency, 0xaa
last message repeated 26 times
kernel: eth0: Too much work at interrupt, status 0x54
============================================

過去のログを見ても同様の書き込みが有る。
ここでは「kernel: eth0: next frame inconsistency」の書き込みが有ったらアクションを起こさせよう。

watchfor /kernel: eth0: next frame inconsistency/
echo
mail=hogehoge1@hogehoge.com:hogehoge@docomo.ne.jp,subject=pcmcia service reboot
exec /etc/rc.d/init.d/pcmcia restart


監視内容は次の通りです。

「kernel: eth0: next frame inconsistency」がmessageLogに書き込まれたら、アクションを起こす。

今回は1つの内容でアクションを起こさせるが、複数を監視し何れかが該当した場合でも対応可能。
※ /ログ1 | ログ2/

今回指定するアクションは2つ。
メールを送って、コマンド実行。

メールの配送先は、PCを携帯電話へ通知した。
複数有る場合には「:」で区切ることで対応可能。
送るメールにsubjectを付けることも可能。

次にコマンド実行。
今回の現象はPCMCIAが死んでしまう現象。
PCMCIAを再起動すれば復帰する。
そこで「exec /etc/rc.d/init.d/pcmcia restart」を指定して強制的に復帰させる。

このほか、ベルを鳴らしたりすることも可能らしい・・・・

これで、大枠は完了した。

次に、OS再起動の際に自動的にswatchを起動する方法を検討。
方法は2つ。

1,/etc/rc.d/rc.local にswatch -c /root/.swatchrc -t /var/log/messages &を記述する
2,/etc/rc.d/init.d/にswatchを作成して、次の内容を過去込む。

============================================================
#! /bin/sh
#
# chkconfig: 2345 99 99
# description: tcpserver
# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# See how we were called.
case "$1" in
start)
echo -n "Starting Swatch: "
/usr/bin/swatch -c /root/.swatchrc -t /var/log/messages >/dev/null 2>&1 &
RETVAL=$?
echo
;;

stop)
echo -n "Stopping Swatch: "
killproc tail
RETVAL=$?
echo
;;

restart)
$0 stop
$0 start
RETVAL=$?
;;

*)
echo "Usage: swatch {start|stop|restart}"
exit 1

esac
exit $RETVAL
============================================================

そして、chkconfig swatch on

この何れかで行けるはず。

任意にstop&startを行いたいので、今回は「2」の方法を選択した。

では、serviceを起動して様子を見てみよう。。。

/etc/rc.d/init.d/swatch start


これで、NICが死ぬまで待ってみよう・・・(笑


投稿時間: 20:45