如何在Cacti中调试数据输入法脚本?


8

(请参阅底部的更新...)

我已经为Cacti编写了一个数据输入方法脚本(在Ruby中,以收集来自beantalkd的统计信息),并且在以cacti用户帐户(使用Cacti工具)运行时,它可以从命令行工作(返回一个简单的整数,如此处所述)。本身不收集任何数据,并且日志中没有任何内容。

这是数据输入法设置: 仙人掌数据输入法http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg

这是生成的图(将其添加到主机的图表模板后,可以运行足够长的时间以收集数据): 仙人掌图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:`require'中:没有要加载的文件-rubygems(LoadError)
    来自/ script / beanstat:4

如果是这样,我应该如何解决?

更新#2:stackoverflow.com上的此响应似乎已解决了环境问题,但图表中仍然没有数据。

更新#3:感谢@Heath的建议,我提高了轮询器的日志记录级别并发现了这一点:

警告:CMD的结果无效。部分结果:U

还没有运气谷歌搜索“部分结果:U”的意思。该脚本仅打印单个整数值。

更新#4:我终于做到了这一点。核心问题是shell脚本运行时缺少环境。我必须通过在Ruby脚本前添加以下几行来解决该问题:

#!/ bin / sh
PATH = / usr / local / bin:$ PATH
exec ruby​​ -x“ /完整/路径/到/脚本/目录” $ 0“ $ @”
#!/ usr / bin / env红宝石

第二个问题是数据输入方法的正确配置(即使我想要收集的每个单独的指标,即使它们都使用相同的脚本,也要针对每个单独的度量标准进行配置),该方法可以为数据源提供数据,而数据源可以为数据模板提供数据(反之亦然,我m尚不清楚),它提供了需要分配给设备然后添加到图树的图模板。总而言之,这是一个糟糕的文档崩溃,我希望再也不必这样做了。

更新#5:我已经在GitHub上共享了我的脚本http://github.com/trak3r/cacti-beanstalkd-script

Answers:


4

当我尝试调试自定义脚本时,我发现让脚本在每次运行时都将一些信息附加到临时文件中很有帮助。这样我就可以确保它以我期望的方式被调用。诸如cmd行参数,环境以及它将返回什么值之类的东西。您可能还需要将stderr重定向到日志文件,以捕获脚本的错误输出。

我看到您制作了一个数据输入法和一个图形模板;您是否也制作了数据模板?


忘了提;您是否尝试过增加轮询器的日志记录级别?
希思

是的,我还制作了一个数据模板;IIRC是将数据点添加到图形模板的先决条件。
铁氟龙泰德

关于轮询器日志记录级别的好主意;我只是把它撞了一个缺口。谢谢。
铁氟龙泰德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.