■はじめに
Nagiosでは監視項目毎に監視時間帯を設定出来ます。
例えば、コスト管理のため深夜帯(0:00-6:00)はサーバを停止する運用としていた場合、該当時間帯は監視しないよう設定することが可能です。
これまでシンプルな時間帯設定はやったことがあったのですが、便利な定義方法がドキュメントに記載されていましたため、試してみました。
■検証環境
# nagios --version
Nagios Core 3.4.1
■参考ドキュメント
・Nagios 3 ドキュメント - 時間帯定義
・設定例
■基本的な設定
・まずは基本的な定義方法を記載します。
○基本的な時間帯の定義
- 時間帯定義 - フォーマット
vi ./timeperiods.cfg (ファイル名は任意)
------
define timeperiod{
timeperiod_name timeperiod_name
alias alias
[weekday] timeranges ;平日の設定
[exception] timeranges ;例外の設定
exclude [timeperiod1,timeperiod2,...,timeperiodn]
}
- 時間帯定義 - 設定例
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
※特定の曜日の時間範囲を空欄にすると、それはその日は"有効"ではない時間帯として扱われる
- サービスへ定義反映
・各監視項目に下記ディレクティブを追加する
define service{
(省略)
check_period <timeperiod_name>
notification_period <timeperiod_name>
}
・補足
※check_period チェックする時間帯(デフォルト: 24x7)
※notification_period 通知時間帯(デフォルト: 24x7)
■検証
○共通手順
- 設定が完了したら構文チェック
# nagios -v /etc/nagios/nagios.cfg
-
- で問題ないことを確認したら反映のため再起動
# service nagios restart
- 確認
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!<インスタンスID>
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 となっており設定は有効なようだ。
○ 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
}
→ 指定日に監視するよう反映されていました。
■まとめ
ドキュメント記載どおりの定義にて、監視時間帯を設定できることが確認出来ました。
因みにその他にも定義方法があるようですが、上記を応用することでほぼ網羅出来るかと思います。
以上、シンプルで簡単に時間指定が出来ますというご報告でした。