Nagiosメモ - 時間帯定義

　　　　　![Nagios logo.jpg](https://qiita-image-store.s3.amazonaws.com/0/50310/93e0892c-b5f7-e6d9-461e-982eb6c628e4.jpeg)
# ■はじめに
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			<timeperiod_name>
	notification_period		<timeperiod_name>
}
```
・補足
※check_period   チェックする時間帯(デフォルト: 24x7)
※notification_period 通知時間帯(デフォルト: 24x7)


# ■検証

## ○共通手順
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!<インスタンス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
}
```

![20150901_時間帯設定検証01.png](https://qiita-image-store.s3.amazonaws.com/0/50310/3ecc3691-4696-78b9-3ff6-d122c472f21e.png)

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

![20150901_時間帯設定検証02_指定日付を毎月チェック01.png](https://qiita-image-store.s3.amazonaws.com/0/50310/2a2d34cc-15db-7224-e5a6-8b0313777481.png)

・9/2以降の表示結果
![20150901_時間帯設定検証02_指定日付を毎月チェック02.png](https://qiita-image-store.s3.amazonaws.com/0/50310/1ce0bf22-0c88-2143-1387-12c80dbd7d73.png)

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

![20150904_時間帯設定検証02-2_指定日付_範囲_を毎月チェック.png](https://qiita-image-store.s3.amazonaws.com/0/50310/2a48f4e4-0451-440f-820b-1040227b54e1.png)

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

![20150904_時間帯設定検証03_指定日01.png](https://qiita-image-store.s3.amazonaws.com/0/50310/0b8eb05e-fc0b-ebfe-d379-e8642ed7bd4d.png)


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

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