Zabbix-1.8.9-1 el6.JP.x86_64
お世話になります。
現在運用サーバーにおいて障害発生時にメールを送信しています。
メールサーバーへの経路障害やSMTPサーバーに障害が発生した場合、Zabbixの挙動を教えてください。
・監視対象サーバー障害発生
・Zabbixトリガーによるメール送信アクション開始
・経路障害によりメールサーバーに通信不可
・この後Zabbixの挙動を教えて頂けますでしょうか。
リトライ回数
最終失敗時のアクション処理
その後経路障害復旧後失敗したアクション処理はどう扱われるか。
宜しくお願い致します。
TNK - 投稿数: 4769
メールの送信に関しては、メールサーバの構成や経路がどうなって
いるかにも影響を受けます。
今回は、標準のメール機能を利用している場合と仮定させて頂きま
す。
この場合は、メディアの設定内で指定されたSMTPサーバを経由して
メールが送信されます。
メールの送信は、メールの送信先の最終的なメールボックスまで直
接送りつけるのではなく、メールの塊を複数のメールサーバを経由
してバケツリレー的にメールを転送していくようになっています。
ですので、SMTPサーバで指定したサーバに対して正常に送られたと
しても、相手のメールボックスに届けるために複数のメールサーバ
を経由している途中で障害が発生してしまう場合があります。
このようなメール配信の経路上での障害は、Zabbix側は最初にアク
セスしたSMTPサーバとのやりとりは終了してしまっているので、そ
の先の障害を検知できません。
つまり、最初にメール送受信処理を行ったSMTPサーバとの間でのエ
ラーしかZabbixのアクション処理では検知できません。
メディアの設定で指定したSMTPサーバへのメール送信処理要求時に
接続できないなどのエラーが発生した場合であれば、リトライを行
うようになっています。
リトライ回数はソースのinclude/common.hで定義されている
ALERT_MAX_RETRIES
の値になります。
デフォルトでは、3回になっているようです。
変更する場合は、ソースからコンパイルしなおす必要があります。
該当するアクションの状態が「失敗」となります。
これは、Webフロントエンドですと、
「ダッシュボード」画面の「最新20件の障害」のアクション欄
「イベント」画面のアクション欄
などに表示されます。
また、最終リトライが失敗したからといって、新たに別のアクショ
ンが自動的に実行されることはありません。
リトライ回数を過ぎてしまったものに関しては、さかのぼって処理
はされません。
リトライを行っている間に復旧すれば、メールは送信されるでしょ
う。
最後に、Zabbixサーバと直接通信してメール送受信処理を行った
SMTPサーバよりも先のメール転送経路で障害が発生した場合、メー
ルがどう処理されるかは経路となる各メールサーバの設定次第とな
ります。
より確実にメールで通知するのであれば、送信先として複数の全く
異なるメールサービスのメールアドレスを利用したり、他の通知方
法との併用もご検討下さい。
誤りがございましたらご指摘ください。 >詳しい方々
halchiyo - 投稿数: 19
詳しいわけではないのですが、もう一つの方法もご紹介だけします。
Zabbixからはあえてlocalhost宛に投げる事で、漏れ無くlocalhostに建てた
SMTPサーバー経由で配送させる方法もあります。
この方法のメリットは、
zabbix上のSMTPサーバーが健全な限り、基本的にはメールがqueuingされるので、
転送先のサーバーが一時的に問題があっても、queueの保存期間は再配送と
キューイングをくりかえしてくれるので、外部のSMTPサーバーの影響を受けにくい
利点があります。
デメリットは、
SMTPサーバーをあえて構築、メール経路設計や日常のメールサーバ運用管理が
更にひつようになることです。
よっぽど取りこぼしたくない場合でなければ、
上記標準の手法をご利用頂いたほうが良いと思います。
なお、ココからは余談ですが、
メールアクションを設定される場合、監視イベントが大量発生
しないようトリガー設定される事もご検討する事をオススメします。
log監視などで検知条件をゆるめに設定した場合など、運が
悪ければ何万件もメールが飛ぶコトもあり得ます。
人もメールサーバーも大きなストレスがかかることになります。
取りこぼさない事と合わせて、本来の障害対応に注力出来るよう、
イベントを出しすぎないコトもご検討下さい。
marco - 投稿数: 5
各位
ご回答ありがとうございます。
Zabbixのリトライ回数がデフォルトで3回との回答を頂きました。
確認は以下の値との
リトライ回数はソースのinclude/common.hで定義されている
ALERT_MAX_RETRIES
リトライの間隔(待機時間)はお分かりになりますでしょうか。
初回失敗~待機時間~再度試行~失敗~待機時間~
宜しくお願い致します。
kodai - 投稿数: 1341
待機する時間というのは特にないのですが、SMTPの送信タイムアウトは40秒になっていたと思います。
40秒経って送信できなければキャンセルして再送信、という動きを3回繰り返します。