示例#1
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);
            }
        }
示例#2
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);
            }
        }