UnixPower on Networking
  http://www.unix-power.net/

 
  Top - Solaris8 - Solaris Nagios



Nagiosは、NetSaintという名前で1999年3月14日に最初のバージョンがリリースされている。ネットワークで接続されたホストと、ネットワーク上で提供されているサービスを監視するために作成された監視用ツールである。その後数回のバージョンアップを経て2002年3月1日にバージョン0.0.7をリリース後、同年7月25日にNetSaintという名称での開発を終了した。そして新たにNagiosと名称を変え、2002年5月10日にベータ版として1.0b1をリリースし、NetSaintの機能を引き継ぎつつ、現在も開発が継続されている。


■Nagiosのインストール

http://www.nagios.org/

上記サイトから以下のファイルをダウンロードします。

・nagios-1.0.tar.gz
・nagios-plugins-1.3.0.tar.gz


まずインストールを行う前の段階で準備作業をする。nagiosというユーザとグループを作成する。


# /usr/sbin/groupadd nagios
# /usr/sbin/useradd -g naigos -d /usr/local/nagios nagios


次に以下のコマンドでインストール。


# tar xvzf nagios-1.0.tar.gz
# cd nagios-1.0
# ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin \
--with-htmlurl=/nagios/ --with-nagios-user=nagios --with-nagios-grp=nagios
# make all
# make install
# make install-init
# make install-config


次に、プラグインモジュールをインストール。


# tar xvzf nagios-plugins-1.3.0.tar.gz
# cd nagios-plugins-1.3.0
# ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin \
--with-nagios-user=nagios --with-nagios-grp=nagios
# make all
# make install


これで、Nagiosが取り合えず利用できる環境をインストールした。Nagiosをインストールした「/usr/local/nagios」ディレクトリを参照すると、次のようになっているはずである。


bin/ Nagiosのコアプログラム
etc/ コンフィグファイル
libexec/ プラグインモジュール
sbin/ CGIプログラム
share/ HTMLファイル
var/ ログファイル用の空ディレクトリ


次に設定に入る。Nagiosには複数のコンフィグファイルがある。Nagiosのコンフィグファイル群は、大きく次の5種類に分けられる。


