Exemplo n.º 1
0
def response_graphs(request):
    """
    Handles dashboard infomation for avg. response time split by today,
    2 days ago and week ago
    """
    query_params = request.GET.mixed()
    query_params["resource"] = (request.context.resource.resource_id,)

    filter_settings = build_filter_settings_from_query_dict(request, query_params)

    if not filter_settings.get("end_date"):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings["end_date"] = end_date

    delta = timedelta(hours=1)
    if not filter_settings.get("start_date"):
        filter_settings["start_date"] = filter_settings["end_date"] - delta

    result_now = RequestMetricService.get_metrics_stats(request, filter_settings)

    filter_settings_2d = filter_settings.copy()
    filter_settings_2d["start_date"] = filter_settings["start_date"] - timedelta(days=2)
    filter_settings_2d["end_date"] = filter_settings["end_date"] - timedelta(days=2)
    result_2d = RequestMetricService.get_metrics_stats(request, filter_settings_2d)

    filter_settings_7d = filter_settings.copy()
    filter_settings_7d["start_date"] = filter_settings["start_date"] - timedelta(days=7)
    filter_settings_7d["end_date"] = filter_settings["end_date"] - timedelta(days=7)
    result_7d = RequestMetricService.get_metrics_stats(request, filter_settings_7d)

    plot_data = []

    for item in result_now:
        point = {"x": item["x"], "today": 0, "days_ago_2": 0, "days_ago_7": 0}
        if item["requests"]:
            point["today"] = round(item["main"] / item["requests"], 3)
        plot_data.append(point)

    for i, item in enumerate(result_2d[: len(plot_data)]):
        plot_data[i]["days_ago_2"] = 0
        point = result_2d[i]
        if point["requests"]:
            plot_data[i]["days_ago_2"] = round(point["main"] / point["requests"], 3)

    for i, item in enumerate(result_7d[: len(plot_data)]):
        plot_data[i]["days_ago_7"] = 0
        point = result_7d[i]
        if point["requests"]:
            plot_data[i]["days_ago_7"] = round(point["main"] / point["requests"], 3)

    return plot_data
Exemplo n.º 2
0
def get_requests_breakdown(request):
    """
    Used on dashboard to get information which views are most used in
    a time interval
    """
    query_params = request.GET.mixed()
    query_params["resource"] = (request.context.resource.resource_id,)

    filter_settings = build_filter_settings_from_query_dict(request, query_params)
    if not filter_settings.get("end_date"):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings["end_date"] = end_date

    if not filter_settings.get("start_date"):
        delta = timedelta(hours=1)
        filter_settings["start_date"] = filter_settings["end_date"] - delta

    series = RequestMetricService.get_requests_breakdown(request, filter_settings)

    results = []
    for row in series:
        d_row = {
            "avg_response": round(row["main"] / row["requests"], 3),
            "requests": row["requests"],
            "main": row["main"],
            "view_name": row["key"],
            "latest_details": row["latest_details"],
            "percentage": round(row["percentage"] * 100, 1),
        }

        results.append(d_row)

    return results
Exemplo n.º 3
0
def requests_graphs(request):
    """
    Handles dashboard infomation for avg. response time split by today,
    2 days ago and week ago
    """
    query_params = request.GET.mixed()
    query_params["resource"] = (request.context.resource.resource_id,)

    filter_settings = build_filter_settings_from_query_dict(request, query_params)

    if not filter_settings.get("end_date"):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings["end_date"] = end_date

    delta = timedelta(hours=1)
    if not filter_settings.get("start_date"):
        filter_settings["start_date"] = filter_settings["end_date"] - delta

    result_now = RequestMetricService.get_metrics_stats(request, filter_settings)

    delta = filter_settings["end_date"] - filter_settings["start_date"]
    if delta < h.time_deltas.get("12h")["delta"]:
        seconds = h.time_deltas["1m"]["minutes"] * 60.0
    elif delta <= h.time_deltas.get("3d")["delta"]:
        seconds = h.time_deltas["5m"]["minutes"] * 60.0
    elif delta >= h.time_deltas.get("2w")["delta"]:
        seconds = h.time_deltas["24h"]["minutes"] * 60.0
    else:
        seconds = h.time_deltas["1h"]["minutes"] * 60.0

    for item in result_now:
        if item["requests"]:
            item["requests"] = round(item["requests"] / seconds, 3)
    return result_now
