前回はNagios Coreでリソースの監視方法を説明しました。今回は監視対象のホストを設定する際、useディレクティブで設定していたテンプレートと特定の時間帯を定義するタイムピリオドの設定方法について説明します。
目次
Nagiosのテンプレートについて
Nagios Coreのテンプレートとは、監視対象のホストやサービスの設定をあらかじめまとめておいたものです。
監視間隔等の詳細な設定は、個別の項目を一つ一つ設定することもできますが、同じサービスごとに一つ一つ設定を行うのはとても大変です。また、設定値の変更となった際、同じ設定を行った部分を全て修正しなければいけなくなります。手動で行う場合には、設定ミスをしてしまうリスクにもなります。
そこで、Nagios Coreのテンプレートを使用することで、監視対象のホストやサービスに同じ設定内容を設定できるようになります。設定値をまとめて修正したい、という際には、テンプレートの値を変更するだけで、テンプレートを設定した全てのホストやサービスに対して設定が変更されます。
テンプレートのイメージは下記の図のような感じです。

テンプレートの内容について
テンプレートの定義ファイル・templates.cfgはnagiosフォルダのetc/objectsフォルダの中にあります。今回は死活監視やリソース監視の際に使用したgeneric-serviceの内容を掲載します。
■templates.cfg
--------------------------------------------------
define service {
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
check_period 24x7
max_check_attempts 3
check_interval 10
retry_interval 2
contact_groups admins
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}
--------------------------------------------------
generic-serviceのディレクティブ内容については以下の通りです。
name | テンプレート名を設定するディレクティブ。useで使用するテンプレート名となる。 |
---|---|
active_checks_enabled | アクティブチェックを有効/無効にするディレクティブ。0は無効、1は有効。 |
passive_checks_enabled | パッシブチェックを有効/無効にするディレクティブ。0は無効、1は有効。 |
parallelize_check | サービスのチェックを並列で実行するかどうかを設定するディレクティブ。0は無効、1は有効。 |
obsess_over_service | 分散監視用の機能のオブセスオーバーを有効にするかどうかを設定するディレクティブ。0は無効、1は有効。 |
check_freshness | フレッシュネスチェックを有効にするかどうかを設定するディレクティブ。0は無効、1は有効。 |
notifications_enabled | 通知機能を有効にするかどうかを設定するディレクティブ。0は無効、1は有効。 |
event_handler_enabled | イベントハンドラーを有効にするかどうかを設定するディレクティブ。0は無効、1は有効。 |
flap_detection_enabled | フラッピング機能を有効にするかどうかを設定するディレクティブ。0は無効、1は有効。 |
process_perf_data | パフォーマンスデータを処理するかどうかを設定するディレクティブ。0は無効、1は有効。 |
retain_status_information | 監視状態を自動保存するかどうかを設定するディレクティブ。0は無効、1は有効。 |
retain_nonstatus_informatio | 設定情報を保存するかどうかを設定するディレクティブ。0は無効、1は有効。 |
is_volatile | Volatileサービスかどうかを設定するディレクティブ。有効にするとチェックごとに通知を送信するようになる。0は無効、1は有効。 |
check_period | チェックする時間帯を指定するディレクティブ。後述するタイムピリオド等で設定する。 |
max_check_attempts | OK以外の状態が返ってきた時の再試行回数を設定するディレクティブ。 |
check_interval | 監視間隔を指定するディレクティブ。タイムユニットごとに指定する。 |
retry_interval | 障害検知時の再試行間隔を指定するディレクティブ。タイムユニットごとに指定する。 |
contact_groups | 通知先のグループを指定するディレクティブ。指定されたグループに属するメンバーが通知先の対象となる。 |
notification_options | どの状態になったら通知を行うかを指定するディレクティブ。wはWARNING、cはCRITICAL、uはUNKNOWN、rは復旧状態の時。 |
notification_interval | 通知間隔を指定するディレクティブ。タイムユニットごとに指定する。 |
notification_period | 通知する時間帯を指定するディレクティブ。後述するタイムピリオド等で設定する。 |
register | テンプレートとして登録するかどうかを設定するディレクティブ。0はテンプレート専用、1はオブジェクト定義となる。 |
テンプレートの設定方法
テンプレートを設定するためには、etc/objects配下にあるtemplates.cfgファイルにテンプレートを定義します。
# vi /usr/local/nagios/etc/objects/templates.cfg
■templates.cfg
--------------------------------------------------
define service {
name test-template
low_flap_threshold 25.0
high_flap_threshold 50.0
register 0
}
--------------------------------------------------
テンプレート設定後、監視対象のホストに作成したテンプレートを設定します。useディレクティブで設定する際、「,」で区切ることで複数のテンプレートを設定することができます。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
define service {
use generic-service,test-template
host_name CentOS8-test1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
--------------------------------------------------
テンプレート設定後はNagiosを再起動します。
# systemctl restart nagios
テンプレートの優先順位
テンプレート内のディレクティブ内容については、個々のサービスに設定を行うこともできます。
もし、テンプレートと個々に設定したディレクティブが被り、設定値が異なる場合はどちらの値が優先されるかという疑問が出てきます。
例えば、テンプレートの設定方法にて設定した内容に対し、監視対象ホストで下記のような設定が行われているとします。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
define service {
use generic-service,test-template
host_name CentOS8-test1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
low_flap_threshold 10.0
}
--------------------------------------------------
test-templateではlow_flap_thresholdは25.0と設定されていますが、ローカルの定義では10.0と設定されています。
この場合、テンプレートで設定した内容ではなくローカルで設定された10.0が優先されます。そのため、特定のサービスだけ個別に設定値の変更を行いたい場合はローカル定義を設定することで部分的に変更することができます。
タイムピリオドについて
タイムピリオドとは、特定の時間帯をまとめたテンプレートのようなものです。
テンプレートの設定の際に登場したcheck_period等の時間帯を設定するディレクティブに対し、タイムピリオドの設定値を使用することで、時間帯を簡単に設定することができます。テンプレートの設定の際に使用していた24×7もタイムピリオドの一つです。
また、業務時間帯にだけ監視を行いたい、通知を行いたい、等、運用の時間に合わせた監視を行うこともできます。
タイムピリオドの内容について
タイムピリオドの定義ファイル・timeperiods.cfgはnagiosフォルダのetc/objectsフォルダの中にあります。今回はテンプレートを設定する際に使用したcheck_periodの24×7の内容を掲載します。
■timeperiods.cfg
--------------------------------------------------
define timeperiod {
name 24x7
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
--------------------------------------------------
各ディレクティブ内容については以下の通りです。
name | テンプレート名を設定するディレクティブ。useで使用するテンプレート名となる。 |
---|---|
timeperiod_name | タイムピリオド名を設定するディレクティブ。ここで指定した名前を監視対象の設定値として使用する。 |
alias | 時間帯名の別名を設定するディレクティブ。 |
各曜日 | それぞれの曜日に対する時間帯を設定するディレクティブ。午前9時から午後6時までを設定する場合は09:00-18:00と設定する。 |
タイムピリオドの設定方法
タイムピリオドを設定するためには、etc/objects配下にあるtimeperiods.cfgファイルにタイムピリオドを定義します。今回は月曜日から金曜日の午前9時から午後6時までを定義します。
# vi /usr/local/nagios/etc/objects/timeperiods.cfg
■timeperiods.cfg
--------------------------------------------------
define timeperiod {
name work
timeperiod_name work
alias work 9:00-18:00
monday 09:00-18:00
tuesday 09:00-18:00
wednesday 09:00-18:00
thursday 09:00-18:00
friday 09:00-18:00
}
--------------------------------------------------
タイムピリオド設定後、check_period等の時間帯の設定が必要なディレクティブに対し、タイムピリオドを設定します。
# vi /usr/local/nagios/etc/objects/templates.cfg
■templates.cfg
--------------------------------------------------
define service {
name test-template
low_flap_threshold 25.0
high_flap_threshold 50.0
check_period work
register 0
}
--------------------------------------------------
タイムピリオド、テンプレート設定後はNagiosを再起動します。
# systemctl restart nagios
まとめ
- テンプレートは複数の設定をまとめたもの
- テンプレートを使用することで複数のホストに同じ設定ができる
- テンプレートよりローカルの設定が優先される
- タイムピリオドは時間帯をまとめたもの
次回はNagios Coreの設定ファイルnagios.cfgの設定について説明します。