- Python自動(dòng)化運(yùn)維快速入門
- 鄭征
- 686字
- 2019-12-09 14:48:18
2.2 系統(tǒng)信息監(jiān)控
運(yùn)維離不開對系統(tǒng)信息的監(jiān)控,如CPU的使用率、內(nèi)存的占用情況、網(wǎng)絡(luò)、進(jìn)程等相關(guān)信息都需要被監(jiān)控,雖然我們可以通過操作系統(tǒng)提供的任務(wù)管理器或命令查看相關(guān)信息,但仍不能簡化這些日常的運(yùn)維任務(wù)。如果我們通過編寫程序獲取以上信息,那么系統(tǒng)信息監(jiān)控就是一件輕松而簡單的工作。
在Python中獲取系統(tǒng)信息最便捷的模塊是psutil(process and system utilities)。通過簡短的幾行代碼就可以獲取系統(tǒng)相關(guān)信息,而且還是跨平臺庫。psutil不屬于標(biāo)準(zhǔn)庫,需要手動(dòng)安裝。安裝psutil非常簡單,執(zhí)行以下命令即可。
pip install psutil
如果生產(chǎn)環(huán)境沒有聯(lián)網(wǎng)則可以先在外網(wǎng)使用pip下載,再移動(dòng)至生產(chǎn)環(huán)境安裝。為了方便顯示語句運(yùn)行結(jié)果,下面使用IPython解釋器。在此啰嗦一下,IPython是學(xué)習(xí)Python的利器,是讓Python顯得友好十倍的外套,強(qiáng)烈建議讀者使用IPython,可通過pip install ipython安裝IPython。
下面一一列舉使用方法。
【示例2-13】監(jiān)控CPU信息。

【示例2-14】監(jiān)控內(nèi)存信息。
In[11]:psutil.virtual_memory() Out[11]: svmem(total=4196921344, available=644300800, percent=84.6, used=3552620544, free=644300800)
這里的數(shù)值是以字節(jié)為單位顯示的,如需要轉(zhuǎn)成MB、GB自行轉(zhuǎn)換一下即可。
【示例2-15】監(jiān)控磁盤信息。
In[12]:psutil.disk_partitions() Out[12]: [sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='F:\\', mountpoint='F:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='G:\\', mountpoint='G:\\', fstype='', opts='cdrom'), sdiskpart(device='J:\\', mountpoint='J:\\', fstype='', opts='removable')] In[13]:psutil.disk_usage('/') # 磁盤使用情況 Out[13]: sdiskusage(total=192703098880, used=124325285888, free=68377812992, percent=64.5) In[14]:psutil.disk_io_counters() Out[14]: sdiskio(read_count=1374834, write_count=618746, read_bytes=57800820224, write_bytes=32607985152, read_time=22674, write_time=3128)
【示例2-16】監(jiān)控網(wǎng)絡(luò)信息。



【示例2-17】獲取進(jìn)程信息。

前面使用psutil.process_iter獲取了進(jìn)程相關(guān)的信息,返回結(jié)果是一個(gè)可迭代對象,每個(gè)元素的info是一個(gè)字典,通過字典可以獲取我們關(guān)心的信息。獲取進(jìn)程的其他信息如CPU占用、內(nèi)存占用、進(jìn)程的線程數(shù)等,還可以使用如下方式:

【示例2-18】下面是幾種常見的實(shí)用方法。



小結(jié):本節(jié)主要介紹了如何通過psutil庫獲取常見的系統(tǒng)信息和進(jìn)程信息,系統(tǒng)信息和進(jìn)程相關(guān)的指標(biāo)非常多,具體使用時(shí)我們只關(guān)心自己需要監(jiān)控的指標(biāo)即可,深入了解psutil模塊請查閱psutil的官方文檔。
- Java逍遙游記
- Docker and Kubernetes for Java Developers
- Instant Apache Stanbol
- Dependency Injection in .NET Core 2.0
- 軟件測試項(xiàng)目實(shí)戰(zhàn)之性能測試篇
- Learn WebAssembly
- JavaScript 程序設(shè)計(jì)案例教程
- C和C++游戲趣味編程
- jQuery炫酷應(yīng)用實(shí)例集錦
- Spring MVC+MyBatis開發(fā)從入門到項(xiàng)目實(shí)踐(超值版)
- 從零開始:C語言快速入門教程
- Test-Driven iOS Development with Swift
- Node.js 6.x Blueprints
- Python高性能編程(第2版)
- Android應(yīng)用開發(fā)攻略