public async Task <IActionResult> GetIndexChartData(GetIndexDataRequest request) { var start = (request.Start.IsEmpty() ? DateTime.Now.ToString("yyyy-MM-dd") : request.Start).ToDateTime(); var end = (request.End.IsEmpty() ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : request.End).ToDateTime(); var nodes = request.Node.IsEmpty() ? null : request.Node.Split(','); var topRequest = await _storage.GetUrlRequestStatisticsAsync(new RequestInfoFilterOption() { Nodes = nodes, StartTime = start, EndTime = end, IsAscend = false, Take = request.TOP, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }).ConfigureAwait(false); var topError500 = await _storage.GetUrlRequestStatisticsAsync(new RequestInfoFilterOption() { Nodes = nodes, StartTime = start, EndTime = end, IsAscend = false, Take = request.TOP, StatusCodes = new[] { 500 }, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }).ConfigureAwait(false); var fast = await _storage.GetRequestAvgResponeTimeStatisticsAsync(new RequestInfoFilterOption() { Nodes = nodes, StartTime = start, EndTime = end, IsAscend = true, Take = request.TOP, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }).ConfigureAwait(false); var slow = await _storage.GetRequestAvgResponeTimeStatisticsAsync(new RequestInfoFilterOption() { Nodes = nodes, StartTime = start, EndTime = end, IsAscend = false, Take = request.TOP, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }).ConfigureAwait(false); var Art = new { fast = fast.Select(m => new EchartPineDataModel(m.Url, (int)m.Time)), slow = slow.Select(m => new EchartPineDataModel(m.Url, (int)m.Time)) }; var StatusCode = (await _storage.GetStatusCodeStatisticsAsync(new RequestInfoFilterOption() { Nodes = nodes, StartTime = start, EndTime = end, StatusCodes = new[] { 200, 301, 302, 303, 400, 401, 403, 404, 500, 502, 503 }, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }).ConfigureAwait(false)).Where(m => true).Select(m => new EchartPineDataModel(m.Code.ToString(), m.Total)).ToArray(); var ResponseTime = (await _storage.GetGroupedResponeTimeStatisticsAsync(new GroupResponeTimeFilterOption() { Nodes = nodes, StartTime = start, EndTime = end, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }).ConfigureAwait(false)).Where(m => true).Select(m => new EchartPineDataModel(m.Name, m.Total)).ToArray(); return(Json(new HttpResultEntity(1, "ok", new { StatusCode, ResponseTime, topRequest, topError500, Art }))); }
public async Task <string> GetIndexChartData(GetIndexDataRequest request) { var start = (request.Start.IsEmpty() ? DateTime.Now.ToString("yyyy-MM-dd") : request.Start).ToDateTime(); var end = (request.End.IsEmpty() ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : request.End).ToDateTime(); if (request.Service.IsEmpty() || request.Service == "ALL") { request.Service = ""; } if (request.Instance.IsEmpty() || request.Instance == "ALL") { request.LocalIP = ""; request.LocalPort = 0; } else { request.LocalIP = request.Instance.Substring(0, request.Instance.LastIndexOf(':')); request.LocalPort = request.Instance.Substring(request.Instance.LastIndexOf(':') + 1).ToInt(); } var topRequest = await _storage.GetUrlRequestStatisticsAsync(new RequestInfoFilterOption() { Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, StartTime = start, EndTime = end, IsAscend = false, Take = request.TOP, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }); var topError500 = await _storage.GetUrlRequestStatisticsAsync(new RequestInfoFilterOption() { Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, StartTime = start, EndTime = end, IsAscend = false, Take = request.TOP, StatusCodes = new[] { 500 }, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }); var fast = await _storage.GetRequestAvgResponeTimeStatisticsAsync(new RequestInfoFilterOption() { Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, StartTime = start, EndTime = end, IsAscend = true, Take = request.TOP, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }); var slow = await _storage.GetRequestAvgResponeTimeStatisticsAsync(new RequestInfoFilterOption() { Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, StartTime = start, EndTime = end, IsAscend = false, Take = request.TOP, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }); var Art = new { fast = fast.Select(m => new EchartPineDataModel(m.Url, (int)m.Time)), slow = slow.Select(m => new EchartPineDataModel(m.Url, (int)m.Time)) }; var StatusCode = (await _storage.GetStatusCodeStatisticsAsync(new RequestInfoFilterOption() { Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, StartTime = start, EndTime = end, StatusCodes = new[] { 200, 301, 302, 303, 400, 401, 403, 404, 500, 502, 503 }, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" })).Where(m => true).Select(m => new EchartPineDataModel(m.Code.ToString(), m.Total)).ToArray(); var ResponseTime = (await _storage.GetGroupedResponeTimeStatisticsAsync(new GroupResponeTimeFilterOption() { Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, StartTime = start, EndTime = end, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" })).Where(m => true).Select(m => new EchartPineDataModel(m.Name, m.Total)).ToArray(); return(Json(new HttpResultEntity(1, "ok", new { StatusCode, ResponseTime, topRequest, topError500, Art }))); }