Add system monitoring code
Need a way to monitor the system, CPU temp, NVMe temp, etc
This commit is contained in:
53
monitor/cpuload.py
Executable file
53
monitor/cpuload.py
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import time
|
||||
|
||||
class CPULoad:
|
||||
def __init__( self ):
|
||||
self._previousData = self._getRawData()
|
||||
self._names = []
|
||||
for item in self._previousData:
|
||||
self._names.append( item )
|
||||
|
||||
def _getRawData( self ):
|
||||
result = {}
|
||||
with open( "/proc/stat", "r") as f:
|
||||
allLines = f.readlines()
|
||||
for line in allLines:
|
||||
cpu = line.replace('\t', ' ').strip().split()
|
||||
if (len(cpu[0]) > 3) and (cpu[0][:3] == "cpu"):
|
||||
total = 0
|
||||
idle = 0
|
||||
for i in range( 1, len(cpu)):
|
||||
total += int(cpu[i])
|
||||
if i == 4 or i == 5:
|
||||
idle += int(cpu[i])
|
||||
result[cpu[0]] = (total,idle)
|
||||
return result
|
||||
|
||||
def getPercentages( self ):
|
||||
results = {}
|
||||
current = self._getRawData()
|
||||
for item in current:
|
||||
total = current[item][0] - self._previousData[item][0]
|
||||
idle = current[item][1] - self._previousData[item][1]
|
||||
percent = ((total - idle)/total) * 100
|
||||
results[item] = percent
|
||||
self._previousData = current
|
||||
return results
|
||||
|
||||
@property
|
||||
def cpuNames( self ):
|
||||
return self._names
|
||||
|
||||
def __len__(self):
|
||||
return len(self._previousData)
|
||||
|
||||
if __name__ == "__main__":
|
||||
load = CPULoad()
|
||||
print( f"Number of CPU's = {len(load)}" )
|
||||
while True:
|
||||
time.sleep( 1 )
|
||||
percentage = load.getPercentages()
|
||||
for item in percentage:
|
||||
print( f"{item} : {percentage[item]:.02f}" )
|
||||
Reference in New Issue
Block a user