I try to run some Munin plugins written in Ruby. I would like to use RVM, so Munin needs to know where to find Ruby. I tried to change the line calling munin-cron in the cron file as follows:
*/5 * * * * munin bash -c 'source /usr/local/lib/rvm && rvm 1.9.2@munin && /usr/bin/munin-cron'
This leads to error messages in munin-node.log, saying
/usr/bin/env: ruby: No such file or directory
When I change the plugins' shebangs to the actual path of the Ruby executable it works, but the RVM environment should be set so that '/usr/bin/env ruby' works. It does when I execute the plugins as root.
Any ideas?
Update 1
Since Munin seems to reset the environment when executing the plugins, I tried to set the plugins' shebangs to the RVM wrapper script, I created with
rvm wrapper 1.9.2@munin munin
Now I get several "command not found" errors on variable names, implying that the plugins now are interpreted by the shell instead of Ruby.
Update 2
Copying the wrapper script instead of the symlink rvm creates and adding
source /usr/local/lib/rvm
doesn't help either.
Best Answer
I finally figured it out. Forget everything I did so far, trying to make this work. After creating the wrapper script with
I only had to add the command attribute to the configuration of the plugin in question in /etc/munin/plugin-conf.d/munin-node:
Now I can use my munin gemset or create a separate gemset for each plugin.