はじめに
Nagiosでは監視項目毎に監視時間帯を設定出来ます。
例えば、コスト管理のため深夜帯(0:00-6:00)はサーバを停止する運用としていた場合、該当時間帯は監視しないよう設定することが可能です。
これまでシンプルな時間帯設定はやったことがあったのですが、便利な定義方法がドキュメントに記載されていましたため、試してみました。
検証環境
# nagios --version Nagios Core 3.4.1
参考ドキュメント
Nagios 3 ドキュメント – 時間帯定義
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/timeperiods.html
設定例
基本的な設定
- まずは基本的な定義方法を記載します。
基本的な時間帯の定義
1) 時間帯定義 – フォーマット
vi ./timeperiods.cfg (ファイル名は任意) ------ define timeperiod{ timeperiod_name timeperiod_name alias alias [weekday] timeranges ;平日の設定 [exception] timeranges ;例外の設定 exclude [timeperiod1,timeperiod2,...,timeperiodn] }
2) 時間帯定義 – 設定例
define timeperiod{ timeperiod_name timeperiod_mitzi alias Non-Work Hours sunday 00:00-24:00 monday 00:00-09:00,17:00-24:00 tuesday 00:00-09:00,17:00-24:00 wednesday 00:00-09:00,17:00-24:00 thursday 00:00-09:00,17:00-24:00 friday 00:00-09:00,17:00-24:00 saturday 00:00-24:00 } → 月〜金の9:00-17:00は監視対象外 → 土日は、24時間監視
補足
※ 指定書式は24時間制でHH:MM-HH:MM
※ 特定の曜日の時間範囲を空欄にすると、それはその日は”有効”ではない時間帯として扱われる
3) サービスへ定義反映
- 各監視項目に下記ディレクティブを追加する
define service{ (省略) check_periodnotification_period }
補足
※check_period チェックする時間帯(デフォルト: 24×7)
※notification_period 通知時間帯(デフォルト: 24×7)
検証
共通手順
1) 設定が完了したら構文チェック
# nagios -v /etc/nagios/nagios.cfg
2) 1) で問題ないことを確認したら反映のため再起動
# service nagios restart
3) 確認
NagiosGUIの表示に反映されることをもって今回は確認としています。
利用したサービス
- 監視時間帯の定義をCPU監視に設定しました
define service { use mitzi_cloudpack.jp-service host_name mitzi_cloudpack.jp_develop-ec2 service_description cpu_ec2 service_groups cpu_ec2 check_command check-cloudwatch-cpu_ec2-cloudpack!60!80! check_period timeperiod_mitzi notification_period timeperiod_mitzi }
01. 基本的な設定ができる事を確認
※ dateコマンドにて確認時点の日時を記載しています(以下略)。
# date 2015年 9月 1日 火曜日 21:40:36 JST define timeperiod{ timeperiod_name timeperiod_mitzi alias Non-Work Hours tuesday 00:00-09:00,23:00-24:00 }
02-1. 指定日付を毎月チェック
- 毎月2日は監視するよう指定
# date 2015年 9月 2日 水曜日 18:55:23 JST define timeperiod{ timeperiod_name timeperiod_mitzi alias Non-Work Hours day 2 00:00-19:10 } → 次の監視タイミングが 10-02-2015 00:00:00 となっており設定は有効なようだ。
- 9/2以降の表示結果
02-2. 指定日付(範囲)を毎月チェック
- 毎月15日から月末まで監視
# date 2015年 9月 4日 金曜日 06:41:22 JST define timeperiod{ timeperiod_name timeperiod_mitzi alias Non-Work Hours day 15 - -1 00:00-09:00,17:00-24:00 } → 反映されている模様。月末まで監視出来ていなかった場合は追ってご報告します。
03. 特定日をチェック
- 指定日付(2015/09/05)の指定時間をピンポイントで監視
# date 2015年 9月 4日 金曜日 06:41:22 JST define timeperiod{ timeperiod_name timeperiod_mitzi alias Non-Work Hours 2015-09-05 00:00-09:00,17:00-24:00 } → 指定日に監視するよう反映されていました。
まとめ
ドキュメント記載どおりの定義にて、監視時間帯を設定できることが確認出来ました。
因みにその他にも定義方法があるようですが、上記を応用することでほぼ網羅出来るかと思います。
以上、シンプルで簡単に時間指定が出来ますというご報告でした。