time 関数を用いたトリガーが評価されない場合がある
Zabbix サーバ自身の死活確認のため、time 関数を使って決まった時間にメール通知が行われるようにしています。
条件式に使用しているアイテムの値は正常に取得できているのにも関わらず、
稀にトリガーが評価されない事象が起きております。
発生頻度は低く、数か月に1回程度です。
Zabbixサーバのバージョン:3.2.3
agent.ping の監視間隔:60秒
トリガーの条件式:
{Zabbix server:agent.ping.time(0)}=070000 and {Zabbix server:agent.ping.last(0)}=1
※午前7時にagent.ping で応答があれば正
agent.ping の監視結果は添付の通りです。
time 関数はどのような間隔で評価されているのでしょうか。
- PING_OK.PNG (10.3 KB)
fripper - 投稿数: 495
このトリガーは、agent.ping から新しい値が得られるたびに評価されます
agent.ping は、少し挙動が特殊なアイテムで、
zabbix_agentd との通信が成功している場合は「1」が得られますが、
zabbix_agentd が落ちている等、通信が成功しない場合、値が得られず、値が更新されなくなります
※)そのため、agent.ping の成否でトリガーを作成したい場合には、nodata関数を用いた
アプローチが必要とマニュアルに注釈があります
https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/zabbix_agent
agent.ping が成功として1が得られた場合には
last(0)→1となる
time(0)→値が得られた時刻(HHMMSS)が数値として得られる
→トリガー評価が実行され、070000 とたまたま、全く一致した場合のみ「条件に一致」
agent.ping が失敗となった場合には、last値は更新されない
→トリガー評価が実行されない
https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression
https://www.zabbix.com/documentation/3.2/manual/appendix/triggers/functi...
Zabbix 3.2 以降で拡張された挙動として、アイテム項目に対する値が正常に取得できず
アイテム項目が「Unknown/Unsupported」な状態へと変化したアイテムに対して、time 等、一部トリガー関数を
利用した場合にも、トリガー判定値が取得できる、となっています
time(0)→最後に失敗となり「Unsupported」へと変化した時刻(HHMMSS)が数値として得られる
今回ご提示頂いているトリガー条件ですと、
agent.ping アイテム項目が「Unknown/Unsupported」な状態へと変化した場合には、
agent.ping に対する「新しい値が取得できていない」ため、トリガー条件式の評価が実施されないのだと思います