(See bottom for updates...)
I've written a data input method script for Cacti (in Ruby, to collects stats from beanstalkd) and it works from the command line (returning a single simple integer, as documented here) when run as the cacti user account but the Cacti tool itself isn't harvesting any data and there's nothing in the logs.
Here's the Data Input Methods set-up:
And here's the resulting Graph (after it's been added to a host's chart template and left to run long enough to gather data):
Update #1: Looks like Cacti might be stripping the environment:
sudo su - cacti -c 'env -i /script/beanstat --host 10.11.12.13 --port 11300 --stat current-waiting' /script/beanstat:4:in `require': no such file to load -- rubygems (LoadError) from /script/beanstat:4
If that's the case, how might I work around it?
Update #2: This response on stackoverflow.com seems to have resolved the environment issue, but still no data in the chart.
Update #3: Thanks to @Heath's suggestion I bumped up the poller logging level and caught this:
WARNING: Result from CMD not valid. Partial Result: U
Haven't had any luck Googling up what "Partial Result: U" means. The script just prints a single integer value.
Update #4: I did finally get this working. The core issue was the lack of environment when the shell script runs. I had to resolve that by prefixing my Ruby script with the following lines:
#!/bin/sh PATH=/usr/local/bin:$PATH exec ruby -x"/full/path/to/script/directory" $0 "$@" #!/usr/bin/env ruby
And the secondary issue was the proper configuration of the Data Input Methods (one for each separate metric I wanted to collect, even though they all used the same script) which feeds the Data Sources which feeds the Data Templates (or vice versa, I'm still not clear on that) which feeds the Graph Templates which need to be assigned to the Devices then added to the Graph Trees. In summary, it's a major debacle with crap for documentation and I hope to never have to do it again.
Update #5: I've shared my script on GitHub http://github.com/trak3r/cacti-beanstalkd-script