Windows系統資源監控

來源:互聯網
上載者:User
  • 1、windows內建系統資源監控工具
  • 2、Windows監控的資料來源:Performance Counters
    • 2.1 Performance Counter架構
    • 2.2 Performance Counter資料結構
    • 2.3 消費Performance Counter資料
  • 3、使用基於PDH的python用戶端

 

 

1、Windows內建系統資源監控工具

我們都知道,Windows內建有系統資源監視器。主要有3個地方:

1) Windows的工作管理員的效能頁簽,包括了CPU,記憶體,磁碟,網路等系統資源的監控。它主要監控系統資源的總體使用方式,使用它,我們可以發現是否有資源達到瓶頸了等等。

 

 

2) Windows資源監視器

這個工具可以看出系統資源到底是由哪些進程消耗的。通過它,可以快速查看到到底哪些進程佔用了你的系統資源。

 

3) 效能監控器

前兩種工具已經提供你要監控的大部分功能,在某些情況下,可能仍然不能定位問題,這時候就需要你更進一步的瞭解系統的健全狀態。那麼這個工具就是一個不錯的選擇。

 

 

2、Windows 監控的資料來源:Performance Counters

       Windows的這些監控工具之所以能夠展示這些資源的情況,它們的資料來源都是一個叫Performance Counter的東東。

docs.microsoft.com/zh-cn/windows/desktop/PerfCtrs/performance-counters-portal

 

2.1 PerformanceCounter 架構

PerformanceCounter架構如下:

 

 

 

採用了Producer / Consumer 架構,支援多種用戶端從Registry消費資料。

中,A 使用Registry介面來消費資料,而B 和 Performance Monitor兩個用戶端則使用了pdh.dll來消費資料。

 

 

 

2.2 Performance Counter 資料結構

如果你想用程式來消費Counter的資料,不論使用哪種API來消費資料,不論使用哪種工具來消費資料,都需要瞭解Performance Counter的領域語言,也就是說要瞭解它內部的資料是如何組織的。

 

它的基本概念如下:

Machine:機器,這個沒什麼好說的,支援消費原生監控資料,也可以消費其他其他的監控資料。perfObject:可以理解為監控哪種資源,譬如說處理器,磁碟instance:監控的資源可能有多個執行個體,多個網卡,多個CPU,多塊磁碟等counter:計數器,每一個instance都會有多個計數器,例如cpu的idle,user,interrupt都是一個counter

 


更直觀的理解這些概念: 

 

 

 

2.3 消費Performance Counter資料

       從上面的架構圖來看可以使用registry API或者 PDH.dll ,或者wmi等3種方式來消費資料。這兩種API是C或者C++開發的。

 

1)Registry API :

docs.microsoft.com/zh-cn/windows/desktop/PerfCtrs/using-the-registry-functions-to-consume-counter-data

 

2)WMI:

docs.microsoft.com/zh-cn/windows/desktop/WmiSdk/monitoring-performance-data

 

3)PDH API:

目前已知了兩個版本:

C++:

docs.microsoft.com/zh-cn/windows/desktop/PerfCtrs/using-the-pdh-functions-to-consume-counter-data

 

Python :

Pywin32中有一個win32pdh的模組,就是python版本的pdh。

pypi.org/project/pywin32/

http://timgolden.me.uk/pywin32-docs/win32pdh.html

 

 

其他工具:

4)windows內建的typeperf命令

5)nsclient++

 

3、使用基於PDH的python用戶端

 

Win32pdh API說明:

http://timgolden.me.uk/pywin32-docs/win32pdh.html

使用win32pdh API的一個簡易教程:

www.cac.cornell.edu/wiki/index.php?title=Performance_Data_Helper_in_Python_with_win32pdh

 

基於win32pdh 封裝的一套API:

 

 

 

 

最右側是win32pdh模組,從python的倉庫裡下載即可。

Windows_collector是我封裝的核心代碼,用於通過簡單的代碼,即可監控到系統資源。

最左邊的則是來使用這套API的。使用這套API的好處是,不必去再花時間學習win32pdh這套API就可以輕鬆的擷取你要的監控資料。

 

這套API的源碼:

 

 代碼的命名規範不是 python的,想必看起來,也不會有太多的困難。

使用這套API,只需要簡單的代碼即可對系統資源進行監控,例如:

ObjectCollector("Memory").collect()

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.