Esempio n. 1
0
        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 })));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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 })));
        }
Esempio n. 10
0
        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 })));
        }
Esempio n. 11
0
        public ActionResult GetResponseTimePie(GetIndexDataRequest request)
        {
            var data = _dataService.GetResponseTimePie(request);

            return(new CustomsJsonResult {
                Data = new Result(1, "ok", data)
            });
        }
Esempio n. 12
0
        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 })));
        }
Esempio n. 13
0
        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 })));
        }
Esempio n. 14
0
        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 })));
        }
Esempio n. 15
0
        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 })));
        }
Esempio n. 16
0
        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
            });
        }
Esempio n. 17
0
        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());
        }
Esempio n. 19
0
        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());
        }
Esempio n. 20
0
        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%"),
            })));
        }
Esempio n. 21
0
        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 })));
        }
Esempio n. 22
0
        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());
        }
Esempio n. 24
0
        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%"),
            })));
        }
Esempio n. 25
0
        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%"),
            })));
        }
Esempio n. 27
0
        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());
        }
Esempio n. 29
0
        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 })));
        }
Esempio n. 30
0
        public IActionResult GetResponseTimePie(GetIndexDataRequest request)
        {
            var data = _dataService.GetResponseTimePie(request);

            return(Json(new Result(1, "ok", data)));
        }