"n", "node", "Check if a specified node is up. Used with `nodeup` action. (default: celery.ubuntu)", default="celery.ubuntu") check_api.add_option("l", "limit", "Number of tasks in the past to check. (default: 1000)", default=1000) check_api.enable_status("warning") check_api.enable_status("critical") check_api.start() if check_api.options.action not in ("nodeup", "health"): check_api.unknown_error("unknown action specified %s." % check_api.options.action) response = requests.get("%s:%d/api/workers" % (check_api.options.host, int(check_api.options.port))) try: response.raise_for_status() except Exception as e: print "Status Critical, flower API not reachable" sys.exit(2) try: content = json.loads(response.content) except Exception as e: check_api.unknown_error("%s health check response was malformed: %s" % (check_api.options.action, e))
check_api = Plugin("Used to determine the status of a Celery worker.", "1.0") check_api.add_option("p", "port", "Port of the Celery host machine serving the Celerymon API. (default: 8989)", default=8989) check_api.add_option("h", "host", "Host of the Celery worker instance. (default: http://localhost)", default="http://localhost") check_api.add_option("a", "action", "The status check to perform. (nodeup, health)", default="health") check_api.add_option("n", "node", "Check if a specified node is up. Used with `nodeup` action. (default: celery.ubuntu)", default="celery.ubuntu") check_api.add_option("l", "limit", "Number of tasks in the past to check. (default: 100)", default=100) check_api.enable_status("warning") check_api.enable_status("critical") check_api.start() if check_api.options.action not in ("nodeup", "health"): check_api.unknown_error("unknown action specified %s." % check_api.options.action) response = requests.get("%s:%d/api/worker/" % (check_api.options.host, int(check_api.options.port))) try: response.raise_for_status() except Exception as e: print "Status Critical, celerymon API not reachable" sys.exit(2) try: content = json.loads(response.content) except Exception as e: check_api.unknown_error("%s health check response was malformed: %s" % (check_api.options.action, e)) if len(content) == 0:
gmetad_port=plugin.options.gmetad_port, gmetad_timeout=plugin.options.gmetad_timeout, cache_path=plugin.options.cache_path, cache_ttl=plugin.options.cache_ttl, cache_ttl_splay=plugin.options.cache_ttl_splay, cache_grace=plugin.options.cache_grace, metrics_max_age=plugin.options.metrics_max_age, debug_level=plugin.options.verbose).get_value( metric_host=plugin.options.metric_host, metric_name=plugin.options.metric_name) plugin.set_status_message( '%s = %s %s' % (value['title'], value['value'], value['units'])) if value['units'].upper() in ('B', 'KB', 'MB', 'GB', 'TB') or \ value['units'].lower() in ('s', 'ms', 'us', 'ns', '%'): plugin.set_value(plugin.options.metric_name, value['value'], scale=value['units']) else: plugin.set_value(plugin.options.metric_name, value['value']) except (GangliaMetrics.MetricNotFoundError), e: plugin.unknown_error(str(e)) except (Exception), e: print(e) sys.exit(2) # Print results plugin.finish()
gmetad_port=plugin.options.gmetad_port, gmetad_timeout=plugin.options.gmetad_timeout, cache_path=plugin.options.cache_path, cache_ttl=plugin.options.cache_ttl, cache_ttl_splay=plugin.options.cache_ttl_splay, cache_grace=plugin.options.cache_grace, metrics_max_age=plugin.options.metrics_max_age, debug_level=plugin.options.verbose).get_value( metric_host=plugin.options.metric_host, metric_name=plugin.options.metric_name) plugin.set_status_message('%s = %s %s' % (value['title'], value['value'], value['units'])) if value['units'].upper() in ('B', 'KB', 'MB', 'GB', 'TB') or \ value['units'].lower() in ('s', 'ms', 'us', 'ns', '%'): plugin.set_value(plugin.options.metric_name, value['value'], scale=value['units']) else: plugin.set_value(plugin.options.metric_name, value['value']) except (GangliaMetrics.MetricNotFoundError), e: plugin.unknown_error(str(e)) except (Exception), e: print(e) sys.exit(2) # Print results plugin.finish()
# FIXME: http vs https support, user auth? g.add_option('t', 'target', 'Graphite Target', required=True) g.add_option('h', 'host', 'Graphite Host', required=True) g.add_option('w', 'window', 'Time Window', default='-5minutes') g.add_option('u', 'units', 'Metric units', default='percent') g.enable_status('critical') g.enable_status('warning') g.start() # Bounds checking on crit and warn if g.options.raw_critical < g.options.raw_warning: g.unknown_error("ERROR: Critical level (%s) is set LOWER than Warning level (%s)" % ( g.options.raw_critical, g.options.raw_warning, )) # Build url # FIXME: pickle seems efficient, but maybe harder to debug? url = 'http://%s/render?from=%s&target=%s&format=pickle' % ( g.options.host, g.options.window, g.options.target, ) if debug: print 'DEBUG URL:',url value=get_value(url) if debug: print 'DEBUG VALUE:', value # Error parsing
url = graphite.options.url if not url: url = ''.join([ 'http://localhost/render?format=raw', '&from=-', graphite.options.minute, 'minutes', '&target=servers.', graphite.options.hostMafia.replace('.', '_'), '_9400.', graphite.options.keyMafia, ]) try: usock = urllib2.urlopen(url) data = usock.read() usock.close() assert data pieces = data.split("|") counter = pieces[0].split(",")[0] values = pieces[1].split(",")[:-1] values = map(lambda x: 0.0 if x == 'None' else float(x), values) assert not any(map(math.isnan, values)) avg = sum(values)/len(values); graphite.set_value(counter, avg) graphite.set_status_message("Avg value of %s was %f" % (counter, avg)) graphite.finish() except Exception, e: graphite.unknown_error("Error: %s" % e)