/// <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); } }
/// <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); } }