def create_chart_series(endpoint_counters, start, end, chart_type, title_name="", name_pre="", duration=0): def get_chart_type_query_desc(name_pre, chart_type, query_result): descs = {"name": "", "endpoint": query_result['endpoint'], "counter": query_result['counter']} if chart_type == 'k': descs.update({"name": "%s %s" % (name_pre, query_result["counter"])}) elif chart_type == 'h': descs.update({"name": "%s %s" % (name_pre, query_result["endpoint"])}) else: descs['endpoint'] = descs['counter'] = '' descs['name'] = "%s %s %s" % (name_pre, query_result["endpoint"], query_result["counter"]) return descs def get_chart_type_sum_desc(chart_type, title_name): descs = {"endpoint": "", "counter": ""} if chart_type == "k": descs['endpoint'] = title_name descs['counter'] = "sum" elif chart_type == "h": descs['endpoint'] = "sum" descs['counter'] = title_name return descs if chart_type not in ['k', 'h', 'a']: abort(500, "chart type must in [a, h, k]") query_result = graph_query(endpoint_counters, g.cf, start, end) series = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [((v["timestamp"] + duration)*1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "cf": g.cf, } serie.update(get_chart_type_query_desc(name_pre, chart_type, x)) series.append(serie) except Exception, e: print e pass
def multi_chart_data(): if not g.id: abort(400, "no graph id given") tmp_graph = TmpGraph.get(g.id) if not tmp_graph: abort(404, "no graph which id is %s" %g.id) counters = tmp_graph.counters if not counters: abort(400, "no counters of %s" %g.id) counters = sorted(set(counters)) endpoints = tmp_graph.endpoints if not endpoints: abort(400, "no endpoints of %s, and tags:%s" %(g.id, g.tags)) endpoints = sorted(set(endpoints)) ret = { "units": "", "title": "", "series": [] } endpoint_counters = [] for e in endpoints: for c in counters: endpoint_counters.append({ "endpoint": e, "counter": c, }) query_result = graph_query(endpoint_counters, g.cf, g.start, g.end) series = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [(v["timestamp"]*1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "name": "%s %s" %(query_result[i]["endpoint"], query_result[i]["counter"]), "cf": g.cf, "endpoint": "", "counter": "", } series.append(serie) except: pass sum_serie = { "data": [], "name": "sum", "cf": g.cf, "endpoint": "", "counter": "", } if g.sum == "on" or g.sumonly == "on": sum = [] tmp_ts = [] max_size = 0 for serie in series: serie_vs = [x[1] for x in serie["data"]] if len(serie_vs) > max_size: max_size = len(serie_vs) tmp_ts = [x[0] for x in serie["data"]] sum = merge_list(sum, serie_vs) sum_serie_data = [] for i in range(0, max_size): sum_serie_data.append((tmp_ts[i], sum[i])) sum_serie['data'] = sum_serie_data series.append(sum_serie) if g.sumonly == "on": ret['series'] = [sum_serie,] else: ret['series'] = series return json.dumps(ret)
def multi_chart_data(): if not g.id: abort(400, "no graph id given") tmp_graph = TmpGraph.get(g.id) if not tmp_graph: abort(404, "no graph which id is %s" % g.id) counters = tmp_graph.counters if not counters: abort(400, "no counters of %s" % g.id) counters = sorted(set(counters)) endpoints = tmp_graph.endpoints if not endpoints: abort(400, "no endpoints of %s, and tags:%s" % (g.id, g.tags)) endpoints = sorted(set(endpoints)) ret = {"units": "", "title": "", "series": []} endpoint_counters = [] for e in endpoints: for c in counters: endpoint_counters.append({ "endpoint": e, "counter": c, }) query_result = graph_query(endpoint_counters, g.cf, g.start, g.end) name_pre = "" if g.comp_date > 0: name_pre = "This Period: " series = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [(v["timestamp"] * 1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "name": "%s %s %s" % (name_pre, query_result[i]["endpoint"], query_result[i]["counter"]), "cf": g.cf, "endpoint": "", "counter": "", } series.append(serie) except: pass sum_serie = { "data": [], "name": "%s %s" % (name_pre, "sum"), "cf": g.cf, "endpoint": "", "counter": "", } if g.sum == "on" or g.sumonly == "on": sum = [] tmp_ts = [] max_size = 0 for serie in series: serie_vs = [x[1] for x in serie["data"]] if len(serie_vs) > max_size: max_size = len(serie_vs) tmp_ts = [x[0] for x in serie["data"]] sum = merge_list(sum, serie_vs) sum_serie_data = [] for i in range(0, max_size): sum_serie_data.append((tmp_ts[i], sum[i])) sum_serie['data'] = sum_serie_data series.append(sum_serie) if g.sumonly == "on": ret['series'] = [ sum_serie, ] else: ret['series'] = series if g.comp_date > 0: g.start = g.start - g.duration - 60 g.end = g.end - g.duration + 60 query_result = graph_query(endpoint_counters, g.cf, g.start, g.end) name_pre = "Last Period: " series_comp = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [((v["timestamp"] + g.duration) * 1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "name": "%s %s %s" % (name_pre, query_result[i]["endpoint"], query_result[i]["counter"]), "cf": g.cf, "endpoint": "", "counter": "", } series_comp.append(serie) except: pass sum_serie_comp = { "data": [], "name": "%s %s" % (name_pre, "sum"), "cf": g.cf, "endpoint": "", "counter": "", } if g.sum == "on" or g.sumonly == "on": sum = [] tmp_ts = [] max_size = 0 for serie in series_comp: serie_vs = [x[1] for x in serie["data"]] if len(serie_vs) > max_size: max_size = len(serie_vs) tmp_ts = [x[0] for x in serie["data"]] sum = merge_list(sum, serie_vs) sum_serie_data = [] for i in range(0, max_size): sum_serie_data.append((tmp_ts[i], sum[i])) sum_serie_comp['data'] = sum_serie_data series_comp.append(sum_serie_comp) if g.sumonly == "on": ret['series'] = [sum_serie, sum_serie_comp] else: series.extend(series_comp) ret['series'] = series return json.dumps(ret)
def multi_counters_chart_data(): if not g.id: abort(400, "no graph id given") tmp_graph = TmpGraph.get(g.id) if not tmp_graph: abort(404, "no graph which id is %s" %g.id) counters = tmp_graph.counters if not counters: abort(400, "no counters of %s" %g.id) counters = sorted(set(counters)) endpoints = tmp_graph.endpoints if not endpoints: abort(400, "no endpoints of %s" % g.id) endpoints = sorted(set(endpoints)) ret = { "units": "", "title": "", "series": [] } ret['title'] = endpoints[0] e = endpoints[0] endpoint_counters = [] for c in counters: endpoint_counters.append({ "endpoint": e, "counter": c, }) query_result = graph_query(endpoint_counters, g.cf, g.start, g.end) name_pre = "" if g.comp_date > 0: name_pre = "This Period: " series = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [(v["timestamp"]*1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "name": "%s %s" % (name_pre, query_result[i]["counter"]), "cf": g.cf, "endpoint": query_result[i]["endpoint"], "counter": query_result[i]["counter"], } series.append(serie) except: pass sum_serie = { "data": [], "name": "%s %s" % (name_pre, "sum"), "cf": g.cf, "endpoint": e, "counter": "sum", } if g.sum == "on" or g.sumonly == "on": sum = [] tmp_ts = [] max_size = 0 for serie in series: serie_vs = [x[1] for x in serie["data"]] if len(serie_vs) > max_size: max_size = len(serie_vs) tmp_ts = [x[0] for x in serie["data"]] sum = merge_list(sum, serie_vs) sum_serie_data = [] for i in range(0, max_size): sum_serie_data.append((tmp_ts[i], sum[i])) sum_serie['data'] = sum_serie_data series.append(sum_serie) if g.sumonly == "on": ret['series'] = [sum_serie,] else: ret['series'] = series if g.comp_date > 0: g.start = g.start - g.duration - 60 g.end = g.end - g.duration + 60 query_result = graph_query(endpoint_counters, g.cf, g.start, g.end) name_pre = "Last Period: " series_comp = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [((v["timestamp"]+g.duration)*1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "name": "%s %s" % (name_pre, query_result[i]["counter"]), "cf": g.cf, "endpoint": query_result[i]["endpoint"], "counter": query_result[i]["counter"], } series_comp.append(serie) except: pass sum_serie_comp = { "data": [], "name": "%s %s" % (name_pre, "sum"), "cf": g.cf, "endpoint": e, "counter": "sum", } if g.sum == "on" or g.sumonly == "on": sum = [] tmp_ts = [] max_size = 0 for serie in series_comp: serie_vs = [x[1] for x in serie["data"]] if len(serie_vs) > max_size: max_size = len(serie_vs) tmp_ts = [x[0] for x in serie["data"]] sum = merge_list(sum, serie_vs) sum_serie_data = [] for i in range(0, max_size): sum_serie_data.append((tmp_ts[i], sum[i])) sum_serie_comp['data'] = sum_serie_data series_comp.append(sum_serie_comp) if g.sumonly == "on": ret['series'] = [sum_serie,sum_serie_comp] else: series.extend(series_comp) ret['series'] = series return json.dumps(ret)
def multi_counters_chart_data(): if not g.id: abort(400, "no graph id given") tmp_graph = TmpGraph.get(g.id) if not tmp_graph: abort(404, "no graph which id is %s" %g.id) counters = tmp_graph.counters if not counters: abort(400, "no counters of %s" %g.id) counters = sorted(set(counters)) endpoints = tmp_graph.endpoints if not endpoints: abort(400, "no endpoints of %s" % g.id) endpoints = sorted(set(endpoints)) ret = { "units": "", "title": "", "series": [] } ret['title'] = endpoints[0] e = endpoints[0] endpoint_counters = [] for c in counters: endpoint_counters.append({ "endpoint": e, "counter": c, }) query_result = graph_query(endpoint_counters, g.cf, g.start, g.end) series = [] for i in range(0, len(query_result)): x = query_result[i] try: xv = [(v["timestamp"]*1000, v["value"]) for v in x["Values"]] serie = { "data": xv, "name": query_result[i]["counter"], "cf": g.cf, "endpoint": query_result[i]["endpoint"], "counter": query_result[i]["counter"], } series.append(serie) except: pass sum_serie = { "data": [], "name": "sum", "cf": g.cf, "endpoint": e, "counter": "sum", } if g.sum == "on" or g.sumonly == "on": sum = [] tmp_ts = [] max_size = 0 for serie in series: serie_vs = [x[1] for x in serie["data"]] if len(serie_vs) > max_size: max_size = len(serie_vs) tmp_ts = [x[0] for x in serie["data"]] sum = merge_list(sum, serie_vs) sum_serie_data = [] for i in range(0, max_size): sum_serie_data.append((tmp_ts[i], sum[i])) sum_serie['data'] = sum_serie_data series.append(sum_serie) if g.sumonly == "on": ret['series'] = [sum_serie,] else: ret['series'] = series return json.dumps(ret)
def api_query(): ret = { "ok": False, "msg": "", "cpudata": [], "memdata": [] } node = request.args.get("node") or "" containerid = request.args.get("containerid") or "" start_time = request.args.get("start") or "" end_time = request.args.get("end") or "" if not node: ret["msg"] = "node is not given" return json.dumps(ret) if not containerid: ret["msg"] = "container id is not given" return json.dumps(ret) if not start_time: ret["msg"] = "start time is not given" return json.dumps(ret) if not end_time: ret["msg"] = "end time is not given" return json.dumps(ret) endpoint_counters = [] cpu_endpoint_counters = { "endpoint": node, "counter": "container.cpu.usage.total/id=" + containerid } mem_endpoint_counters = { "endpoint": node, "counter": "container.memory.usage/id=" + containerid } endpoint_counters.append(cpu_endpoint_counters) endpoint_counters.append(mem_endpoint_counters) start = int(start_time) end = int(end_time) query_result = graph_query(endpoint_counters, "AVERAGE", start, end) if not query_result: ret["msg"] = "query cpu and memory used data for node = " + node + " and containerId = " + containerid + " from falcon query is empty" return json.dumps(ret) cpu_ok = False mem_ok = False for query_data in query_result: if query_data["counter"] == cpu_endpoint_counters["counter"]: for value in query_data["Values"]: if not (value["value"] is None): ret["cpudata"].append(value["value"]) cpu_ok = True elif query_data["counter"] == mem_endpoint_counters["counter"]: for value in query_data["Values"]: if not (value["value"] is None): ret["memdata"].append(value["value"]) mem_ok = True if not cpu_ok: ret["msg"] = "query cpu used data for node " + node + " and container " + containerid + " from falcon query is empty" return json.dumps(ret) if not mem_ok: ret["msg"] = "query memory used data for node " + node + " and container " + containerid + " from falcon query is empty" return json.dumps(ret) ret["ok"] = True return json.dumps(ret)