Example #1
0
        /// <summary>搜索数据集</summary>
        /// <param name="p"></param>
        /// <returns></returns>
        protected override IEnumerable <VisitStat> Search(Pager p)
        {
            var model = new VisitStatModel();

            model.Fill(p.Params, StatLevels.Day);
            model.Page = p["p"];

            p.RetrieveState = true;

            var list = VisitStat.Search(model, p["dtStart"].ToDateTime(), p["dtEnd"].ToDateTime(), p);

            if (list.Count > 0)
            {
                var chart = new ECharts();
                chart.SetX(list, _.Time, e => e.Time.ToString("yyyy-MM-dd"));
                chart.SetY(_.Times);
                chart.AddLine(list, _.Times, null, true);
                chart.Add(list, _.Users);
                chart.Add(list, _.IPs);
                chart.Add(list, _.Error);
                chart.SetTooltip();

                var chart2 = new ECharts();
                chart2.AddPie(list, _.Times, e => new { name = e.Time.ToString("yyyy-MM-dd"), value = e.Times });

                ViewBag.Charts  = new[] { chart };
                ViewBag.Charts2 = new[] { chart2 };
            }

            return(list);
        }
        protected override IEnumerable <AppDayStat> Search(Pager p)
        {
            var appId = p["appId"].ToInt(-1);

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            // 默认排序
            if (appId >= 0 && start.Year < 2000 && p.Sort.IsNullOrEmpty())
            {
                start        = DateTime.Today.AddDays(-30);
                p["dtStart"] = start.ToString("yyyy-MM-dd");

                p.Sort     = __.StatDate;
                p.Desc     = false;
                p.PageSize = 100;
            }

            p.RetrieveState = true;

            var list = AppDayStat.Search(appId, start, end, p["Q"], p);

            if (list.Count > 0)
            {
                // 绘制日期曲线图
                var ar = AppTracer.FindByID(appId);
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("调用次数");
                    chart.AddLine(list, _.Total, null, true);
                    chart.Add(list, _.Errors);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("耗时");
                    chart.AddLine(list, _.Cost, null, true);
                    chart.Add(list, _.MaxCost);
                    chart.Add(list, _.MinCost);
                    chart.SetTooltip();
                    ViewBag.Charts2 = new[] { chart };
                }
            }

            return(list);
        }
Example #3
0
        protected override IEnumerable <RedisData> Search(Pager p)
        {
            PageSetting.EnableAdd = false;

            var redisId = p["redisId"].ToInt(-1);

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            if (redisId > 0)
            {
                // 最近10小时
                if (p.PageSize == 20 && redisId > 0)
                {
                    p.PageSize = 24 * 60;
                }

                PageSetting.EnableNavbar = false;
            }

            if (p.Sort.IsNullOrEmpty())
            {
                p.OrderBy = _.Id.Desc();
            }

            var list = RedisData.Search(redisId, start, end, p["Q"], p);

            if (list.Count > 0)
            {
                // 绘制日期曲线图
                var node = RedisNode.FindById(redisId);
                if (redisId >= 0 && node != null)
                {
                    var list2 = list.OrderBy(e => e.Id).ToList();

                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = node.Name
                        },
                        Height = 400,
                    };
                    chart.SetX(list2, _.CreateTime, e => e.CreateTime.ToString("HH:mm"));
                    chart.SetY("指标");
                    chart.AddLine(list2, _.Speed, null, true);
                    chart.Add(list2, _.InputKbps);
                    chart.Add(list2, _.OutputKbps);
                    chart.Add(list2, _.ConnectedClients);
                    chart.Add(list2, _.UsedMemory);
                    chart.Add(list2, _.Keys);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
            }

            return(list);
        }
