// // 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)); }
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); } }
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); }); }
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)); } }
// // 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)); }
/// <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); } }
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)); } }
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 })); } }
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未在统一监控平台中配置"); } }
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)); }
/// <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); } }