機器效能數據收集

更新於 發佈於 閱讀時間約 9 分鐘

1. 程式開發 (程式名稱: WMI_CMD2.py):

1.1程式功能:

Windows系統運行中,當時的效能數據,寫出檔案供後續利用,

效能數據有CPU,Memory, Disk Partition Size等

1.2 開發工具為 Python 3.8.3 [MSC v.1916 64 bit (AMD64)]。

*可免費使用,縮編式,易於閱讀,行數短少簡易

1.3 編輯工具 Spyder 4.1.4

*直譯式,不必compile 原始螞碼可直接執行,結果易於debug

1.4 使用模組Module/套件 Package : import wmi , time, json, os

*標準模組函數,各第三方套件 可import到程式使用,效率高

1.5 使用函數 : getSysInfo(),get_fs_info()

*自定函數運用, 收集當時的效能狀況

包括 CPU,Mem, Disk Partition Size ,freesize, useage%

1.6 收集資訊寫出: 顯示及出力效能 txt file

1.7 打包執行檔 :pyinstaller -F D:\Users\linct\XXX.py

==> 系統管理者身分執行後,產生exe file,本例WMI_CMD2.exe

*執行檔可以移至其它Windows機器執行,注意相關外部檔案須同一folder,否則

程式內需特別指定路徑


2. 實際運用:

2.1 檔案配置:

*程式配置: 於D:\XXX-IT\WMI\ 存放程式執行檔(WMI_CMD2.exe),及

寫出記錄file ( CMD_jsonFile.txt) ==>本程式exe file, output file 須同目錄之下

*收集JOB: 各個機器內,於 D:\XXX-IT\WMI\WMI_CMD.bat 配置該JOB,

例如 機器排定每周1,3,5 執行收集程式之JOB

*連線主機: MAP 至 D:\XXXIT\WMI\,命名 W槽

*收集對象機器 : 四台 (1)DB1 , (2) DB2 (3) AP (4)SF

*收集資料 : 各機器收集的資料,集中寫入於 主機機器 上單一txt file 保存

3. 擴充應用:

3.1 設定排程,自動執行本程式,可以週期性執行,取得多數個數據後,

計算出該週期之平均值,如每時,每日,每周,每月之該機器效能變化

與趨勢。新系統導入運用時,機器效能可利用幾秒 幾分 迴圈執行取得評價資料

3.2 Windows機器皆可適用,只要呼叫出本python程式執行檔即可收集

(CALL WMI_CMD2.exe)

3.3 出力歷史紀錄檔,可當作稽查受查時,說明之憑證提出

3.4 可定期eMail 寄出收集之效能記錄txt file,讓擔當者可即時確認,

提早對應避免事件發生


4. 程式(WMI_CMD2.py)撰寫內容:

-------- Python coding ------------

# -*- coding: utf-8 -*-

"""

Created on ---

@author: -----

"""

import wmi

import time

import json

import os

# get PC name and OS time , then write to txt file

PcName = os.getenv('ComputerName')

# timestamp = time.strftime('%a, %Y-%m-%d %H:%M:%S', time.localtime())

timestamp = time.strftime('%a, %Y-%m-%d %H:%M', time.localtime())

PcNameTime = PcName + " at " + timestamp

file1 = open('CMD_jsonFile.txt', 'at') # 附加和文字模式

file1.write('\n')

file1.write(PcNameTime) # 把資料寫入檔案

print (PcNameTime)


#====CPU,MEM

def getSysInfo(wmiService = None):

result = {}

if wmiService == None:

wmiService = wmi.WMI()

# cpu

for cpu in wmiService.Win32_Processor():

result['CPU_%'] = cpu.loadPercentage

# memory

cs = wmiService.Win32_ComputerSystem()

os = wmiService.Win32_OperatingSystem()

result['MemTot_GB'] = round(int(cs[0].TotalPhysicalMemory)/1024/1024/1024,2)

#result['MemFree_GB'] = round(int(os[0].FreePhysicalMemory)/1024/1024,2)

result['MemUse_GB'] = result['MemTot_GB'] - round(int(os[0].FreePhysicalMemory)/1024/1024,2)

return result


if __name__ == '__main__':

wmiService = wmi.WMI()

while True:

print (getSysInfo(wmiService))

fs = getSysInfo(wmiService)

jsObj = json.dumps(fs)

# file1.write('\n')

file1.write(jsObj)

# time.sleep(3)

break


#====DISK 獲取檔案系統資訊。包含分割槽的大小、已用量、可用量、使用率、掛載點資訊


def get_fs_info() :

tmplist = []

c = wmi.WMI ()

for physical_disk in c.Win32_DiskDrive ():

for partition in physical_disk.associators ("Win32_DiskDriveToDiskPartition"):

for logical_disk in partition.associators ("Win32_LogicalDiskToPartition"):

tmpdict = {}

tmpdict["Part"] = logical_disk.Caption

tmpdict["TOT_GB"] = round(int(logical_disk.Size)/1024/1024/1024,2)

