はじめに

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

設定例

https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html#timeperiod

基本的な設定

  • まずは基本的な定義方法を記載します。

基本的な時間帯の定義

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_period            
    notification_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
}

3ecc3691-4696-78b9-3ff6-d122c472f21e

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 となっており設定は有効なようだ。

2a2d34cc-15db-7224-e5a6-8b0313777481

  • 9/2以降の表示結果

1ce0bf22-0c88-2143-1387-12c80dbd7d73

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
}
→ 反映されている模様。月末まで監視出来ていなかった場合は追ってご報告します。

2a48f4e4-0451-440f-820b-1040227b54e1

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
}
→ 指定日に監視するよう反映されていました。

0b8eb05e-fc0b-ebfe-d379-e8642ed7bd4d

まとめ

ドキュメント記載どおりの定義にて、監視時間帯を設定できることが確認出来ました。
因みにその他にも定義方法があるようですが、上記を応用することでほぼ網羅出来るかと思います。

以上、シンプルで簡単に時間指定が出来ますというご報告でした。

元記事はこちら

Nagiosメモ – 時間帯定義