当前位置:首页 > Windows程序 > 正文

机器资源监控:CPU、内存、C盘、D盘资源监控及邮件预警

2021-03-24 Windows程序

针对CPU、内存、C盘、D盘资源监控及邮件预警,要实现在页面上配置资源监控选项,并且页面上能看到资源使用情况,超出阈值,邮件预警,效果图如下:


配置监控列表页

技术分享


2. 配置监控详情页

技术分享


3. 实时监控信息展示页

技术分享


4. 监控信息图标展示

技术分享


5. 超出阈值发送预警邮件

技术分享


实现详情:

处于性能上的优化,每个监控都写成了个单例,并且通过多线程来取得各个监控数据


CPU监控

通过PerformanceCounter("Processor", "% Processor Time", "_Total")的NextValue()来获取获取cpu占用率,注意该Counter的第一个值是无效的0,要等一个时间片后方能取得有效值




CPUMonitor.cs

using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; namespace XXX.XXX.QA.Platform.Core.Monitor {     public sealed class CPUMonitor     {         private static readonly CPUMonitor instance = new CPUMonitor();         private PerformanceCounter pcCpuLoad;         private CPUMonitor()         {             //初始化CPU计数器             pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total");             pcCpuLoad.MachineName = ".";             pcCpuLoad.NextValue();             System.Threading.Thread.Sleep(1000);         }         public static CPUMonitor getMonitor()         {             return instance;         }         public static float getValue()         {             return instance.pcCpuLoad.NextValue();         }     } }


2. 核数

由于有些指标要除以核数,所以这边也把核数读下


ProcessorCountMonitor.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace xxx.xxx.QA.Platform.Core.Monitor {     public sealed class ProcessorCountMonitor     {         public static readonly ProcessorCountMonitor instance = new ProcessorCountMonitor();         private int m_ProcessorCount = 0;   //CPU个数         private ProcessorCountMonitor()         {             //CPU个数             m_ProcessorCount = Environment.ProcessorCount;         }         public static ProcessorCountMonitor getMonitor()         {             return instance;         }         public static int getValue()         {             return getMonitor().m_ProcessorCount;         }     } }


3.  内存、C、D盘监控监控

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66696.html