LS−GLへのNagios2.9のインストール

 現在家庭内で稼働しているノートPCによるサーバーをLS−GLに置き換えることを考えているが、その場合Nagiosも稼働させる必要がある。
 そこでDebianにおけるNagiosのインストールについてネットで調べてみるとどうもDebian対応のパッケージがあり、apt-get installで組み込めそうなことが判明した。

今日の宇宙人カウントダウンNagiosのインストールと基本設定に記述があったが、パッケージも色々ありそうで
nagios2やnagios-textなどがあり、またバージョンも少し古そうである。
 ファイルのインストール場所などを見てみるにこれまでソースからコンパイルしていた時のデェフォルトとは少し違うようであり設定方法についても調べ直す必要がありそうである。

 そんな事もあり、私としては出来るだけ最新のもので表示の日本語化もやりたかったので、これまでTurbolinuxの時にやっていたソースからコンパイルする方法を取ることとした。

 その場合、いつも困っていたのがGDライブラリーと言われる系統画面を作成するツールの組込みである。
 Turbolinuxの時はRedHat用だと思われるrpmファイルがあり、これを展開することで左ほど苦労せず対処できた。
 しかし、Debianではどうであろうか。これもネットで調べているうちにSystem Cruise: Nagios-2.0b4の導入なるページに行き当たり、ここの助けを借りて以下のとおりGDライブラリーを組み込む事が出来た。

 作業の順番と内容は以下のとおりである。なお、今回インストールするNagiosは表示の日本語パッチのある最新版の2.9とした。
  1. Sourceforge.NETからnagios-2.9.tar.gzを同じくSourceforge.NETからnagios-plugins-1.4.11.tar.gzを頂いてくる。
  2. 日本語パッチのnagios-2.9-ja.patch.gzをこれも同じsourceforgeから頂いてくる。
  3. GDライブラリーのコンパイル・インストール
  4. Nagios-2.9の展開・コンパイル・インストール
  5. Nagios-pluginsの展開・コンパイル・インストール
  6. Nagiosの設定ファイル(/usr/local/nagios/etc)にある*.cfgファイルの設定
  7. Webサーバーであるapach2のAliasや認証関係の設定
  8. apache2とnagiosの(再)起動
ということとなる。以下に詳しく述べる。

1.2.についてはダウンロードだけであるので省略し、3から述べることとする。
 組み込むものはzlib,libpng,libjpeg,gd-libの四種類てあり前述のSystem Cruise: Nagios-2.0b4の導入のページに御世話になり完了する事が出来た。

3.GDライブラリーのコンパイル・インストール
 ・zlibのコンパイル・インストール
    入手先 http://www.zlib.net/zlib-1.2.3.tar.gz
        # tar zxvf zlib-1.2.3.tar.gz で展開後 zlib-1.2.3/ディレクトリーに移動して
    # ./configure
    # make 
    # make install 

      cd /usr/local/lib; chmod 755 libz.aなるメッセージで/usr/local/libにインストールしたことがわかる。

 ・libpngのコンパイル・インストール
    入手先 http://jaist.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8-config.tar.gz
    # tar zxvf libpng-1.2.8-config.tar.gz で展開後 libpng-1.2.8-config/ディレクトリーに移動して
    # ./configure --enable-shared
        # make
        # make install

     Libraries have been installed in:
             /usr/local/lib
       などの表示で/usr/local/libにインストールされることが分る。

  ・jpegのコンパイル・インストール
        入手先 ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
        # tar zxvf jpegsrc.v6b.tar.gz で展開後 jpeg-6b/ディレクトリーに移動して
        # ./configure --enable-shared
        # make
        # make install
 make の段階で
 make: ./libtool: コマンドが見つかりませんでした
  なるメッセージが出てコンパイルが中断した。調べてみるとlibtoolは最新のものがインストールされているのでパスの問題のようであるが、どこで指定 したらよいのか分らないため、/usr/bin/libtoolを現在のディレクトリーにコピーして対処した。最終的に以下のメッセージが出て上手くでき たようである。

 Libraries have been installed in:
   /usr/local/lib

  ・gd-libのコンパイル・インストール
       入手先 http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
       # tar zxvf gd-2.0.33.tar.gz で展開後 gd-2.0.33/ディレクトリーに移動して
       # ./configure
       # make
       # make check
       # make install

    Libraries have been installed in:
       /usr/local/lib   
 このようなメッセージが出て何となく上手く出来てそうである。

4.Nagios-2.9の展開・日本語パッチ当て・コンパイル・インストール

  Nagiosのコンパイル・インストールの作業は以下の順番で行った。
  ・# tar zxvf nagios-2.9.tar.gz で展開
  ・# cp nagios-2.9-ja.patch.gz nagios-2.9 で日本語パッチをnagios-2.9/ディレクトリーにコピー
  ・# cd nagios-2.9 で移動して
  ・# gzip -dc nagios-2.9-ja.patch.gz | patch -p0 でパッチ当て
  ・ユーザーnagiosの登録 # adduser nagios で登録して # cat/etc/passwd で登録を確認
     nagios:$1$XnzT5eL1$bD4pawwK2p0WUKwJCD9qa/:1004:1003:,,,:/home/nagios:/bin/bash
  ・インストールディレクトリーを作成 # mkdir /usr/local/nagios
  ・インストール先のベースディレクトリのオーナー権限を変更
    # chown nagios.nagios /usr/local/nagios/
  ・新しいグループの作成
        # /usr/sbin/groupadd nagcmd
  ・nagiosとapacheの動作ユーザーであるwww-dataを作成したグループに追加
    # /usr/sbin/usermod -G nagcmd www-data
    # /usr/sbin/usermod -G nagcmd nagios
  ・コンパイル
    # ./configure --prefix=/usr/local/nagios/ 
     GDライブラリーが無いときはこのようなメッセージがでる。
     *** GD, PNG, and/or JPEG libraries could not be located... *********

     しかし、上手くいったときは
      checking for gdImagePng in -lgd (order 1)... no
      checking for gdImagePng in -lgd (order 2)... yes
      GD library was found! -----  これが重要
      checking ltdl.h usability... no
        # make all          --------------以降処理の最後あたりに次の操作のガイドが出る
        # make install
        # make install-init
        # make install-commandmode
        # make install-config


  ・インストールで作成されたディレクトリーを確認。
        # ls /usr/local/nagios/
           bin  etc  sbin  share  var

5.Nagios-pluginsの展開・コンパイル・インストール
    # tar zxvf  nagios-plugins-1.4.11 で展開
       # cd nagios-plugins-1.4.11/ で移動して
       # ./configure
       # make all
       # make install
      インストールされていることの確認
       # ls /usr/local/nagios/libexec/
         check_apt       check_ide_smart     check_ntp       check_ssh
         check_breeze    check_ifoperstatus  check_ntp_peer  check_swap
         check_clamd     check_ifstatus      check_ntp_time  check_tcp
         check_cluster   check_imap          check_nwstat    check_time
         check_dhcp      check_ircd          check_oracle    check_udp
         check_disk      check_load          check_overcr    check_ups
         check_disk_smb  check_log           check_ping      check_users
         check_dummy     check_mailq         check_pop       check_wave
         check_file_age  check_mrtg          check_procs     negate
         check_flexlm    check_mrtgtraf      check_real      urlize
         check_ftp       check_nagios        check_rpc       utils.pm
         check_http      check_nntp          check_sensors   utils.sh
         check_icmp      check_nt            check_smtp


6.Nagiosの設定ファイル(/usr/local/nagios/etc)にある*.cfgファイルの設定
   /usr/local/nagios/etc/localhost.cfg-sampleとしてインストールされているものをlocalhost.cfg
  にリネームしてこれを編集する
   /usr/local/nagios/etc/localhost.cfg
  Ver1.xxであった多くのファイル
  contactgroups.cfg
  contacts.cfg
  dependencies.cfg
  escalations.cfg
  hostgroups.cfg
  hosts.cfg
  services.cfg
  timeperiods.cfg
  がこれ一つにまとめられているようである。
   また、記述方法もこれまではgeneric-hostという代表的な設定を各ホストの設定で参照できる機能は
  あったが、それがさらに拡張されもう一段下の設定を作成でき、それを各ホストの設定で参照できるよ
  うになっていた。
   過去に比べるとcfgファイルの生産性は相当あがったように感じられた。
   また、commands.cfg-sample  nagios.cfg-sample resource.cfg-sampleもsampleを除けた*.cfgファイル
  としておく。

 動作確認を優先してlocalhost.cfgを簡単に作成して

  # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

  として設定が間違っていないか確認する。エラーで何度か叱られながら一つずつ間違いを修正し、
 エラー0となれば一応完成である。

7.Webサーバーであるapach2のAliasや認証関係の設定

  Nagiosの動作はWebサーバーと連動しているためNagiosをインストールしたサーバーに入れているWebサーバーの設定が必要である。
  私が使っているのはapach2であるのでAliasの設定は、正解かどうか分らないが、squirrelmailなどで動いている/etc/apache2/sites-available/defaultファイルに以下を追記する。

    ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

    <Directory "/usr/local/nagios/sbin">
        Options ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
        AuthUserFile /usr/local/nagios/etc/htpasswd.users
        Require valid-user
    </Directory>

    Alias /nagios /usr/local/nagios/share

    <Directory "/usr/local/nagios/share">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
        AuthUserFile /usr/local/nagios/etc/htpasswd.users
        Require valid-user
    </Directory>

 さらに認証用のIDとパスワードを設定し、
  # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  ここでパスワードも聞いてくるので設定する。

  /usr/local/nagios/etc/cgi.cfgで
  use_authentication=1
  となっていることを確認する。

8.apache2とnagiosの(再)起動
  # /etc/init.d/apache2 restart
    # /etc/init.d/nagios start

  で起動してブラウザからhttp://192.168.0.xx/nagios/でアクセスする。
  まずIDを聞いてくる。ここまでくれば一応動いている。

認証画面

○問題発生
 認証を終わり、初期画面が表示され、次のサービス稼働状態のところでCGIを動かすには認証が必要とのメッセージが出て内容が表示されない。
 これは過去に何度も引っかかった部分であるが原因が良く分らない。認証部分を確認するが間違いは無いようである。困ってしまい、何気なく以前書いたnagiosに関する自分のホームページを見てみると、cgi.cfgにある

#authorized_for_system_commands=nagiosadmin

の#を外さないと認証に引っかかる旨の記述があり、これ以外にもnagiosadminとある記述の#は全部はずしたところ見事表示された。

 次の問題はステータスマップが表示されないことである。apacheのログなどを見ているとlibpng.so.3が無いとのメッセージがあり、ネットで見付けたページにも/usr/libでリンクを張る必要があるなどの記述があり、
test:/usr/lib# ln -s /usr/local/lib/libpng.so.3 libpng.so.3
とやったところ見事表示された。

 一応これで動くことは確認できたのでこれから過去にTurbolinuxで色々試したことを再現することで肉付けをやっていく。

  • ステータスマップの整備(アイコン登録、レイアウトの整備)
  • 監視対象サービスの追加
  • リソース監視
  • 外部コマンド
  • 分散監視
などを試していく予定である。

初めて起動したNagios