On 8 March 2010 14:45, <[email protected]> wrote:
> Hi
>
> I'm writting a python module to check the status of a RAID, this is the
> module:
>
> import os
>
> def raid_handler(name):
>
> tw_cli = "sudo /usr/local/bin/tw_cli /c0/u0 show status"
> out = os.popen(tw_cli)
> f = out.read(18)
> print f
> if f == '/c0/u0 status = OK':
> return 1
> else:
> return 2
>
> def metric_init(params):
> global descriptors
>
> d1 = {'name': 'unit_status',
> 'call_back': raid_handler,
> 'time_max': 90,
> 'value_type': 'uint',
> 'units': '',
> 'slope': 'both',
> 'format': '%u',
> 'description': 'catacrocker',
> 'groups': 'health'}
>
> descriptors = [d1]
>
> return descriptors
>
> def metric_cleanup():
> '''Clean up the metric module.'''
> pass
>
> #This code is for debugging and unit testing
> if __name__ == '__main__':
> metric_init(None)
> for d in descriptors:
> v = d['call_back'](d['name'])
> print 'value for %s is %u' % (d['name'], v)
>
>
> The output of the command tw_cli /c0/u0 show status is:
> /c0/u0 status = OK
>
> and I have some problems: when I test the module, executing:
>
> [r...@oceano ~]# python /usr/lib64/ganglia/python_modules/raid_status.py
>
> it works well (RAID os OK and it returns "value for unit_status is 1"), but
> when
> is gmond who use it, it no works, the graphs shown value 2; I also add the
> line
> "print f" for test and to see the value of f, and it's value is "/c0/u0
> status
> = OK", nobody has been added to sudoers so it has the correct permissions.
> The
> other lines of the module are ok (I used it as template for other similar
> modules that work very well) so the problem is o the raid_handler function.
> I've tried with this other raid_handler:
>
> def raid_handler(name):
>
> tw_cli = "sudo /usr/local/bin/tw_cli /c0/u0 show status"
> out = os.popen(tw_cli)
> f = out.read(18)
> l = f.split()
> if l[3] == "OK":
> return 1
> else:
> return 2
>
> When I test it, it works:
>
> [r...@oceano ~]# python /usr/lib64/ganglia/python_modules/raid_status.py
> value for unit_status is 1
>
> I also add the lines "print l" and "print l[3]" for test and to see the
> value of
> l and l[3], and it's values are ['/c0/u0', 'status', '=', 'OK'] and OK. The
> graphs don't shown any value, and the /var/log/messages shows:
>
> Mar 8 14:34:35 oceano /usr/sbin/gmond[16660]: [PYTHON] Can't call the
> metric
> handler function for [unit_status] in the python module [raid_status].
>
> What happens?
>
> I need help please
>
> Ganglia runs as user nobody unless specified in the gmond.conf file.
Does the user nobody get the same output when executing the python script?
You can always change the user to root in the gmond.conf file and try that.
Matt
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Ganglia-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ganglia-general