LINEZabbixで値が変わったことを検知するとき、一定時間検知を続けるため、diffやlast(0)#prev()を使うのではなく、deltaを使ってみる。分間は検知を続けてくれるようにした。分間は検知を続けてくれるようにする。お題は再起動した事実をZabbixで検知することにする。timeを監視するスクリプトを作成し、snmpdで値を取得できるように設定する。timeが変わったことを検知しても、次の監視タイミングで復旧と判断してしまう。{mongo-replicaset:boot[time].last(0)}#{mongo-replicaset:boot[time].prev()}ドキュメントによると、deltaを使えば、指定秒間の最大値と最小値の差分が取れる。「max」-「min」)。最初のパラメータで期間を秒単位で設定するか、収集した値の数(ハッシュマーク#を先頭に付けます)で設定します。差分が0以上かどうかを判定することで、指定秒間ずっと検知し続けることができる。{mongo-replicaset:boot[time].delta(900)}>0これで直近900秒間ずっと同じ値が続くまで、復旧と判断することはない。監視間隔の問題か、30秒間隔の監視で実際に実行すると14分で、また300秒間隔の監視で実際に実行すると10分で、復旧と判断されてしまったので、15分間ずっと検知し続けたければ900ジャストではなく、+αの秒数を指定するといい。300秒間隔の監視で1200秒をdeltaに設定すると、ちょうど900秒間検知し続けた。+αの部分は最低でも監視間隔自体の秒数を設定したほうがいい。