Exemplo n.º 4
0
def get_requests_breakdown(request):
    """
    Used on dashboard to get information which views are most used in
    a time interval
    """
    query_params = request.GET.mixed()
    query_params['resource'] = (request.context.resource.resource_id, )

    filter_settings = build_filter_settings_from_query_dict(
        request, query_params)
    if not filter_settings.get('end_date'):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings['end_date'] = end_date

    if not filter_settings.get('start_date'):
        delta = timedelta(hours=1)
        filter_settings['start_date'] = filter_settings['end_date'] - delta

    series = RequestMetricService.get_requests_breakdown(
        request, filter_settings)

    results = []
    for row in series:
        d_row = {
            'avg_response': round(row['main'] / row['requests'], 3),
            'requests': row['requests'],
            'main': row['main'],
            'view_name': row['key'],
            'latest_details': row['latest_details'],
            'percentage': round(row['percentage'] * 100, 1)
        }

        results.append(d_row)

    return results
Exemplo n.º 5
0
def metrics_graphs(request):
    """
    Handles metric dashboard graphs
    Returns information for time/tier breakdown
    """
    query_params = request.GET.mixed()
    query_params["resource"] = (request.context.resource.resource_id,)

    filter_settings = build_filter_settings_from_query_dict(request, query_params)

    if not filter_settings.get("end_date"):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings["end_date"] = end_date

    delta = timedelta(hours=1)
    if not filter_settings.get("start_date"):
        filter_settings["start_date"] = filter_settings["end_date"] - delta
    if filter_settings["end_date"] <= filter_settings["start_date"]:
        filter_settings["end_date"] = filter_settings["start_date"]

    delta = filter_settings["end_date"] - filter_settings["start_date"]
    if delta < h.time_deltas.get("12h")["delta"]:
        divide_by_min = 1
    elif delta <= h.time_deltas.get("3d")["delta"]:
        divide_by_min = 5.0
    elif delta >= h.time_deltas.get("2w")["delta"]:
        divide_by_min = 60.0 * 24
    else:
        divide_by_min = 60.0

    results = RequestMetricService.get_metrics_stats(request, filter_settings)
    # because requests are PER SECOND / we divide 1 min stats by 60
    # requests are normalized to 1 min average
    # results are average seconds time spent per request in specific area
    for point in results:
        if point["requests"]:
            point["main"] = (
                point["main"]
                - point["sql"]
                - point["nosql"]
                - point["remote"]
                - point["tmpl"]
                - point["custom"]
            ) / point["requests"]
            point["sql"] = point["sql"] / point["requests"]
            point["nosql"] = point["nosql"] / point["requests"]
            point["remote"] = point["remote"] / point["requests"]
            point["tmpl"] = point["tmpl"] / point["requests"]
            point["custom"] = point["custom"] / point["requests"]
            point["requests_2"] = point["requests"] / 60.0 / divide_by_min

    selected_types = ["main", "sql", "nosql", "remote", "tmpl", "custom"]

    for point in results:
        for stat_type in selected_types:
            point[stat_type] = round(point.get(stat_type, 0), 3)

    return results
