NagiosのコンフィグファイルとICMPを設定する〜前回は、Webサーバの監視ツールの選定と実際のインストール作業について解説しました。今回は、Nagiosのコンフィグファイルの設定について、もう少し踏み込んだ解説をしながら、ICMPによる監視について紹介します。});Nagiosによる監視の設定は、コンフィグファイルに必要な設定を記述する方式である。ところが、前回の記事(Webサーバの監視?監視ツールの導入)の掲載後に寄せられた質問の中には、このコンフィグの設定に戸惑われている方が多かった。そこで、今回はNagiosのコンフィグファイルについて、もう少し踏み込んだ解説をしたうえで、最も基本的なICMP(ping)による監視を実現するところまでを解説することにした。NagiosのコンフィグファイルNagiosには複数のコンフィグファイルがある。Nagiosのコンフィグファイル群は、大きく次の5種類に分けられる。(1)メインコンフィグファイル(2)リソースファイル(3)オブジェクトコンフィグファイル(4)CGIコンフィグファイル(5)拡張コンフィグファイルコンフィグファイルのサンプルは、Nagiosをインストールしたディレクトリ配下の/etcディレクトリ(標準は/usr/local/nagios/etc)に保存されている。これらのサンプルファイルを利用して、必要な部分だけを変更するようにしよう。●メインコンフィグファイル(nagios.cfg)Nagios実行時に参照されるメインのコンフィグファイルで、Nagiosの実行に必要な環境を設定する。Nagiosの実行モジュール、CGIはともにこのファイルを参照する。ほかに使用するコンフィグファイルがある場合には、この「nagios.cfg」内に定義しなければならない。メインコンフィグファイルには非常に多くの設定項目があるが、多くはデフォルトの設定のままで利用できる。英語でコメントが記述されているので、変更する前に確認すること。FILENagiosが実行されている間のイベントをロギングするファイルをここで指定する。デフォルトは「/usr/local/nagios/var/nagios.log」である。FILE(S)監視対象の情報を保管するファイルのパスを指定する。FILEすべての監視対象のステータスを記録するファイルを指定する。GROUPNagiosを実行するときのユーザ名およびグループ名を指定する。LENGTH監視間隔を秒単位で指定する。標準は60秒(例)interval_length=60ここまでの設定はnagios.cfgの一例である。ICMPによる疎通監視程度であれば、この程度の設定項目を確認すれば十分だろう。設定可能なオプションには、監視中のflapping(疎通が取れたり取れなかったりする現象)を認知するか、認知させる場合のしきい値はどうするかなどといった項目も設定できる。細かい設定をしたい場合には、Nagiosのドキュメントを参照してほしい。●リソースファイル(resource.cfg)情報を保管するためのファイルで、ユーザ作成のマクロの定義や、データベースとの接続に必要な情報を設定するために使用する。●オブジェクトコンフィグファイルオブジェクトコンフィグファイルは、次のような複数のファイルから形成される。hosts.cfghostgroups.cfgservices.cfgcheckcommands.cfgcontacts.cfgcontactgroups.cfgdependencies.cfgescalations.cfgmisccommands.cfgtimeperiods.cfgこれらのファイルに監視対象のホスト情報、サービス、通知先、実行コマンド等を定義する。Nagiosへの監視設定は、主にこれらのコンフィグファイルに記述する。多くのオブジェクトコンフィグファイルは、共通設定のテンプレートと、それを補完する個別設定という2重構造になっている。最初にファイル全体へ有効となるパラメータ設定をテンプレートとして定義し、その後に個別の設定を記述する構成になっている。テンプレートで定義したパラメータの設定値は個別設定の定義の中に継承できるので、これらの設定値を有効に活用すると設定が楽になる。・hosts.cfg監視対象機器の情報を指定する。}で囲まれた範囲にパラメータと設定値を記述する。ここで記述されたパラメータは、オブジェクトに定義された名前で識別できる。後に記述される各監視対象の設定では、このテンプレートに定義された名前を指定することで、テンプレートで記述したパラメータを各監視対象で継承することができる。オブジェクトパラメータファイルの2重構造がわかりにくいことも考えられるので、記述例を以下に示す。この例ではテンプレートとして設定するオブジェクトの名前を「name」という名前で定義する。このname内で記述したパラメータは、各監視対象用のオブジェクトで“use”パラメータにより値を継承できる。監視対象全体に共通するパラメータを選んで定義し、各監視項目向けのオブジェクトで有効活用できるようにしたい。パラメータは標準で“1”が設定され、Nagiosプログラムがそのオブジェクトが実行されるべきオブジェクトであると認識する。設定したオブジェクトをテンプレートとして使いたいときは、registerパラメータに“0”を明示的に設定する必要がある。ホスト名、監視対象機器の説明、IPアドレス、監視に使用するコマンド、監視時のステータス確認実施回数、アラートに関する設定などを記述する。テンプレートで指定されているパラメータとこの個別の監視対象機器のパラメータが重複して指定された場合、個別の監視対象機器の定義の方が有効となる。・hostgroups.cfghosts.cfgで設定した各監視対象をグループとして定義したものである。アラートの通知先が同じ監視対象機器を1つのグループとしてまとめて記述するファイルと考えるとわかりやすい。・services.cfg各監視対象機器に、どのような監視を実行するのかを指定する。・checkcommands.cfgNagiosが監視対象に対して実行するコマンドを定義する。Nagiosをインストールした状態で実装されているコマンドは、監視に必要なコマンドの大多数を網羅しているため、hosts.cfgファイルもしくはservices.cfgファイルで指定しているcheck_commandパラメータには、このファイルから必要な任意のコマンドを指定するだけで十分だろう。・contacts.cfg、contactgroups.cfgNagiosが障害を検知した場合に、アラートを通知する先を指定する。・escalations.cfg障害時に通知する先が、contactgroups.cfgで設定したどの通知先グループに属しているかを指定する。・misccommands.cfgアラート通知用のコマンドを指定する。・timeperiods.cfg監視する時間帯を指定する。●CGIコンフィグファイル(cgi.cfg)「cgi.cfg」は、CGI関連の設定を記述するコンフィグファイルである。●拡張コンフィグファイルCGIで使われるホストおよびサービスに対する付加情報を定義するために使用するコンフィグファイル。アイコンの定義等に使う。※ここでは言及しないが、NagiosのWebインタフェースを利用するには、Nagiosのコンフィグファイル以外にWebサーバプログラム(apacheなど)のコンフィグファイルの修正も必要である。CGIとHTMLファイルへのアクセスが可能になるよう、使用しているWebサーバプログラムごとに設定してほしい。実際にコンフィグファイルのパラメータの意味合いに注意しながら、システム監視の基本であるICMPによる疎通確認を定期的に実行するように設定してみよう。異常と判断する条件5分間、pingによる応答が連続してないこと通知先user@domain.com●hosts.cfgの設定hosts.cfgには、監視対象機器のホスト設定を記述する。テンプレートとしてのオブジェクトは、デフォルトのまま。個別の監視対象機器の設定は次のとおり。テンプレートの設定を継承し、ホスト名、IPアドレス、実行するコマンド、監視対象が完全にダウンしていると認知するまでの値、アラート通知に関連する設定(再連絡までの時間、通知の時間帯、通知内容)を設定する。●hostsgroups.cfghostsgroups.cfgには、監視対象のホストのグループを設定する。監視対象のwww.yahoo.co.jpは、test-serversというホストグループに属し、通知先のグループにtest-adminsを設定する。●escalations.cfgescalations.cfgには、アラートの通知方法を設定する。次の例では、5回目、6回目のping疎通不可で、contact_groupsへ通知をするように設定している。●services.cfgservices.cfgには、各監視対象機器にどのような監視を実行するのかを指定する。hosts.cfgと同様、まずテンプレートオブジェクトを定義するが、今回は標準のまま利用することにした。次に、今回の監視対象、www.yahoo.co.jpを個別の監視対象機器として定義する。テンプレートの設定を継承し、ホスト名、監視対象が完全にダウンしていると認知するまでの回数、正常であることを認知する回数、検知した異常を確認する回数、通知グループ、アラート通知に関連する設定(再連絡までの時間、通知の時間帯、通知内容)、実行コマンドを設定する。check-host-alive}#notification_intervalは、ステータス異常を通知後、一定の時間を置いてから再度そのステータス異常を通知する設定である。今回は“0”に設定して、一度通知されたステータス異常は再度送信しない。●timeperiods.cfgステータス異常を検知したときに、アラートを通知する時間帯を定義する。監視したい時間帯をこのファイルで定義し、timeperiod_nameで定義した名前をほかのファイルで呼び出して使用する。●contactgroups.cfgほかのコンフィグファイルで「contacts_group」として定義されている設定を記述するコンフィグファイル。メンバーとして定義されたパラメータ値は、contacts.cfgで定義する。●contacts.cfg「contactgroups.cfg」から、コンフィグファイルのメンバーとして呼び出される設定を定義する。ここで、service_notification_optionsの記述には、次のような意味がある。wwarninguunreachableccriticalrrecovereyまた、host_notification_optionsの記述には、次のような意味がある。して定義されているアラートの通知は、関連するhostが監視時間外の場合には省略される。何らかの異常ステータスを通知してきた場合のみ、復旧ステータスの送信を行うように設定されている。(つまり、復旧ステータスのみの通知は行わない)通知先は、emailオプションへ直接記述し、通知内容と実際に発行するコマンドは「service_notification_commands」および「host_notification_commands」から参照される「misccommands.cfg」に記述する。●misccommands.cfg異常を検知した場合に、そのアラートを通知するためのコマンドを定義する。command_nameで定義したオブジェクトの名前で、command_lineに記述したコマンドを実行する。contacts.cfg内で、service_notification_commandsやhost_notification_commandsから、ここで定義されたコマンドオブジェクトの名前を使用する。●checkcommands.cfg監視のために発行するコマンドを定義する。commandとして定義したオブジェクトの名前はcheck-host-aliveで、この名前をcheck_commandで定義すると、command_lineのように実行される。check-host-aliveは、pingコマンドを発行するcheck_pingコマンドを修正したもので、3秒間に80%のパケットロスを検知した場合にWarning、5秒間に100%のパケットロスを検知した場合にCriticalエラーと認識する。ここで、-wオプションや-cプションにおける単位は、ms(ミリ秒)である。-pオプションによって、1回に発行するICMPパケットの数を定義でき、このコマンドでは、“1”である。監視に必要なすべての設定をコンフィグファイルへ指定した後、コンフィグファイルの整合性を確認する。コンフィグファイルのチェックは、Nagiosの実行コマンドに-vオプションをつけてメインコンフィグファイルを指定して実行する。/usr/local/nagios/etc/nagios.cfgこれによって、メインコンフィグファイルであるnagios.cfgを読み込み、さらに指定されているすべてのコンフィグファイルの整合性を確認することが出来る。オプションによって確認される点は、次のとおりである。すべての通知先が少なくとも一つの通知先グループに含まれている各通知先グループに設定されたすべての通知先が、有効な設定であるすべてのホストが少なくとも一つのホストグループに含まれている各ホストグループに設定されたすべてのホストが、有効な設定であるすべてのホストが、関連する少なくとも一つのサービスを持っているサービスおよびホストを確認するためのコマンドが、有効な設定であるサービスおよびホストのイベントハンドラに使われているコマンドが、有効な設定であるサービスおよびホストの通知に使われているコマンドが、有効な設定であるサービス、ホスト、および通知先に対して関連付けられた通知時間が、有効な設定であるサービスに対して関連付けられたサービスの確認時間間隔が、有効な設定である-vオプション実行後にエラーが出た場合、これらのポイントを念頭に置いて各コンフィグファイルを確認しよう。Nagiosのリスタートコンフィグファイルの準備が終わったら、Nagiosに新しいコンフィグファイルを認識させるためにリスタートする必要がある。Nagiosを実行させていない場合には、普通に実行するだけで問題ない。基本的に監視ツールを停止することは稀である。そのため、監視ツールのプログラムはバックグラウンドで実行させるべきである。これらの作業はrootで実行すること。コンフィグファイルを修正してソフトウェアの再起動を掛けたいときは、コンフィグファイルを読み込ませるためのオプションが用意されているので、そのオプションを利用しよう。Nagiosを起動したら、実際に実行されているかどうかプロセスの実行で確認する。このコマンドを実行して得られたpidを使えば、killコマンドを使うことで、Nagiosを停止したり再起動をしたりすることができる。pidまとめ次回はNagiosによる指定URLの監視を設定し、Webサーバの稼働を常に監視する運用について言及する予定である。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。