前回はNagiosのディレクトリ構造とファイルの役割について説明しました。
今回は、そのファイルの中でも特に重要なオブジェクト設定ファイルについて、詳しく説明していきます。
オブジェクト設定ファイルと、オブジェクトの種類
オブジェクト設定ファイルには、特に決まったファイル名はありません。nagios.cfgで設定されたファイルもしくはディレクトリ以下のファイルが読み込まれるだけです。オブジェクト設定ファイルは具体的には下記のようなものです。
define host{
use linux-server
host_name localhost
alias localhost
address 127.0.0.1
check_period 24x7
check_interval 5
max_check_attempts 10
check_command check-host-alive
contact_groups admins
}
これは、最初の行にdefine hostとあるので、ホスト定義です。オブジェクトの種類はホストをはじめとして、下記の14種類があります。
- host ・・・ホスト定義
- hostgroup ・・・ホストグループ定義
- service ・・・サービス定義
- servicegroup ・・・サービスグループ定義
- contact ・・・通知先定義
- contactgroup ・・・通知先グループ定義
- timeperiod ・・・時間帯定義
- command ・・・コマンド定義
- hostdependency ・・・ホスト依存定義
- servicedependency ・・・サービス依存定義
- hostescalation ・・・ホストエスカレーション定義
- serviceescalation ・・・サービスエスカレーション定義
- hostextinfo ・・・拡張ホスト情報定義
- serviceextinfo ・・・拡張サービス情報定義
その構造は、下図のようになっています。(ホストエスカレーション以下は省略した)
ホストとサービス
特に重要なのはホストとサービスです。
ホストは、監視対象となる機器を指します。ホストグループとして複数のホストをまとめることが出来ます。(逆に、ホストは複数のホストグループに所属することも出来ます。)
サービスは、監視の内容です。例えば、PING、HTTPといったようなものです。
ただ、ここで少し紛らわしいのは、Nagiosでの監視には、「ホストチェック」と「サービスチェック」の2種類があるということです。
ホストチェックの監視結果とサービスチェックの監視結果は連動しません。例えば、あるホストのWebサーバを監視(サービスチェック)していたとして、そのWebサーバが警告状態になったからといって、ホストチェックの監視結果も警告状態になるというわけではありません。
ホストチェックとは、ホストそのものが生きているかを判断するもので、基本的にはPINGで行います。上記の例では、Webサーバのサービスチェックとしての監視結果は警告状態ですが、ホストへのPINGが正常であれば、ホストチェックの監視結果はUP(正常)です。
サービス定義の具体例は下記のようなものです。
define service{
use local-service
host_name localhost
service_description HTTP inoccu.net
check_command check_http_vhost!inoccu.net!/!
check_period 24x7
check_interval 5
max_check_attempts 10
}
コマンドとプラグイン
上に示したホスト定義や、サービス定義で、check_commandという項目があります。これは具体的にどのような監視を行うかを設定するものです。
Nagiosでの監視の実体はプラグインの実行であることは第3回で説明しましたが、例えば、上記のサービスのcheck_commandで指定されているcheck_http_vhostは、プラグインそのものを指定しているのではありません。サービス定義と実行されるプラグインの指定の間に、もうひとつコマンド定義というものが介在しています。
define command{
command_name check_http_vhost
command_line $USER1$/check_http -I $HOSTADDRESS$ -H $ARG1$ -u $ARG2$ $ARG3$
}
ここに挙げた例では、check_http_vhostというコマンドは、実はcheck_httpというプラグインを実行するものであったと分かります。$ARG1$のような$で囲まれた文字列はNagiosマクロです。サービス定義のcheck_commandで、!で区切った文字列がありますが、これがそれぞれ$ARG1$、$ARG2$、$ARG3$に置換されます。
今回は、ホスト、サービス、コマンドという3つのオブジェクトについて簡単に見てみました。次回は他のオブジェクトについても見ていくことにしましょう。