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