?? 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 + -