UserParameterを使用した監視方式について

お世話になっております。

UserParameterを使用した監視方式でTimeoutによるアイテムの取得不能に悩んでいます。

zabbix-server側もagent側もそれぞれで
### Option: Timeout
Timeout=30

で、時間はのばしてはいるのですが
以下のような処理は可能なのでしょうか?

zabbix-serverでアイテムを登録。
agent側では、UserParameterに記載されたスクリプトを実行。

スクリプトでは。
1次データをzabbix-serverにechoで出力。
 このデータが閾値を超える場合、スクリプト2を起動し45秒間動作し結果をログに出力。

上記の1次データのecho出力結果をzabbixではグラフとして保管していきたいので
この結果がserver側に出力されたら処理が終わるものと思っていましたが
どうも動作確認をしていると
>  このデータが閾値を超える場合、スクリプト2を起動し45秒間動作し結果をログに出力。
上記の結果が終わるまではアイテムの呼処理が終わらないように見えます。
   ※結果的に、処理全体で50秒前後になる。

処理全体の50秒にtimeoutがかかってしまうのでアイテムの取得不能/timeoutとなる状況ですが

1次データをzabbix-serverにechoで出力。

上記のデータのやりとりでzabbix-server/agentのやり取りを終わってもらうような
アイテムの登録方法はあるでしょうか?

現在使用しているのは
zabbix-server1.8.4(agentは1.8.16)を使用しています。

以上、よろしくお願いします。

コメント表示オプション

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

UserParameterで呼び出したい処理が、どうしても長い処理になっ
てしまうような場合は、以下のような実現方法も考えられます。

 方法1:
  監視対象上でcronなどを利用して定期的に結果を監視対象上の
  ファイルシステム上にファイル化しておくような仕掛けをして
  おく。
  Zabbixサーバから、UserParameterを利用して、その結果ファ
  イルから測定値を取りだしてZabbixサーバ側に渡す。

 方法2:
  監視対象上にcronなどを利用して定期的に値を取得し、その結
  果をzabbix_senderでZabbixサーバに渡す。

他にも方法は考えられると思いますが、Zabbix上の1つの監視アイ
テムだけで、値取得に30秒以上かかるようなものは取れなかったと
思います。

ユーザー yu-ogawa の写真

コメントありがとうございます。

やはり、cronでの制御しかないですよね。。

現状、方法1を想定していますが方法2もあることを忘れていました。
アイテムについてあまり可変をしたくなかったのでcronとUserParameterでなんとかしたいとおもいます。

ありがとうございました。

ユーザー fripper の写真

このようなアプローチはいかがでしょうか?

・UserParameter で呼び出すスクリプト
・2次処理を行うスクリプト

の2つに分けてしまいます

処理内容
1.UserParameter で呼び出すスクリプト側
  1.1次判定を行い、その結果を echo にて出力
  2.判定結果により、必要に応じて、2次処理スクリプトを nohup コマンドを経由してバックグラウンドで Kick
  3.そのまま終了
2.2次処理を行うスクリプト
  1.単に処理をするだけ(必要に応じて、1次側から引数などで情報を受け取ってください)

nohup コマンドは結構便利です
nohup command args.. </dev/null >/dev/null 2>&1 &
のようにすることで、親処理が終了しても、子処理を残ったままにできますし、
& をつけて呼び出すことで、親処理側に、即時処理を戻すことが可能です

ユーザー yu-ogawa の写真

コメントありがとうございます。

処理内容については、こちらで実行したい内容そのままで動作確認できました。

ありがとうございました。