Exemplo n.º 1
0
        //
        // GET: /Manage/Manage/

        public ActionResult Index(string id, string keyword, string CStime, string CEtime, int pagesize = 10, int pageindex = 1)
        {
            ViewBag.keyword    = keyword;
            ViewBag.CStime     = CStime;
            ViewBag.CEtime     = CEtime;
            ViewBag.pagesize   = pagesize;
            ViewBag.pageindex  = pageindex;
            ViewBag.SqlTimeNow = DateTime.Now;
            ViewBag.id         = id;
            tb_cluster_dal dal = new tb_cluster_dal();
            PagedList <tb_cluster_model> pageList = null;
            int count = 0;

            using (DbConn PubConn = DbConfig.CreateConn(Config.PlatformManageConnectString))
            {
                PubConn.Open();
                List <tb_cluster_model> List = dal.GetList(PubConn, id, keyword, CStime, CEtime, pagesize, pageindex, out count);
                using (DbConn MonitorConn = DbConfig.CreateConn(Config.ClusterConnectString))
                {
                    MonitorConn.Open();
                    tb_cluster_monitorinfo_dal monitordal = new tb_cluster_monitorinfo_dal();
                    for (int i = 0; i < List.Count; i++)
                    {
                        List[i].MonitorJson = monitordal.GetServerMonitorJson(MonitorConn, List[i].id);
                    }
                }
                pageList           = new PagedList <tb_cluster_model>(List, pageindex, pagesize, count);
                ViewBag.SqlTimeNow = PubConn.GetServerDate();
            }
            if (Request.IsAjaxRequest())
            {
                return(PartialView("List", pageList));
            }
            return(View(pageList));
        }
        //
        // GET: /Cluster/MonitorInfo/

        public ActionResult Index(string keyword, string serverid, string monitorjsonkeyword, string ifrefreash, int pageindex = 1, int pagesize = 10)
        {
            ViewBag.keyword = keyword; ViewBag.monitorjsonkeyword = monitorjsonkeyword; ViewBag.ifrefreash = ifrefreash;

            PagedList <tb_cluster_monitorinfo_model> pageList = null;
            int count = 0;
            List <tb_cluster_monitorinfo_model> List = new List <tb_cluster_monitorinfo_model>();

            using (DbConn PubConn = DbConfig.CreateConn(Config.ClusterConnectString))
            {
                PubConn.Open();
                ViewBag.SqlTimeNow = PubConn.GetServerDate();
                tb_cluster_monitorinfo_dal dal = new tb_cluster_monitorinfo_dal();
                List = dal.GetList(PubConn, keyword, serverid, monitorjsonkeyword, pagesize, pageindex, out count);
            }
            pageList = new PagedList <tb_cluster_monitorinfo_model>(List, pageindex, pagesize, count);
            Dictionary <int, List <Dyd.BaseService.Monitor.Core.CollectConfig> > ServerConfigDic = new Dictionary <int, List <Dyd.BaseService.Monitor.Core.CollectConfig> >();

            SqlHelper.ExcuteSql(Config.PlatformManageConnectString, (c) =>
            {
                tb_cluster_dal dal = new tb_cluster_dal();
                var list           = dal.GetListInIds(c, List.Select(o => o.serverid).ToList());
                foreach (var o in list)
                {
                    var config = new XXF.Serialization.JsonHelper().Deserialize <List <Dyd.BaseService.Monitor.Core.CollectConfig> >(o.monitorcollectconfigjson);
                    ServerConfigDic.Add(o.id, config);
                }
            });
            ViewBag.ServerConfigDic = ServerConfigDic;
            if (Request.IsAjaxRequest())
            {
                return(PartialView("List", pageList));
            }
            return(View(pageList));
        }
