public async Task <IActionResult> GetLatelyDayChart(GetIndexDataRequest request) { var startTime = DateTime.Now.Date.AddDays(-31); var endTime = DateTime.Now.Date.AddDays(1).AddSeconds(-1); var nodes = request.Node.IsEmpty() ? null : request.Node.Split(','); var responseTimeStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss", Nodes = nodes, Type = TimeUnit.Day, }).ConfigureAwait(false); List <string> time = new List <string>(); List <int> value = new List <int>(); var monthDayCount = (endTime - startTime).Days; for (int i = 1; i <= monthDayCount; i++) { var day = startTime.AddDays(i).ToString("yyyy-MM-dd"); var times = responseTimeStatistics.Items.TryGetValue(day, out var tTimes) ? tTimes : 0; time.Add(startTime.AddDays(i).ToString("dd").ToInt().ToString()); value.Add(times); } return(Json(new HttpResultEntity(1, "ok", new { time, value }))); }
public async Task <IActionResult> GetMonthDataByYear(GetIndexDataRequest request) { var startTime = $"{request.Year}-01-01".ToDateTimeOrDefault(() => new DateTime(DateTime.Now.Year, 1, 1)); var endTime = startTime.AddYears(1); var nodes = request.Node?.Split(','); var responseTimeStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, Nodes = nodes, Type = TimeUnit.Month, }).ConfigureAwait(false); List <string> time = new List <string>(); List <int> value = new List <int>(); string Range = $"{request.Year}-01-{request.Year}-12"; for (int i = 0; i < 12; i++) { var month = (i + 1).ToString(); var times = responseTimeStatistics.Items.TryGetValue(month, out var tTimes) ? tTimes : 0; time.Add(month); value.Add(times); } return(Json(new HttpResultEntity(1, "ok", new { time, value, Range }))); }
public List <EchartPineDataModel> GetStatusCode(GetIndexDataRequest request) { string where = BuildSqlWhere(request); string sql = $@" Select '200' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 200 Union Select '301' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 301 Union Select '302' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 302 Union Select '303' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 303 Union Select '400' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 400 Union Select '401' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 401 Union Select '403' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 403 Union Select '404' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 404 Union Select '500' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 500 Union Select '502' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 502 Union Select '503' Name,COUNT(1) Value From RequestInfo {where} AND StatusCode = 503 "; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
public GetIndexDataResponse GetIndexData(GetIndexDataRequest request) { string where = BuildSqlWhere(request); string sql = $@" Select AVG(Milliseconds) ART From RequestInfo {where} ; Select COUNT(1) Total From RequestInfo {where} ; Select COUNT(1) Code404 From RequestInfo {where} AND StatusCode = 404 ; Select COUNT(1) Code500 From RequestInfo {where} AND StatusCode = 500 ; Select Count(1) From ( Select Distinct Url From RequestInfo ) A; "; GetIndexDataResponse response = new GetIndexDataResponse(); using (var result = conn.QueryMultiple(sql)) { response.ART = (result.ReadFirstOrDefault <string>() ?? "0").ToDouble().ToString("0"); response.Total = result.ReadFirstOrDefault <string>(); response.Code404 = result.ReadFirstOrDefault <string>(); response.Code500 = result.ReadFirstOrDefault <string>(); response.APICount = result.ReadFirst <int>(); response.ErrorPercent = response.Total.ToInt() == 0 ? "0.00%" :(Convert.ToDouble(response.Code500) / Convert.ToDouble(response.Total)).ToString("0.00%"); } return(response); }
public IActionResult GetDayStateBar(GetIndexDataRequest request) { List <int> timesList = new List <int>(); List <int> avgList = new List <int>(); // 每小时请求次数 List <EchartPineDataModel> times = _dataService.GetDayRequestTimes(request); //每小时平均响应时间 List <EchartPineDataModel> avg = _dataService.GetDayResponseTime(request); foreach (var item in hours) { // 每小时请求次数 var timeModel = times.Where(x => x.Name == item.ToString()).FirstOrDefault(); timesList.Add(timeModel == null ? 0:timeModel.Value); //每小时平均响应时间 var avgModel = avg.Where(x => x.Name == item.ToString()).FirstOrDefault(); avgList.Add(avgModel == null ? 0:avgModel.Value); } return(Json(new Result(1, "ok", new { timesList, avgList, hours }))); }
public string BuildSqlWhere(GetIndexDataRequest request) { string where = " where 1=1 "; request.Start = request.Start.IsEmpty() ? DateTime.Now.ToString("yyyy-MM-dd") : request.Start; request.End = request.End.IsEmpty() ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : request.End; if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(",").ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } if (!request.Start.IsEmpty()) { where = where + $" AND CreateTime >= '{request.Start}' "; } if (!request.End.IsEmpty()) { where = where + $" AND CreateTime < '{request.End}' "; } return(where); }
public GetIndexDataResponse GetIndexData(GetIndexDataRequest request) { string where = BuildSqlWhere(request); // string sql = $@" // Select AVG(Milliseconds) ART From RequestInfo {where} ; // Select COUNT(1) Total From RequestInfo {where} ; // Select COUNT(1) Code404 From RequestInfo {where} AND StatusCode = 404 ; // Select COUNT(1) Code500 From RequestInfo {where} AND StatusCode = 500 ; // Select Count(1) From ( Select Distinct Url From RequestInfo ) A; //"; GetIndexDataResponse response = new GetIndexDataResponse(); using (var con = new OracleConnection(connectionString)) { response.ART = con.QueryFirst <string>($"Select round(AVG(Milliseconds)) ART From RequestInfo {where}"); response.Total = con.QueryFirst <string>($"Select COUNT(1) Total From RequestInfo {where}"); response.Code404 = con.QueryFirst <string>($"Select COUNT(1) Code404 From RequestInfo {where} AND StatusCode = 404 "); response.Code500 = con.QueryFirst <string>($"Select COUNT(1) Code500 From RequestInfo {where} AND StatusCode = 500 "); response.APICount = con.QueryFirst <int>($" Select Count(1) From ( Select Distinct Url From RequestInfo ) A"); response.ErrorPercent = response.Total.ToInt() == 0 ? "0.00%" : (Convert.ToDouble(response.Code500) / Convert.ToDouble(response.Total)).ToString("0.00%"); } return(response); }
public string BuildSqlWhere(GetIndexDataRequest request) { string where = " where 1=1 "; request.Start = request.Start.IsEmpty() ? $"to_date('{DateTime.Now.ToString("yyyy-MM-dd")}','yyyy-MM-dd')" : request.Start; if (!request.Start.Contains("to_date")) { request.Start = $"to_date('{request.Start}','yyyy-MM-dd')"; } request.End = request.End.IsEmpty() ? $"to_date('{DateTime.Now.AddDays(1).ToString("yyyy-MM-dd")}','yyyy-MM-dd')" : request.End; if (!request.End.Contains("to_date")) { request.End = $"to_date('{request.End}','yyyy-MM-dd')"; } if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(',').ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } if (!request.Start.IsEmpty()) { where = where + $" AND CreateTime >= {request.Start} "; } if (!request.End.IsEmpty()) { where = where + $" AND CreateTime < {request.End} "; } return(where); }
public async Task <IActionResult> GetLatelyDayChart(GetIndexDataRequest request) { var startTime = $"{request.Month}-01".ToDateTimeOrDefault(() => new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)); var endTime = startTime.AddMonths(1); var nodes = request.Node.IsEmpty() ? null : request.Node.Split(','); var responseTimeStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, Nodes = nodes, Type = TimeUnit.Day, }).ConfigureAwait(false); List <string> time = new List <string>(); List <int> value = new List <int>(); string Range = $"{startTime.ToString("yyyy-MM-dd")}-{endTime.AddDays(-1).ToString("yyyy-MM-dd")}"; var monthDayCount = (endTime - startTime).Days; for (int i = 0; i < monthDayCount; i++) { var day = (i + 1).ToString(); var times = responseTimeStatistics.Items.TryGetValue(day, out var tTimes) ? tTimes : 0; time.Add(string.Format("{0:00}", i + 1)); value.Add(times); } return(Json(new HttpResultEntity(1, "ok", new { time, value, Range }))); }
public ActionResult GetDayStateBar(GetIndexDataRequest request) { List <int> timesList = new List <int>(); List <int> avgList = new List <int>(); // 每小时请求次数 List <EchartPineDataModel> times = _dataService.GetDayRequestTimes(request); //每小时平均处理时间 List <EchartPineDataModel> avg = _dataService.GetDayResponseTime(request); foreach (var item in hours) { // 每小时请求次数 var timeModel = times.Where(x => Convert.ToInt32(x.name) == item).FirstOrDefault(); timesList.Add(timeModel == null ? 0 : timeModel.value); //每小时平均处理时间 var avgModel = avg.Where(x => Convert.ToInt32(x.name) == item).FirstOrDefault(); avgList.Add(avgModel == null ? 0 : avgModel.value); } return(new CustomsJsonResult(new Result(1, "ok", new { timesList, avgList, hours }))); }
public ActionResult GetResponseTimePie(GetIndexDataRequest request) { var data = _dataService.GetResponseTimePie(request); return(new CustomsJsonResult { Data = new Result(1, "ok", data) }); }
public IActionResult GetLatelyDayChart(GetIndexDataRequest request) { // 默认30天 if (request.Start.IsEmpty() && request.End.IsEmpty()) { request.Start = DateTime.Now.Date.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"); request.End = DateTime.Now.Date.AddDays(1).AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss"); } else if (!request.Start.IsEmpty() && !request.End.IsEmpty()) { if ((request.End.ToDateTime() - request.Start.ToDateTime()).Days > 30) { request.Start = request.End.ToDateTime().AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"); } } else if (request.Start.IsEmpty() && !request.End.IsEmpty()) { request.Start = request.End.ToDateTime().AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"); } else if (!request.Start.IsEmpty() && request.End.IsEmpty()) { request.End = request.Start.ToDateTime().AddDays(30).ToString("yyyy-MM-dd HH:mm:ss"); if (request.End.ToDateTime() >= DateTime.Now.Date) { request.End = DateTime.Now.Date.AddDays(1).AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss"); } } else { } var list = _dataService.GetLatelyDayData(request); List <string> time = new List <string>(); List <int> value = new List <int>(); string Range = request.Start.ToDateTime().ToString("yyyy-MM-dd") + " - " + request.End.ToDateTime().ToString("yyyy-MM-dd"); for (int i = 0; i <= (request.End.ToDateTime() - request.Start.ToDateTime()).Days; i++) { DateTime k = request.Start.ToDateTime().AddDays(i); var j = list.Where(x => x.Name == k.ToString("yyyy-MM-dd")).FirstOrDefault(); if (j != null) { time.Add(k.ToString("dd")); value.Add(j.Value); } else { time.Add(k.ToString("dd")); value.Add(0); } } return(Json(new Result(1, "ok", new { time, value, Range }))); }
public async Task <IActionResult> GetMinuteStateBar(GetIndexDataRequest request) { var startTime = DateTime.Now.AddHours(-1).AddSeconds(-DateTime.Now.Second); var endTime = DateTime.Now; var nodes = request.Node.IsEmpty() ? null : request.Node.Split(','); // 每小时请求次数 var requestTimesStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss", Nodes = nodes, Type = TimeUnit.Minute, }).ConfigureAwait(false); //每小时平均处理时间 var responseTimeStatistics = await _storage.GetResponseTimeStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss", Nodes = nodes, Type = TimeUnit.Minute, }).ConfigureAwait(false); List <int> timesList = new List <int>(); List <int> avgList = new List <int>(); List <int> time = new List <int>(); for (int i = 1; i <= 60; i++) { var start = startTime.AddMinutes(i).ToString("HH-mm"); // 每小时请求次数 var times = requestTimesStatistics.Items.TryGetValue(start, out var tTimes) ? tTimes : 0; timesList.Add(times); //每小时平均处理时间 var avg = responseTimeStatistics.Items.TryGetValue(start, out var tAvg) ? tAvg : 0; avgList.Add(avg); time.Add(startTime.AddMinutes(i).ToString("mm").ToInt()); } return(Json(new HttpResultEntity(1, "ok", new { timesList, avgList, time }))); }
public async Task <string> GetLatelyDayChart(GetIndexDataRequest request) { var startTime = DateTime.Now.Date.AddDays(-31); var endTime = DateTime.Now.Date.AddDays(1).AddSeconds(-1); #region BuildServiceRequest 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(); } #endregion var responseTimeStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss", Service = request.Service, LocalIP = request.LocalIP, LocalPort = request.LocalPort, Type = TimeUnit.Day, }); List <string> time = new List <string>(); List <int> value = new List <int>(); var monthDayCount = (endTime - startTime).Days; for (int i = 1; i <= monthDayCount; i++) { var day = startTime.AddDays(i).ToString("yyyy-MM-dd"); var times = responseTimeStatistics.Items.TryGetValue(day, out var tTimes) ? tTimes : 0; time.Add(startTime.AddDays(i).ToString("dd").ToInt().ToString()); value.Add(times); } return(Json(new HttpResultEntity(1, "ok", new { time, value }))); }
public async Task <IActionResult> GetDayStateBar(GetIndexDataRequest request) { var startTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, 0, 0, DateTimeKind.Local).AddDays(-1); var endTime = DateTime.Now; var nodes = request.Node.IsEmpty() ? null : request.Node.Split(','); // 每小时请求次数 var requestTimesStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss", Nodes = nodes, Type = TimeUnit.Hour, }).ConfigureAwait(false); //每小时平均处理时间 var responseTimeStatistics = await _storage.GetResponseTimeStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss", Nodes = nodes, Type = TimeUnit.Hour, }).ConfigureAwait(false); List <int> timesList = new List <int>(); List <int> avgList = new List <int>(); List <int> hours = new List <int>(); for (int i = 1; i <= 24; i++) { var start = startTime.AddHours(i).ToString("dd-HH"); // 每小时请求次数 var times = requestTimesStatistics.Items.TryGetValue(start, out var tTimes) ? tTimes : 0; timesList.Add(times); //每小时平均处理时间 var avg = responseTimeStatistics.Items.TryGetValue(start, out var tAvg) ? tAvg : 0; avgList.Add(avg); hours.Add(startTime.AddHours(i).ToString("HH").ToInt()); } return(Json(new HttpResultEntity(1, "ok", new { timesList, avgList, hours }))); }
public ActionResult GetIndexChartA(GetIndexDataRequest request) { request.Start = request.Start.IsEmpty() ? DateTime.Now.ToString("yyyy-MM-dd") : request.Start; request.End = request.End.IsEmpty() ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : request.End; var TopRequest = _dataService.GetTopRequest(new Models.GetTopRequest { Node = request.Node, Start = request.Start, End = request.End, IsDesc = true, TOP = request.TOP }); var TopError500 = _dataService.GetCode500Response(new Models.GetTopRequest { Node = request.Node, Start = request.Start, End = request.End, IsDesc = true, TOP = request.TOP }); var fast = _dataService.GetTOPART(new Models.GetTopRequest { Node = request.Node, Start = request.Start, End = request.End, IsDesc = false, TOP = request.TOP }); var slow = _dataService.GetTOPART(new Models.GetTopRequest { Node = request.Node, Start = request.Start, End = request.End, IsDesc = true, TOP = request.TOP }); var Art = new { fast, slow }; var StatusCode = _dataService.GetStatusCode(request); var ResponseTime = _dataService.GetResponseTimePie(request); return(new CustomsJsonResult { Data = new Result(1, "ok", new { StatusCode, ResponseTime, TopRequest, TopError500, Art }), JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }
public List <EchartPineDataModel> GetMonthDataByYear(GetIndexDataRequest request) { string where = " where 1=1 "; if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(',').ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } where = where + $" AND CreateTime >= to_date('{request.Start}','yyyy-MM-dd') AND CreateTime < to_date('{request.End}','yyyy-MM-dd') "; string sql = $" Select to_char(CreateTime,'yyyy-MM') Name,Count(1) Value From RequestInfo {where} Group by to_char(CreateTime,'yyyy-MM')"; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
public List <EchartPineDataModel> GetMonthDataByYear(GetIndexDataRequest request) { string where = " where 1=1 "; if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(",").ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } where = where + $" AND CreateTime >= '{request.Start}' AND CreateTime < '{request.End}' "; string sql = $" Select CONVERT(varchar(7),CreateTime, 120) Name,Count(1) Value From RequestInfo {where} Group by CONVERT(varchar(7),CreateTime, 120) "; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
public List <EchartPineDataModel> GetLatelyDayData(GetIndexDataRequest request) { string where = " where 1=1 "; if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(",").ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } where = where + $" AND CreateTime >= '{request.Start}' AND CreateTime < '{request.End}' "; string sql = $" Select DATE_FORMAT(CreateTime,'%Y-%m-%d') Name ,COUNT(1) Value From RequestInfo {where} Group by DATE_FORMAT(CreateTime,'%Y-%m-%d') "; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
public async Task <string> GetIndexData(GetIndexDataRequest request) { var start = request.Start.ToDateTime(); var end = request.End.ToDateTime(); #region BuildService 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(); } #endregion var result = await _storage.GetIndexPageDataAsync(new IndexPageDataFilterOption() { 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" }); return(Json(new HttpResultEntity(1, "ok", new { ART = result.AvgResponseTime.ToInt(), Total = result.Total, Code404 = result.NotFound, Code500 = result.ServerError, APICount = result.APICount, ErrorPercent = result.ErrorPercent.ToString("0.00%"), }))); }
public async Task <IActionResult> GetDayStateBar(GetIndexDataRequest request) { var startTime = request.Day.ToDateTimeOrNow().Date; var endTime = startTime.AddDays(1); var nodes = request.Node.IsEmpty() ? null : request.Node.Split(','); // 每小时请求次数 var requestTimesStatistics = await _storage.GetRequestTimesStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, Nodes = nodes, Type = TimeUnit.Hour, }).ConfigureAwait(false); //每小时平均处理时间 var responseTimeStatistics = await _storage.GetResponseTimeStatisticsAsync(new TimeSpanStatisticsFilterOption() { StartTime = startTime, EndTime = endTime, Nodes = nodes, Type = TimeUnit.Hour, }).ConfigureAwait(false); List <int> timesList = new List <int>(); List <int> avgList = new List <int>(); foreach (var item in Hours) { // 每小时请求次数 var times = requestTimesStatistics.Items.TryGetValue(item.ToString(), out var tTimes) ? tTimes : 0; //每小时平均处理时间 var avg = responseTimeStatistics.Items.TryGetValue(item.ToString(), out var tAvg) ? tAvg : 0; timesList.Add(times); avgList.Add(avg); } return(Json(new HttpResultEntity(1, "ok", new { timesList, avgList, Hours }))); }
public List <EchartPineDataModel> GetDayResponseTime(GetIndexDataRequest request) { string where = " where 1=1 "; request.Day = request.Day.IsEmpty() ? DateTime.Now.ToString("yyyy-MM-dd") : request.Day; string End = request.Day.ToDateTime().AddDays(1).ToString("yyyy-MM-dd"); if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(',').ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } where = where + $" AND CreateTime >= to_date('{request.Day}','yyyy-MM-dd') AND CreateTime < to_date('{End}','yyyy-MM-dd') "; string sql = $" Select to_char(CreateTime, 'HH24') Name ,ROUND(AVG(Milliseconds)) Value From RequestInfo {where} Group by to_char(CreateTime, 'HH24')"; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
public List <EchartPineDataModel> GetDayResponseTime(GetIndexDataRequest request) { string where = " where 1=1 "; request.Day = request.Day.IsEmpty() ? DateTime.Now.ToString("yyyy-MM-dd") : request.Day; string End = request.Day.ToDateTime().AddDays(1).ToString("yyyy-MM-dd"); if (!request.Node.IsEmpty()) { string nodes = string.Join(",", request.Node.Split(",").ToList().Select(x => "'" + x + "'")); where = where + $" AND Node IN ({nodes})"; } where = where + $" AND CreateTime >= '{request.Day}' AND CreateTime < '{End}' "; string sql = $" Select DATENAME(HOUR, CreateTime) Name ,AVG(Milliseconds) Value From RequestInfo {where} Group by DATENAME(HOUR, CreateTime) "; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
public async Task <IActionResult> GetIndexData(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 result = await _storage.GetIndexPageDataAsync(new IndexPageDataFilterOption() { Nodes = request.Node.IsEmpty() ? null :request.Node.Split(','), StartTime = start, EndTime = end, }).ConfigureAwait(false); return(Json(new HttpResultEntity(1, "ok", new { ART = result.AvgResponseTime.ToInt(), Total = result.Total, Code404 = result.NotFound, Code500 = result.ServerError, APICount = result.APICount, ErrorPercent = result.ErrorPercent.ToString("0.00%"), }))); }
public ActionResult GetLatelyDayChart(GetIndexDataRequest request) { if (request.Month.IsEmpty()) { request.Month = DateTime.Now.ToString("yyyy-MM"); } request.Start = request.Month + "-01"; request.End = (request.Month + "-01").ToDateTime().AddMonths(1).ToString("yyyy-MM-dd"); var list = _dataService.GetLatelyDayData(request); List <string> time = new List <string>(); List <int> value = new List <int>(); string Range = request.Start.ToDateTime().ToString("yyyy-MM-dd") + " - " + request.End.ToDateTime().AddDays(-1).ToString("yyyy-MM-dd"); for (int i = 0; i < (request.End.ToDateTime() - request.Start.ToDateTime()).Days; i++) { DateTime k = request.Start.ToDateTime().AddDays(i); var j = list.Where(x => x.name == k.ToString("yyyy-MM-dd")).FirstOrDefault(); if (j != null) { time.Add(k.ToString("dd")); value.Add(j.value); } else { time.Add(k.ToString("dd")); value.Add(0); } } return(new CustomsJsonResult(new Result(1, "ok", new { time, value, Range }))); }
public async Task <IActionResult> GetIndexData([FromBody] GetIndexDataRequest request) { var start = request.Start.ToDateTime(); var end = request.End.ToDateTime(); var result = await _storage.GetIndexPageDataAsync(new IndexPageDataFilterOption() { StartTime = start, EndTime = end, StartTimeFormat = "yyyy-MM-dd HH:mm:ss", EndTimeFormat = "yyyy-MM-dd HH:mm:ss" }); return(Json(new HttpResultEntity(1, "ok", new { ART = result.AvgResponseTime.ToInt(), Total = result.Total, Code404 = result.NotFound, Code500 = result.ServerError, APICount = result.APICount, ErrorPercent = result.ErrorPercent.ToString("0.00%"), }))); }
public IActionResult GetMonthDataByYear(GetIndexDataRequest request) { if (request.Year.IsEmpty()) { request.Year = DateTime.Now.ToString("yyyy"); } request.Start = request.Year + "-01-01"; request.End = ((request.Year.ToInt() + 1) + "-01-01").ToDateTime().ToString("yyyy-MM-dd"); string Range = request.Start.ToDateTime().ToString("yyyy-MM") + " - " + request.End.ToDateTime().AddDays(-1).ToString("yyyy-MM"); var list = _dataService.GetMonthDataByYear(request); List <string> time = new List <string>(); List <int> value = new List <int>(); for (int i = 0; i < 12; i++) { DateTime k = request.Start.ToDateTime().AddMonths(i); var j = list.Where(x => x.Name == k.ToString("yyyy-MM")).FirstOrDefault(); if (j != null) { time.Add(k.ToString("yyyy-MM")); value.Add(j.Value); } else { time.Add(k.ToString("yyyy-MM")); value.Add(0); } } return(Json(new Result(1, "ok", new { time, value, Range }))); }
public List <EchartPineDataModel> GetResponseTimePie(GetIndexDataRequest request) { string where = BuildSqlWhere(request); string sql = $@" Select Name,Value from ( Select 1 ID, '1-100' Name, Count(1) Value From RequestInfo {where} AND Milliseconds > 0 AND Milliseconds <= 100 union Select 2 ID, '100-500' Name, Count(1) Value From RequestInfo {where} AND Milliseconds > 100 AND Milliseconds <= 500 union Select 3 ID, '500-1000' Name, Count(1) Value From RequestInfo {where} AND Milliseconds > 500 AND Milliseconds <= 1000 union Select 4 ID,'1000-3000' Name, Count(1) Value From RequestInfo {where} AND Milliseconds > 1000 AND Milliseconds <= 3000 union Select 5 Id,'3000-5000' Name, Count(1) Value From RequestInfo {where} AND Milliseconds > 3000 AND Milliseconds <= 5000 union Select 6 Id,'5000以上' Name, Count(1) Value From RequestInfo {where} AND Milliseconds > 5000 ) T Order By ID"; return(conn.Query <EchartPineDataModel>(sql).ToList()); }
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 IActionResult GetResponseTimePie(GetIndexDataRequest request) { var data = _dataService.GetResponseTimePie(request); return(Json(new Result(1, "ok", data))); }