机器资源监控:CPU、内存、C盘、D盘资源监控及邮件预警
针对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
- 上一篇:C#给文件夹添加权限
- 下一篇:WPF路线图白皮书: 2015及未来