2014/03/30 CentOS6.5/PandoraFMS5.0SP3





[解説] 管理しやすい警報メールとは (V5の場合)

どこでメールの要素を定義するか。それが問題です。
勉強をかねて考察してみましたが、まとめるほど複雑な情報量となりました。
なおV6以降の場合、アクションに障害・復旧の両方を定義できるのでずっと管理しやすくなりました。

アラートテンプレートでは、障害メールタイトル、障害メール本文、回復メールタイトル、回復メール本文が定義できます。(宛先も定義できますが、メール送信の効率的運用にそぐわないので省きます)
アラートアクションでは、メール宛先、メールタイトル、メール本文を定義できます。
柔軟性は高いですが、理解しにくい点もあります。

まず最初に覚えておくことがあります。それは優先度です。
アラートアクションの障害通知と復旧通知で本文を定義し、アラートアクションでもメール本文を定義したとします。
この場合、障害通知にはアラートアクションのメール本文が使用されますが、復旧通知にはアラートテンプレートのメール本文が使用されます。

障害通知の場合 テンプレート定義<アクション定義
復旧通知の場合 アクション定義<テンプレート定義

あまりに面倒なので、図にしてみました。
テンプレート、アクション全てで値を設定した場合のメール文の生成のされかたです。

画面上部はアラートテンプレートの障害・復旧画面
画面下部はアラートアクションの設定画面




メール本文の定義の仕方 「柔軟性の高さは困りもの」

メールの文をどこで定義すべきか?
組み合わせを検討したところ、およそ64の組み合わせが考えられました。
その中から同じ効果になるもの、意味のないものを排除し、6つに絞りました。
最終的に、現実として運用できそうなものは3つになりました。


障害メールタイトル
障害メール本文
復旧メールタイトル
復旧メール本文
デフォルト型
アラートアクション
アラートテンプレート
アラートテンプレート
アラートテンプレート
テンプレート型
アラートテンプレート
アラートテンプレート アラートテンプレート アラートテンプレート
アクション型
アラートテンプレート
アラートアクション
アラートテンプレート
アラートアクション
※テンプレート型は で解説しています。


デフォルトの設定型
 ・メールタイトルをアクションで定義
 ・メール本文をアラートテンプレートで定義

結果
 ・警告アラートでも障害アラートでも同じタイトルとなる
 ・メール本文の中で警告、障害の種類を記載しておく必要がある
 ・回復メールは回復用のタイトルにできる
 ・ログ出力アクションなどでも(多少)再利用しやすい



アラートテンプレート集約型
 ・メールタイトル、本文をアラートテンプレートで定義
 ・アラートアクションのメールタイトル、メール本文は空白

結果
 ・警告アラート、障害アラートで異なるメールタイトルを定義できる
 ・設定情報がわかりやすい
 ・どのメール送信先にも同じメールタイトル・文で送信できる
 ・回復メールは回復用のタイトルにできる
 ・新たにアラートテンプレートを追加したら、忘れずメールタイトルと本文を記述する。
 ・警報メールの形式を、送信先アドレスによって変化させたい場合には向かない
 ・メール向けに構成されているので、ログ出力などに同じアラートテンプレートを使うのは限界がある



アラートアクション集約型
 ・メールタイトルをアラートテンプレートで、本文をアラートアクションで定義
 ・アラートテンプレートの本文は空白、アラートアクションのタイトルは空白

結果
 ・警告アラート、障害アラートで異なるメールタイトルを定義できる
 ・どのアラートテンプレートからの呼び出しでも、同じメール文で送信される
 ・回復メールは回復用のタイトルにできる
 ・回復メールの本文の冒頭に[RECOVER]という言葉が加えられる
 ・多数のアラートテンプレートでいちいちメール文を定義したくない場合に適している
 ・監視方法によって警報メールの形式を変化させたい場合は向かない
 ・他の監視ソフトウェアでも多く持ちいられている構成




アラートアクションに設定を集約した設定

最後に、アクション型の設定手順を記しておきます。
メンドクサイ監視はしない。メール本文は常に一定でいい。本文設定は一か所に集約。
複雑な通報をしない方にお勧めです。

障害メール
アラートアクション
Subject
フィールド2

 (空白)
アラートアクション
フィールド3

(空改行)
Module: _module_
Agent: _agent_
Timestamp _timestamp_
Current value: _data_


アラートテンプレート

フィールド2
[BIZ-System] Critical _agent_
アラートテンプレート
フィールド3

(空白)

回復メール
アラートテンプレート

フィールド2

[BIZ-System] Recover _agent_

アラートテンプレート

フィールド3
(空白)


障害メール変更後 (アラートテンプレート・ステップ2)

アラートテンプレートの「障害通知」「拡張フィールド管理」を開き、フィールド2へ障害メールタイトルを記載します。本文に相当するフィールド3は空白とします。(記載されていても構いません)


回復メール変更後 (アラートテンプレート・ステップ3)

