多数の障害検知が同時に起きたときについて

お世話になります。

1台の物理VPSサーバに十数台の仮想Webサーバが
稼動している環境を、zabbix のウェブ監視のみで
監視していますが、物理VPSサーバがダウンしたときに、
同時に十数の仮想Webサーバが障害になりました。

その際、障害メールが送信されたのが2通のみで、他の
仮想Webサーバの障害メールは送信されませんでした。

--------------------------------------------------
(zabbix サーバの環境)
 zabbix 2.0.6、CentOS 6、MySQL 5.1

 ウェブ監視は当VPSサーバ以外にも数十台分設定あり。

 ウェブ監視間隔は2分30秒(150秒)。

 当VPSサーバ以外では、ウェブ監視以外にもzabbix agent
 による複数の監視を実施している。

 当VPSサーバの障害時間は約1時間。

 トリガーの設定({xxx:web.test.fail[xxx].count(300,0,"ne")}>1)
 ※ステップの失敗が連続2回で障害検知
--------------------------------------------------

状況を確認したところ、下記のことが分かりました。

・当VPSサーバの障害時間中で、当VPSサーバを含む、他の
 全てのサーバのウェブ監視について値がほとんど取れておらず、
 値が取れていても障害時間中2回くらい。また、値の
 取れている間隔が5分から25分の間でまちまちに
 なっている。

・ウェブ監視以外のエージェント監視等は、障害時間中も
 値が取れている。

・zabbix_server.log で、障害があった仮想Webサーバの
 エラー(Timeout was reached)があった。

・障害時の zabbix サーバのCPUやメモリ、インターフェースの
 状態は普段と変わらない(特に負荷は見られない)。

・zabbix サーバで、当時のキューの状態は確認できていない。

・zabbix サーバ上その他のログファイルには、当障害に
 関するようなエラーは特に見られなかった。

これらのことから、キューにウェブ監視が溜まってしまい、
ウェブ監視のみ値が取れなかったのではないかと推測しています。

そこで、下記についてご教授いただきたく、よろしくお願いいたします。

(1)ウェブ監視で値が取れていなかったのは、キューにウェブ監視が
  溜まっていたのが原因かどうか。他に考えられる原因はないか。

(2)トリガーの設定を工夫すれば、このようなケースでも全ての
  障害メールを送信することは可能かどうか。

(3)近々、zabbix サーバやDBのバージョンアップ(zabbix 2.0.8、
  MySQL 5.6)を行う予定ですが、多数の障害検知が同時に
  起こった場合、やはりメールが送信できないケースや
  長時間値が取れないケースは避けられないかどうか。

コメント表示オプション

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

バージョン 1.8 のときの経験ですが、
ウェブ監視でタイムアウトになった場合、値が取得できず「不明」という状態になったと思います。この場合、トリガーの条件に合わない、もしくは、判定自体が行なわれないかで、障害を検知できません。
回避方法としては、Zabbix側ウェブ監視のタイムアウト値をWebサーバー側のタイムアウト値よりも大きくなるよう調整して、必ずWebサーバーから値が返るようにします(「不明」状態を作らない)。
あるいは、トリガーで nodata() などを使えば障害検知できるかもしれません。

ユーザー TNK の写真

恐らく、トリガーやアクションの設定にも改善が必要だと思われま
す。

yanta1さんも書かれている通り、明確に障害となる値を取得できた
時は、アクションを実行できますが、アイテムの値が取得できずに
状態が「取得不可」になってしまった場合には、トリガーでの条件
に合致せず、アクションが実行されない場合があります。

(1)については、デフォルトでは、HTTPPoller(Web監視用のデータ
収集用プロセス)が1個ですので、1つのWeb監視にタイムアウト待ち
などによって時間がかかる場合にも、次のWeb監視ができませんの
で、必要に応じてPollerの数を増やすと良いかもしれません。

/etc/zabbix/zabbix_server.confのStartHTTPPollersの数を確認し
てみてください。

(2)については、もちろん可能です。

(3)については、各種プロダクトのバージョンアップで改善される
部分もあるかもしれませんが、今回の場合は、まずは、トリガー
やアクションの設定を確認された方が良いように思えます。

例えば、値が取得不可となった場合に、代替手段を用意して別の
方法でも監視するようにしてくのも1つの方法ではないでしょうか。

ユーザー z1000 の写真

ご教授いただきました方法で確認したいと思います。

ありがとうございました。