Example #4
0
        protected override IEnumerable <NodeData> Search(Pager p)
        {
            PageSetting.EnableAdd = false;

            var nodeId = p["nodeId"].ToInt(-1);

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            if (nodeId > 0)
            {
                // 最近10小时
                if (p.PageSize == 20 && nodeId > 0)
                {
                    p.PageSize = 24 * 60;
                }

                PageSetting.EnableNavbar = false;
            }

            if (p.Sort.IsNullOrEmpty())
            {
                p.OrderBy = _.ID.Desc();
            }

            var list = NodeData.Search(nodeId, start, end, p["Q"], p);

            if (list.Count > 0)
            {
                // 绘制日期曲线图
                var node = Node.FindByID(nodeId);
                if (nodeId >= 0 && node != null)
                {
                    var list2 = list.OrderBy(e => e.ID).ToList();

                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = node.Name
                        },
                        Height = 400,
                    };
                    chart.SetX(list2, _.LocalTime, e => e.LocalTime.ToString("HH:mm"));
                    chart.SetY("指标");
                    chart.AddLine(list2, _.CpuRate, e => (Int32)(e.CpuRate * 100), true);
                    chart.Add(list2, _.AvailableMemory, "line", e => node.Memory == 0 ? 0 : (e.AvailableMemory * 100 / node.Memory));
                    chart.Add(list2, _.AvailableFreeSpace, "line", e => node.TotalSize == 0 ? 0 : (e.AvailableFreeSpace * 100 / node.TotalSize));
                    chart.Add(list2, _.TcpConnections);
                    chart.Add(list2, _.TcpTimeWait);
                    chart.Add(list2, _.TcpCloseWait);
                    chart.Add(list2, _.Temperature);
                    chart.Add(list2, _.Delay);
                    chart.Add(list2, _.Offset);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
            }

            return(list);
        }
Example #5
0
        protected override IEnumerable <TraceDayStat> Search(Pager p)
        {
            var appId = p["appId"].ToInt(-1);
            var name  = p["name"];

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            // 默认排序
            if (appId >= 0 && start.Year < 2000 && p.Sort.IsNullOrEmpty())
            {
                start        = DateTime.Today.AddDays(-30);
                p["dtStart"] = start.ToString("yyyy-MM-dd");

                p.Sort     = TraceDayStat.__.StatDate;
                p.Desc     = false;
                p.PageSize = 100;
            }

            var list = TraceDayStat.Search(appId, name, start, end, p["Q"], p);

            if (list.Count > 0)
            {
                var hasDate = start.Year > 2000 || end.Year > 2000;
                // 绘制日期曲线图
                var ar = AppTracer.FindByID(appId);
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = ar + ""
                        },
                        Height = 400,
                    };
                    chart.SetX(list, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("数量");
                    chart.AddLine(list, _.Total, null, true);
                    chart.Add(list, _.Total);
                    chart.Add(list, _.Errors);
                    chart.Add(list, _.Cost);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
            }

            return(list);
        }
        protected override IEnumerable <TraceDayStat> Search(Pager p)
        {
            var appId = p["appId"].ToInt(-1);
            var name  = p["name"];
            var type  = p["type"];

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();
            var date  = p["date"].ToDateTime();

            if (start.Year < 2000 && end.Year < 2000)
            {
                start = end = date;
            }

            // 选了应用,没有选时间,按照统计日期升序
            if (appId >= 0 && start.Year < 2000 && p.Sort.IsNullOrEmpty())
            {
                p.Sort     = __.StatDate;
                p.Desc     = true;
                p.PageSize = 90;
            }
            // 选了应用和时间,按照接口调用次数降序
            else if (appId >= 0 && start.Year > 2000 && p.Sort.IsNullOrEmpty())
            {
                p.Sort     = __.Total;
                p.Desc     = true;
                p.PageSize = 100;
            }

            p.RetrieveState = true;

            var list = TraceDayStat.Search(appId, name, type, start, end, p["Q"], p);

            if (list.Count > 0 && appId >= 0 && !name.IsNullOrEmpty())
            {
                var list2 = list.OrderBy(e => e.StatDate).ToList();

                // 绘制日期曲线图
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list2, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("调用次数");
                    chart.AddLine(list2, _.Total, null, true);
                    chart.Add(list2, _.Errors);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list2, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("耗时");
                    chart.AddLine(list2, _.Cost, null, true);
                    chart.Add(list2, _.MaxCost);
                    chart.Add(list2, _.MinCost);
                    chart.SetTooltip();
                    ViewBag.Charts2 = new[] { chart };
                }
            }

            var ar = AppTracer.FindByID(appId);

            if (ar != null)
            {
                ViewBag.Title = $"{ar}每日统计";
            }

            return(list);
        }
Example #7
0
        protected override IEnumerable <AppMinuteStat> Search(Pager p)
        {
            var appId    = p["appId"].ToInt(-1);
            var minError = p["minError"].ToInt(-1);

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            // 选了应用,没有选时间,按照统计日期升序
            if (appId >= 0 && start.Year < 2000 && p.Sort.IsNullOrEmpty())
            {
                p.Sort     = __.StatTime;
                p.Desc     = true;
                p.PageSize = 2 * 60 / 5;
            }
            // 选了应用和时间,按照接口调用次数降序
            else if (appId >= 0 && start.Year > 2000 && p.Sort.IsNullOrEmpty())
            {
                p.Sort     = __.Total;
                p.Desc     = true;
                p.PageSize = 24 * 60 / 5;
            }
            // 监控视图,没有选应用
            else if (appId < 0 && p["t"] == "dash")
            {
                // 最近一段时间,5~10分钟
                if (start.Year < 2000)
                {
                    var time   = DateTime.Now;
                    var minute = time.Date.AddHours(time.Hour).AddMinutes(time.Minute / 5 * 5);
                    start = minute.AddMinutes(-5);
                }

                p.OrderBy  = $"{__.Errors} desc, {__.Total} desc";
                p.PageSize = 20;

                PageSetting.EnableNavbar = false;
                PageSetting.EnableAdd    = false;
                PageSetting.EnableKey    = false;
                PageSetting.EnableSelect = false;
            }

            p.RetrieveState = true;

            var list = AppMinuteStat.Search(appId, minError, start, end, p["Q"], p);

            if (list.Count > 0 && appId >= 0)
            {
                var list2 = list.OrderBy(e => e.StatTime).ToList();

                // 绘制日期曲线图
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list2, _.StatTime, e => e.StatTime.ToString("HH:mm"));
                    chart.SetY("调用次数");
                    chart.AddLine(list2, _.Total, null, true);
                    chart.Add(list2, _.Errors);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list2, _.StatTime, e => e.StatTime.ToString("HH:mm"));
                    chart.SetY("耗时");
                    chart.AddLine(list2, _.Cost, null, true);
                    chart.Add(list2, _.MaxCost);
                    chart.Add(list2, _.MinCost);
                    chart.SetTooltip();
                    ViewBag.Charts2 = new[] { chart };
                }
            }
            else if (list.Count > 0 && appId < 0 && p["t"] == "dash")
            {
                var list2 = new List <AppMinuteStat>();
                foreach (var item in list)
                {
                    var st = list2.FirstOrDefault(e => e.AppId == item.AppId);
                    if (st == null)
                    {
                        list2.Add(st = new AppMinuteStat {
                            AppId = item.AppId
                        });
                    }

                    st.Total  += item.Total;
                    st.Errors += item.Errors;
                }
                list2 = list2.OrderBy(e => e.Errors).ThenBy(e => e.Total).ToList();

                // 绘制柱状图
                var chart = new ECharts
                {
                    Height = 800,
                };
                chart.SetTooltip("axis", "shadow");
                chart.Legend  = new { data = new[] { "总数", "错误数" } };
                chart["grid"] = new { left = "3%", right = "4%", bottom = "3%", containLabel = true };

                chart.XAxis = new[] { new { type = "value" } };
                chart.YAxis = new[] {
                    new {
                        type     = "category",
                        axisTick = new { show = false },
                        data     = list2.Select(e => e.AppName).ToArray()
                    }
                };

                //chart.Add(list2, _.Total, "bar");
                //chart.Add(list2, _.Errors, "bar");
                chart.Add(new Series
                {
                    Name      = "错误数",
                    Type      = "bar",
                    ["stack"] = "总量",
                    ["label"] = new { show = true, position = "left" },
                    Data      = list2.Select(e => - e.Errors).ToArray(),
                });
                chart.Add(new Series
                {
                    Name      = "总数",
                    Type      = "bar",
                    ["stack"] = "总量",
                    ["label"] = new { show = true },
                    Data      = list2.Select(e => e.Total).ToArray(),
                });

                ViewBag.Charts = new[] { chart };
            }

            var ar = AppTracer.FindByID(appId);

            if (ar != null)
            {
                ViewBag.Title = $"{ar}分钟统计";
            }

            return(list);
        }
