📄 monitorsystemclass.cs
字号:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
//using MonitorSystem.BasicClass;
namespace MonitorSystem.BasicClass
{
#region CPU监控规则
/// <summary>
/// CPU监控规则类
/// </summary>
public class CpuRule : MonitorRule
{
//cpu使用率检测的参数
private const string CategoryName = "Processor";
private const string CounterName = "% Processor Time";
private const string InstanceName = "_Total";
private PerformanceCounter pc = new PerformanceCounter (
CategoryName,
CounterName,
InstanceName);
/// <summary>
/// 获取CPU的使用率
/// </summary>
/// <returns>使用率</returns>
public float GetCpuState()
{
float cpuLoad = pc.NextValue();
return cpuLoad;
}
public CpuRule()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 执行Cpu使用率的检测,将检测结果写入监控日志
/// </summary>
/// <returns>
/// 0 - 获取CPU使用率成功
/// -1 - 获取CPU使用率失败
/// </returns>
public override object ExcuteCollect()
{
this.LastExcuteTime = DateTime.Now;
return GetCpuState();
}
}
#endregion
#region 内存监控规则
/// <summary>
/// 内存监控规则
/// </summary>
public class MemoryRule:MonitorRule
{
/// <summary>
/// 内存信息
/// </summary>
[StructLayout(LayoutKind.Sequential) ]
private struct MEMORY_INFO
{
public uint dwLength ; //
public uint dwMemoryLoad ; //内存使用率
public uint dwTotalPhys ; //物理内存总数
public uint dwAvailPhys ; //可用物理内存总数
public uint dwTotalPageFile ; //
public uint dwAvailPageFile ; //
public uint dwTotalVirtual ; //
public uint dwAvailVirtual ; //
}
/// <summary>
/// 获取内存信息
/// </summary>
[DllImport("kernel32")]
private static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
/// <summary>
/// 获取内存使用率
/// </summary>
/// <returns>使用率</returns>
public uint GetMemoryState()
{
MEMORY_INFO MemInfo ;
MemInfo = new MEMORY_INFO( ) ;
GlobalMemoryStatus(ref MemInfo) ;
return MemInfo.dwMemoryLoad;
}
/// <summary>
/// 执行内存检测,将检测结果写入监控日志
/// </summary>
/// <returns>
/// 0 - 成功
/// -1 - 失败
/// </returns>
public override object ExcuteCollect()
{
this.LastExcuteTime = DateTime.Now;
return GetMemoryState();
}
}
#endregion
#region HA监控规则
/// <summary>
/// 内存监控规则
/// </summary>
public class HARule:MonitorRule
{
public override object ExcuteCollect()
{
return "";
}
}
#endregion
#region HA监控规则
public class ProcessRestartRule:MonitorRule
{
public string procuser="";
public string prockey="";
public string exceptkey="";
public override object ExcuteCollect()
{
return "";
}
}
#endregion
#region 硬盘监控规则
/// <summary>
/// 获取硬盘剩余空间,单位:MB
/// </summary>
public class DiskRule:MonitorRule
{
public string m_DriverName="";
/// <summary>
/// 硬盘信息
/// </summary>
[StructLayout(LayoutKind.Sequential) ]
private struct DISK_INFO
{
public long dwFreeBytesAvailable ; //可用空间
public long dwTotalNumberOfBytes ; //总容量
public long dwTotalNumberOfFreeBytes ; //剩余空间
}
/// <summary>
/// 获取硬盘信息
/// </summary>
[DllImport("kernel32.dll", EntryPoint="GetDiskFreeSpaceExA")]
private static extern int GetDiskFreeSpaceEx (
string lpRootPathName,
out long lpFreeBytesAvailable,
out long lpTotalNumberOfBytes,
out long lpTotalNumberOfFreeBytes);
/// <summary>
/// 获取磁盘剩余空间
/// </summary>
/// <param name="strDriverName">驱动器名</param>
/// <returns>剩余空间</returns>
public long GetDiskState(string strDriverName)
{
DISK_INFO DiskInfo;
strDriverName += ":\\";
GetDiskFreeSpaceEx(strDriverName,
out DiskInfo.dwFreeBytesAvailable,
out DiskInfo.dwTotalNumberOfBytes,
out DiskInfo.dwTotalNumberOfFreeBytes);
return DiskInfo.dwFreeBytesAvailable/(1024*1024);
}
public override object ExcuteCollect()
{
this.LastExcuteTime = DateTime.Now;
return GetDiskState(this.m_DriverName);
}
}
#endregion
#region 消息队列
public class MsgQueue:MonitorRule
{
public string messagekey="";
public string messageType="";
public override object ExcuteCollect()
{
return 0;
}
}
#endregion
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -