読者です 読者をやめる 読者になる 読者になる

ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

【失敗】Linuxへのnagiosインストール


※注意
以下のnagios導入手順は失敗例です
参考までに残しておきます

成功手順↓
【成功】Linuxへのnagiosインストール - とりあえずエンジニアの備忘録


ApacheTomcatとインストールしwebサーバー公開が出来ましたので
今度はwebサーバー監視の為に監視システムのnagiosを導入します

・環境

さくらVPS
Linux
CentOS release 6.4 (Final)
Apache2.2.25
php5.3.3
nagios3.5.1

1.nagiosインストール

gd-develインストール

nagiosインストール時の依存ライブラリgd-develをインストールします

yum -y install gd-devel
nagiosユーザー作成

nagiosユーザーを作成します

useradd -d /usr/local/nagios/ -M nagios
nagiosダウンロード&解凍

nagiosをダウンロードします

cd /usr/local/src/
wget http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.5.1/nagios-3.5.1.tar.gz/download
tar xzf nagios-3.5.1.tar.gz 

最新版は
Nagios - Browse /nagios-3.x at SourceForge.net
から取得してください
今回は3.5.1をダウンロードしました

日本語化パッチダウンロード

日本語表示の為、日本語化パッチをダウンロードします

cd nagios/
wget http://ftp.momo-i.org/pub/other/nagios-jp-3.5.1.patch.gz

最新版は
http://ftp.momo-i.org/pub/other/
から取得してください
どうやらnagiosのバージョンと合わせないとダメぽいです。
って事で3.5.1のをダウンロードしました

日本語化パッチ実行
gzip -dc nagios-jp-3.5.1.patch.gz | patch -p1

Reversed (or previously applied) patch detected!  Assume -R? [n]

所々、上記のような確認がありますが
全てn入力エンターで実行しました

コンパイル

オプションでHOMEディレクトリだけは指定

./configure --prefix=/usr/local/nagios/
インストール
make all

status.c:2395: error: expected declaration specifiers or '...' before string constant
status.c:2395: error: expected declaration specifiers or '...' before 'status_bg_class'
status.c:2395: error: expected declaration specifiers or '...' before 'temp_host'
status.c:2395: warning: data definition has no type or storage class
status.c:2395: warning: type defaults to 'int' in declaration of 'printf'
status.c:2395: error: conflicting types for 'printf'
status.c:2395: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
make[1]: *** [status.cgi] Error 1
make[1]: Leaving directory `/usr/local/src/nagios/cgi'
make: *** [all] Error 2

何かエラー出ました
調べた所、どうやら日本語化パッチを当てた際に
ちゃんとパッチが当てきれてなかたようです。

って事で再度パッチを当てます
今度は所々出る確認で、yを入力エンター押します

gzip -dc nagios-jp-3.5.1.patch.gz | patch -p1

もっかいインストール

make all

*** Compile finished ***

*************************************************************
Enjoy.

今度は上手くインストール出来たみたいです

その他、設定ファイル系をインストールします
それぞれエラーが出ないか要チェックです。

make install
make install-init
make install-commandmode
make install-config
make install-webconf

/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
/usr/bin/install: cannot create regular file `/etc/httpd/conf.d/nagios.conf': No such file or directory
make: *** [install-webconf] Error 1

最後のinstall-webconfでエラーが・・
エラーメッセージにあるように「/etc/httpd/conf.d/」は存在していないのが理由ぽい
参考サイトの手順通り進めたつもりだけど、どっかで抜け漏れあったかな・・
で、調べた結果、ngaiosのMakefile上で
デフォルトでのApache設定ファイルディレクトリは「/etc/httpd/conf.d/」となっているようです。

cat Makefile  |grep httpd
HTTPD_CONF=/etc/httpd/conf.d
        $(INSTALL) -m 644 sample-config/httpd.conf $(DESTDIR)$(HTTPD_CONF)/nagios.conf

「/etc/httpd/conf.d/」はyumでApacheインストールした場合の設定ファイルディレクトリ
RedHat系のデフォルトディレクトリ)だったと思います
本サーバーでのApacheはソースからインストールしたので、存在していませんでした。
なのでApache設定ファイルディレクトリを作成後、そちらを指定する様に再度コンパイルしてインストールします

mkdir /usr/local/apache/conf.d/
./configure --prefix=/usr/local/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-httpd-conf=/usr/local/apache/conf.d

