メール送信アクション実行時における経路障害、SMTPサーバー障害時の動きについて

Zabbix-1.8.9-1 el6.JP.x86_64
お世話になります。
現在運用サーバーにおいて障害発生時にメールを送信しています。
メールサーバーへの経路障害やSMTPサーバーに障害が発生した場合、Zabbixの挙動を教えてください。

・監視対象サーバー障害発生
・Zabbixトリガーによるメール送信アクション開始
・経路障害によりメールサーバーに通信不可
・この後Zabbixの挙動を教えて頂けますでしょうか。

リトライ回数
最終失敗時のアクション処理
その後経路障害復旧後失敗したアクション処理はどう扱われるか。

宜しくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

メールの送信に関しては、メールサーバの構成や経路がどうなって
いるかにも影響を受けます。

今回は、標準のメール機能を利用している場合と仮定させて頂きま
す。
この場合は、メディアの設定内で指定されたSMTPサーバを経由して
メールが送信されます。

メールの送信は、メールの送信先の最終的なメールボックスまで直
接送りつけるのではなく、メールの塊を複数のメールサーバを経由
してバケツリレー的にメールを転送していくようになっています。
ですので、SMTPサーバで指定したサーバに対して正常に送られたと
しても、相手のメールボックスに届けるために複数のメールサーバ
を経由している途中で障害が発生してしまう場合があります。
このようなメール配信の経路上での障害は、Zabbix側は最初にアク
セスしたSMTPサーバとのやりとりは終了してしまっているので、そ
の先の障害を検知できません。

つまり、最初にメール送受信処理を行ったSMTPサーバとの間でのエ
ラーしかZabbixのアクション処理では検知できません。

メディアの設定で指定したSMTPサーバへのメール送信処理要求時に
接続できないなどのエラーが発生した場合であれば、リトライを行
うようになっています。

リトライ回数

リトライ回数はソースのinclude/common.hで定義されている

 ALERT_MAX_RETRIES

の値になります。
デフォルトでは、3回になっているようです。
変更する場合は、ソースからコンパイルしなおす必要があります。

最終失敗時のアクション処理

該当するアクションの状態が「失敗」となります。
これは、Webフロントエンドですと、

 「ダッシュボード」画面の「最新20件の障害」のアクション欄
 「イベント」画面のアクション欄

などに表示されます。
また、最終リトライが失敗したからといって、新たに別のアクショ
ンが自動的に実行されることはありません。

その後経路障害復旧後失敗したアクション処理はどう扱われるか。

リトライ回数を過ぎてしまったものに関しては、さかのぼって処理
はされません。
リトライを行っている間に復旧すれば、メールは送信されるでしょ
う。

最後に、Zabbixサーバと直接通信してメール送受信処理を行った
SMTPサーバよりも先のメール転送経路で障害が発生した場合、メー
ルがどう処理されるかは経路となる各メールサーバの設定次第とな
ります。

より確実にメールで通知するのであれば、送信先として複数の全く
異なるメールサービスのメールアドレスを利用したり、他の通知方
法との併用もご検討下さい。

誤りがございましたらご指摘ください。 >詳しい方々

ユーザー halchiyo の写真

詳しいわけではないのですが、もう一つの方法もご紹介だけします。

Zabbixからはあえてlocalhost宛に投げる事で、漏れ無くlocalhostに建てた
SMTPサーバー経由で配送させる方法もあります。

この方法のメリットは、
zabbix上のSMTPサーバーが健全な限り、基本的にはメールがqueuingされるので、
転送先のサーバーが一時的に問題があっても、queueの保存期間は再配送と
キューイングをくりかえしてくれるので、外部のSMTPサーバーの影響を受けにくい
利点があります。

デメリットは、
SMTPサーバーをあえて構築、メール経路設計や日常のメールサーバ運用管理が
更にひつようになることです。

よっぽど取りこぼしたくない場合でなければ、
上記標準の手法をご利用頂いたほうが良いと思います。

なお、ココからは余談ですが、
メールアクションを設定される場合、監視イベントが大量発生
しないようトリガー設定される事もご検討する事をオススメします。

log監視などで検知条件をゆるめに設定した場合など、運が
悪ければ何万件もメールが飛ぶコトもあり得ます。
人もメールサーバーも大きなストレスがかかることになります。
取りこぼさない事と合わせて、本来の障害対応に注力出来るよう、
イベントを出しすぎないコトもご検討下さい。

ユーザー marco の写真

各位
ご回答ありがとうございます。
Zabbixのリトライ回数がデフォルトで3回との回答を頂きました。
確認は以下の値との
リトライ回数はソースのinclude/common.hで定義されている

ALERT_MAX_RETRIES

リトライの間隔(待機時間)はお分かりになりますでしょうか。

初回失敗~待機時間~再度試行~失敗~待機時間~

宜しくお願い致します。

ユーザー kodai の写真

待機する時間というのは特にないのですが、SMTPの送信タイムアウトは40秒になっていたと思います。
40秒経って送信できなければキャンセルして再送信、という動きを3回繰り返します。