Example #8
0
        protected override IEnumerable <AppMeter> Search(Pager p)
        {
            PageSetting.EnableAdd = false;

            var appId    = p["appId"].ToInt(-1);
            var clientId = p["clientId"];

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            if (appId > 0)
            {
                // 最近24小时
                if (p.PageSize == 20 && appId > 0)
                {
                    p.PageSize = 1440;
                }

                // 自动客户端
                if (clientId.IsNullOrEmpty())
                {
                    var clients = AppMeter.GetClientIds(appId);
                    if (clients != null && clients.Count > 0)
                    {
                        clientId = clients.FirstOrDefault(e => e.Key != "null").Key;
                    }
                }

                PageSetting.EnableNavbar = false;
            }

            if (p.Sort.IsNullOrEmpty())
            {
                p.OrderBy = _.Id.Desc();
            }

            var list = AppMeter.Search(appId, clientId, start, end, p["Q"], p);

            if (list.Count > 0 && !clientId.IsNullOrEmpty())
            {
                // 绘制日期曲线图
                var app = App.FindById(appId);
                if (appId >= 0 && app != null)
                {
                    var list2 = list.OrderBy(e => e.Id).ToList();

                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = app.Name + "#" + clientId
                        },
                        Height = 400,
                    };
                    chart.SetX(list2, _.CreateTime, e => e.CreateTime.ToString("HH:mm"));
                    chart.SetY("指标");
                    chart.AddLine(list2, _.Memory, null, true);
                    chart.Add(list2, _.Threads);
                    chart.Add(list2, _.Handles);
                    chart.Add(list2, _.Connections);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
            }

            return(list);
        }