make all

make install
make install-init
make install-commandmode
make install-config
make install-webconf

/usr/bin/install -c -m 644 sample-config/httpd.conf /usr/local/apache/conf.d/nagios.conf

*** Nagios/Apache conf file installed ***

今度は上手くいったみたいです

それぞれのインストールについてメモ

  • install-init

起動スクリプト

  • install-commandmode

コマンドのパーミッションの設定

  • install-config

標準設定ファイルのインストール

  • install-webconfは

ブラウザから確認用のwebUI設定インストール

更に確認した所、rpm,yumでインストール時には
conf.dディレクトリの設定ファイルを読み込むように
httpd.confファイルにIncludeがあるようです。
今回はソースからのインストールなのでこの記述は無かったので最終行に追記しました

vi /usr/local/apache/conf/httpd.conf

Include conf.d/*.conf
	

2.WebUIのための設定

ブラウザから確認する為の設定です

webページパスワード制限

nagios画面へのアクセスにユーザー名とパスワードによるアクセス制限(Basic認証)をかけます
Apache標準のhtpasswdコマンドでhtpasswdファイルを作成します

/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

New password:
Re-type new password: 
Adding password for user nagiosadmin 

htpasswdコマンドを実行するとパスワードを聞かれますので
任意のパスワードを入力してエンターを押します、再確認ありますので再度入力エンター

ここで生成されたhtpasswdファイルは
make install-webconfでインストールされた
/usr/local/apache/conf.d/nagios.confにて以下のように読み込まれApacheに読み込ませています

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

3.自動起動サービス登録

make install-initで起動スクリプトが/etc/init.d/nagiosにインストールされていますので
自動起動サービス登録を行います
定番の作業になってきました

chkconfig --add nagios
chkconfig --list nagios
nagios          0:off   1:off   2:off   3:on    4:on    5:on    6:off

4.起動確認

Apache設定も変更しているのでApacheも再起動します

/etc/init.d/nagios start
/etc/init.d/httpd restart

ブラウザから
http://localhost/nagios/
へアクセスします
Basic認証の入力がありますが、先ほど設定したアカウントを入力します


「403 Forbidden」エラーページが表示されました

調べた所php無いのが理由らしいのでyumでphpインストール

yum -y install php

Apaceh再起動して再度アクセス
と思ったらApache再起動でエラーが、、、
とりあえずkillして再起動したら今度は404エラーが・・・

Not Found
The requested URL /nagios/ was not found on this server.

どうやらyumでphpをインストールすると
apache起動スクリプトが上書き生成されるようです
その為、参照されるApache設定ファイルが変わりnagiosディレクティブありませんよ
ってエラーになってみたいです
マジか

なので、Apache起動スクリプトを作成し直します

cp -p /usr/local/src/httpd-2.2.25/build/rpm/httpd.init /etc/init.d/httpd 

vi /etc/rc.d/init.d/httpd

httpd=/usr/local/apache/bin/httpd
pidfile=/usr/local/apache/logs/httpd.pid
CONFFILE=/usr/local/apache/conf/httpd.conf 

設定後Apacheを再起動して、再度ブラウザからアクセス
まだ404エラー

Apacheのエラーログを確認

Directory index forbidden by Options directive: /usr/local/nagios/share/

エラー発生していました
ファイル名指定しないでアクセスした場合の参照ファイルの設定が足りなかったみたいです

Apache設定ファイル確認

vi /usr/local/apache/conf/httpd.conf

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

デフォルトのままなので、
ファイル名指定しないでアクセスした場合の参照ファイルはindex.htmlとなっています
ですがnagiosディレクティブ/usr/local/nagios/share/を確認した所
index.htmlは無く代わりにindex.phpが存在していました。
って事はindex.phpを設定する必要があるので以下の様に追記

vi /usr/local/apache/conf/httpd.conf

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

設定後、Apache再起動して改めてブラウザからアクセス

404エラーは解消しましたが、今度はphpソースコードがそのまま表示されました
Apachephpの連携が出来ていないぽい

Apacheはソースからインストールしてるので
せっかくなんでphpもソースからインストールしたいな…


何が手順がごちゃごちゃなってきたので一旦nagios導入を断念
phpをソースインストール実施後に改めてnagios導入にチャレンジします!