webシナリオを用いて、webの監視を行いたい

識者の皆様

いつも勉強をさせていただきております
私の環境はAWSでzabbixじゃ2.4.7を利用しています

今回、webシナリオでwebに監視を行いたいと考えています

シナリオをしては
web health check
で、stepとして、3個、別々のURLを設定しています

この状態でstep1からの応答コードを404に変更するとzabbix自体が重度の障害を発報してくれます
しかし、step2の応答コードを404に変更してもzabbix自体が重度の障害を発報してくれません

これは、webシナリオを設定しているhostのトリガーが、下記の様な設定をしているために発生をしている事象でしょうか?
【トリガー】
{ホスト名:web.test.fail[web health check].count(#3,1)}=3

個人的にはstepの1個でもエラーが発生した場合は、webシナリオ自体がエラーになり、上記のトリガーがキックされると考えています
設定の過不足、もしくはそもそもの勘違いがあればご指導いただければ幸いです

どうぞよろしくお願いします

コメント表示オプション

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

>>TETSUYA Saito様
意図と違っていたら申し訳ありませんが、
内容として以下の設定を行ってると想定されます。

  シナリオ名 :web health check
  STEP1 :URL1
  STEP2 :URL2
  STEP3 :URL3

 ※STEP1~STEP3に設定されたいずれかがステータスコードが200以外(例えば404など)になった場合、障害として発報。

web.test.failは、失敗したSTEP数を表示し、全て成功した場合は0となります。

記載頂いたトリガーでは、
「web.test.fail[web health check]の直近3回の値の中で1と等しい数を集計し、3と等しければ障害」となっています。
この場合、web.test.failの値が1となる、STEP1が失敗した時のみしか障害になりません。
 →count関数の仕様は以下をご確認ください。
   https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/functions

単純に書くのであれば以下で良いかと思います。
{ホスト名:web.test.fail[web health check].last()}<>0
 →「web.test.fail[web health check]の最新の値が0(全て成功)以外であれば障害」

ユーザー TETSUYA Saito の写真

kaeruさん

ご指導ありがとう御座います
ご指導を頂いた内容でwebシナリオのstep2で404を設定した時にalertを発報することができました

あと、できればなのですが、webのcheckですので、過負荷の折にはアクセスがしづらい状況の考えられるかと考えています
その場合は404が返されたりすることもかるのではと考えています

その場合は各ステップで連続して404が3回応答されたら、alertが発報するようにトリガーを設定したいのですが
どのようなトリガーを作成すればよいか苦慮しています

ご教授賜われれば幸いです

よろしくお願いします

ユーザー kaeru の写真

トリガーだけで対応するのであれば以下でいかがでしょう。
{ホスト名:web.test.fail[web health check].min(#3)}<>0
 →web.test.failの直近3回の値の中で、最小値が0(全て成功)以外であれば障害

ただし、この設定ですと以下のケースでも障害となるため認識があっているか確認してください。
・1回目でSTEP1が失敗(web.test.failは1)
・2回目でSTEP1は成功したがSTEP2が失敗(web.test.failは2)
・3回目でSTEP1~2は成功したがSTEP3が失敗(web.test.failは3)
→web.test.failの直近3回の値の中で最小値は1で、0以外となるため障害

例えばSTEP1で3回失敗したら、STEP2で3回失敗したら
といったような条件にしたい場合、Webシナリオを分けた方が良いかと思います。

ユーザー TETSUYA Saito の写真

kaeruさん

ご指導ありがとうございます

今の小生として一番近い設定ごご教授くださいました
>{ホスト名:web.test.fail[web health check].min(#3)}<>0
> →web.test.failの直近3回の値の中で、最小値が0(全て成功)以外であれば障害
上記の設定でしばらく運用をしてみたいと思います

また、より詳細にするのであればwebシナリオを分ける必要があることも理解いたしました
色々とご教授いただき、誠にありがとうございます

今後共よろしくお願いします