Exemplo n.º 3
0
        public ActionResult Add(tb_cluster_model model)
        {
            tb_cluster_dal dal = new tb_cluster_dal();

            try
            {
                using (DbConn PubConn = DbConfig.CreateConn(Config.PlatformManageConnectString))
                {
                    PubConn.Open();
                    if (dal.CheckServerIp(PubConn, model.serverip))
                    {
                        CheckJsonFormat(model);
                        model.createtime     = PubConn.GetServerDate();
                        model.lastupdatetime = PubConn.GetServerDate();
                        model.onlinetime     = PubConn.GetServerDate().AddDays(-1);
                        dal.Add(PubConn, model);
                        return(RedirectToAction("index"));
                    }
                    else
                    {
                        ModelState.AddModelError("Error", "IP已存在");
                        return(View(model));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", ex.Message);
                return(View(model));
            }
        }
        public static void LoadClusterConfig()
        {
            try
            {
                SqlHelper.ExcuteSql(CoreGlobalConfig.PlatformManageConnectString, (c) =>
                {
                    tb_cluster_dal clusterdal = new tb_cluster_dal();
                    var clustermodel          = clusterdal.GetNewByServerip(c, ServerIP, LoadClusterConfigTime);
                    if (clustermodel != null)
                    {
                        LoadClusterConfigTime = c.GetServerDate();
                        ClusterModel          = clustermodel;
                    }

                    tb_keyvalue_config_dal keyvalueconfigdal  = new tb_keyvalue_config_dal();
                    MonitorCollectBackgroundTaskSleepTime     = Convert.ToInt32(keyvalueconfigdal.Get(c, "MonitorCollectBackgroundTaskSleepTime").value);
                    PerformanceCollectBackgroundTaskSleepTime = Convert.ToInt32(keyvalueconfigdal.Get(c, "PerformanceCollectBackgroundTaskSleepTime").value);
                    ConfigUpdateBackgroundTaskSleepTime       = Convert.ToInt32(keyvalueconfigdal.Get(c, "ConfigUpdateBackgroundTaskSleepTime").value);
                    OnLineTimeBackgroundTaskSleepTime         = Convert.ToInt32(keyvalueconfigdal.Get(c, "OnLineTimeBackgroundTaskSleepTime").value);
                });
            }
            catch (Exception exp)
            {
                LogHelper.Error(string.Format("服务器[id:{0}] ", GlobalConfig.ServerIP.NullToEmpty()) + "LoadClusterConfig", exp);
            }
        }
Exemplo n.º 5
0
 protected override void Run()
 {
     SqlHelper.ExcuteSql(DbShardingHelper.GetDataBase(GlobalConfig.DataBaseConfigModels, DataBaseType.PlatformManage), (c) =>
     {
         tb_cluster_dal dal = new tb_cluster_dal();
         dal.UpdateOnLineTime(c, GlobalConfig.ServerIP);
     });
 }
Exemplo n.º 6
0
 public ActionResult Update(int id)
 {
     using (DbConn PubConn = DbConfig.CreateConn(Config.PlatformManageConnectString))
     {
         PubConn.Open();
         tb_cluster_model model = new tb_cluster_dal().Get(PubConn, id);
         return(View(model));
     }
 }
Exemplo n.º 7
0
        //
        // GET: /Cluster/MonitorinfoSnapshot/

        public ActionResult Index(string keyword, string serverid, string timebegin, string timeend, string monitorjsonkeyword, int pageindex = 1, int pagesize = 10)
        {
            if (string.IsNullOrWhiteSpace(timebegin))
            {
                timebegin = DateTime.Now.AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss");
            }
            if (string.IsNullOrWhiteSpace(timeend))
            {
                timeend = DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
            }
            ViewBag.keyword = keyword; ViewBag.serverid = serverid; ViewBag.timebegin = timebegin; ViewBag.timeend = timeend; ViewBag.monitorjsonkeyword = monitorjsonkeyword;

            PagedList <tb_cluster_monitorinfo_snapshot_model> pageList = null;
            int count = 0;
            List <tb_cluster_monitorinfo_snapshot_model> List = new List <tb_cluster_monitorinfo_snapshot_model>();

            using (DbConn PubConn = DbConfig.CreateConn(Config.ClusterConnectString))
            {
                PubConn.Open();
                ViewBag.SqlTimeNow = PubConn.GetServerDate();
                tb_cluster_monitorinfo_snapshot_dal dal = new tb_cluster_monitorinfo_snapshot_dal();
                List = dal.GetList(PubConn, keyword, serverid, timebegin, timeend, monitorjsonkeyword, pagesize, pageindex, out count);
            }
            pageList = new PagedList <tb_cluster_monitorinfo_snapshot_model>(List, pageindex, pagesize, count);
            Dictionary <int, List <Dyd.BaseService.Monitor.Core.CollectConfig> > ServerConfigDic = new Dictionary <int, List <Dyd.BaseService.Monitor.Core.CollectConfig> >();

            SqlHelper.ExcuteSql(Config.PlatformManageConnectString, (c) =>
            {
                tb_cluster_dal dal = new tb_cluster_dal();
                var list           = dal.GetListInIds(c, List.Select(o => o.serverid).ToList());
                foreach (var o in list)
                {
                    var config = new XXF.Serialization.JsonHelper().Deserialize <List <Dyd.BaseService.Monitor.Core.CollectConfig> >(o.monitorcollectconfigjson);
                    ServerConfigDic.Add(o.id, config);
                }
            });
            ViewBag.ServerConfigDic = ServerConfigDic;
            if (Request.IsAjaxRequest())
            {
                return(PartialView("List", pageList));
            }
            return(View(pageList));
        }
Exemplo n.º 8
0
        /// <summary>
        /// 检查监控信息的预警
        /// </summary>
        private void CheckMonitorInfoWarning()
        {
            try
            {
                string waringmsg = "";
                List <tb_cluster_model> clusters = new List <tb_cluster_model>();
                SqlHelper.ExcuteSql(GlobalConfig.MonitorPlatformManageConnectString, (c) =>
                {
                    tb_cluster_dal dal = new tb_cluster_dal();
                    clusters           = dal.GetAllList(c);
                });
                clusters.ForEach(o =>
                {
                    if (o.ifmonitor == true)
                    {
                        tb_cluster_monitorinfo_model monitorinfo = null;
                        SqlHelper.ExcuteSql(MonitorClusterConnectString, (c) =>
                        {
                            tb_cluster_monitorinfo_dal dal = new tb_cluster_monitorinfo_dal();
                            monitorinfo = dal.GetByServerId(c, o.id);
                        });
                        if (monitorinfo != null)
                        {
                            var collectconfigs = new XXF.Serialization.JsonHelper().Deserialize <List <CollectConfig> >(o.monitorcollectconfigjson);
                            foreach (var config in collectconfigs)
                            {
                                waringmsg += GetWarnningInfo(config, monitorinfo, o);
                            }
                        }
                    }
                });

                if (waringmsg != "")
                {
                    TaskLogHelper.Error("检查监控信息的预警", "服务器性能检查(预警值检查)" + "\r\n" + waringmsg, "集群性能预警任务");
                }
            }
            catch (Exception exp)
            {
                this.OpenOperator.Error("【集群性能预警任务】检查监控信息的预警", exp);
            }
        }
Exemplo n.º 9
0
        protected override void Run()
        {
            DateTime time = DateTime.Parse("1900-01-01");

            GlobalConfig.LoadConfig();
            SqlHelper.ExcuteSql(CoreGlobalConfig.PlatformManageConnectString, (c) =>
            {
                tb_cluster_dal dal = new tb_cluster_dal();
                time = dal.GetLastUpdateTime(c, GlobalConfig.ServerIP);
            });
            if (time > GlobalConfig.ClusterLastUpdateTime)
            {
                if (GlobalConfig.TaskProvider.IsStart())
                {
                    GlobalConfig.TaskProvider.Stop();
                }
                GlobalConfig.TaskProvider.Start();
                GlobalConfig.ClusterLastUpdateTime = time;
                Core.LogHelper.Log(string.Format("服务器ip【{0}】检测到服务器配置更新,时间【{1}】,服务dll重启更新完毕", GlobalConfig.ServerIP, time));
            }
        }
Exemplo n.º 10
0
 public JsonResult Delete(int id)
 {
     try
     {
         tb_cluster_dal dal = new tb_cluster_dal();
         using (DbConn PubConn = DbConfig.CreateConn(Config.PlatformManageConnectString))
         {
             PubConn.Open();
             var o = dal.Get(PubConn, id);
             if ((PubConn.GetServerDate() - o.onlinetime) < TimeSpan.FromSeconds(10))
             {
                 throw new Exception("请先关闭监控,并确认当前服务器的服务已停止!");
             }
             dal.Delete(PubConn, id);
             return(Json(new { code = 1, msg = "Success" }));
         }
     }
     catch (Exception ex)
     {
         return(Json(new { code = -1, msg = ex.Message }));
     }
 }
Exemplo n.º 11
0
 public static void LoadConfig()
 {
     foreach (var address in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
     {
         if (!string.IsNullOrWhiteSpace(address.ToString()))
         {
             SqlHelper.ExcuteSql(CoreGlobalConfig.PlatformManageConnectString, (c) =>
             {
                 tb_cluster_dal clusterdal = new tb_cluster_dal();
                 var clustermodel          = clusterdal.GetNewByServerip(c, address.ToString(), DateTime.Parse("1900-01-01"));
                 if (clustermodel != null)
                 {
                     ServerIP = address.ToString();
                     return;
                 }
             });
         }
     }
     if (ServerIP == null)
     {
         throw new Exception("当前服务器ip未在统一监控平台中配置");
     }
 }
Exemplo n.º 12
0
        public ActionResult Chart(string serverip, string serverid, string date, string columns = "cpu,memory,ioread,iowrite,networkupload,networkdownload", string datatype = "avg")
        {
            if (string.IsNullOrWhiteSpace(date))
            {
                date = DateTime.Now.Date.ToString("yyyy-MM-dd");
            }
            ViewBag.columns = columns; ViewBag.serverip = serverip; ViewBag.serverid = serverid; ViewBag.date = date; ViewBag.datatype = datatype;
            List <TimeChartModel> ms = new List <TimeChartModel>();

            if (string.IsNullOrWhiteSpace(serverip) && string.IsNullOrWhiteSpace(serverid))
            {
                return(View(ms));
            }
            TimeChartDataType chartdatatype = (TimeChartDataType)Enum.Parse(typeof(TimeChartDataType), datatype);
            TimeChartType     charttype     = TimeChartType.Day;

            if (date.Split('-').Length == 3)
            {
                charttype = TimeChartType.Day;
            }
            else if (date.Split('-').Length == 2)
            {
                charttype = TimeChartType.Month;
            }
            else if (date.Split('-').Length == 1)
            {
                charttype = TimeChartType.Year;
                date      = new DateTime(Convert.ToInt32(date), 1, 1, 0, 0, 0).ToString("yyyy-MM-dd");
            }

            var startDate = DateTime.Parse(date).Date;

            string[] cs = columns.TrimEnd(',').Split(',');

            foreach (var c in cs)
            {
                if (c == "")
                {
                    continue;
                }
                var model = new TimeChartModel();
                model.DataType  = chartdatatype;
                model.Type      = charttype;
                model.StartDate = startDate;
                model.Key       = c;
                if (c == "cpu")
                {
                    model.Title    = "CPU";
                    model.UnitText = "%";
                }
                if (c == "memory")
                {
                    model.Title    = "可用内存";
                    model.UnitText = "M";
                }
                if (c == "networkupload")
                {
                    model.Title    = "网络上传";
                    model.UnitText = "Byte";
                }
                if (c == "networkdownload")
                {
                    model.Title    = "网络下载";
                    model.UnitText = "Byte";
                }
                if (c == "ioread")
                {
                    model.Title    = "磁盘读";
                    model.UnitText = "Byte";
                }
                if (c == "iowrite")
                {
                    model.Title    = "磁盘写";
                    model.UnitText = "Byte";
                }
                if (c == "iisrequest")
                {
                    model.Title    = "iis请求";
                    model.UnitText = "次/s";
                }
                model.SubTitle = model.Title + "【" + model.DataType.ToString() + "】值统计图";
                if (model.Type == TimeChartType.Day)
                {
                    model.PointInterval = "60 * 1000";//一分钟
                    model.EndDate       = model.StartDate.AddDays(1);
                    model.MaxZoom       = "60 * 60 * 1000";
                    model.SubTitle     += ",采集单位【分钟】";
                }
                else if (model.Type == TimeChartType.Month)
                {
                    model.PointInterval = "24 * 60 * 60 * 1000";//一天
                    model.EndDate       = model.StartDate.AddMonths(1);
                    model.MaxZoom       = "10 * 24 * 60 * 60 * 1000";
                    model.SubTitle     += ",采集单位【天】";
                }
                else if (model.Type == TimeChartType.Year)
                {
                    model.PointInterval = "24 * 60 * 60 * 1000";//一天
                    model.EndDate       = model.StartDate.AddYears(1);
                    model.MaxZoom       = "10 * 24 * 60 * 60 * 1000";
                    model.SubTitle     += ",采集单位【天】";
                }


                Dictionary <DateTime, double> dic = new Dictionary <DateTime, double>();
                using (DbConn PubConn = DbConfig.CreateConn(Config.ClusterConnectString))
                {
                    PubConn.Open();
                    if (model.Type == TimeChartType.Day)
                    {
                        tb_performance_collect_dal dal = new tb_performance_collect_dal();
                        dic = dal.GetTimeChart(PubConn, c, model.StartDate, serverip, serverid, model.DataType.ToString());
                    }
                    else
                    {
                        tb_performance_dayreport_dal dal = new tb_performance_dayreport_dal();
                        dic = dal.GetTimeChart(PubConn, c, model.StartDate, model.EndDate, serverip, serverid, model.DataType.ToString());
                    }
                }

                DateTime dtbegin = model.StartDate; DateTime dtend = model.EndDate;
                while (true)
                {
                    if (!dic.ContainsKey(dtbegin))
                    {
                        dic.Add(dtbegin, 0);
                    }
                    if (model.Type == TimeChartType.Day)
                    {
                        dtbegin = dtbegin.AddMinutes(1);
                    }
                    else
                    {
                        dtbegin = dtbegin.AddDays(1);
                    }
                    if (dtbegin >= dtend)
                    {
                        break;
                    }
                }
                model.DataJson = new XXF.Serialization.JsonHelper().Serializer(dic.OrderBy(c1 => c1.Key).Select(c1 => c1.Value));
                ms.Add(model);
            }
            using (DbConn PubConn = DbConfig.CreateConn(Config.PlatformManageConnectString))
            {
                PubConn.Open();
                tb_cluster_dal dal = new tb_cluster_dal();
                ViewBag.ServerName = dal.GetServerName(PubConn, serverip, serverid);
            }
            return(View(ms));
        }
Exemplo n.º 13
0
        /// <summary>
        /// 检查Cluster的接口性能
        /// </summary>
        private void CheckPerformanceOfCluster()
        {
            try
            {
                Dictionary <int, tb_cluster_model> clusters = new Dictionary <int, tb_cluster_model>();
                SqlHelper.ExcuteSql(GlobalConfig.MonitorPlatformManageConnectString, (c) =>
                {
                    tb_cluster_dal dal = new tb_cluster_dal();
                    var cs             = dal.GetAllList(c);
                    foreach (var o in cs)
                    {
                        clusters.Add(o.id, o);
                    }
                });

                DateTime dtime = DateTime.Now;
                string   msg   = "";
                Dictionary <string, tb_performance_dayreport_model> dic = new Dictionary <string, tb_performance_dayreport_model>();
                List <int> serverids = new List <int>();
                SqlHelper.ExcuteSql(MonitorClusterConnectString, (c) =>
                {
                    tb_performance_dayreport_dal dal = new tb_performance_dayreport_dal();
                    var models = dal.GetDayReport(c, dtime.Date.AddDays(-1));
                    models.ForEach(o =>
                    {
                        string key = o.date.Date.ToString("yyyyMMdd") + o.serverid;
                        if (!dic.Keys.Contains(key))
                        {
                            dic.Add(key, o);
                        }
                        if (!serverids.Contains(o.serverid))
                        {
                            serverids.Add(o.serverid);
                        }
                    });
                });
                foreach (var u in serverids)
                {
                    if (!clusters.ContainsKey(u) || !clusters[u].ifmonitor)
                    {
                        continue;
                    }
                    string keynow      = dtime.Date.ToString("yyyyMMdd") + u;
                    string keyyestoday = dtime.Date.AddDays(-1).ToString("yyyyMMdd") + u;
                    if (dic.ContainsKey(keynow) && dic.ContainsKey(keyyestoday))
                    {
                        #region 性能对比

                        var per = PerformanceComparisonPer((double)dic[keynow].avgcpu, (double)dic[keyyestoday].avgcpu);
                        if (per > 0.2)
                        {
                            msg += string.Format("【id:{1},{2}】【avgcpu】上升{0}%", (per * 100).ToString("f2"), u, clusters[u].servername) + "\r\n";
                        }

                        per = PerformanceComparisonPer((double)dic[keynow].avgioread, (double)dic[keyyestoday].avgioread);
                        if (per > 0.2)
                        {
                            msg += string.Format("【id:{1},{2}】【avgioread】上升{0}%", (per * 100).ToString("f2"), u, clusters[u].servername) + "\r\n";
                        }

                        per = PerformanceComparisonPer((double)dic[keynow].avgiowrite, (double)dic[keyyestoday].avgiowrite);
                        if (per > 0.2)
                        {
                            msg += string.Format("【id:{1},{2}】【avgiowrite】上升{0}%", (per * 100).ToString("f2"), u, clusters[u].servername) + "\r\n";
                        }

                        per = PerformanceComparisonPer((double)dic[keyyestoday].avgmemory, (double)dic[keynow].avgmemory);//这里的内存是可用内存 所以是昨天的与今天对比
                        if (per > 0.2)
                        {
                            msg += string.Format("【id:{1},{2}】【avgmemory】(可用内存)下降{0}%", (per * 100).ToString("f2"), u, clusters[u].servername) + "\r\n";
                        }

                        per = PerformanceComparisonPer((double)dic[keynow].avgnetworkdownload, (double)dic[keyyestoday].avgnetworkdownload);
                        if (per > 0.2)
                        {
                            msg += string.Format("【id:{1},{2}】【avgnetworkdownload】上升{0}%", (per * 100).ToString("f2"), u, clusters[u].servername) + "\r\n";
                        }

                        per = PerformanceComparisonPer((double)dic[keynow].avgnetworkupload, (double)dic[keyyestoday].avgnetworkupload);
                        if (per > 0.2)
                        {
                            msg += string.Format("【id:{1},{2}】【avgnetworkupload】上升{0}%", (per * 100).ToString("f2"), u, clusters[u].servername) + "\r\n";
                        }
                        #endregion
                    }
                }
                if (msg != "")
                {
                    TaskLogHelper.Error("检查Cluster性能", "服务器性能检查(性能与昨日对比性能)" + "\r\n" + msg, "集群性能预警任务");
                }
            }
            catch (Exception exp)
            {
                this.OpenOperator.Error("【集群性能预警任务】检查Cluster性能", exp);
            }
        }