上一篇文章《伺服器效能監控之WMI》介紹了通過遠程com擷取伺服器效能(當然也可用於本地),那麼這篇主要說說windows系統內建的效能監控功能----->performancecouonter.
開啟管理工具-->效能,我們可以立即看到伺服器的CPU,進程已耗用時間,磁碟容量等績效參數走勢圖。然而不僅僅是這幾項,我們可以通過添加技術器來查看其他的效能指標:
如果你說,這麼看太麻煩了,OK,我們通過C#將這些值取出來,用於實現自身的效能監控:
1.添加引用:
using System.Diagnostics;
2.建立並執行個體化PerformanceCounter
public static System.Diagnostics.PerformanceCounter pc= new System.Diagnostics.PerformanceCounter();public static System.Diagnostics.PerformanceCounter pcm= new System.Diagnostics.PerformanceCounter();public static System.Diagnostics.PerformanceCounter pcb= new System.Diagnostics.PerformanceCounter();public static System.Diagnostics.PerformanceCounter pcc= new System.Diagnostics.PerformanceCounter();//我們用四個對象做不同的操作,注意:是static的,不然每次取出的資料都是初始值,如cpu利用率就是0
3.建構函式
static CapabilityScout()...{pc.CategoryName = "Processor";pc.CounterName = "% Processor Time";pc.InstanceName = "_Total";pc.MachineName = ".";pcm.CategoryName = "Memory";pcm.CounterName = "% Committed Bytes In Use";pcm.MachineName = ".";pcb.CategoryName = "Windows Media Unicast Service";pcb.CounterName = "Allocated Bandwidth";pcb.MachineName = ".";pcc.CategoryName = "Windows Media Unicast Service";pcc.CounterName = "Connected Clients";pcc.MachineName = ".";}
4.擷取計數器值
擷取CPU利用率#region 擷取CPU利用率 public static string getCpuUsage() ...{ string used = pc.NextValue().ToString(); return used; } #endregion 擷取記憶體使用量率#region 擷取記憶體使用量率 public static string getMemory() ...{ float used = pcm.NextValue(); return used.ToString(); } #endregion 擷取WMS串連數#region 擷取WMS串連數 public static string getConnectedCount() ...{ string count = pcc.NextValue().ToString(); return count; } #endregion 擷取網路流量#region 擷取網路流量 public static string getServerBandWidth() ...{ string bandwidth = pcb.NextValue().ToString(); return bandwidth; } #endregion
當然,這裡只是其中及少的部分,不過通過使用同樣的方式,我們可以擷取更多的效能以及進程啟動並執行情況,但是要說明的一點是,所擷取的資料必定是windows服務所提供的,當然我們也可以自己寫一些windows服務,添加到系統performancecounter中來,對.net來說也是非常方便的。
怎麼樣,和WMI比起來,是不是又方便了一些呢,呵呵~~