サーバー監視ソフトで「Nagios」というのがあります。
これが結構便利で、サーバーの死活監視だけでなくサービスレベルの監視ができて、Web上からも診ることができるようになっています。
![]()
とても柔軟性が高いので、複数のサーバーを管理する管理者にはおすすめです。
インストールはportsから簡単インストール。
$ su
# cd /usr/ports/net-mgmt/nagios
# make install
Nagiosには様々なプラグインがありますが、それらも自動的に関連インストールされます。
インストールが完了すると、
・/etc/rc.confへの設定
・Web閲覧用のApache httpd.conf設定
が表示されるので、それぞれ設定してやります。
まず、/etc/rc.confに以下を書き加えます。
nagios_enable="YES"
これで、死活監視デーモンが動くようになりました。
また、ステータスをWebから診るために、Apacheのhttpd.confに下記の設定を書き加えます。
他のWebサーバーの設定はシラネw
ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
</Directory>
Alias /nagios/ /usr/local/www/nagios/
<Directory /usr/local/www/nagios>
Order allow,deny
Allow from all
</Directory>
ちなみにScriptAliasから設定してやらないと、Apacheにconfエラーと言われてしまいます。
見てのとおり二重にエイリアス設定してますからね。
もしエイリアスのパスを変えたりする場合は、後の設定にも影響するので注意してください。
とりあえずインストールはここまで。ここまではそれほど難しくはありません。
ここからが大変です。
とにかく監視するサーバーの設定などをしなければならないのですが、その設定が非常に多岐にわたるため、設定がとても面倒です。
難しくはないんですけどね。
まず、サンプルの設定ファイルを使えるようにします。
# cd /usr/local/etc/nagios/
# cp nagios.cfg-sample nagios.cfg
# cp cgi.cfg-sample cgi.cfg
# cp commands.cfg-sample commands.cfg
# cp resource.cfg-sample resource.cfg
# cp localhost.cfg-sample localhost.cfg
次に、Nagiosの主設定ファイル「nagios.cfg」を見直します。
CGIから管理コマンドを実行させるためには、「check_external_commands」を「1」にする必要があります。
#check_external_commands=0
check_external_commands=1
デフォルトでは、日付の書式がアメリカ式なので、嫌ならこれを書き換えます。
#date_format=us
date_format=iso8601
後はとりあえずデフォルトで大丈夫です。
そして、CGIに関する設定ファイル「cgi.cfg」を見直します。
エイリアスのパスを変更したときは、下記を修正する必要があります。
url_html_path=/nagios
Nagiosは、HTTP基本認証を通して管理ユーザーを設定することができます。
もし基本認証を使わない場合は、「use_authentication」を「0」に設定します。
#use_authentication=1
use_authentication=0
ただし、CGIから管理コマンドを実行するには、基本認証を設定する必要があります。
認証なしの場合は、Web上からの設定変更などができません。ステータスを診るだけになります。
もし基本認証を使う場合は、下記のように設定します。
use_authentication=1
default_user_name=guest
authorized_for_system_information=dualarch
authorized_for_configuration_information=dualarch
authorized_for_system_commands=dualarch
authorized_for_all_services=dualarch
authorized_for_all_hosts=dualarch
authorized_for_all_service_commands=dualarch
authorized_for_all_host_commands=dualarch
ここでは、ユーザー「dualarch」にすべての権限を与えています。
前述の「check_external_commands」と併せて設定すると、CGI側から死活監視デーモンの再起動やホストの監視停止などのコマンドを実行できるようになります。
「cgi.cfg」に関しては、とりあえずこのぐらいで大丈夫です。
一番の山場は次の「localhost.cfg」になります。
デフォルトでは、localhostについての監視設定だけ入っていますが、外部ホストの設定を追加することもできます。
この設定ファイルでは、いくつかの区画に分かれているので、それぞれ見ていきます。
ただ、設定項目がとても多いので、詳細な設定についてはここでは省きます。
まず、「timeperiod」ですが、これは時間帯を設定しています。たとえばビジネス営業時間とか、24時間365日、とか設定できます。
この設定によって、サーバーの監視時間帯やダウン時の通知時間帯などの柔軟な設定が可能になります。
define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
次に「contact」です。これはダウン時等の通知先の設定です。
通知する時間帯、どのようなステータスで通知するか、通知先のメールアドレスなどが設定できます。
define contact{
contact_name nagios-admin
alias Nagios Admin
service_notification_period workhours
host_notification_period workhours
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email nagios-admin@localhost
}
そして「contactgroup」ですが、これは通知先をグループ化することができるようになっています。
組織的な監視を行っている場合に役に立ちます。
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagios-admin
}
その後の「host」の設定は、サーバー等の機器の設定になります。
この設定は継承することができるので、まずテンプレートとして親設定があり、その後に各機器の設定が入ります。
また、上位機器の設定を加えることで、上下関係を作り、グラフィカル表示に反映することも可能です。
まず親設定です。
define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_period 24x7
register 0
}
ここでは、親の設定を継承してさらにテンプレートを作っています。
define host{
name freebsd-server
use generic-host
check_period 24x7
max_check_attempts 10
check_command check-host-alive
notification_period workhours
notification_interval 120
notification_options d,u,r
contact_groups admins
register 0
}
これまでのテンプレートを継承して、各機器の設定をすることができます。
define host{
use freebsd-server
host_name localhost
alias Local Host Setting
address 127.0.0.1
check_command check_http
}
もしホスト自体の死活監視方法を変更したい場合は「check_command」ディレクティブを設定します。
デフォルトでは、親の設定で「check-host-alive」というコマンドになっており、これはPINGによる監視になっています。
ルーターなどICMPをスルーする設定になっていると、常に死んだ状態になってしまうので、変更しておいたほうがいいでしょう。
「hostgroup」の設定では、機器をグルーピングすることができます。
define hostgroup{
hostgroup_name test
alias Test Servers
members localhost
}
「service」の設定では、監視するサービスを設定します。
どの機器でどのサービスを監視するかを設定することもできます。
この設定も親から継承することが可能です。
まず親設定です。
define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
register 0
}
ここでは、親の設定を継承してさらにテンプレートを作っています。
define service{
name local-service
use generic-service
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}
たとえばPINGで監視をする場合は、下記のような設定になります。
define service{
use local-service
host_name localhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
「host_name」には、このサービスをチェックする機器の名前を入れます。複数設定するときはカンマ区切りで入れます。
「check_command」というのがチェック方法です。ここでのコマンド「check_ping」は、「command.cfg」で定義されています。
「command.cfg」は各種コマンドが定義されていて、ここで設定したプログラムを走らせることができるようになっています。
ちなみに、「check_ping」等のプログラム本体は、portsでのインストールの場合「/usr/local/libexec/nagios/」にインストールされています。
「resource.cfg」は、インストールディレクトリやユーザーなどの設定です。
これは当初特に手を加える必要は無いでしょう。
設定は以上になります。
設定できる項目がとても多いですが、それだけ柔軟な監視ができますので、大規模なデータセンターなどの死活監視にも対応しうると思います。
ここまですべての設定が完了したら、最後に死活監視デーモンを走らせます。
# /usr/local/etc/rc.d/nagios start
これで完了です。
Web管理画面から見ると、徐々にステータスが埋まっていきます。
コメントする