ReadyNAS が死んでいるのに気づかなかったことに反省して,Nagios による サーバ監視をすることにしました.以前は使っていたんですが,サーバを再インストールしてから入れてなかったんですよね.
パッチ当てとコンパイル
- 本家からnagios-3.1.0を取得.
- 3.1.0用日本語化パッチを取得.
- nagios-plugins も拾っておきます.
同じディレクトリに保存します.
パッチ当て
# 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 になっているためです.Fedora や CentOS などでは,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 をインストール.
これでインストールできれば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 を確認の上修正.
再度チェック.
# /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 Adminemail 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%
}
完成
とりあえず,動いています.