アラートテンプレートのステップ3・復旧通知でも、フィールド2に回復メールのタイトルを記載します。
本文に相当するフィールド3を空白とします。


メール本文 (アラートアクション)

アラートアクションで、メールタイトルのフィールド2を空白とします。
フィールド3にメール本文を定義します。
このとき、メール本文の一行目に空改行を入れておきます。
これは回復のときに、自動で[RECOVER]という文章が一行目に追加されるからです。

メールタイトルに監視システムのユニークなキーワードを入れておくと、メール受信後のメール振り分けが
楽になります。
ここでは [BIZ-System] というキーワードを入れてみました。

これにより、障害メールの内容は以下のようになります。
タイトル [BIZ-System] Critical WebSv02[BIZ-System] Recover WebSv02
本文
Module: Check HTTP Server
Agent : WebSv02
Timestamp 2014-03-22 17:38:27
Current value: 0.00
[RECOVER]
Module: Check HTTP Server
Agent : WebSv02
Timestamp 2014-03-22 17:43:50
Current value: 1.00

これでタイトルだけでサーバトラブルとわかり、メール本文でWebSv02というサーバ上のHTTPモジュールで障害が起きたと判断できます。
メールにCurrent valueが含まれているので、メモリ使用率上昇の警告でも数値把握できます。
アラートアクションの設定でメール本文を定義すると、回復メールが発生したときは自動で[RECOVER]という文字列が一行目に挿入されます。
仕様のようです。




設定の確認

設定の時期が異なると、いろんな設定のアラートが混在してしまうかもしれません。
具体的にはアラートメールの送信設定(正確には「アクションの引数」)がどこで指定されているか、わからなくなるかもしれません。

その場合、アラートの引数がどこで設定されているかの確認画面があります。

操作メニューの[アラート管理]をクリックすると、アラート一覧が表示されます。
アラート登録の右にある目のマークをクリックして、詳細が表示できます。



アクションを選択すると、そのアクションの引数がどこから受けているかが表示されます。






設定の考察

・メールタイトルにアラートレベル(障害や警告)を含まず、「Alert from _agent」等で統一できるなら、デフォルト型の構成も悪くない。

・メールの文内に、アラートレベルによって自動で「障害」や「警告」などの文字を埋め込むことはできません。 アラートレベルを表す変数「_alert_priority_」は、アラートレベルを数値で表現します。

・監視に、アラートのSyslog出力やSNS送信など、メール通報以外のニーズがあるかを検討する。ニーズがあればデフォルト型を検討し、Syslog出力の監視項目が多ければアラートテンプレートを複数構成する。


以下、状況別に考えてみました。


・メールタイトルにアラートレベルを含める必要がない

警報メールを全て「障害レベル」で通報するなら、レベル分けは不要でしょう。
(全てのL2スイッチノードの死活を監視するだけ、等)
この場合、メールタイトルをアラートアクションで定義しても問題ありません。

しかしウェブサーバのダウンは障害、CPU負荷上昇は警告でアラートを発生させるなら、メールタイトルにレベルが含まれているほうが便利です。
この場合はメールタイトルをアラートテンプレートで定義します。



・複数のアラートテンプレートがあっても、メール本文は一か所で統一しておきたい

アラートテンプレートでタイトルを設定し、アクションでメール本文を定義します。

通常、どんな障害が発生しても定型のメール文であることが多いです。
監視システムごとにメール定型自体変えてしまうのは、よほど必要性に迫られたときくらいでしょう。
つまり、大規模か複雑システムです。
あるいは監視体制が複数のチームに分かれている場合でしょう。



・メール送信先は複数使い分ける必要があるか

システム障害の種類によって、アラートメールを受け取る担当者が異なるか、です。
例えば各地域に支社が10あり、各支社ビル内のネットワークスイッチを監視しているとします。
各支社ビルの障害は、各支社のチームへメール通報するとします。

チームが10あるのですから、メールアクションを送信先別に10個定義します。
監視しているスイッチのIPが異なるだけで、送信するメールの文面は同一でしょう。
であるなら10のメールアクションひとつひとつにメールタイトル、メール本文を定義するのは手間です。
アラートテンプレートでメールタイトル、本文を定義し、メールを呼び分けるのが効果的です。



・アラート発生条件が異なる監視項目が多数ある。

「監視対象の監視除外時間が異なる」
 休日は監視しないシステム、夜間は監視しないシステム、定期的な再起動を行うシステム。
「最小アラーム数が異なる」
 一度でもTCPの応答がないと障害発生、5分以上応答が無ければ障害発生のシステム
「監視システムによって通報メールに含む項目が異なる」
このようにアラートテンプレートが多数ある場合は、テンプレートの作成のたびに情報を定義するのは面倒です。メール本文をアクションで定義したほうが、運用のミスが少ないと思われます。
逆に、一つでしか使用されないテンプレートが多いなら、定義をテンプレート内に設定し、情報が定義されていないメールアクションを用意するなど、ハイブリッドな構成が効率的なこともあるでしょう。






prev.gif