====== monitでサーバー監視 ====== サーバーを運用してるとどうしても不具合やアタックや暴走などでシステム障害となる事がある。 監視サーバー(Nagiosなど)で生死確認をしてるものの、OOM-KILLERでSSHDが落とされた日にゃ~データセンターに置いてるサーバーは現地に行かなきゃどうする事も出来なくなる。 まぁ、大概のデータセンターには電話かければサーバーの電源をOFF/ONしてくれるサービスがあるんだけど(^^;) 前置きが長すぎた。 そこでmonitというデーモン監視ツールを導入してみよう EPELやDAGのリポジトリにあるのでCentOS/Scientific LinuxだとyumでインストールOK yum -y install monit 特に依存関係とか無いみたいなので、monitだけがインストールされる。バージョンが気になるなら新しい方(たぶんDAGの方が新しい)のRPMを落としてきてインストールしても大丈夫だと思う。 インストールが完了すると以下のファイルやディレクトリが作成される /etc/monit.conf /etc/monit.d/logging monit.confの中をみてみる # set daemon mode timeout to 1 minute set daemon 60 # Include all files from /etc/monit.d/ include /etc/monit.d/* 殆どがコメントで、最後の4行(2行はコメントだけどw)でチェックのタイミングとコンフィグディレクトリの指定がされている。 set daemon 60 1分間隔でチェックを行う事を指定 include /etc/monit.d/* 設定ファイルの保存ディレクトリを指定 /etc/monit.d/loggingにはログの設定がされている # log to monit.log set logfile /var/log/monit syslogにも吐き出せるみたいだけど、あまりログファイルがごっちゃになってるのは嫌いなので、これでOKw ログローテーションとかは別途考えないといけないけどね 次にメールの設定をする。これをしておかないとメールで通知が来ないからねw vi /etc/monit.d/mailset set mailserver localhost set mail-format { from: root@$HOST subject: $SERVICE - $EVENT message: Renbird Surveillance - Monit - ACTION : $ACTION SERVICE : $SERVICE at $DATE on $HOST. DESCRIPTION : $DESCRIPTION } set alert 送信先メールアドレス とりあえずSSHDを監視する設定ファイルを作ってみる vi /etc/monit.d/sshd check process sshd with pidfile /var/run/sshd.pid every 2 cycle group system start program = "/etc/rc.d/init.d/sshd start" stop program = "/etc/rc.d/init.d/sshd stop" if 5 restarts within 5 cycles then unmonitor pidファイルの場所やサービスの起動スクリプト名とかは環境に合わせて変更が必要ですよ~ monitを起動してみよう service monit start 自動起動するように設定しとく chkconfig monit on