Exemplo n.º 6
0
def metrics_graphs(request):
    """
    Handles metric dashboard graphs
    Returns information for time/tier breakdown
    """
    query_params = request.GET.mixed()
    query_params['resource'] = (request.context.resource.resource_id, )

    filter_settings = build_filter_settings_from_query_dict(
        request, query_params)

    if not filter_settings.get('end_date'):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings['end_date'] = end_date

    delta = timedelta(hours=1)
    if not filter_settings.get('start_date'):
        filter_settings['start_date'] = filter_settings['end_date'] - delta
    if filter_settings['end_date'] <= filter_settings['start_date']:
        filter_settings['end_date'] = filter_settings['start_date']

    delta = filter_settings['end_date'] - filter_settings['start_date']
    if delta < h.time_deltas.get('12h')['delta']:
        divide_by_min = 1
    elif delta <= h.time_deltas.get('3d')['delta']:
        divide_by_min = 5.0
    elif delta >= h.time_deltas.get('2w')['delta']:
        divide_by_min = 60.0 * 24
    else:
        divide_by_min = 60.0

    results = RequestMetricService.get_metrics_stats(request, filter_settings)
    # because requests are PER SECOND / we divide 1 min stats by 60
    # requests are normalized to 1 min average
    # results are average seconds time spent per request in specific area
    for point in results:
        if point['requests']:
            point['main'] = (point['main'] - point['sql'] - point['nosql'] -
                             point['remote'] - point['tmpl'] -
                             point['custom']) / point['requests']
            point['sql'] = point['sql'] / point['requests']
            point['nosql'] = point['nosql'] / point['requests']
            point['remote'] = point['remote'] / point['requests']
            point['tmpl'] = point['tmpl'] / point['requests']
            point['custom'] = point['custom'] / point['requests']
            point['requests_2'] = point['requests'] / 60.0 / divide_by_min

    selected_types = ['main', 'sql', 'nosql', 'remote', 'tmpl', 'custom']

    for point in results:
        for stat_type in selected_types:
            point[stat_type] = round(point.get(stat_type, 0), 3)

    return results
Exemplo n.º 7
0
def get_apdex_stats(request):
    """
    Returns information and calculates APDEX score per server for dashboard
    server information (upper right stats boxes)
    """
    query_params = request.GET.mixed()
    query_params["resource"] = (request.context.resource.resource_id,)

    filter_settings = build_filter_settings_from_query_dict(request, query_params)
    # make sure we have only one resource here to don't produce
    # weird results when we have wrong app in app selector
    filter_settings["resource"] = [filter_settings["resource"][0]]

    if not filter_settings.get("end_date"):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings["end_date"] = end_date

    delta = timedelta(hours=1)
    if not filter_settings.get("start_date"):
        filter_settings["start_date"] = filter_settings["end_date"] - delta

    return RequestMetricService.get_apdex_stats(request, filter_settings)
Exemplo n.º 8
0
def requests_graphs(request):
    """
    Handles dashboard infomation for avg. response time split by today,
    2 days ago and week ago
    """
    query_params = request.GET.mixed()
    query_params['resource'] = (request.context.resource.resource_id, )

    filter_settings = build_filter_settings_from_query_dict(
        request, query_params)

    if not filter_settings.get('end_date'):
        end_date = datetime.utcnow().replace(microsecond=0, second=0)
        filter_settings['end_date'] = end_date

    delta = timedelta(hours=1)
    if not filter_settings.get('start_date'):
        filter_settings['start_date'] = filter_settings['end_date'] - delta

    result_now = RequestMetricService.get_metrics_stats(
        request, filter_settings)

    delta = filter_settings['end_date'] - filter_settings['start_date']
    if delta < h.time_deltas.get('12h')['delta']:
        seconds = h.time_deltas['1m']['minutes'] * 60.0
    elif delta <= h.time_deltas.get('3d')['delta']:
        seconds = h.time_deltas['5m']['minutes'] * 60.0
    elif delta >= h.time_deltas.get('2w')['delta']:
        seconds = h.time_deltas['24h']['minutes'] * 60.0
    else:
        seconds = h.time_deltas['1h']['minutes'] * 60.0

    for item in result_now:
        if item['requests']:
            item['requests'] = round(item['requests'] / seconds, 3)
    return result_now