Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)