(1 メインコンフィグファイル
(2) リソースファイル
(3) オブジェクトコンフィグファイル
(4) CGIコンフィグファイル
(5) 拡張コンフィグファイル


コンフィグファイルのサンプルは、Nagiosをインストールしたディレクトリ配下の/etcディレクトリ(標準は/usr/local/nagios/etc)に保存されている。これらのサンプルファイルを利用して、必要な部分だけを変更するようにしよう。


■hosts.cfgの設定


hosts.cfgには、監視対象機器のホスト設定を記述する。テンプレートとしてのオブジェクトは、デフォルトのまま。

# Generic host definition template
define host{
name generic-host ; The name of this host template - referenced in other host definitions, used for template recursion/resolution
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}


個別の監視対象機器の設定は次のとおり。上から順にテンプレートの設定を継承し、ホスト名、別名、IPアドレス、実行するコマンド、監視対象が完全にダウンしていると認知するまでの値、アラート通知に関連する設定(再連絡までの時間、通知の時間帯、通知内容)を設定する。

# 'speech' host definition
define host{
use generic-host ; Name of host template to use
host_name www.yahoo.co.jp
alias Yahoo Server #1
address www.yahoo.co.jp
check_command check-host-alive
max_check_attempts 5
notification_interval 0
notification_period 24x7
notification_options d,u,r
}


■hostsgroups.cfg


hostsgroups.cfgには、監視対象のホストのグループを設定する。監視対象のwww.yahoo.co.jpは、test-serversというホストグループに属し、通知先のグループにtest-adminsを設定する。


# 'test' host group definition
define hostgroup{
hostgroup_name test-servers
alias Test Servers
contact_groups test-admins
members www.yahoo.co.jp
}


■escalations.cfg


escalations.cfgには、アラートの通知方法を設定する。次の例では、5回目、6回目のping疎通不可で、contact_groupsへ通知をするように設定している。


# Serviceescalation definition
define serviceescalation{
host_name www.yahoo.co.jp
service_description PING
first_notification 5
last_notification 6
contact_groups test-admins
notification_interval 0
}


services.cfg


services.cfgには、各監視対象機器にどのような監視を実行するのかを指定する。hosts.cfgと同様、まずテンプレートオブジェクトを定義するが、今回は標準のまま利用することにした。


# Generic service definition template
define service{
name generic-service ; The 'name' of this service template, referenced in other service definitions
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service 'freshness'
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}


次に、今回の監視対象、www.yahoo.co.jpを個別の監視対象機器として定義する。テンプレートの設定を継承し、ホスト名、監視対象が完全にダウンしていると認知するまでの回数、正常であることを認知する回数、検知した異常を確認する回数、通知グループ、アラート通知に関連する設定(再連絡までの時間、通知の時間帯、通知内容)、実行コマンドを設定する。


# Service definition
define service{
use generic-service ; Name of service template to use
host_name www.yahoo.co.jp
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 5
normal_check_interval 5
retry_check_interval 1
contact_groups test-admins
notification_interval 0
notification_period 24x7
notification_options c,r
check_command check-host-alive
}
#


max_check_attemptsが完全にダウンしていると認知するまでの回数、normal_check_intervalがチェック間隔、retry_check_intervalがリトライチェック間隔である。


notification_intervalは、ステータス異常を通知後、一定の時間を置いてから再度そのステータス異常を通知する設定である。今回は“0”に設定して、一度通知されたステータス異常は再度送信しない。


■timeperiods.cfg


ステータス異常を検知したときに、アラートを通知する時間帯を定義する。監視したい時間帯をこのファイルで定義し、timeperiod_nameで定義した名前をほかのファイルで呼び出して使用する。 これは全てデフォルトのままでかまいません。


■contactgroups.cfg


ほかのコンフィグファイルで「contacts_group」として定義されている設定を記述するコンフィグファイル。メンバーとして定義されたパラメータ値は、contacts.cfgで定義する。


# 'test-admins' contact group definition
define contactgroup{
contactgroup_name test-admins
alias Test Administrators
members nagios
}


■contacts.cfg


「contactgroups.cfg」から、コンフィグファイルのメンバーとして呼び出される設定を定義する。


## 'nagios' contact definition
define contact{
contact_name nagios
alias Nagios Admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email nagios@localhost
}


ここで、service_notification_optionsの記述には、次のような意味がある。


warning
u unreachable
r recoverey
c critical


また、host_notification_optionsの記述には、次のような意味がある。


d down
u unreachable
r recoverey


■misccommands.cfg


異常を検知した場合に、そのアラートを通知するためのコマンドを定義する。command_nameで定義したオブジェクトの名前で、command_lineに記述したコマンドを実行する。これはデフォルトのままで構いません。


■checkcommands.cfg


監視のために発行するコマンドを定義する。commandとして定義したオブジェクトの名前はcheck-host-aliveで、この名前をcheck_commandで定義すると、command_lineのように実行される。これもデフォルトのままでかまいません。


■dependencies.cfg


今回はこれは使いません。全てコメントアウトとします。


以上で全て終了です。あとは以下のコマンドでスタートします。


# /etc/rc.d/init.d/nagios start


コンフィグファイルを修正したあとは次のコマンドで再起動をかけると有効になります。


# /etc/rc.d/init.d/nagios reload


●ブラウザから閲覧

httpd.confに次の記述を付け足します。


Alias /nagios/cgi-bin/ "/usr/local/nagios/sbin/"
Alias /nagios/ "/usr/local/nagios/share/" <Directory "/usr/local/nagios/"> Options ExecCGI AuthUserFile /usr/local/nagios/etc/passwd AuthGroupFile /dev/null AuthName "NAGIOS" AuthType Basic <Limit GET> require valid-user </Limit> </Directory>


以下のコマンドでパスワードを設定します。


# htpasswd -c /usr/local/nagios/etc/passwd nagiosadmin


cgi.cfgの次の箇所を編集します。


(一部)

authorized_for_system_information=nagiosadmin,user 以下、個々にアクセス権を与えるユーザーを追加
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin


設定を有効にするためにapacheとnagiosを再起動します。


# /etc/rc.d/init.d/httpd restart
# /etc/rc.d/init.d/nagios reload


あとはブラウザから次の画面が見れればOKです。





 
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.