監視ツール導入 (Nagios + lighttpd)

Nagios


社内で開発・運用しているSNSの監視ツールとしてNagiosを導入することにした。

まずは手始めに、単純にURL監視がしたかっただけなのだが、要件を満たすツールは色々あって、どうしようかと思っていたら、はてなとmixiが使っていることを知り、Nagiosを触ってみる気になった。すげー単純(笑)


さて、Nagiosではご丁寧にお絵描きしてくれるそうなので、gdとかlibjpegやらlibpngやら必要になるみたい。
# 別になくても、お絵描きの部分以外、つまり監視と文字レポートは有効に働くので、そんなに問題ではない。


aptで調べてみると、どうやらlibgd-devあたりを入れると依存関係チェックで他のもサクッと入りそうなので、apt-get installでえいやっと。

# apt-get update
# apt-get install libgd-devel

続いて、Nagiosのインストール。
現時点(2007/03/19)の最新版(2.8)+日本語化パッチを導入。

$ cd ~/install
$ wget http://prdownloads.sourceforge.net/nagios/nagios-2.8.tar.gz?download
$ wget http://keihanna.dl.sourceforge.jp/nagios-jp/24484/nagios-2.8-ja.patch
$ tar zxvf nagios-2.8.tar.gz
$ mv nagios-2.8-ja.patch nagios-2.8/
$ cd nagios-2.8/
$ patch -ls -p0 -i nagios-2.8-ja.patch
$ ./configure --prefix=/usr/local/nagios
$ make all
$ sudo make install
$ sudo make install-init
$ sudo make install-commandmode
$ sudo make install-config
$ cd ..

プラグインもインストール。これも現時点の最新版。

$ tar zxvf nagios-plugins-1.4.6.tar.gz
$ cd nagios-plugins-1.4.6/
$ ./configure --prefix=/usr/local/nagios
$ make all
$ sudo make install

次に、ブラウザ越しにNagiosの管理画面にアクセスできるようにする設定を行う。
Google先生でやり方を調べると、ほとんどは世間で圧倒的なシェアを占めるApacheでの設定方法ばかり。


せっかくなので、lighttpd使いらしく、lighttpdの上で動かしてみるようにする。
# と、かっこよく書いたけど、設定方法はApache用のをlighttpd用に少し書き換えるだけなので、簡単(笑)

url.redirect += ( "^/nagios(\?.*)?$" => "/nagios/$1" )
$HTTP["url"] =~ "^/nagios/" {
  server.document-root = "/usr/local/nagios/share"
  server.indexfiles    = ( "index.html" )

  cgi.assign = ( ".cgi" => "" )

  alias.url = (
                "/nagios/cgi-bin/" => "/usr/local/nagios/sbin/",
                "/nagios/" => "/usr/local/nagios/share/"
              )
}

最初、cgi.assignの部分を、

cgi.assign = ( ".cgi" => "/usr/bin/perl" )

と設定していたら、以下のエラーが出た。

Unrecognized character \x7F at /usr/local/nagios/sbin/status.cgi line 1.

.cgiファイルを覗いてみるとバイナリじゃないっすか。
というわけで、上記のように/usr/bin/perlを通さないように修正。
ちょっとお行儀がよくない気もするが、/nagios以下のみだし、まぁ良しとしよう。


ここまでで、lighttpdの設定は完了。
これでは、まだ監視はスタートしてくれないので、Nagios自身の設定を行う。


デフォルトの状態だと、以下ディレクトリに設定ファイルのサンプルがあるので、流用。

/usr/local/nagios/etc

適当にこんな感じで、設定ファイルを生成する。

// コマンド例:
$ cd /usr/local/nagios/etc
$ cp nagios.cfg-sample nagios.cfg

設定ファイル一覧はこの通り。

  • cgi.cfg
  • commands.cfg
  • nagios.cfg
  • resource.cfg
  • localhost.cfg (ホスト単位で必要なので、こいつをコピーする)


さて、HTTPレベルでのURL監視をするためには、、、
まず、生き死にの確認をするためのデフォルトのHTTPコマンドにオプションを追加。
以下のような感じで、commands.cfgを編集。-pオプションでポート番号(デフォルトは"80")の指定、-uでドメイン以下のパス(デフォルトは"/")が指定できる。

$ diff commands.cfg commands.cfg-sample
113c113
<         command_line    $USER1$/check_http -H $HOSTADDRESS$ -p $ARG1$ -u $ARG2$
    • -
> command_line $USER1$/check_http -H $HOSTADDRESS$

次に、ホストおよびサービス監視の設定をする。
ここでは、ローカルホストの場合を例にとって最低限URL監視するにあたって必要なことを説明する。

$ vi localhost.cfg

まずは、クリティカルエラーが発生した場合のメール送信先を変更。

define contact{
        contact_name                    sonic-admin
        alias                           Nagios Admin
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-by-email
        host_notification_commands      host-notify-by-email
        email                           {メールアドレス}
        }

次にホストの設定。監視対象としたいホストの情報を入れる。

define host{
        use                     linux-server
        host_name               {ホスト名}
        alias                   {エイリアス}
        address                 {IPアドレス}
        }

次に、URL監視したいサービスの設定。
さっき、commands.cfgでオプション(-p -u)を追加したため、ポート番号とパスが引数として渡せるようになっている。

define service{
        use                             local-service         ; Name of service template to use
        host_name                       {ホスト名}
        service_description             {サービスの説明}
        check_command                   check_http!{ポート番号}!{ドメイン以下のパス}
        }

最後にCGI認証まわりの設定。

$ vi cgi.cfg

ですが、書き疲れてきたのでパス(笑)
最低限の稼動確認ということで、CGIの認証をOFFにする設定は以下(^^;;)
# この辺は、たくさん情報があるので、そっちを参照されたし。

use_authentication=0


あとは、

$ /usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg

でNagiosを稼動させると、


http://{Nagiosをインストールしたホスト名 or IPアドレス}/nagios/


で、Nagiosの管理画面にアクセスすることが出来ます。


Nagios 2.0オープンソースではじめるシステム&ネットワーク監視

Nagios 2.0オープンソースではじめるシステム&ネットワーク監視