Ejemplo n.º 1
0
        /// <summary>
        /// 监控系统整体性能
        /// </summary>
        public void MonitorAll()
        {
            PC.CategoryName = "Processor";        //指定获取计算机进程信息  如果传Processor参数代表查询计算机CPU
            PC.CounterName  = "% Processor Time"; //占有率
            PC.InstanceName = "_Total";
            float cpuValue = PC.NextValue();

            Thread.Sleep(TimeSpan.FromSeconds(1));
            cpuValue = PC.NextValue();
            PostDataToServer(Math.Round(cpuValue, 2).ToString(), saveDir, "");

            if (ConfigContext.GetInstance().MaxCPU < cpuValue)
            {
                if (ContinuousManage.GetInstance().GetIsWaring(CpuMonitorKey + _serverIP + PC.CounterName))
                {
                    string title   = _serverIP + "机器CPU过高";
                    string content = string.Format("IP:{2} CPU:{0},高于警戒值:{1}", cpuValue.ToString(), ConfigContext.GetInstance().MaxCPU.ToString(), _serverIP);

                    //Modify post trace
                    string planName  = string.Format("{0},CPU高于警戒值", _serverIP);
                    string planValue = string.Format("{0}/{1}", Math.Round(cpuValue, 2), ConfigContext.GetInstance().MaxCPU);
                    OaSimplePlanHelper.PostDataToServer(planName, planValue);
                    LogHelper.WriteException("CPU监视[" + _serverIP + "]>>", new Exception(content));
                    Mail139Helper.SendMail(title, content, ConfigContext.GetInstance().SendTo139Mail, true);
                }
            }
            else
            {
                ContinuousManage.GetInstance().Reset(CpuMonitorKey + _serverIP + PC.CounterName);
            }
        }
Ejemplo n.º 2
0
 private static void SendToMail(string content)
 {
     if (errorTimes > ContinuousTimes)
     {
         try
         {
             lock (thisLock)
             {
                 errorTimes = 0;
             }
             Mail139Helper.SendMail("游戏登录监视", content, ConfigContext.GetInstance().SendTo139Mail, true);
         }
         catch (Exception ex)
         {
             Logger.SaveLog("Log in to check mail error", ex);
         }
     }
     else
     {
         lock (thisLock)
         {
             errorTimes++;
         }
     }
 }
Ejemplo n.º 3
0
        public void SearchSimplePlanInfo()
        {
            try
            {
                string pcName      = Dns.GetHostName();
                var    messageList = MessageQueue.GetPrivateQueuesByMachine(pcName);
                foreach (var queue in messageList)
                {
                    int queueCount = -1;
                    try
                    {
                        queueCount = queue.GetAllMessages().Length;
                    }
                    catch (Exception ex)
                    {
                    }
                    OaSimplePlanHelper.PostDataToServer(PlanType.msmq, queue.QueueName, queueCount);

                    if ((queueCount > MaxErrorQueue && queue.QueueName.ToLower().IndexOf("errorlogcmdsql") != -1) ||
                        (queueCount > ConfigContext.GetInstance().CitQueueMaxCount))
                    {
                        if (ContinuousManage.GetInstance().GetIsWaring(SimplePlanInfoKey + _serverIP + queue.QueueName))
                        {
                            string title   = _serverIP + "服务器消息队列异常";
                            string content = string.Format("队列服务器:{0}<br />队列名称:{1}<br />队列总数:{2}<br />",
                                                           _serverIP,
                                                           queue.QueueName,
                                                           queueCount
                                                           );
                            int maxQueueCount = ConfigContext.GetInstance().CitQueueMaxCount;
                            if (queue.QueueName.ToLower().IndexOf("errorlogcmdsql") != -1)
                            {
                                maxQueueCount = MaxErrorQueue;
                            }
                            //Modify post trace
                            string planName  = string.Format("{0},消息队列{1}高于警戒值", _serverIP, queue.QueueName);
                            string planValue = string.Format("{0}/{1}", queueCount, maxQueueCount);
                            OaSimplePlanHelper.PostDataToServer(planName, planValue);
                            LogHelper.WriteException("服务器消息队列监视[" + _serverIP + "]>>", new Exception(content));

                            Mail139Helper.SendMail(title, content, ConfigContext.GetInstance().SendTo139Mail, true);
                        }
                    }
                    else
                    {
                        ContinuousManage.GetInstance().Reset(SimplePlanInfoKey + _serverIP + queue.QueueName);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteException("MSMQ information error", ex);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 检查服务器磁盘空间容量
        /// </summary>
        public void CheckDriveInfo()
        {
            try
            {
                DriveInfo[]   alldrive   = DriveInfo.GetDrives();
                List <string> listWaring = new List <string>();
                foreach (DriveInfo d in alldrive)
                {
                    if (d.DriveType == DriveType.Fixed)
                    {
                        DriveWaring checkItem = null;
                        foreach (DriveWaring driveItem in ConfigContext.GetInstance().DriveWaringSet)
                        {
                            if (d.Name.IndexOf(driveItem.DriveName) != -1)
                            {
                                checkItem = driveItem;
                                break;
                            }
                        }

                        int curFreeSpace = Convert.ToInt32(d.TotalFreeSpace / 1048576); //计算剩余多少M
                        int waringSize   = 10000;
                        if (checkItem != null)
                        {
                            waringSize = checkItem.WaringSize;
                        }

                        PostDataToServer(_serverIP, d.Name, curFreeSpace);

                        string waringKey = DriveInfoKey + _serverIP + d.Name;
                        if (curFreeSpace < waringSize)
                        {
                            if (ContinuousManage.GetInstance().GetIsWaring(waringKey))
                            {
                                string content = string.Format("磁盘:{0},剩余空间:{1}MB,低于警戒值:{2}MB<br />", d.Name,
                                                               curFreeSpace, waringSize);
                                listWaring.Add(content);

                                //Modify post trace
                                string planName  = string.Format("{0},磁盘:{1}低于警戒值", _serverIP, d.Name);
                                string planValue = string.Format("{0}/{1}MB", curFreeSpace, waringSize);
                                OaSimplePlanHelper.PostDataToServer(planName, planValue);
                            }
                        }
                        else
                        {
                            ContinuousManage.GetInstance().Reset(waringKey);
                        }
                    }
                }
                if (listWaring.Count > 0)
                {
                    if (ContinuousManage.GetInstance().GetIsWaring(DriveInfoKey + _serverIP))
                    {
                        string title   = _serverIP + "磁盘空间不足";
                        string content = string.Format("共{0}个磁盘空间不足<br />", listWaring.Count);
                        foreach (string item in listWaring)
                        {
                            content += item;
                        }

                        LogHelper.WriteException("Disk monitoring [" + _serverIP + "]>>", new Exception(content));
                        Mail139Helper.SendMail(title, content, ConfigContext.GetInstance().SendTo139Mail, true);
                    }
                }
                else
                {
                    ContinuousManage.GetInstance().Reset(DriveInfoKey + _serverIP);
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteException("Check server disk space remaining capacity error", ex);
            }
        }