外部スクリプトのタイムアウトについて
こんにちわ
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 - 投稿数: 4769
アイテムの値の取得処理では、必ずタイムアウトで指定した時間内
で終了するようにしなければなりません。
呼び出したスクリプト内で、sleepなどを使用してしまうと、タイ
ムアウトが発生してしまうので、そのアイテムの値が「取得不可」
の状態になってしまいます。
そこで、zabbix_senderを使用してみてはいかがでしょうか?
zabbix_senderというコマンドは、Zabbixサーバーに対してアイテ
ムの値を通知するためのコマンドです。
引数で、どの監視対象のサーバーのどのキーに対応するアイテムで
あるかを指定して、数値や文字列を任意のタイミングでZabbixサー
バーに通知することができます。
例えば、正常であれば「0」、問題があれば「1」という値をZabbix
サーバーに送って、トリガーでそのアイテムの値が1なら障害とみ
なして、アクションでメール等での通知を行うようにするわけです。
検討してみてください。
ご参考:
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtype...