Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.98 KB | None | 0 0
  1. import operator
  2.  
  3. import psutil
  4. ## output format: cpu_usage{process="cadvisor", pid="7561"} 15.0
  5. import requests
  6. from requests.auth import HTTPBasicAuth
  7.  
  8.  
  9. def process_list():
  10.     procs = []
  11.     procs2 = ""
  12.     procs_lists = []
  13.     procs_lists2 = []
  14.     procs_status = {}
  15.     cnt = False
  16.     while True:
  17.         for p in psutil.process_iter():
  18.             try:
  19.                 p.dict = p.as_dict(['username', 'nice', 'memory_info',
  20.                                     'memory_percent', 'cpu_percent',
  21.                                     'cpu_times', 'name', 'status', 'pid'])
  22.                 try:
  23.                     procs_status[p.dict['status']] += 1
  24.                 except KeyError:
  25.                     procs_status[p.dict['status']] = 1
  26.             except psutil.NoSuchProcess:
  27.                 pass
  28.             else:
  29.                 procs.append(p)
  30.         for a in procs:
  31.             if a.dict['cpu_percent'] is not None and a.dict['cpu_percent'] != 0.0:
  32.                 cnt = True
  33.                 procs_lists.append(
  34.                     {'process_name': a.dict['name'], 'pid': a.dict['pid'], 'cpu': float(a.dict['cpu_percent'])})
  35.         if cnt is True:
  36.             temp = {}
  37.             for d in procs_lists:
  38.                 if d['process_name'] not in temp:
  39.                     temp[d['process_name']] = {}
  40.                 temp_d = temp[d['process_name']]
  41.                 temp_d['cpu'] = temp_d.get('cpu', 0) + float(d['cpu'])
  42.  
  43.             for a, key in temp.items():
  44.                 procs_lists2.append({'process_name': a, 'cpu_load': key['cpu']})
  45.             procs_lists2.sort(key=operator.itemgetter('cpu_load'), reverse=True)
  46.             procs2 = ""
  47.             for c in procs_lists2:
  48.                 # print debug
  49.                 # print('cpu_usage{process_name="%s"} %1.1f'%(c['process_name'],c['cpu_load']))
  50.                 procs2 = procs2 + str('cpu_usage{process_name="%s"} %1.1f\n' % (c['process_name'], c['cpu_load']))
  51.             # send metric
  52.             print("eineeine: ", procs2)
  53.             job_name = 'cpu_usage'
  54.             instance_name = '1.2.3.4:9091'
  55.             response = requests.post('http://' + instance_name + '/metrics/job/pi4'.format(j=job_name, i=instance_name),
  56.                                      data=format(procs2), auth=HTTPBasicAuth('admin', 'admin'))
  57.             print('response code: ',response.status_code)
  58.             break
  59.            
  60. if __name__ == '__main__':
  61.     process_list()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement