Icinga Director でメール通知の設定を行う。
s-nail(mailx 後継コマンド)のインストールおよび設定
icinga2 には標準でメール送信コマンド (/etc/icinga2/scripts/mail-{host,service}-notification.sh) が用意されているがこれは mailx(s-nail) を使ってメールを送信しているようだ。この s-nail についてはこちらを参照し、インストールおよび /etc/s-nail.rc の設定を行っておく。
なお、/etc/s-nail.rc の一例を以下に示す。
set mta=smtp://foo%40example.com:password@example.com:587
set smtp-use-starttls
set smtp-auth=plain
set v15-compat
set from=foo@example.com
メール通知設定
本家のドキュメントをみてもメール通知の設定方法がいまいちよくわからなかったが、ようやくまとまったページ(こちら)が見つかったのでこれを参考に設定を行う。ただし、こちらは icinga2 が動作している環境に postfix をインストールしそれを利用してメールを送信する方法となっている(それ専用のスクリプトもダウンロードできるようになっている)。近場にメールサーバがない場合はこの方法を用いてもいいだろう。
ここでは、mailx(s-nail) を利用した方法を説明する。
通知用ユーザの作成
通知用ユーザとは、各種通知を受け取るユーザのことである。システム用のユーザとは別に作成する。
ユーザグループの作成
ユーザグループを作成する。
左ペインの「Icinga Director」をクリック、つづいて画面中央の「ユーザ/コンタクト」をクリック、さらに画面右の「グループ一覧」をクリックする。

画面右のユーザグループの「追加」をクリックする。

ユーザグループおよび表示名に「Admin Group」を入力する。グループ名および表示名は任意。

入力ができたら「追加」をクリックする。

ユーザグループに「Admin Group」が追加された。

ユーザテンプレートの作成
ユーザテンプレートを作成する。
左ペインの「Icinga Director」をクリック、つづいて画面中央の「ユーザ/コンタクト」をクリック、さらに画面右の「ユーザテンプレート」をクリックする。

画面右(すべてのユーザテンプレート画面)の「追加」をクリックする。

ユーザテンプレート名に「ADMIN」、グループに先ほど定義した「Admin Group」を選択する。状態フィルターと状態タイプフィルターは以下のように設定する。
状態: Critical, Down, OK, Unknown, Up, Warning
状態遷移タイプ: Acknowledgement, Custoum, DowntimeEnd, DowntimeRemoved, DowntimeStart, FlappingEnd, FlappingStart, Problem, Recovery
フィルターの部分は、一つ一つ選択していく。入力できたら「追加」をクリックする。

テンプレート「ADMIN」(未使用)が作成された。

ユーザの作成
つづいてユーザを作成する。
左ペインの「Icinga Director」をクリック、つづいて画面中央の「ユーザ/コンタクト」をクリック、さらに画面右の「ユーザ/コンタクト」をクリックする。

画面右の「追加」をクリックする。

ユーザ名および表示名に「info-icinga」、インポートで「ADMIN」を選択、Eメールに送信先のアドレス、後は下の画面の通りに入力する。最後に「追加」をクリックする。

コマンドの定義
つづいてコマンドを定義する。
コマンドの定義
左ペインの「Icinga Director」をクリック、つづいて画面中央の「コマンド」をクリックする。

画面右のコマンド画面の「Add」をクリックする。

コマンドタイプとして「Notification Plugin Command」を選択する。

コマンド名を「Host Alarm By Email」とする。コマンドに「/etc/icinga2/scripts/mail-host-notification.sh」を選択する。

最後に「保存」をクリックする。

同様にコマンド名「Service Alarm By Email」についても定義しておく。「Host Alarm By Email」との違いは、コマンドに「/etc/icinga2/scripts/mail-service-notification.sh」を指定すること。
コマンド引数の定義
つづいて、コマンド引数を定義する。
定義したコマンドを選択し、画面右の「Argument」タブをクリックする。すると以下の画面になる。

引数名と値に入力したら「追加」をクリックする。
「Host Alarm By Email」のコマンド引数は以下のものを定義する。
引数 | 値 |
---|---|
-4 | $address$ |
-6 | $address6$ |
-b | $notification.author$ |
-c | $notification.comment$ |
-d | $icinga.long_date_time$ |
-f | $notification_from$ |
-i | $icingaweb2url$ |
-l | $host.name$ |
-n | $host.display_name$ |
-o | $host.output$ |
-r | $user.email$ |
-s | $host.state$ |
-t | $notification.type$ |
-v | $notification_logtosyslog$ |
また、「Service Alarm By Email」のコマンド引数は以下のものを定義する。
引数 | 値 |
---|---|
-4 | $address$ |
-6 | $address6$ |
-d | $icinga.long_date_time$ |
-e | $service.name$ |
-l | $host.name$ |
-n | $host.display_name$ |
-o | $service.output$ |
-r | $user.email$ |
-s | $service.state$ |
-t | $notification.type$ |
-u | $service.display_name$ |
以下はコマンド引数を入力した画面の例。

メール通知設定
メール通知設定を行う。
通知テンプレートの作成
左ペインの「Icinga Director」をクリック、つづいて画面中央の「通知テンプレート」をクリックする。

さらに画面右の「追加」をクリックする。

以下の情報を入力する。
通知テンプレート: Mail-Host-Template
通知コマンド: Host Alarm By Email
通知インターバル: 7200
最終通知までの時間: 2592000(30days)

「追加」をクリックする。
つづいて、以下の情報でテンプレートを追加する。
通知テンプレート: Mail-Service-Template
通知コマンド: Service Alarm By Email
通知インターバル: 7200
最終通知までの時間: 2592000(30days)
通知設定
左ペインの「Icinga Director」の「通知」をクリックする。

つづいて画面中央の「通知」をクリックし、画面右側の「追加」をクリックする。

以下の情報で設定する。
通知設定1
通知: Notification on Host Alerts to Admins
インポート: Mail-Host-Template
ユーザグループ: Admin Group
適用先: ホスト
条件式の指定: host.enable_notifications is true(or set)
状態フィルターと遷移タイプフィルター
状態: Down, Up
状態遷移タイプ: Acknowledgement, Custom, Problem, Recovery
通知設定2
通知: Notification on Service Alerts to Admins
インポート: Mail-Service-Template
ユーザグループ: Admin Group
適用先: サービス
条件式の指定: service.enable_notifications is true(or set)
状態フィルターと遷移タイプフィルター
状態: Critical, OK, Unknown, Warning
状態遷移タイプ: Acknowledgement, Custom, Problem, Recovery
以下のようになる。

これで、通知設定は完了である。
テスト
監視対象のホストをシャットダウン・再起動してメール通知が実施されるかどうか確認する。
当方の環境では上記の設定でメールが発信された。
コメント