changed way how performance data is handled so that the order is preserved (fixes #1)
rewrote use of map() to list comprehension as use of map() is an anti-pattern as part of the fix. improved the status message when warn or critical thresholds are exceeded
This commit is contained in:
@@ -168,8 +168,8 @@ def get_sensor_device_filename(args, dev_dir=SENSOR_DEV_DIR,
|
||||
if len(device_folders) == 0:
|
||||
errmsg = 'no supported temperature sensors in %s' % dev_dir
|
||||
else:
|
||||
serials=map(lambda x: basename(x) if x.find(prefix)<0
|
||||
else basename(x)[len(prefix):], device_folders)
|
||||
serials = [ basename(x)[len(prefix):] if x.find(prefix)>=0
|
||||
else basename(x) for x in device_folders ]
|
||||
errmsg = 'found multiple temperature sensors (%s), please '\
|
||||
'specify which one to use' % ', '.join(serials)
|
||||
logger.critical(errmsg)
|
||||
@@ -219,13 +219,12 @@ def nagios_exit(status, message, data=None):
|
||||
"""exit 'nagios-style', print status and message followed by perf. data"""
|
||||
if logger.isEnabledFor(logging.CRITICAL):
|
||||
if data is not None and len(data) > 0:
|
||||
perfdata=map(lambda (k,v): "'%s'=%s" %(k,v if not isinstance(v,list)
|
||||
else ';'.join(map(lambda x:'' if x is None else str(x),v)))
|
||||
,data.iteritems())
|
||||
perfstr = ' | ' + ' '.join(perfdata)
|
||||
perfdata = ' | ' + ' '.join([ "'%s'=%s" % (k,
|
||||
';'.join(['' if x is None else str(x) for x in v])
|
||||
if isinstance(v,list) else v) for k,v in data ])
|
||||
else:
|
||||
perfstr = ''
|
||||
print 'Temperature %s: %s%s' % (status[0], message, perfstr)
|
||||
perfdata = ''
|
||||
print 'Temperature %s: %s%s' % (status[0], message, perfdata)
|
||||
exit(status[1])
|
||||
|
||||
|
||||
@@ -254,20 +253,20 @@ if __name__ == '__main__':
|
||||
logger.info('Got temperature reading of %.2f degrees %s in %fs',
|
||||
temperature, args.converter[2], elapse)
|
||||
|
||||
temp_unit = args.converter[1]
|
||||
message = 'current temperature is %.2f%s' % (temperature, temp_unit)
|
||||
unit = args.converter[1]
|
||||
message = 'current temperature is %.2f%s' % (temperature, unit)
|
||||
if args.critical is not None and temperature > args.critical:
|
||||
nagiosresult = NAGIOS_CRITICAL
|
||||
message += ', above critical threshold %.2f%s'%(args.critical,temp_unit)
|
||||
message+= ' and exceeds critical threshold %.2f%s' %(args.critical,unit)
|
||||
elif args.warn is not None and temperature > args.warn:
|
||||
nagiosresult = NAGIOS_WARN
|
||||
message += ', above warning threshold %.2f%s' % (args.warn, temp_unit)
|
||||
message+= ' and exceeds warning threshold %.2f%s' % (args.warn,unit)
|
||||
else:
|
||||
nagiosresult = NAGIOS_OK
|
||||
|
||||
nagios_exit(nagiosresult, message, {
|
||||
'temperature': [ '%f%s' % (temperature, temp_unit),
|
||||
args.warn, args.critical, None, None],
|
||||
'retries': [ tries-1, None, args.retries, 0, None ],
|
||||
'checktime': [ '%fs' % elapse, None, None, 0, None]
|
||||
})
|
||||
nagios_exit(nagiosresult, message, [
|
||||
('temperature', [ '%f%s' % (temperature, unit),
|
||||
args.warn, args.critical, None, None]),
|
||||
('retries', [ tries-1, None, args.retries, 0, None ]),
|
||||
('checktime', [ '%fs' % elapse, None, None, 0, None])
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user