【失敗】Linuxへのnagiosインストール
※注意
以下のnagios導入手順は失敗例です
参考までに残しておきます
成功手順↓
【成功】Linuxへのnagiosインストール - とりあえずエンジニアの備忘録
ApacheとTomcatとインストールしwebサーバー公開が出来ましたので
今度はwebサーバー監視の為に監視システムのnagiosを導入します
・環境
さくらVPS Linux CentOS release 6.4 (Final) Apache2.2.25 php5.3.3 nagios3.5.1
1.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ソースコードがそのまま表示されました
Apacheとphpの連携が出来ていないぽい
Apacheはソースからインストールしてるので
せっかくなんでphpもソースからインストールしたいな…
何が手順がごちゃごちゃなってきたので一旦nagios導入を断念
phpをソースインストール実施後に改めてnagios導入にチャレンジします!