web-dev-qa-db-ja.com

CactiでデータIMEスクリプトをデバッグするにはどうすればよいですか?

(更新については下部を参照してください...)

Cacti(Rubyではbeanstalkdから統計情報を収集する)のデータ入力メソッドスクリプトを記述し、コマンドラインから動作します(単一の単純な整数を返す ここに記載されています )。 cactiユーザーアカウントbutCactiツール自体はデータを収集しておらず、ログには何もありません。

データ入力方法の設定は次のとおりです。 Cactiデータ入力方法http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg

そして、これが結果のグラフです(ホストのチャートテンプレートに追加され、データを収集するのに十分な時間実行された後): Cacti Graph http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg

更新#1:サボテンが環境を除去しているようです:

 Sudo su-cacti -c 'env -i/script/beanstat --Host 10.11.12.13 --port 11300 --stat current-waiting' 
/script/beanstat:4:in ` require ':ロードするそのようなファイルはありません-rubygems(LoadError)
 from /script/beanstat:4

その場合、どうすれば回避できますか?

Update#2この応答 stackoverflow.comで環境の問題が解決されたようですが、グラフにデータがありません。

更新#3:@Heathの提案のおかげで、ポーラーのログレベルを上げてこれをキャッチしました:

警告:CMDからの結果が無効です。部分的な結果:U 

「部分的な結果:U」が何を意味するかをグーグルで調べて運がなかった。スクリプトは、単一の整数値を出力するだけです。

アップデート#4:私はようやくこれを機能させました。中心的な問題は、シェルスクリプトを実行するときの環境の欠如でした。 Rubyスクリプトの前に次の行を付けることで、これを解決する必要がありました。

#!/ bin/sh 
 PATH =/usr/local/bin:$ PATH 
 exec Ruby -x "/ full/path/to/script/directory "$ 0" $ @ "
#!/ usr/bin/env Ruby 

そして、2番目の問題は、データテンプレートをフィードするデータソースをフィードするデータ入力メソッド(収集したい個別のメトリックごとに1つ)の適切な構成でした(またはその逆です。 mは、デバイスに割り当ててからグラフツリーに追加する必要のあるグラフテンプレートをフィードすることについてはまだ明確ではありません。要約すると、これはドキュメントのがらくたを伴う大きな大失敗であり、二度とそれを行う必要がないことを望んでいます。

アップデート#5:GitHubでスクリプトを共有しました http://github.com/trak3r/cacti-beanstalkd-script

8
Teflon Ted

カスタムスクリプトをデバッグしようとしたときに、スクリプトを実行するたびに一時ファイルに情報を追加しておくと便利でした。そうすることで、期待通りに呼び出されていることを確認できました。コマンドラインの引数、環境、返される値など。スクリプトからのエラー出力をキャッチするために、stderrをログファイルにリダイレクトすることもできます。

データ入力メソッドとグラフテンプレートを作成したようです。データテンプレートも作成しましたか?

4
Heath