もふもふ技術部

CentOS 6.4にサーバ統合監視ツールのNagiosを使ってWEBサイトの死活監視する


本音はAWSのCloudWatchを使いたいんですが、今はAWSとそれ以外が混在している状態なのでしょうがない。

WEBサーバはApacheを使っていきます。

ブラウザで画面が見えるまで

まずはnagiosとnagios-pluginsをインストールします。check_httpがプラグインとして提供されているので。

無事インストールが完了したら設定ファイルをイジイジしていきます。まずは通知先メールアドレスの設定。ちなみにメールサーバによっては通知メールがブロックされるところもあるので注意。

nagiosはブラウザで状況を監視出来るツールなので、apacheでアクセス出来るように設定ファイルを修正します。

httpsにしたかったのですが443ポートが埋まっていたので、バーチャルホストで444ポートを使用しています。

Allow fromでIP制限するのが一般的なようですが、今回の環境はiptablesでipフィルタリングしていて、重複設定になってめんどくさいので全部通しちゃってます。ファイアウォールなど使ってない環境では設定にご注意を。

続いて、BASIC認証のパスワードを設定します。どうやらnagios自身には認証の仕組みがないので、BASIC認証を使用するのが定石っぽい。

サービスを開始します。

これで画面が開きましたね!
nagios_01

WEBサイトの死活監視の設定

続いてターゲットのWEBサイトの死活監視をするための設定をしていきます。

こちらのエントリが非常に参考になりました。
http://d.hatena.ne.jp/t_fujii/20080815/1218770999

リモートホスト監視用の設定ファイルを作成します。

check_httpsコマンドはデフォルトでは存在しないので定義してあげる必要がある。

画面から確認してみると404になっていた。あれ?

うまくいかなければ直接check_httpコマンド叩いてみるとデバッグしやすい。

/index を / に変えたら通ったっぽい。あれれ、/indexでもアクセス出来たはずなんだけど…。ひとまず先へ進めますか。

そしたら先ほど該当部分を修正します。

画面から確認してみます。
やったあ!OKになってますね!
nagios_03

ちなみに該当サーバのhttpdを落としてみるとちゃんとCRITICALになりました。
nagios_04

メール通知

さて、ここまで出来たのはいいのですが、CRITICALになってもメールが飛んできません。なんなん!

メール通知が定義されている箇所を読むと、どうやら/bin/mailで送信していることがわかる。

たしかCentOSはデフォで/bin/mailが入ってなかったはず、と思ったら案の定入ってなかったので、mailxをインストールします。

よしこれでOK!

と思いきや、やっぱりメールが飛ばない。なんでやねん。

原因の切り分けのためまずはmailコマンドを直接叩いて確認。

ちゃんと送信されて、問題なく受信できた。

次はmailのログを監視してみる。

するとCRITICALになってもなんのアクションもされていないことがわかった。そもそもnagiosがメール送信していないということですね。

よくよく調べるとcheck_httpコマンドの通知設定が無効になっていた。
ちょっとハマってしまったですよ…。

再度CRITICALにしてみる。

やったああ!通知メールが飛んできましたね!

感想。
死活監視したいだけなのにちょっと手間かかりすぎてしまいました。ホントにそれだけだったらwgetをcronで回しておくだけで出来るので、監視対象が少ないうちはそれで十分かもですね。

ただnagiosは他にもいろんな監視が出来るので今後頼りになるかもしれない。その時はよろしく!

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。
Tagged on: