アクションのリトライについて
アクションの実行内容で、メディアにスクリプト(php)を指定していますが、なぜか2回実行されることがあります。
イベントは一度しか発生していないことは確認しています。
※このスクリプトはKDDIが運営するtwilioサイトへHTTPにて障害メッセージ、担当者電話番号などを送信し、
twilioサイトから担当者に電話にてエラー内容を音声通知するためのものです。
・当方の環境:zabbix 2.4.3
このアクションが実行されるとき、正常にスクリプトが実行され、twilioから電話にてエラーメッセージが通知されるのですが、
なぜか同じスクリプトが2回実行される場合があります。
結果は最終的に正常終了となります。
アクションのリトライを行っている時に発生していると想像しているのですが、このアクションでスクリプトが実行されたけれど、
スクリプトが正常に終了したかをアクションが検知できないためでしょうか?
スクリプトの場合、正常終了をどのようにして検知しているのでしょうか?
過去の当フォーラムを見ると、EMailの場合タイムアウトが40秒との書き込みがあったのですが、
スクリプトの場合のタイムアウト値は別にありますか?
TNK - 投稿数: 4769
メディアスクリプトの呼び出し自体は、
zbx_execute(cmd, &output, error, max_error_len, ALARM_ACTION_TIMEOUT)
となっているようなので、ALARM_ACTION_TIMEOUT(=40)がタイムア
ウトの時間だと思います。
その関数の中で、zbx_execute()を呼び出していて、プロセスの終
了コードでプロセスの正常終了かどうかを判定しているようです。
ただし、メディアスクリプトを呼び出し中にタイムアウトが発生し
てしまっていたらそこでメディアのスクリプト呼び出しは失敗と判
定されると思います。
misaki - 投稿数: 69
TNKさん
ありがとうございます。
タイムアウト値を伸ばすには、ソースを修正しリコンパイルする必要がありそうですね。
電話をコールするスクリプトで電話を即切ると、アクションはリトライされず「送信済み」となり、
電話を受け障害メッセージを最後まで聞いたり電話を切るまで時間をかけると、アクションの残り
リトライ回数が減り、リトライされているようです。
スクリプトとしては電話をかけ、担当者が受電しメッセージ確認後応答番号を押すことで
障害対応コメントが記載される正常な動作となりますが、このタイムアウト値内では完了
できそうにありません。
このアクションが2度実行されることを許容して運用するしかなさそうです。
※ソースの修正は実施しない。
大変参考になりました。ありがとうございました。