Vine4.2 に Nagios-3.1.0-ja 導入

ReadyNAS が死んでいるのに気づかなかったことに反省して,Nagios による サーバ監視をすることにしました.以前は使っていたんですが,サーバを再インストールしてから入れてなかったんですよね.

パッチ当てとコンパイル

同じディレクトリに保存します.

パッチ当て

# tar xvzf nagios-3.1.0.tar.gz
# cd nagios-3.1.0
# gzip -dc ../nagios-3.1.0-ja-utf8.patch.gz | patch -p0

コンパイル

rpm化します.

# cp nagios.spec ~/rpm/SPEC/
# cd ../
# tar cfvz nagios-3.1.0.tar.gz nagios-3.1.0
# cp nagios-3.1.0.tar.gz ~/rpm/SOURCE/
# cd ~/rpm/SPEC/
# mv nagios.spec nagios.spec.orig
# sed 's/\/etc\/httpd/\/etc\/apache2/g' nagios.orig.spec > nagios.spec
# rpmbuild -ba --target i686 nagios.spec

コンパイル時に lib が足りなければ都度 apt-get で入れてください.
なお,ここで "/etc/httpd"を"/etc/apache2"に書き換えているのは,Vine 4.2 では Apache2 関連のディレクトリがそのまんま apache2 になっているためです.FedoraCentOS などでは,httpd というディレクトリを使っているので,変更の必要はありません.

Nagios プラグイン導入

Nagios プラグインは,実際に各サーバの各サービスのステータスを監視するコマンド群のようなものです.

# tar xvzf nagios-plugins-1.4.13.tar.gz
# cp nagios-plugins-1.4.13/nagios-plugins.spec ~/rpm/SPECS/
# cp nagios-plugins-1.4.13.tar.gz ~/rpm/SOURCES/
# cd ~/rpm/SPEC
# rpmbuild --target i686 nagios-plugins.spec

インストール

できあがった rpm をインストール.

# useradd nagios
# rpm -Uvh ~/rpm/RPMS/i686/nagios-*.rpm

これでインストールできればOKなのですが,私の場合,Perl Net::SNMP が古いらしくnagios-plugins をインストールできませんでした.Net::SNMP の入れ直しもめんどくさいので,./configure のうえ make; make install です.この場合,resource.cfg に

$USER1$=/usr/local/nagios/libexec/

と書かなくてはいけません.これは成功.

また,/var/log/nagios/rw/ が無かったので作成します.

# mkdir -p /var/log/nagios/rw/
# chown -R nagios.nagios /var/log/nagios/rw/

apache2 からの読み込み

すでに /etc/apache2/conf.d/ 以下に nagios を apache2 から操作するための最低限の設定が書かれています.その設定にしたがうと,/etc/nagios/ 以下に BASIC 認証のための htpasswd ファイルを生成する必要があります.

# htpasswd2 -c /etc/nagios/htpasswd.users nagiosadmin

日本語パッチにより日本語化されたとき利用する文字コードUTF-8 ですので,Apache2 や php5 にデフォルト文字コードを設定している場合は,解除あるいは UTF-8 を指定しておきます.

最低限の設定チェック

# /usr/sbin/nagios -v /etc/nagios/nagios.cfg

Reading configuration data...
Error in configuration file '/etc/nagios/nagios.cfg' - Line 465 (Check result path is not a valid directory)
Error processing main config file!

当該ディレクトリが不備とのことですので,nagios.cfg の L465 を確認の上修正.

# su nagios
% mkdir -p /var/log/nagios/spool/checkresults

再度チェック.

# /usr/sbin/nagios -v /etc/nagios/nagios.cfg


Total Warnings: 0
Total Errors: 0

さらに,/var/log/nagios/rm/nagios.cmd は WebUIからアップデートされるのですが,書き込み権限がありません.起動スクリプトで書き込み権限を与えます.
/etc/init.d/nagios の start) 項目において,

chmod o+w $NagiosCommandFile
echo " done."

のように,echo " done." の直前で o+w を与えます.

ここまでで Web 閲覧となっていますので,apache2 を再起動し,nagios も起動します.

# /etc/init.d/apache2 restart
# /etc/init.d/nagios start

http://server-ip/nagios/
を開き,総合監視状態あたりで変なエラーが出ていなければOK.

設定

contacts.cfg

異常時のメール通知先として,

define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin

email hogehoge@foo.bar }

デフォルトで,contactgroups の admins にこれが含まれています.

localhost.cfg

templates.cfg に linux-server テンプレートがありましたので,これを使って,ReadyNAS を監視します.とりあえず PING 監視だけしていればよいので,どのテンプレートでもOKなんですけどね.
HOST DEFINITION の箇所に ReadyNAS を定義します.

# Define a host for my readynas

define host{
use linux-server
host_name readynas
alias readynas
address xxx.xxx.xxx.xxx
}

HOST GROUP DEFINITION に追記します.

define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members localhost, readynas
}

SERVICE DEFINITIONS で ReadyNAS に対して PING チェックを設定.

# Define a service to "ping" my ReadyNAS

define service{
use generic-service
host_name readynas
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

完成

とりあえず,動いています.