【Nagios集中講座 第6回】ホスト、サービス、コマンドについて知ろう

前回は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つのオブジェクトについて簡単に見てみました。次回は他のオブジェクトについても見ていくことにしましょう。

Nagios集中講座 Index

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。