Example #9
0
        protected override IEnumerable <NodeStat> Search(Pager p)
        {
            var areaId = p["areaId"].ToInt(-1);
            var start  = p["dtStart"].ToDateTime();
            var end    = p["dtEnd"].ToDateTime();

            // 默认排序
            if (areaId >= 0 && start.Year < 2000 && p.Sort.IsNullOrEmpty())
            {
                start        = DateTime.Today.AddDays(-30);
                p["dtStart"] = start.ToString("yyyy-MM-dd");

                p.Sort     = NodeStat.__.StatDate;
                p.Desc     = false;
                p.PageSize = 100;

                //// 默认全国
                //if (areaId < 0) areaId = 0;
            }

            var list = NodeStat.Search(areaId, start, end, p["Q"], p);

            if (list.Count > 0)
            {
                var hasDate = start.Year > 2000 || end.Year > 2000;
                // 绘制日期曲线图
                var ar = Area.FindByID(areaId);
                if (areaId >= 0)
                {
                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = ar + ""
                        },
                        Height = 400,
                    };
                    chart.SetX(list, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("数量");
                    chart.AddLine(list, _.Total, null, true);
                    chart.Add(list, _.Actives);
                    chart.Add(list, _.T7Actives);
                    chart.Add(list, _.T30Actives);
                    chart.Add(list, _.News);
                    chart.Add(list, _.T7News);
                    chart.Add(list, _.T30News);
                    chart.Add(list, _.Registers);
                    chart.Add(list, _.MaxOnline);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                // 指定日期后,绘制饼图
                if (hasDate && areaId < 0)
                {
                    var w = 400;
                    var h = 300;

                    var chart0 = new ECharts {
                        Width = w, Height = h
                    };
                    chart0.Add(list, _.Total, "pie", e => new { name = e.ProvinceName, value = e.Total });

                    var chart1 = new ECharts {
                        Width = w, Height = h
                    };
                    chart1.Add(list, _.Actives, "pie", e => new { name = e.ProvinceName, value = e.Actives });

                    var chart2 = new ECharts {
                        Width = w, Height = h
                    };
                    chart2.Add(list, _.News, "pie", e => new { name = e.ProvinceName, value = e.News });

                    var chart3 = new ECharts {
                        Width = w, Height = h
                    };
                    chart3.Add(list, _.Registers, "pie", e => new { name = e.ProvinceName, value = e.Registers });

                    var chart4 = new ECharts {
                        Width = w, Height = h
                    };
                    chart4.Add(list, _.MaxOnline, "pie", e => new { name = e.ProvinceName, value = e.MaxOnline });

                    ViewBag.Charts2 = new[] { chart0, chart1, chart2, chart3, chart4 };
                }
            }

            return(list);
        }
        protected override IEnumerable <AppDayStat> Search(Pager p)
        {
            var appId = p["appId"].ToInt(-1);

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            // 默认排序
            if (appId >= 0 && start.Year < 2000 && p.Sort.IsNullOrEmpty())
            {
                p.Sort     = __.StatDate;
                p.Desc     = true;
                p.PageSize = 100;
            }

            p.RetrieveState = true;

            var list = AppDayStat.Search(appId, start, end, p["Q"], p);

            if (list.Count > 0 && appId > 0)
            {
                var list2 = list.OrderBy(e => e.StatDate).ToList();

                // 绘制日期曲线图
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list2, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("调用次数");
                    chart.AddLine(list2, _.Total, null, true);
                    chart.Add(list2, _.Errors);
                    chart.Add(list2, _.Apis);
                    chart.Add(list2, _.Https);
                    chart.Add(list2, _.Dbs);
                    chart.Add(list2, _.Mqs);
                    chart.Add(list2, _.Redis);
                    chart.Add(list2, _.Others);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Height = 400,
                    };
                    chart.SetX(list2, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("耗时");
                    chart.AddLine(list2, _.Cost, null, true);
                    chart.Add(list2, _.MaxCost);
                    chart.Add(list2, _.MinCost);
                    chart.SetTooltip();
                    ViewBag.Charts2 = new[] { chart };
                }
            }

            var ar = AppTracer.FindByID(appId);

            if (ar != null)
            {
                ViewBag.Title = $"{ar}每日统计";
            }

            return(list);
        }
