2012-11-15 31 views
0

我有客戶的要求,要寫一段軟件(控制檯應用程序或服務),該軟件位於服務器上並監視一般性能(CPU使用率,內存使用情況和磁盤使用情況)並報告任何長時間的高使用率。使用.NET監視服務器的性能

這是可能在C#/。NET?

+0

有什麼不對的內置性能監測,分析和預警功能http://technet.microsoft.com/en-us/ library/cc771692(v = ws.10).aspx – rene

+0

@rene - 如何從C#訪問這些文件? – Oded

+0

客戶是否真的需要從頭開始編寫這樣的東西,或者是否可以使用現有的軟件,如[nagios](http://www.nagios.org) – Giedrius

回答

2

您可以使用System.Management命名空間發出WMI查詢並報告結果。

提供有關Windows Management Instrumentation(WMI)基礎結構的系統,設備和應用程序的豐富管理信息和管理事件的訪問權限。應用程序和服務可以使用派生自ManagementObjectSearcher和ManagementQuery的類來查詢有趣的管理信息(例如磁盤上剩餘多少可用空間,當前CPU利用率,某個應用程序連接到哪個數據庫以及更多)或者使用ManagementEventWatcher類訂閱各種管理事件。可訪問的數據可以來自分佈式環境中的託管組件和非託管組件。

也看到這個MSDN雜誌文章:

WMI and .NET: System.Management Lets You Take Advantage of WMI APIs within Managed Code

+0

我發現WMI查詢非常慢。 – Derek

+1

@Derek - 比沒有更好的慢答案。 – Oded

+0

非常好的一點。 – Derek