トリガーの式について

お世話になっております。

3点ほどわからない事があるため、また相談させていただければと思います

①下記式は起動時間が10分以内を3回検知にしたらトリガーをひっかかるようにするという式でよろしいのでしょうか Zabbix 2.0.21になります
{ホスト名:system.uptime.last(#3)}<600 & {ホスト名:system.uptime.last(#2)}<600 & {ホスト名:system.uptime.last(0)}<600

②zabbixが複数台あるのですが、下記テンプレートがありました。 60秒間隔で検知してますが左記は1回検知つまり再起動して約1~2分後にアラートが上がってくると思うのですが、右の式も同様の動作をするのでしょうか changeは見かけたことがなく、最新値と前回値の差を返すとサイトに書かれていましたが、よくわかりませんでした
{Template OS Windows:system.uptime.last(0)}<600 と {0_Template OS Windows:system.uptime.change(0)}<0

https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/fun...

③電源が再起動して少し経過したら検知すると思いますが、シャットダウンした場合も数分したらuptimeのトリガーで検知する認識でよろしいのでしょうか

以上、なにとぞよろしくお願いいたします。

コメント表示オプション

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

1>#3 , #2 , 0 で判定されているので‥
  system.uptime のアイテムに対して、新しい値を取得したとき
  今取得した値(last(0)) と、前回取得した値 (#2) と、前々回取得した値 (#3) とのすべてが
  600 未満だった場合に、トリガーが発動‥となります
  3回検知‥という表現は微妙で、「直近3回分すべてが」といったニュアンスになるかと思います
このアイテムの更新間隔が1分毎とかに設定されている場合であれば
システムが再起動した直後から3回分‥が取得された時に「障害検知」になるはずです

アイテムの更新間隔が 10 分毎とかに設定されている場合、「10分以内に再起動した」という事象が
3回以上連続して発生して、各々の再起動後に1回ずつ取得された結果(いずれも600未満)が
サーバに到着‥とならない限りは、障害検出しないことになります

1分毎の場合は、複数回の再起動があっても、600 未満の値が3回分届いた時点で
「障害検知」になるはずですので、zabbixエージェントが生きている限りは
必ず再起動したことを検出できます

意図した監視ができているか、監視間隔も含めた確認をおすすめします

ちなみに、上記トリガー条件式は、以下のように書き換えることもできるかと思います
式としてはシンプルに書けますが、意図は伝わりにくくなるので、適宜ご判断のうえ‥

{ホスト名:system.uptime.max(#3)<600}
直近3回分の最大値を算出して、600未満であれば‥
 =イコール  3回分いずれも 600 未満であれば‥
 =イコール  記載いただいていた条件式

ユーザー fripper の写真

2>記載いただいているとおり、左側は、「得られた最新値が 600 未満」のときに障害検知
右側は、「前回との差分値がマイナス」だった時に障害検知、となります

左側式だと、はじめて zabbix にホスト登録した直後、の時点(前回値が無い場合)の初回収集時に
監視対象が再起動直後だった場合、にも検出します

右側式だと、はじめて zabbix にホスト登録した直後、の時点(前回値が無い場合)の初回収集時には
差分計算できないのでスルーされ、2回めの収集では、前回の値よりも大きな値が得られる
(uptime は監視対象が再起動しない限りは増え続ける)ので、条件に合致せず、障害検出とはなりません

監視開始後、しばらく経ってからの再起動であれば、再起動後の初回収集結果がサーバ到着した時点で
判定され、いずれも障害として検出されると思います

ユーザー fripper の写真

3>シャットダウンした場合には、監視対象からの uptime アイテムに関する新しい値が
サーバ側に到着しませんので、判定もされず、トリガーが検知することはありません

シャットダウンの検出については、その他、シンプルチェックでの「ping 到達性チェック」等の
アイテムを利用して、到達不能の発生をチェックするなど、エージェントの存在が関与しないような
別のアプローチを採るのが良いかと思います

また、1で挙げていただいていたトリガー式ですと
実際の再起動後、3回分のデータが到着した時点での「障害検知」となりますので
実際の再起動から考えると少なくとも「取得間隔」3回分の時間が経過してしまってからの
遅延的な検出となるかと思います

2に挙げられていた式だと、いずれも、再起動直後の「初回」のデータ収集時点で
再起動の発生が検出できています

検出がリアルタイム的である必要性に応じて、設定されるのが良いかと思います

ユーザー toyda の写真

ご回答ありがとうございます

1、アイテムの更新間隔は1分毎で設定しております。
そうしますと再起動であれば起動から約2~3分で障害検知できそうですね。
一つ気になったのですが、復旧のタイミングです。障害を検知して直近3回分すべてが600を超えた場合復旧する認識ですが、そうすると起動から約12~13分後に復旧してきそうですね

2、理解しました。再起動直後に登録する事があまりない為、どちらも同じような動作をしてくれそうですね。ただ復旧のタイミングが左側式は10分以上経過してからくることになり、右側の式だと再起動後、約0~1分で障害検知し、その1分後に復旧メールが来る事になりそうですね

3、再起動であれば検知できそうですね シャットダウンに関してはuptimeだと検知されないと思いますので、zabbix agent unreachbleやpingで検知することになりそうです。

ユーザー toyda の写真

ご回答ありがとうございます

1、アイテムの更新間隔は1分毎で設定しております。
そうしますと再起動であれば起動から約2~3分で障害検知できそうですね。
一つ気になったのですが、復旧のタイミングです。障害を検知して直近3回分すべてが600を超えた場合復旧する認識ですが、そうすると起動から約12~13分後に復旧してきそうですね

2、理解しました。再起動直後に登録する事があまりない為、どちらも同じような動作をしてくれそうですね。ただ復旧のタイミングが左側式は10分以上経過してからくることになり、右側の式だと再起動後、約0~1分で障害検知し、その1分後に復旧メールが来る事になりそうですね

3、再起動であれば検知できそうですね シャットダウンに関してはuptimeだと検知されないと思いますので、zabbix agent unreachbleやpingで検知することになりそうです。

ユーザー toyda の写真

ご回答ありがとうございます

1、アイテムの更新間隔は1分毎で設定しております。
そうしますと再起動であれば起動から約2~3分で障害検知できそうですね。
一つ気になったのですが、復旧のタイミングです。障害を検知して直近3回分すべてが600を超えた場合復旧する認識ですが、そうすると起動から約12~13分後に復旧してきそうですね

2、理解しました。再起動直後に登録する事があまりない為、どちらも同じような動作をしてくれそうですね。ただ復旧のタイミングが左側式は10分以上経過してからくることになり、右側の式だと再起動後、約0~1分で障害検知し、その1分後に復旧メールが来る事になりそうですね

3、再起動であれば検知できそうですね シャットダウンに関してはuptimeだと検知されないと思いますので、zabbix agent unreachbleやpingで検知することになりそうです。

ユーザー toyda の写真

なぜか3つ投稿されてしまいました 失礼いたしました。

ユーザー Yasumi の写真


トリガーですが、下記のほうがシンプルかと思います。

{ホスト名:system.uptime.count(#3,600,lt)}=3
※直近3回のアイテム取得のうち、600未満が3カウントされると発報


fripperさんが動作について書いていますが、私なら、changeは下記のように使います。
{Template OS Windows:system.uptime.last(0)}<600 and {Template OS Windows:system.uptime.change(0)}<0

なぜこうするかというと、「{Template OS Windows:system.uptime.last(0)}<600」だけだと
通常時に電源Downしているサーバを立ち上げた際にも、アラートを発報するからです。

「{Template OS Windows:system.uptime.change(0)}<0」をand条件をつなげておけば、
「最新値 - 前回値」が0秒未満になるケースでしかアラート発報しなくなります。

ユーザー toyda の写真

ありがとうございます

①トリガーいろいろ書き方あるのですね。 こちらも参考にさせていただきます

②一つの式でも複雑ですが、2つ組み合わせる事もできるのですね
例えば再起動前の起動時間が36000だとすると再起動した際には前回値が36000になり
起動してきて最新値が例えば30などがとれた場合は30-36000=マイナス35970になり0秒未満になるためアラートが発砲されるようになりそうですね