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 - 投稿数: 4731
UserParameterで呼び出したい処理が、どうしても長い処理になっ
てしまうような場合は、以下のような実現方法も考えられます。
方法1:
監視対象上でcronなどを利用して定期的に結果を監視対象上の
ファイルシステム上にファイル化しておくような仕掛けをして
おく。
Zabbixサーバから、UserParameterを利用して、その結果ファ
イルから測定値を取りだしてZabbixサーバ側に渡す。
方法2:
監視対象上にcronなどを利用して定期的に値を取得し、その結
果をzabbix_senderでZabbixサーバに渡す。
他にも方法は考えられると思いますが、Zabbix上の1つの監視アイ
テムだけで、値取得に30秒以上かかるようなものは取れなかったと
思います。
yu-ogawa - 投稿数: 14
コメントありがとうございます。
やはり、cronでの制御しかないですよね。。
現状、方法1を想定していますが方法2もあることを忘れていました。
アイテムについてあまり可変をしたくなかったのでcronとUserParameterでなんとかしたいとおもいます。
ありがとうございました。
fripper - 投稿数: 495
このようなアプローチはいかがでしょうか?
・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 - 投稿数: 14
コメントありがとうございます。
処理内容については、こちらで実行したい内容そのままで動作確認できました。
ありがとうございました。