Exemple #1
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 })));
        }
        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 })));
        }