21
12月
2006

Nagiosのインストールと基本設定

ネットワーク監視ツールNagiosのインストールと基本設定を調査してみた.
Nagiosって何だ?
インストール
設定
hosts.cfgの記述
hostgroups.cfgの記述
services.cfgの記述
設定確認

Nagiosって何だ?

Nagiosはホスト,サービス,ネットワークを監視するプログラムである.本家サイトはこちら.NagiosはもともとLinux OS(?)のもとで動作するように設計されたが,*NIXでも動作する.デーモンは拡張プラグインを使用することで,ホストやサービスを断続的にチェックする.問題が発生したら,デーモンはemail,インスタントメッセンジャー,SMS等いろんな方法で通知する.また,現状,履歴,レポートがWebブラウザにて参照できる.

インストール

NagiosはWebサーバの使用を前提としている.今回はあらかじめapacheがインストールされている状態でNagiosを導入する.NagiosのDebianパッケージはデータを格納するバックエンドに応じて三つある.
nagios-mysql
nagios-pgsql
nagios-text
前者二つはそれぞれDBであるMySQL,PostgreSQLを使用する.最後のものはテキストファイルを使用する.今回は最も手軽に導入できるnagios-textを導入してみた.
apt-get install nagios-text
上記を実行すると,途中で管理者パスワード(※)の入力を促されるので入力する.インストールされたら,apacheのための設定が完了しているか確認してみる.
# ls -l /etc/apache/conf.d/nagios 
lrwxrwxrwx  1 root root 23 Dec 31 14:02 /etc/apache/conf.d/nagios -> /etc/nagios/apache.conf
設定されているようだ.上記でとりあえずNagiosのページは表示される.まずapacheを再起動.
/etc/init.d/apache restart
そしてWebブラウザにて以下にアクセス.
http://localhost/nagios/
nagiosadminのパスワードの入力を促されるので,入力する.まだ監視設定をしていないので,デフォルトゲートウェイへのPINGチェックのみしか監視されていない.
※ Webブラウザでアクセスする際に要求される.ユーザ名はデフォルトではnagiosadmin.

設定

メイン設定ファイルは以下である.
/etc/nagios/nagios.cfg 
このファイルの以下の記述によって,設定ファイルを設定内容に応じて分割している.
cfg_file=/etc/nagios/checkcommands.cfg
cfg_file=/var/cache/nagios/plugins-auto.cfg
cfg_file=/etc/nagios/misccommands.cfg
cfg_file=/etc/nagios/contactgroups.cfg
cfg_file=/etc/nagios/contacts.cfg
cfg_file=/etc/nagios/dependencies.cfg
cfg_file=/etc/nagios/escalations.cfg
cfg_file=/etc/nagios/hostgroups.cfg
cfg_file=/etc/nagios/hosts.cfg
cfg_file=/etc/nagios/services.cfg
cfg_file=/etc/nagios/timeperiods.cfg
コメントによると,複数のcfg_file文によって自由に設定ファイルを分割できるようだが,デフォルトの分割構成を変更するメリットは感じられない.さて,Nagiosにおける最低限の監視設定に関するデータ構造は以下となっている.

hostは一つ以上のhostgroupに属し,serviceはいずれかのhostにおけるサービスである.hostgroupはhostgroups.cfg,hostはhosts.cfg,serviceはservices.cfgにて設定する.以降にそれぞれにおける設定を記述する.

hosts.cfgの記述

hosts.cfgにはホスト設定を記述する.デフォルトではまず以下の記述がある.
# Generic host definition template
define host{
  name generic-host
...省略...
  register 0
}
コメントにあるように,これはテンプレート設定である.項目registerの値が0だとテンプレートとして認識される.各ホスト設定では,nameで設定した値(ここではgeneric-host)を指定することでテンプレートの設定を継承することができる.
define host{
  use generic-host
...省略...
}
各設定項目の詳細説明はここ.以下に必須項目について記述する.
host_name
ホストのショートネーム.hostgroupやserviceの設定でどのホストかを特定する際に使用する値.また,チェックプログラム(監視プログラム)のマクロ$HOSTNAME$はここで設定した値に展開される.
alias
ホストのロングネームまたは記述.マクロ$HOSTALIAS$はここで設定した値に展開される.
address
ホストのアドレス.普通はIPアドレスを設定する.FQDNも指定できるが,当然ながら名前解決できないとチェックプログラムは動作しないので,ネットワーク監視という観点からは推奨されないように思われる.マクロ$HOSTADDRESS$はここで設定した値に展開される.
max_check_attempts
チェックコマンドがOK以外を返した際にチェックコマンドをリトライする回数.1だとチェックコマンドを実行してエラーステータスが1回返っただけで(リトライなしで),アラートを生成する.該当ホストのチェックをしたくない場合は0を入力するのではなく,ブランクにする(設定可能な最小値はあくまでも1).
check_period
チェック期間.値は以下のファイルにて設定されているtimeperiodのname.
/etc/nagios/timeperiods.cfg 
このファイルの記述はデフォルトを参考にして記述できると思う.
contact_groups
contact groupのショートネーム.問題発生時の通知先を示す.複数設定する場合はコンマで区切る.
notification_interval
ホストがなお問題がある場合に,再通知を出すまでの待ち時間(この時間内ならホストがなお問題があっても再通知しない).単位はinterval_lengthをデフォルト値である60から変更していない場合は分.notification_intervalを0に設定すると再通知はしない(問題発生時にのみ通知する).
notification_period
通知期間.設定した期間外に問題が発生しても問題は通知されない.値はcheck_periodと同様.
notification_options
問題通知をするオプション設定.以下の値のいずれかを指定する.
d
ダウン時に通知.
u
UNREACHABLE時に通知.
r
OK状態に復帰した際に通知.
f
フラッピング(※)のスタート,ストップ時に通知.
n
通知しない.
複数指定する場合はコンマで区切る.
※ pingなどが通ったり通らなかったりする現象.

hostgroups.cfgの記述

hostgroupsにはhostgroupを設定する.hosts.cfgで設定したhostは必ず一つ以上のhostgroupに属さなければならない.hostgroups.cfgの設定項目の詳細はここ.設定項目は三つでいずれも必須である.
hostgroup_name
hostgroupのショートネーム.
alias
hostgroupのロングネームまたは記述.
members
hostgroupのメンバ.hostのショートネームをコンマ区切りで記述する.実はhostでも項目hostgroupsにてそのhostが属するhostgroupが設定できるが,当項目(members)はその代替あるいは追加設定である.

services.cfgの記述

最後に新規追加したhostに対してどのようなサービスを監視するかを設定する.設定ファイルはservices.cfg.デフォルトでは以下の記述がある.
# Generic service definition template
define service{
...省略...
  register 0
}
hostと同様,設定のテンプレートである.設定項目の詳細はここ.以下に必須項目について記述する.
host_name
サービスを提供しているhostのショートネーム.
service_description
サービスに関する記述.スペースとダッシュとコロンを含んでもよいがセミコロンとアポストロフィーとコーテーションは不可.host_nameとservice_descriptionの組合せは一意でなければならない.
check_command
チェックコマンドのショートネーム.値は
/etc/nagios-plugins/config/
配下の設定ファイルで定義されているcommandのcommand_nameで指定する.commandの定義ではcommand_lineにおいて$ARG1$,$ARG2$...という記述を含むものがある.これらに代入する値はcheck_commandで!区切りで指定する.例えばプロセス数をチェックするcommand定義は
define command{
  command_name    check_procs
  command_line    /usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$
}
となっており,command_lineで$ARG1$,$ARG2$を含む.serviceでこのcommandを指定する際に
  check_command check_procs!90-100!101-
と!区切りでパラメータを設定すると,$ARG1$には90-100,$ARG2$には101-が代入される.
max_check_attempts
チェックコマンドがOK以外を返した際にチェックコマンドをリトライする回数.1だとチェックコマンドを実行してエラーステータスが1回返っただけで(リトライなしで),アラートを生成する.
normal_check_interval
regularチェックのインターバル時間.regularチェックとはOK状態下でのチェックか,非OK状態だがmax_attempts回リチェックしたあとのチェックである.interval_lengthをデフォルトの60から変更していなければ,単位は分である.
retry_check_interval
retryチェックのインターバル時間.retryチェックは非OK状態になってmax_attempts回以内の再チェックの事である.interval_lengthをデフォルトの60から変更していなければ,単位は分である.
check_period
チェック期間.値は以下のファイルにて設定されているtimeperiodのname.hostの場合と同様.
notification_interval
ホストがなお問題がある場合に,再通知を出すまでの待ち時間(この時間内ならホストがなお問題があっても再通知しない).単位はinterval_lengthをデフォルト値である60から変更していない場合は分.notification_intervalを0に設定すると再通知はしない(問題発生時にのみ通知する).hostの場合と同様.
notification_period
通知期間.設定した期間外に問題が発生しても問題は通知されない.値はcheck_periodと同様.hostの場合と同様.
notification_options
問題通知をするオプション設定.
w
WARNING時に通知.
u
UNKNOWN時に通知.
c
CRITICAL時に通知.
r
OK状態に復帰した際に通知.
f
フラッピングのスタート,ストップ時に通知.
n
通知しない.
contact_groups
contact groupのショートネーム.問題発生時の通知先を示す.複数設定する場合はコンマで区切る.hostの場合と同様.

設定確認

Nagiosの設定は繁雑なせいか,チェックツールがある.
nagios -v メイン設定ファイル
例えば以下のようにする.
# nagios -v /etc/nagios/nagios.cfg
...省略...
Things look okay -
  No serious problems were detected during the pre-flight check
これで完全なチェックができるわけではないが,hostがhostgroupに属しているか,serviceで指定したhostは存在するか等のチェックをしてくれる.これで問題なさそうなら,Nagiosを再起動する.
# /etc/init.d/nagios restart

You may also like...