2008年8月17日日曜日

Monitでサービス・プロセス監視、止まったら勝手にリスタート(1)

Linuxサーバの話。
シンプルにサーバ上のプロセス監視をしたければ「Monit」が最近のお気に入りです。
 
プロセスの自動再起動とかは、「qmail+FreeBSDでdaemontoolsを使う」といった組み合わせをしたことはありますが、どうにもプロセスの堅牢化まで手順が多くて大変でした。
 
この前CentOS5でちょっと止まりにくい(止まってもすぐわかる)サーバを作らないといかんとなったので、外部監視はNagios、内部リソース情報取得にNRPE、そしてプロセスの死活監視をMonitでやって見たところMonitの使い勝手が思いのほか良かったので使い方を記事にしておく。
 

Monit公式サイトとマニュアルドキュメント
http://www.tildeslash.com/monit/
http://www.tildeslash.com/monit/doc/


 

    Monitによるローカルプロセス監視の特徴のうち、お気に入り&気になるポイント一部抜粋
  • 監視対象プロセスの起動手順に変更の必要がない
    Monitは単体で完結して各監視、アラート通知をしてくれます。メールサーバは適当なものを指定する。

  •  
  • 起動および停止スクリプトの指定をしておき、対象プロセスの起動・停止が可能
    止まっていたらアラートと同時にプロセスの起動ができる、起動したら次の監視タイミングで復帰の通知
    また、指定回数連続して起動失敗したらあきらめてくれるので無限ループにはならない

  •  
  • PIDファイルを指定しておけばPIDとプロセスを紐づけし、変更を検知できる
    監視対象が「プロセス名+PID」の組み合わせになるのでより細かいプロセス監視ができる。
    手動でサービスリスタートが発生した場合などにアラートをあげることができる

  •  
  • 簡易サービスチェックが可能
    HTTPなど代表的なプロトコルはサーバレスポンスも見るほか、SSL可のTCPセッションで監視可能
    結果NGなら再起動などの条件指定

  •  
  • initが監視するプロセスとして、リスポーンオプションを指定した起動が可能
    これのおかげでとにかく固い印象、initがmonit自身を監視してリスポーンする。initの停止=サーバシステムの停止なのでそれの検知は外部監視でやっている。

  •  
  • 依存関係登録可能(試してない)
    公式のドキュメントより、具体的には「oracleリスタートしたらapacheもリスタートする必要があるよね…」という場合にどうぞという機能らしい

  •  
  • 関連するバイナリやコンフィグファイルやの改ざんチェックが可能(試したけど使わなかった)
    依存関係の機能関連として、プロセスが依存する対象にファイルチェックを指定できる。改ざんがあったらプロセスを止めるといった利用ができる
    これは単純に偉いと思うがメンテナンスしにくくなるので使わなかった。


 
 
さてそんなMonit、とりあえずの監視などは簡単に構築できるので公式のドキュメントでもいいが、日本語で見たい時は下記サイトがお勧めです。
内容は少し前のバージョンですがとても詳しい。使うだけでなく理解したい場合はこちらへ。

 
 

このブログではMonitをrpmまたはyumからインストールしてHTTPSのWEB管理画面、メール通知設定と監視設定を記事にします。
しかし長いので記事を3つくらいに分ける。
 

続きはこちら → Monitでサービス・プロセス監視、止まったら勝手にリスタート(2)
 
 



Monitでサービス・プロセス監視、止まったら勝手にリスタート(1)
Monitでサービス・プロセス監視、止まったら勝手にリスタート(2)
Monitでサービス・プロセス監視、止まったら勝手にリスタート(3)
Monitでサービス・プロセス監視、止まったら勝手にリスタート(4)