# tmpdict["FreeSpace"] = round(int(logical_disk.FreeSpace)/1024/1024/1024,2)

tmpdict["Use_GB"] =round(tmpdict["PartTOT_GB"] - round(int(logical_disk.FreeSpace)/1024/1024/1024,2),2)

tmpdict["Use_%"] = int(100.0*(int(logical_disk.Size)-int(logical_disk.FreeSpace))/int(logical_disk.Size))

tmplist.append(tmpdict)

return tmplist


if __name__ == "__main__":

fs = get_fs_info()

print (fs) # 可省

jsObj = json.dumps(fs[0: ])

# file1.write('\n')

file1.write(jsObj)

file1.close()

------------------ end of coding -------------------



avatar-img
62會員
161內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
線性回歸是一種預測模型,目標是找到一條最貼近數據點的直線。本文詳細介紹線性回歸的流程,包含收集資料、建立模型、計算誤差、優化模型和測試模型等步驟。重點闡述梯度下降法與損失函數的應用,並解釋學習率的影響、參數更新方式,以及如何透過梯度下降法逐步逼近損失函數的最低點。
Thumbnail
這篇文章針對機器人供應鏈圖表,從求職者角度出發,分析其價值與意義,並提供如何善用圖表資訊進行職涯規劃、企業選擇及面試準備等建議。文章涵蓋產業趨勢、技能匹配、目標企業研究、面試技巧等面向,並鼓勵求職者結合個人興趣與產業熱點,克服進入高科技產業的挑戰。
Thumbnail
本篇筆記介紹非監督式學習的三大類別:分群、關聯分析和降維,並深入說明其概念、演算法和應用場景。包含K-Means分群演算法、Apriori關聯分析演算法、PCA降維技術,以及強化學習的基礎概念。
Thumbnail
Aqive嘗試與許多學術和科研機構合作,但遇到不少阻力。最終國防醫學院接受了這個挑戰,並與 Aqive 一起完成了關鍵的雙盲實驗。 實驗結果:
Thumbnail
Python程式WMI_CMD2.py: 獲得Windows系統效能數據
Thumbnail
Acerpure最新推出的黑武士空氣清淨機,擁有700 CADR值,適用35坪的空間,加上UVC紫外線殺菌與四合一HEPA13濾網,讓家中空氣品質改善不少!除了是台灣製造外,更獲得一級節能標章,換算非夏季標準電費,連續開Turbo模式,一天電費不到3.5塊錢,用少少的錢換來家人身體健康,何樂而不為!
Thumbnail
我之所以大膽的把股價預測稱之為「最強」,因為這本身就是一個可以變現的專案,並且可以同時累積數據分析及投資操作經驗,在投資與程式設計同時躍升為顯學的時代,把這兩條學習路徑融合在一起,似乎自然而然,也合情合理。當然,這條路的學習成本非常高,但翻山越嶺之後的美景也同樣讓人心神嚮往。
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
線性回歸是一種預測模型,目標是找到一條最貼近數據點的直線。本文詳細介紹線性回歸的流程,包含收集資料、建立模型、計算誤差、優化模型和測試模型等步驟。重點闡述梯度下降法與損失函數的應用,並解釋學習率的影響、參數更新方式,以及如何透過梯度下降法逐步逼近損失函數的最低點。
Thumbnail
這篇文章針對機器人供應鏈圖表,從求職者角度出發,分析其價值與意義,並提供如何善用圖表資訊進行職涯規劃、企業選擇及面試準備等建議。文章涵蓋產業趨勢、技能匹配、目標企業研究、面試技巧等面向,並鼓勵求職者結合個人興趣與產業熱點,克服進入高科技產業的挑戰。
Thumbnail
本篇筆記介紹非監督式學習的三大類別:分群、關聯分析和降維,並深入說明其概念、演算法和應用場景。包含K-Means分群演算法、Apriori關聯分析演算法、PCA降維技術,以及強化學習的基礎概念。
Thumbnail
Aqive嘗試與許多學術和科研機構合作,但遇到不少阻力。最終國防醫學院接受了這個挑戰,並與 Aqive 一起完成了關鍵的雙盲實驗。 實驗結果:
Thumbnail
Python程式WMI_CMD2.py: 獲得Windows系統效能數據
Thumbnail
Acerpure最新推出的黑武士空氣清淨機,擁有700 CADR值,適用35坪的空間,加上UVC紫外線殺菌與四合一HEPA13濾網,讓家中空氣品質改善不少!除了是台灣製造外,更獲得一級節能標章,換算非夏季標準電費,連續開Turbo模式,一天電費不到3.5塊錢,用少少的錢換來家人身體健康,何樂而不為!
Thumbnail
我之所以大膽的把股價預測稱之為「最強」,因為這本身就是一個可以變現的專案,並且可以同時累積數據分析及投資操作經驗,在投資與程式設計同時躍升為顯學的時代,把這兩條學習路徑融合在一起,似乎自然而然,也合情合理。當然,這條路的學習成本非常高,但翻山越嶺之後的美景也同樣讓人心神嚮往。