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
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
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
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
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
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
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)
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