couple small changes in python. Turns out I can't use mongo in grafana

This commit is contained in:
Dan Snyder 2025-01-11 17:18:11 -05:00
parent fed3c7ee6f
commit 2939999dc4
2 changed files with 91 additions and 83 deletions

76
py/ps_fields.py Normal file
View File

@ -0,0 +1,76 @@
field_defs = {
'PID': {
'desc': 'PID',
'dtype': str,
},
'PPID': {
'desc': 'Parent PID',
'dtype': str,
},
'UID': {
'desc': 'User ID',
'dtype': str,
},
'LXC': {
'desc': 'LXC ID',
'dtype': str,
},
'%CUU': {
'desc': 'CPU Use',
'dtype': float,
},
'%MEM': {
'desc': 'Memory Use',
'dtype': float,
},
'VSZ': {
'desc': 'Virtual Memory',
'dtype': int,
'mult': 1024,
},
'RSS': {
'desc': 'Resident Memory',
'dtype': int,
'mult': 1024,
},
'PSS': {
'desc': 'Proportional Shared Memory',
'dtype': int,
'mult': 1024,
},
'USS': {
'desc': 'Unique Memory',
'dtype': int,
'mult': 1024,
},
'SZ': {
'desc': 'Core Size',
'dtype': int,
'mult': 4096,
},
'SIZE': {
'desc': 'Approximate Memory',
'dtype': int,
'mult': 1024,
},
'THCNT': {
'desc': 'Thread Count',
'dtype': int,
},
'TIME': {
'desc': 'Execution Time',
'dtype': int,
},
'ELAPSED': {
'desc': 'Elapsed Time',
'dtype': int,
},
'STAT': {
'desc': 'Status',
'dtype': str,
},
'COMMAND': {
'desc': 'Command',
'dtype': str,
}
}

View File

@ -1,86 +1,8 @@
field_defs = {
'PID': {
'desc': 'PID',
'dtype': str,
},
'PPID': {
'desc': 'Parent PID',
'dtype': str,
},
'UID': {
'desc': 'User ID',
'dtype': str,
},
'LXC': {
'desc': 'LXC ID',
'dtype': str,
},
'%CUU': {
'desc': 'CPU Use',
'dtype': float,
},
'%MEM': {
'desc': 'Memory Use',
'dtype': float,
},
'VSZ': {
'desc': 'Virtual Memory',
'dtype': int,
'mult': 1024,
},
'RSS': {
'desc': 'Resident Memory',
'dtype': int,
'mult': 1024,
},
'PSS': {
'desc': 'Proportional Shared Memory',
'dtype': int,
'mult': 1024,
},
'USS': {
'desc': 'Unique Memory',
'dtype': int,
'mult': 1024,
},
'SZ': {
'desc': 'Core Size',
'dtype': int,
'mult': 4096,
},
'SIZE': {
'desc': 'Approximate Memory',
'dtype': int,
'mult': 1024,
},
'THCNT': {
'desc': 'Thread Count',
'dtype': int,
},
'TIME': {
'desc': 'Execution Time',
'dtype': int,
},
'ELAPSED': {
'desc': 'Elapsed Time',
'dtype': int,
},
'STAT': {
'desc': 'Status',
'dtype': str,
},
'COMMAND': {
'desc': 'Command',
'dtype': str,
}
}
from ps_fields import *
import mongodb
def parseFile(fname):
f = open(fname, 'r')
data = f.read()
f.close()
data = data.split('\n')
def parsePsOutput(output):
data = output.split('\n')
data = list(filter(bool, [line.split() for line in data]))
header = data[0]
procs = []
@ -91,11 +13,21 @@ def parseFile(fname):
field = field_defs[header[i]]
value = line[i]
if i == len(header):
# combine command arguments together to one string
value = ' '.join(line[i:])
value = field['dtype'](value)
if 'mult' in field:
# mult if applicable
value *= field['mult']
proc[header[i]] = value
procs.append(proc)
return procs
def parseFile(fname):
f = open(fname, 'r')
data = f.read()
f.close()
return parsePsOutput(data)