外部スクリプトのタイムアウトについて

こんにちわ

Zabbix初心者ですので上手く説明が出来ていなくてすみません。

環境はZabbix3.0 エージェントレスになります。

Zabbixでscraping監視、アラートメール送信を行いたいのですが、
zabbixの機能ではscrapingは出来ないという事を伺いましたので
アイテム>外部スクリプトにてしようと思いました。

scrapingやメール送信自体はちゃんと動いたのですが、
次にしたい処理で引っかかってしまいました。

障害ない場合はメールを送らない(5分おきにチェック)
障害がある場合はメールを送る(障害時は30分おきにチェック)
障害から復旧した場合はメールを送る(5分おきチェックに戻る)
という流れがやりたく、シェルの「sleep」コマンドで試したのですが
zabbix上ではタイムアウトが出てしまい、アイテムの更新間隔を86400秒(一日)にしているのですが
何故か5分や10分でメールが来たり、メールが来ないという現象が起きています。

sleepコマンドを使う場合はどうしたらよいのでしょうか

例)scraping監視
curl http://xxx.com 2> /dev/null | grep -e "検索するID" | sed -e 's/[^a-z]//g'
でif条件に引っかかったのがなければスルーして5分待つ
if条件に引っかかればアラートメール送信して30分待つ

これをzabbixで出来ないでしょうか
出来る方法がありましたら外部チェックでなくともかまいません

シェルスクリプトはsleepコマンドの処理を抜けば動作出来ることを確認しております。

[zabbix_server.log : エラー]
item test:a.sh[{HOST.IP}] become not supported: Timeout while executing a shell script.
executiong housekeeper
housekeeper [deleted 0 hist/trends, 0 items, 0 events, 0 sessions, 0 alarms, 0 audit items in 0.013710 sec, idle for 1 hour(s)]

よろしくお願い致します。

※zabbix_server.confのTimeoutの値は30(上限)にしてあります。

コメント表示オプション

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

アイテムの値の取得処理では、必ずタイムアウトで指定した時間内
で終了するようにしなければなりません。
呼び出したスクリプト内で、sleepなどを使用してしまうと、タイ
ムアウトが発生してしまうので、そのアイテムの値が「取得不可」
の状態になってしまいます。

そこで、zabbix_senderを使用してみてはいかがでしょうか?

zabbix_senderというコマンドは、Zabbixサーバーに対してアイテ
ムの値を通知するためのコマンドです。

引数で、どの監視対象のサーバーのどのキーに対応するアイテムで
あるかを指定して、数値や文字列を任意のタイミングでZabbixサー
バーに通知することができます。

例えば、正常であれば「0」、問題があれば「1」という値をZabbix
サーバーに送って、トリガーでそのアイテムの値が1なら障害とみ
なして、アクションでメール等での通知を行うようにするわけです。

検討してみてください。

ご参考:
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtype...