Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import operator
- import psutil
- ## output format: cpu_usage{process="cadvisor", pid="7561"} 15.0
- import requests
- from requests.auth import HTTPBasicAuth
- def process_list():
- procs = []
- procs2 = ""
- procs_lists = []
- procs_lists2 = []
- procs_status = {}
- cnt = False
- while True:
- for p in psutil.process_iter():
- try:
- p.dict = p.as_dict(['username', 'nice', 'memory_info',
- 'memory_percent', 'cpu_percent',
- 'cpu_times', 'name', 'status', 'pid'])
- try:
- procs_status[p.dict['status']] += 1
- except KeyError:
- procs_status[p.dict['status']] = 1
- except psutil.NoSuchProcess:
- pass
- else:
- procs.append(p)
- for a in procs:
- if a.dict['cpu_percent'] is not None and a.dict['cpu_percent'] != 0.0:
- cnt = True
- procs_lists.append(
- {'process_name': a.dict['name'], 'pid': a.dict['pid'], 'cpu': float(a.dict['cpu_percent'])})
- if cnt is True:
- temp = {}
- for d in procs_lists:
- if d['process_name'] not in temp:
- temp[d['process_name']] = {}
- temp_d = temp[d['process_name']]
- temp_d['cpu'] = temp_d.get('cpu', 0) + float(d['cpu'])
- for a, key in temp.items():
- procs_lists2.append({'process_name': a, 'cpu_load': key['cpu']})
- procs_lists2.sort(key=operator.itemgetter('cpu_load'), reverse=True)
- procs2 = ""
- for c in procs_lists2:
- # print debug
- # print('cpu_usage{process_name="%s"} %1.1f'%(c['process_name'],c['cpu_load']))
- procs2 = procs2 + str('cpu_usage{process_name="%s"} %1.1f\n' % (c['process_name'], c['cpu_load']))
- # send metric
- print("eineeine: ", procs2)
- job_name = 'cpu_usage'
- instance_name = '1.2.3.4:9091'
- response = requests.post('http://' + instance_name + '/metrics/job/pi4'.format(j=job_name, i=instance_name),
- data=format(procs2), auth=HTTPBasicAuth('admin', 'admin'))
- print('response code: ',response.status_code)
- break
- if __name__ == '__main__':
- process_list()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement