Nagiosのインストールと基本設定
ネットワーク監視ツールNagiosのインストールと基本設定を調査してみた.
Nagiosはホスト,サービス,ネットワークを監視するプログラムである.本家サイトはこちら.NagiosはもともとLinux OS(?)のもとで動作するように設計されたが,*NIXでも動作する.デーモンは拡張プラグインを使用することで,ホストやサービスを断続的にチェックする.問題が発生したら,デーモンはemail,インスタントメッセンジャー,SMS等いろんな方法で通知する.また,現状,履歴,レポートがWebブラウザにて参照できる.
NagiosはWebサーバの使用を前提としている.今回はあらかじめapacheがインストールされている状態でNagiosを導入する.NagiosのDebianパッケージはデータを格納するバックエンドに応じて三つある.
- nagios-mysql
- nagios-pgsql
- 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.
メイン設定ファイルは以下である.
hostは一つ以上のhostgroupに属し,serviceはいずれかのhostにおけるサービスである.hostgroupはhostgroups.cfg,hostはhosts.cfg,serviceはservices.cfgにて設定する.以降にそれぞれにおける設定を記述する.
/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における最低限の監視設定に関するデータ構造は以下となっている.
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にはhostgroupを設定する.hosts.cfgで設定したhostは必ず一つ以上のhostgroupに属さなければならない.hostgroups.cfgの設定項目の詳細はここ.設定項目は三つでいずれも必須である.
- hostgroup_name
- hostgroupのショートネーム.
- alias
- hostgroupのロングネームまたは記述.
- members
- hostgroupのメンバ.hostのショートネームをコンマ区切りで記述する.実はhostでも項目hostgroupsにてそのhostが属するhostgroupが設定できるが,当項目(members)はその代替あるいは追加設定である.
最後に新規追加した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