Example #11
0
        protected override IEnumerable <DeviceStat> Search(Pager p)
        {
            var productId = p["productId"].ToInt(-1);
            var start     = p["dtStart"].ToDateTime();
            var end       = p["dtEnd"].ToDateTime();

            // 如果选择产品,但没有排序,默认升序
            if (productId >= 0 && p.Sort.IsNullOrEmpty())
            {
                p.Sort = __.ID;
                p.Desc = false;
                if (p.PageSize == 20 || p.PageSize == 0)
                {
                    p.PageSize = 1000;
                }

                if (start.Year < 2000 && end.Year < 2000)
                {
                    start        = DateTime.Today.AddDays(-30);
                    p["dtStart"] = start.ToString("yyyy-MM-dd");
                }
            }

            var list = DeviceStat.Search(productId, start, end, p["Q"], p);

            if (list.Count > 0)
            {
                var hasDate = start.Year > 2000 || end.Year > 2000;
                // 指定产品后,绘制日期曲线图
                var prd = Product.FindByID(productId);
                if (productId >= 0)
                {
                    if (productId == 99)
                    {
                        var dic   = list.GroupBy(e => e.StatDate).ToDictionary(e => e.Key, e => e.ToList());
                        var list2 = new List <DeviceStat>();
                        foreach (var item in dic)
                        {
                            var st = new DeviceStat {
                                StatDate = item.Key
                            };
                            st.Merge(item.Value);
                            list2.Add(st);
                        }
                        list = list2;
                    }

                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = prd + "设备统计"
                        },
                        Height = 400,
                    };
                    chart.SetX(list, _.StatDate, e => e.StatDate.ToString("MM-dd"));
                    chart.SetY("台数");
                    var sr = chart.Add(list, _.Total, "line", null);
                    sr.Smooth = true;
                    chart.Add(list, _.Actives);
                    chart.Add(list, _.News);
                    chart.Add(list, _.T7Actives);
                    chart.Add(list, _.T7News);
                    chart.Add(list, _.T30Actives);
                    chart.Add(list, _.T30News);
                    chart.Add(list, _.Registers);
                    chart.Add(list, _.MaxOnline);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                // 指定日期后,绘制饼图
                if (hasDate && productId < 0)
                {
                    var w = 400;
                    var h = 300;

                    // 去掉所有产品
                    list = list.Where(e => e.ProductId > 0).ToList();

                    var chart0 = new ECharts {
                        Width = w, Height = h
                    };
                    chart0.Add(list, _.Total, "pie", e => new { name = e.ProductName, value = e.Total });

                    var chart1 = new ECharts {
                        Width = w, Height = h
                    };
                    chart1.Add(list, _.Actives, "pie", e => new { name = e.ProductName, value = e.Actives });

                    var chart2 = new ECharts {
                        Width = w, Height = h
                    };
                    chart2.Add(list, _.News, "pie", e => new { name = e.ProductName, value = e.News });

                    var chart3 = new ECharts {
                        Width = w, Height = h
                    };
                    chart3.Add(list, _.Registers, "pie", e => new { name = e.ProductName, value = e.Registers });

                    var chart4 = new ECharts {
                        Width = w, Height = h
                    };
                    chart4.Add(list, _.MaxOnline, "pie", e => new { name = e.ProductName, value = e.MaxOnline });

                    ViewBag.Charts2 = new[] { chart0, chart1, chart2, chart3, chart4 };
                }
            }

            return(list);
        }
Example #12
0
        protected override IEnumerable <TraceData> Search(Pager p)
        {
            var appId = p["appId"].ToInt(-1);
            var name  = p["name"];

            var start = p["dtStart"].ToDateTime();
            var end   = p["dtEnd"].ToDateTime();

            var kind = p["kind"];
            var date = p["date"].ToDateTime();

            if (start.Year < 2000 && end.Year < 2000)
            {
                start = end = date;
            }
            var time = p["time"].ToDateTime();

            if (start.Year < 2000 && end.Year < 2000)
            {
                start = end = time;
            }

            if (appId > 0 && p.PageSize == 20)
            {
                p.PageSize = 100;
            }
            if (p.Sort.IsNullOrEmpty())
            {
                p.OrderBy = _.Id.Desc();
            }

            var list = TraceData.Search(appId, name, kind, start, end, p["Q"], p);

            if (list.Count > 0 && appId > 0 && !name.IsNullOrEmpty())
            {
                var list2 = list.OrderBy(e => e.Id).ToList();

                // 绘制日期曲线图
                var app = AppTracer.FindByID(appId);
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = "调用次数"
                        },
                        Height = 400,
                    };
                    chart.SetX(list2, _.StartTime, e => e.StartTime.ToDateTime().ToLocalTime().ToString("HH:mm:ss"));
                    chart.SetY("次数");
                    chart.AddLine(list2, _.Total, null, true);
                    chart.Add(list2, _.Errors);
                    chart.SetTooltip();
                    ViewBag.Charts = new[] { chart };
                }
                if (appId >= 0)
                {
                    var chart = new ECharts
                    {
                        Title = new ChartTitle {
                            Text = "耗时"
                        },
                        Height = 400,
                    };
                    chart.SetX(list2, _.StartTime, e => e.StartTime.ToDateTime().ToLocalTime().ToString("HH:mm:ss"));
                    chart.SetY("耗时");
                    chart.AddLine(list2, _.Cost, null, true);
                    chart.Add(list2, _.MaxCost);
                    chart.Add(list2, _.MinCost);
                    chart.SetTooltip();
                    ViewBag.Charts2 = new[] { chart };
                }
            }

            var ar = AppTracer.FindByID(appId);

            if (ar != null)
            {
                ViewBag.Title = $"{ar}跟踪";
            }

            return(list);
        }