Current Path :
/
opt
/
node_parser
/
hooks
/
Or
Select Your Path :
Upload File :
New :
File
Dir
//opt/node_parser/hooks/topstatsjson_lve.py
#!/usr/bin/env python2.7 # -*- coding: utf-8 -*- import os import datetime import json import multiprocessing import sys import glob import re import socket from pymemcache.client import base client = base.Client(('194.28.84.9', 11211)) server_ip = socket.gethostbyname(socket.gethostname()) def _dcmon(user): fulld = [] data = {} data2 = {} k = 0 dcpumon_dir = '/var/log/dcpumon/' for i in range(1, 8): var = datetime.datetime.now() - datetime.timedelta(days=i - 1) lines = open(dcpumon_dir + var.strftime('%Y/%b/%d'), 'r' ).readlines()[2:] date = open(dcpumon_dir + var.strftime('%Y/%b/%d'), 'r' ).readlines()[1].strip() data['date'] = date for line in lines: x = line.split('=') data['user'] = x[0] data['cpu'] = round(float(x[1]), 2) data['mem'] = round(float(x[2]), 2) data['mysql'] = round(float(x[3]), 1) try: data['proc1'] = '%CPU ' + x[4] + ' ' + x[5] except: data['proc1'] = None try: data['proc2'] = '%CPU ' + x[6] + ' ' + x[7] except: data['proc2'] = None try: data['proc3'] = '%CPU ' + x[8] + ' ' + x[9] except: data['proc3'] = None fulld.append(data.copy()) for j in fulld: if user == j['user']: date2 = datetime.datetime.fromtimestamp(float(j['date'])).strftime('%Y-%m-%d') data2[date2]={} if j['proc1']: data2[date2]['proc1'] = j['proc1'].strip() if j['proc2']: data2[date2]['proc2'] = j['proc2'].strip() if j['proc3']: data2[date2]['proc3'] = j['proc3'].strip() print json.dumps(data2) def _summary(): data_json = os.popen('lveinfo --period 1h --order-by aCPU -d --show-columns ID aCPU aPMem lCPU -l 0 -j').read() data = json.loads(data_json) data['hostname'] = os.popen('hostname').read().strip() data['cpu_count'] = multiprocessing.cpu_count() data['lastdata'] = datetime.datetime.today().strftime("%Y-%m-%d %H:%M") print json.dumps(data) def _account(account): data_json = os.popen('lveinfo --period 24h --show-columns ID From,To,aCPU,aPMem,lCPU -d -u ' + account + ' --time-unit 1h -j').read() data = json.loads(data_json) data['hostname'] = os.popen('hostname').read().strip() data['cpu_count'] = multiprocessing.cpu_count() data['lastdata'] = datetime.datetime.today().strftime("%Y-%m-%d %H:%M") owner = re.search(account + ':(.*)', open('/etc/trueuserowners', 'r').read(), re.M | re.I) owner = owner.group(1).strip() if owner == 'root': owner_domain = re.search('(.*): ' + account, open('/etc/trueuserdomains', 'r').read(), re.M | re.I) email = re.search('CONTACTEMAIL=(.*)', open('/var/cpanel/users/' + account, 'r').read(), re.M | re.I) else: owner_domain = re.search('(.*): ' + owner, open('/etc/trueuserdomains', 'r').read(), re.M | re.I) email = re.search('CONTACTEMAIL=(.*)', open('/var/cpanel/users/' + owner, 'r').read(), re.M | re.I) master_domain = re.search('(.*): ' + account, open('/etc/trueuserdomains', 'r').read(), re.M | re.I) data['master_domain'] = master_domain.group(1).strip() data['owner_domain'] = owner_domain.group(1).strip() data['email'] = email.group(1).strip() print json.dumps(data) def _cron(): count = 0 lveinfobin = os.popen('/usr/bin/whereis lveinfo |awk \'{print $2 }\'').read().strip() data_json = os.popen(lveinfobin + ' --period 24h --order-by aCPU -d --show-columns ID aCPU aPMem lCPU -l 0 -j').read() data_json_1h = os.popen(lveinfobin + ' --period 1h --order-by aCPU -d --show-columns ID aCPU aPMem lCPU -l 0 -j').read() data_h = json.loads(data_json_1h) for var in data_h['data']: sum = var['aCPU'] * 100 / var['lCPU'] if sum >= 25: count+=1 data = json.loads(data_json) data['hostname'] = os.popen('hostname').read().strip() data['cpu_count'] = multiprocessing.cpu_count() data['lastdata'] = datetime.datetime.today().strftime("%Y-%m-%d %H:%M") data['count'] = count client.set('topstatslve_' + server_ip.strip(), json.dumps(data),expire=3600) def _peak(): lveinfobin = os.popen('/usr/bin/whereis lveinfo |awk \'{print $2 }\'').read().strip() os.popen(lveinfobin + ' --period 1h --order-by aCPU -d --show-columns ID aCPU aPMem lCPU -l 0 -j > /opt/node_parser/hooks/stats/`date +"%H"`.json') dir = '/opt/node_parser/hooks/stats' ndata = {} ndata['hostname'] = os.popen('hostname').read().strip() i=0 os.chdir(dir) for file in glob.glob("*.json"): hour = file.split('.') hour = hour[0] with open(dir + '/' + file) as json_file: data = json.load(json_file) for var in data['data']: CPU = var['aCPU'] * 100 / var['lCPU'] if CPU >= 5: ndata[i] = {} ndata[i]['hour'] = hour ndata[i]['ID'] = var['ID'] ndata[i]['CPU'] = CPU ndata[i]['aCPU'] = var['aCPU'] ndata[i]['lCPU'] = var['lCPU'] i = i + 1 client.set('topstatslvepeak_' + server_ip.strip(), json.dumps(ndata),expire=3600) ''' main ''' try: if sys.argv[1] == 'summary': _summary() elif sys.argv[1] == 'account': _account(sys.argv[2]) elif sys.argv[1] == 'dcmon': _dcmon(sys.argv[2]) elif sys.argv[1] == 'cron': _cron() elif sys.argv[1] == 'peak': _peak() else: False except: False