Example #1
0
        public override void Run()
        {
            GlobalConfig.MonitorPlatformManageConnectString = AppConfig["MonitorPlatformManageConnectString"];
            int EveryGrowErrorNum = Convert.ToInt32(AppConfig["EveryGrowErrorNum"]);

            SqlHelper.ExcuteSql(GlobalConfig.MonitorPlatformManageConnectString, (c) =>
            {
                tb_database_config_dal dal = new tb_database_config_dal();
                var list = dal.GetModelList(c);
                UnityLogConnectString = XXF.BaseService.Monitor.SystemRuntime.DbShardingHelper.GetDataBase(list, XXF.BaseService.Monitor.SystemRuntime.DataBaseType.UnityLog);
            });

            int errornum = 0;

            SqlHelper.ExcuteSql(UnityLogConnectString, (c) =>
            {
                tb_error_log_dal dal = new tb_error_log_dal();
                errornum             = dal.GetGrawErrorNum(c, lastscantime);
            });
            if (errornum > EveryGrowErrorNum)
            {
                TaskLogHelper.Error("错误预警任务", string.Format("【{0}】-【{1}】期间平台错误日志增加{2}条", lastscantime, DateTime.Now, errornum), "错误预警任务");
            }
            lastscantime = DateTime.Now;
        }
Example #2
0
 /// <summary>
 /// 检查api的接口性能
 /// </summary>
 private void CheckPerformanceOfApi(string connectstring, Domain.PlatformManage.Model.tb_database_config_model configmodel)
 {
     try
     {
         DateTime dtime = DateTime.Now;
         string   msg   = "";
         Dictionary <string, tb_timewatchlog_api_dayreport_model> dic = new Dictionary <string, tb_timewatchlog_api_dayreport_model>();
         List <string> urls = new List <string>();
         SqlHelper.ExcuteSql(connectstring, (c) =>
         {
             tb_timewatchlog_api_dayreport_dal dal = new tb_timewatchlog_api_dayreport_dal();
             var models = dal.GetDayReport(c, dtime.Date.AddDays(-1));
             models.ForEach(o =>
             {
                 string key = o.date.Date.ToString("yyyyMMdd") + o.url.ToLower();
                 if (!dic.Keys.Contains(key))
                 {
                     dic.Add(key, o);
                 }
                 if (!urls.Contains(o.url.ToLower()))
                 {
                     urls.Add(o.url.ToLower());
                 }
             });
         });
         foreach (var u in urls)
         {
             string keynow      = dtime.Date.ToString("yyyyMMdd") + u.ToLower();
             string keyyestoday = dtime.Date.AddDays(-1).ToString("yyyyMMdd") + u.ToLower();
             if (dic.ContainsKey(keynow) && dic.ContainsKey(keyyestoday))
             {
                 var per = (dic[keyyestoday].avgtime == 0 ? 0 : ((dic[keynow].avgtime - dic[keyyestoday].avgtime) / dic[keyyestoday].avgtime));
                 if (per > 0.2)
                 {
                     msg += string.Format("【{1}】上升{0}%({2}s,{3}s)\r\n", (per * 100).ToString("f2"), u, dic[keynow].avgtime.ToString("f2"), dic[keyyestoday].avgtime.ToString("f2"));
                 }
             }
         }
         if (msg != "")
         {
             TaskLogHelper.Error("检查api的接口性能", "【" + configmodel.dblocalname + "】Api接口性能检查(与昨日对比平均耗时)" + "\r\n" + msg, "耗时性能预警任务");
         }
     }
     catch (Exception exp)
     {
         this.OpenOperator.Error("【耗时性能预警任务】检查api的接口性能", exp);
     }
 }
Example #3
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);
            }
        }
Example #4
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);
            }
        }