あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

Monit の導入 - 設定ファイルいくつか

monit の設定ファイルですが、pid ファイルを参照し、無ければサービスの再起動、もしくは、指定されたパスのデバイスへアクセスし、情報の取得、等が出来るようです。
以下は、徹夜で設置したサービスに突っ込んだ設定ファイルのちょっと変更した例。そのままでも使えるとは思いますが、閾値は導入先の環境に合わせて下さい。

空き容量のアラート

#
# ローカル容量監視
# -> 2 cycles = 60sec * 5
#    5 分間、HDD (/var以下) が、90% を超えていれば、アラートメールが飛ぶ
check device hda4 with path /dev/hda4
 if space usage > 90% for 5 cycles then alert

/dev/hda4 が、/var 以下をマウントしていたので。yum 等で何も考えずにインストールすると、大抵は /var 以下が食いつぶされていくので、監視をおすすめします。
ちなみに、 /dev/hda4 とかのパスは、df コマンドで確認できます。
/dev/hda4 の部分を書き換えれば、他のデバイスも監視可能。

Apache

check process apache with pidfile /var/run/httpd.pid
      start program = "/etc/init.d/httpd start"
      stop program = "/etc/init.d/httpd stop"
      if failed port 80 then restart
      if cpu > 90% for 5 cycles then alert
      if cpu > 100% for 5 cycles then restart
      if mem > 90% for 5 cycles then alert
      if mem > 100% for 5 cycles then restart

80 番ポートを監視し、対象のポートを利用するプロセスを見失ったら再起動するっぽい。pid もチェックしてると思われる。
cpu もしくは mem が、利用率 90% を 5 サイクル以上継続すると、アラートメールが飛ぶ。
同じく、利用率が 100% で頭がヒットした状態が 5 サイクル以上続くと、強制的にアプリケーション再起動。

MySQL

check process mysql with pidfile /var/lib/mysql/www.HOST.pid
   start program = "/etc/init.d/mysql start"
   stop program = "/etc/init.d/mysql stop"
   if failed port 3306 protocol mysql then restart
   if cpu > 90% for 5 cycles then alert
   if cpu > 100% for 5 cycles then restart
   if mem > 90% for 5 cycles then alert
   if mem > 100% for 5 cycles then restart

Apache と同じ、違うのは監視ポートだけ。

ちなみにそれぞれのファイルですが、先ほどのエントリで書いた Include な指定先のディレクトリに、どんな名前でもいいので、置けば認識されます。僕は、上から順に「device」「httpd」「mysqld」という名前で設置してます。

とりあえずこれで終了、お疲れさまでした。
あとはウェブ確認画面はじぶんとことお客さんにだけ解放するとか、実際見られると危ないからあえてコメントアウトして使えないようにしておくとかも必要ですが、そこは自由に。基本的に、再起動系の事は、pid ファイルが無いと実施できないので、注意してください。

さて、徹夜のせいで僕のゴールデンボールがギリギリと痛いんですが何ですかねぇコレ……、としょうもない事を書きつつ、サーバ4台をセットアップしながらお送りしました。もうやだ帰りたいって今日 MH3 発売日じゃない。そして MacBook のバッテリも切れそうやべえwwwwww