Nagios Coreでリモートホストの死活監視をする方法

投稿者: | 2020-04-17

前回はNagios Coreの主なフォルダ構成や設定ファイルの概要に触れたため、今回はNagios Coreでリモートホストの死活監視を行う方法について説明します。

死活監視とは

ネットワークやサーバ等が稼働しているかどうかを外部から監視することを死活監視と言います。死活監視の代表例にPingコマンドがあります。サーバやネットワークの疎通が取れないということは、何かしらの障害や不具合があると考えられるため、死活監視は障害等を素早く検知するために重要な役割を果たします。

Nagiosの設定の流れ

Nagiosでホストを設定するためには、主に下記の流れで設定を行います。

  1. 監視対象の設定ファイルを配置するフォルダを作成する
  2. コマンドを定義する
  3. 監視対象のホストを定義する
  4. 動作確認

ある程度慣れてくると、監視対象の種別ごとにテンプレートを作成し、ホスト名とIPアドレス、監視ホストの種別を入力することで自動的に設定してくれるシェル等も作ることも可能です。

今回の構成

今回は下記のような構成で死活監視を行います。

Nagiosサーバは下記手順で既に管理画面の確認までできる状態を想定して説明します。Nagiosサーバがまだできていない人は、下記のリンクよりNagiosサーバのインストールを行ってください。

・CentOS8にNagios Coreをインストールする方法

https://www.kdkwakaba.com/archives/468

リモートホストの定義ファイル用フォルダ作成・設定

初めに、監視するリモートホストの定義ファイルを配置するフォルダを作成します。

# mkdir /usr/local/nagios/etc/servers

次にetc配下にあるnagios.cfgの設定を変更します。

# vi /usr/local/nagios/etc/nagios.cfg

■nagios.cfg
--------------------------------------------------
・変更前
#cfg_dir=/usr/local/nagios/etc/servers

・変更後
cfg_dir=/usr/local/nagios/etc/servers
--------------------------------------------------

今回は「/usr/local/nagios/etc/servers」というフォルダを指定していますが、デフォルトであるパス以外を指定したい場合は「cfg_dir」のパスを指定した場所に変更してフォルダを作成します。

監視コマンドの定義

次に監視用のコマンドを定義しますが、今回行う死活監視用の「check_ping」コマンドがデフォルトで定義されているため、こちらを使いながら説明します。

# vi /usr/local/nagios/etc/objects/commands.cfg

■commands.cfg
--------------------------------------------------
define command {

    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 
}
--------------------------------------------------

各ディレクティブの内容については下記の通りとなります。

define command コマンドの定義を示す。define commandで囲われている内容はコマンドとして扱われる。
command_name コマンド名を指定するディレクティブ。監視するリモートホストの設定を行う際には、ここで指定したコマンド名を使用する。
command_line 実行するコマンドを指定するディレクティブ。主にNagiosのプラグインを指定するところだが、PerlやPython等のスクリプトを指定することもできる。また、resource.cfgで定義された「$USER1$」等の変数、「$ARG1$」のような引数も指定することができる。

check_pingのオプションについては下記の通りとなります。

-H 監視するホストのIPアドレスを指定するオプション。
-w WARNINGの閾値を設定するオプション。RTA(応答速度),パケットロス(%)の形式で記載する。
-c CRITICALの閾値を設定するオプション。RTA(応答速度),パケットロス(%)の形式で記載する。
-p ICMP ECHOのパケット数を指定するオプション。省略時はとなる。5回

監視するリモートホストの定義

コマンドの定義後は監視するリモートホストを定義します。ファイル名には「.cfg」という拡張子を指定します。

# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg

■CentOS8-test1.cfg
--------------------------------------------------
define host {

    use          linux-server
    host_name    CentOS8-test1
    alias        server
    address      192.168.56.108
}

define service {

    use                  generic-service
    host_name            CentOS8-test1
    service_description  PING
    check_command        check_ping!100.0,20%!500.0,60%
}
--------------------------------------------------

各ディレクティブの内容については下記の通りとなります。

define host 監視するホストの定義を示す。管理画面のホスト名、分類として使われる。
define service 監視するサービスの定義を示す。管理画面の表示名、分類名として使われる。
use 使用するテンプレートを定義するディレクティブ。テンプレートを使用することで、予めまとめた設定を適用することができる。
host_name Nagiosの管理画面上で表示される表示名を指定するディレクティブ。監視対象のホスト名等をつける。
alias Nagiosの管理画面上で表示される補足名等を指定するディレクティブ。主に何をするサーバか、等を設定する。
address 監視するサーバのIPアドレスを指定するディレクティブ。
service_description Nagiosの管理画面で表示されるサービス名。何を監視しているか分かる内容を設定する。
check_command 使用するコマンドを指定するディレクティブ。コマンドで引数が必要な場合は「!」で区切って指定を行う。

設定が終わったらNagiosを再起動します。

# systemctl restart nagios

動作確認

設定が終わったらNagiosの管理画面にアクセスし、左側の「Services」をクリックします。

設定したCentOS8-test1が稼働していれば、StatusにOKが表示されます。

試しに、CentOS8-test1をシャットダウンさせた状態で放置していると、Pingの応答がないためStatusがCRITICALになります。

まとめ

  • 死活監視はネットワークやサーバ等が稼働しているか監視すること。
  • Nagiosで死活監視をする場合、フォルダ作成→コマンド定義→監視するリモートホストを定義、の流れで行う。
  • 設定した項目はNagiosの管理画面の「Services」から確認できる。

次回は各種プロトコル等の監視について説明します。