def do_docker_show(): d = get_kunai_json('/docker/stats') scontainers = d.get('containers') simages = d.get('images') print_info_title('Docker Stats') if not scontainers: cprint("No running containers", color='grey') for (cid, stats) in scontainers.iteritems(): print_info_title('Container:%s' % cid) keys = stats.keys() keys.sort() e = [] for k in keys: sd = stats[k] e.append( (k, sd['value']) ) # Normal agent information print_2tab(e, capitalize=False, col_size=30) for (cid, stats) in simages.iteritems(): print_info_title('Image:%s (sum)' % cid) keys = stats.keys() keys.sort() e = [] for k in keys: sd = stats[k] e.append( (k, sd['value']) ) # Normal agent information print_2tab(e, capitalize=False, col_size=30)
def do_members(): try: members = get_kunai_json("/agent/members").values() except request_errors, exp: logger.error("Cannot join kunai agent: %s" % exp) sys.exit(1)
def do_info(show_logs): try: d = get_kunai_json("/agent/info") except request_errors, exp: logger.error("Cannot join kunai agent: %s" % exp) sys.exit(1)
def do_info(show_logs): d = get_kunai_json('/agent/info') logs = d.get('logs') version = d.get('version') pid = d.get('pid') name = d.get('name') port = d.get('port') addr = d.get('addr') nb_threads = d.get('threads')['nb_threads'] httpservers = d.get('httpservers', {'internal':None, 'external':None}) socket_path = d.get('socket') _uuid = d.get('uuid') graphite = d.get('graphite') statsd = d.get('statsd') websocket = d.get('websocket') dns = d.get('dns') _docker = d.get('docker') e = [('name', name), ('uuid',_uuid), ('version', version), ('pid', pid), ('port',port), ('addr',addr), ('socket',socket_path), ('threads', nb_threads)] # Normal agent information print_info_title('Kunai Daemon') print_2tab(e) # Normal agent information int_server = httpservers['external'] if int_server: e = (('threads', int_server['nb_threads']), ('idle_threads', int_server['idle_threads']), ('queue', int_server['queue']) ) print_info_title('HTTP (LAN)') print_2tab(e) # Unix socket http daemon int_server = httpservers['internal'] if int_server: e = (('threads', int_server['nb_threads']), ('idle_threads', int_server['idle_threads']), ('queue', int_server['queue']) ) print_info_title('HTTP (Unix Socket)') print_2tab(e) # Now DNS part print_info_title('DNS') if dns is None: cprint('No dns configured') else: w = dns e = [('enabled', w['enabled']), ('port', w['port']), ('domain',w['domain']) ] print_2tab(e) # Now websocket part print_info_title('Websocket') if websocket is None: cprint('No websocket configured') else: w = websocket st = d.get('websocket_info', None) e = [('enabled', w['enabled']), ('port', w['port']) ] if st: e.append( ('Nb connexions', st.get('nb_connexions')) ) print_2tab(e) # Now graphite part print_info_title('Graphite') if graphite is None: cprint('No graphite configured') else: g = graphite e = [('enabled', g['enabled']), ('port', g['port']), ('udp', g['udp']), ('tcp', g['tcp']) ] print_2tab(e) # Now statsd part print_info_title('Statsd') if statsd is None: cprint('No statsd configured') else: s = statsd e = [('enabled', s['enabled']), ('port', s['port']), ('interval', s['interval'])] print_2tab(e) # Now statsd part print_info_title('Docker') _d = _docker if _d['connected']: e = [('enabled', _d['enabled']), ('connected', _d['connected']), ('version',_d['version']), ('api', _d['api']), ('containers', len(_d['containers'])), ('images', len(_d['images'])), ] else: e = [ ('enabled', {'value':_d['enabled'], 'color':'grey'}), ('connected', {'value':_d['connected'], 'color':'grey'}), ] print_2tab(e) # Show errors logs if any print_info_title('Logs') errors = logs.get('ERROR') warnings = logs.get('WARNING') # Put warning and errors in red/yellow if need only e = [] if len(errors) > 0: e.append( ('error', {'value':len(errors), 'color':'red'}) ) else: e.append( ('error', len(errors)) ) if len(warnings) > 0: e.append( ('warning', {'value':len(warnings), 'color':'yellow'}) ) else: e.append( ('warning', len(warnings)) ) print_2tab(e) if show_logs: if len(errors) > 0: print_info_title('Error logs') for s in errors: cprint(s, color='red') if len(warnings) > 0: print_info_title('Warning logs') for s in warnings: cprint(s, color='yellow') logger.debug('Raw information: %s' % d)