pull/109/head
midoks 7 years ago
parent 2fdf7bb4a9
commit 9c11d1f217
  1. 2
      class/core/plugin_api.py
  2. 57
      class/core/system_api.py
  3. 10
      route/plugins.py
  4. 17
      route/system.py
  5. 23
      static/js/control.js
  6. 7
      task.py
  7. 4
      templates/default/control.html

@ -44,6 +44,7 @@ class plugin_api:
if not self.__tasks: if not self.__tasks:
self.__tasks = public.M('tasks').where( self.__tasks = public.M('tasks').where(
"status!=?", ('1',)).field('status,name').select() "status!=?", ('1',)).field('status,name').select()
if sName.find('php-') != -1: if sName.find('php-') != -1:
tmp = sName.split('-') tmp = sName.split('-')
sName = tmp[0] sName = tmp[0]
@ -188,6 +189,7 @@ class plugin_api:
pg = self.getPluginInfo(data) pg = self.getPluginInfo(data)
plugins_info.append(pg) plugins_info.append(pg)
# print plugins_info, data
return plugins_info return plugins_info
def getAllList(self, sType='0'): def getAllList(self, sType='0'):

@ -336,6 +336,7 @@ class system_api:
return networkInfo return networkInfo
except Exception, e: except Exception, e:
print e
return None return None
def getNetWorkApi(self, get=None): def getNetWorkApi(self, get=None):
@ -386,34 +387,72 @@ class system_api:
'/panel/' + scriptFile) '/panel/' + scriptFile)
return self.GetMemInfo() return self.GetMemInfo()
def getNetWorkIo(self, start, end): def getNetWorkIoData(self, start, end):
# 取指定时间段的网络Io # 取指定时间段的网络Io
data = public.M('network').dbfile('system').where("addtime>=? AND addtime<=?", (start, end)).field( data = public.M('network').dbfile('system').where("addtime>=? AND addtime<=?", (start, end)).field(
'id,up,down,total_up,total_down,down_packets,up_packets,addtime').order('id asc').select() 'id,up,down,total_up,total_down,down_packets,up_packets,addtime').order('id asc').select()
return self.ToAddtime(data) return self.toAddtime(data)
def getDiskIo(self, start, end): def getDiskIoData(self, start, end):
# 取指定时间段的磁盘Io # 取指定时间段的磁盘Io
data = public.M('diskio').dbfile('system').where("addtime>=? AND addtime<=?", (start, end)).field( data = public.M('diskio').dbfile('system').where("addtime>=? AND addtime<=?", (start, end)).field(
'id,read_count,write_count,read_bytes,write_bytes,read_time,write_time,addtime').order('id asc').select() 'id,read_count,write_count,read_bytes,write_bytes,read_time,write_time,addtime').order('id asc').select()
return self.ToAddtime(data) return self.toAddtime(data)
def getCpuIo(self, start, end): def getCpuIoData(self, start, end):
# 取指定时间段的CpuIo # 取指定时间段的CpuIo
data = public.M('cpuio').dbfile('system').where("addtime>=? AND addtime<=?", data = public.M('cpuio').dbfile('system').where("addtime>=? AND addtime<=?",
(start, end)).field('id,pro,mem,addtime').order('id asc').select() (start, end)).field('id,pro,mem,addtime').order('id asc').select()
return self.ToAddtime(data, True) return self.toAddtime(data, True)
def getLoadAverage(self, start, end): def getLoadAverageData(self, start, end):
data = public.M('load_average').dbfile('system').where("addtime>=? AND addtime<=?", ( data = public.M('load_average').dbfile('system').where("addtime>=? AND addtime<=?", (
start, end)).field('id,pro,one,five,fifteen,addtime').order('id asc').select() start, end)).field('id,pro,one,five,fifteen,addtime').order('id asc').select()
return self.ToAddtime(data) return self.toAddtime(data)
def toAddtime(self, data, tomem=False):
import time
# 格式化addtime列
if tomem:
import psutil
mPre = (psutil.virtual_memory().total / 1024 / 1024) / 100
length = len(data)
he = 1
if length > 100:
he = 1
if length > 1000:
he = 3
if length > 10000:
he = 15
if he == 1:
for i in range(length):
data[i]['addtime'] = time.strftime(
'%m/%d %H:%M', time.localtime(float(data[i]['addtime'])))
if tomem and data[i]['mem'] > 100:
data[i]['mem'] = data[i]['mem'] / mPre
return data
else:
count = 0
tmp = []
for value in data:
if count < he:
count += 1
continue
value['addtime'] = time.strftime(
'%m/%d %H:%M', time.localtime(float(value['addtime'])))
if tomem and value['mem'] > 100:
value['mem'] = value['mem'] / mPre
tmp.append(value)
count = 0
return tmp
# 重启面板 # 重启面板
def reWeb(self, get): def reWeb(self, get):
# if not public.IsRestart(): return # if not public.IsRestart(): return
# public.returnMsg(False,'EXEC_ERR_TASK'); # public.returnMsg(False,'EXEC_ERR_TASK');
public.ExecShell('/etc/init.d/bt restart &') # public.ExecShell('/etc/init.d/bt restart &')
return True return True
# 修复面板 # 修复面板

@ -1,14 +1,14 @@
# coding:utf-8 # coding:utf-8
from flask import Blueprint, render_template
from flask import jsonify
from flask import request
import psutil
import time import time
import sys import sys
import os import os
import json import json
import psutil
from flask import Blueprint, render_template
from flask import jsonify
from flask import request
sys.path.append("class/core") sys.path.append("class/core")
import public import public

@ -8,6 +8,7 @@ import sys
from flask import Flask, session from flask import Flask, session
from flask import Blueprint, render_template from flask import Blueprint, render_template
from flask import jsonify from flask import jsonify
from flask import request
sys.path.append("class/core") sys.path.append("class/core")
import public import public
@ -47,23 +48,31 @@ def getControl():
@system.route('/get_load_average', methods=['GET']) @system.route('/get_load_average', methods=['GET'])
def getLoadAverage(): def getLoadAverage():
data = {'status': True, 'day': 30} start = request.args.get('start', '')
end = request.args.get('end', '')
data = system_api.system_api().getLoadAverageData(start, end)
return public.getJson(data) return public.getJson(data)
@system.route('/get_cpu_io', methods=['GET']) @system.route('/get_cpu_io', methods=['GET'])
def getCpuIo(): def getCpuIo():
data = {'status': True, 'day': 30} start = request.args.get('start', '')
end = request.args.get('end', '')
data = system_api.system_api().getCpuIoData(start, end)
return public.getJson(data) return public.getJson(data)
@system.route('/get_disk_io', methods=['GET']) @system.route('/get_disk_io', methods=['GET'])
def getDiskIo(): def getDiskIo():
data = {'status': True, 'day': 30} start = request.args.get('start', '')
end = request.args.get('end', '')
data = system_api.system_api().getDiskIoData(start, end)
return public.getJson(data) return public.getJson(data)
@system.route('/get_network_io', methods=['GET']) @system.route('/get_network_io', methods=['GET'])
def getNetworkIo(): def getNetworkIo():
data = {'status': True, 'day': 30} start = request.args.get('start', '')
end = request.args.get('end', '')
data = system_api.system_api().getNetWorkIoData(start, end)
return public.getJson(data) return public.getJson(data)

@ -14,6 +14,7 @@ setTimeout(function(){
setTimeout(function(){ setTimeout(function(){
Wday(0,'network'); Wday(0,'network');
},2000); },2000);
$(".st").hover(function(){ $(".st").hover(function(){
$(this).next().show(); $(this).next().show();
},function(){ },function(){
@ -205,7 +206,7 @@ function getBeforeDate(n){
} }
//cpu //cpu
function cpu(b,e){ function cpu(b,e){
$.get('/system/get_cpu_io?start='+b+'&end='+e,function(rdata){ $.get('/system/get_cpu_io?start='+b+'&end='+e,function(rdata){
var myChartCpu = echarts.init(document.getElementById('cupview')); var myChartCpu = echarts.init(document.getElementById('cupview'));
var xData = []; var xData = [];
var yData = []; var yData = [];
@ -289,12 +290,12 @@ $.get('/system/get_cpu_io?start='+b+'&end='+e,function(rdata){
window.addEventListener("resize",function(){ window.addEventListener("resize",function(){
myChartCpu.resize(); myChartCpu.resize();
}); });
}) },'json');
} }
//内存 //内存
function mem(b,e){ function mem(b,e){
$.get('/system/get_cpu_io?start='+b+'&end='+e,function(rdata){ $.get('/system/get_cpu_io?start='+b+'&end='+e,function(rdata){
var myChartMen = echarts.init(document.getElementById('memview')); var myChartMen = echarts.init(document.getElementById('memview'));
var xData = []; var xData = [];
//var yData = []; //var yData = [];
@ -378,12 +379,12 @@ $.get('/system/get_cpu_io?start='+b+'&end='+e,function(rdata){
window.addEventListener("resize",function(){ window.addEventListener("resize",function(){
myChartMen.resize(); myChartMen.resize();
}); });
}) },'json');
} }
//磁盘io //磁盘io
function disk(b,e){ function disk(b,e){
$.get('/system/get_disk_io?start='+b+'&end='+e,function(rdata){ $.get('/system/get_disk_io?start='+b+'&end='+e,function(rdata){
var myChartDisk = echarts.init(document.getElementById('diskview')); var myChartDisk = echarts.init(document.getElementById('diskview'));
var rData = []; var rData = [];
var wData = []; var wData = [];
@ -485,12 +486,12 @@ $.get('/system/get_disk_io?start='+b+'&end='+e,function(rdata){
window.addEventListener("resize",function(){ window.addEventListener("resize",function(){
myChartDisk.resize(); myChartDisk.resize();
}); });
}) },'json');
} }
//网络Io //网络Io
function network(b,e){ function network(b,e){
$.get('/system/get_network_io?start='+b+'&end='+e,function(rdata){ $.get('/system/get_network_io?start='+b+'&end='+e,function(rdata){
var myChartNetwork = echarts.init(document.getElementById('network')); var myChartNetwork = echarts.init(document.getElementById('network'));
var aData = []; var aData = [];
var bData = []; var bData = [];
@ -595,11 +596,11 @@ $.get('/system/get_network_io?start='+b+'&end='+e,function(rdata){
window.addEventListener("resize",function(){ window.addEventListener("resize",function(){
myChartNetwork.resize(); myChartNetwork.resize();
}); });
}) },'json');
} }
//负载 //负载
function getload_old(b,e){ function getload_old(b,e){
$.get('/system/get_load_average?start='+b+'&end='+e,function(rdata){ $.get('/system/get_load_average?start='+b+'&end='+e,function(rdata){
var myChartgetload = echarts.init(document.getElementById('getloadview')); var myChartgetload = echarts.init(document.getElementById('getloadview'));
var aData = []; var aData = [];
var bData = []; var bData = [];
@ -725,7 +726,7 @@ $.get('/system/get_load_average?start='+b+'&end='+e,function(rdata){
window.addEventListener("resize",function(){ window.addEventListener("resize",function(){
myChartgetload.resize(); myChartgetload.resize();
}); });
}) },'json');
} }
//系统负载 //系统负载
function getload(b,e){ function getload(b,e){
@ -946,5 +947,5 @@ function getload(b,e){
window.addEventListener("resize",function(){ window.addEventListener("resize",function(){
myChartgetload.resize(); myChartgetload.resize();
}) })
}) },'json')
} }

@ -6,8 +6,10 @@
import sys import sys
import os import os
import json import json
# import psutil
import time import time
print sys.path
sys.path.append("/usr/local/lib/python2.7/site-packages")
import psutil
sys.path.append(os.getcwd() + "/class/core") sys.path.append(os.getcwd() + "/class/core")
reload(sys) reload(sys)
@ -303,7 +305,7 @@ def systemTask():
'up,down,total_up,total_down,down_packets,up_packets,addtime', data) 'up,down,total_up,total_down,down_packets,up_packets,addtime', data)
sql.table('network').where( sql.table('network').where(
"addtime<?", (deltime,)).delete() "addtime<?", (deltime,)).delete()
if os.path.exists('/proc/diskstats'): # if os.path.exists('/proc/diskstats'):
data = (diskInfo['read_count'], diskInfo['write_count'], diskInfo['read_bytes'], diskInfo[ data = (diskInfo['read_count'], diskInfo['write_count'], diskInfo['read_bytes'], diskInfo[
'write_bytes'], diskInfo['read_time'], diskInfo['write_time'], addtime) 'write_bytes'], diskInfo['read_time'], diskInfo['write_time'], addtime)
sql.table('diskio').add( sql.table('diskio').add(
@ -351,6 +353,7 @@ def getMemUsed():
try: try:
import psutil import psutil
mem = psutil.virtual_memory() mem = psutil.virtual_memory()
print 'mem:', mem
memInfo = {'memTotal': mem.total / 1024 / 1024, 'memFree': mem.free / 1024 / 1024, memInfo = {'memTotal': mem.total / 1024 / 1024, 'memFree': mem.free / 1024 / 1024,
'memBuffers': mem.buffers / 1024 / 1024, 'memCached': mem.cached / 1024 / 1024} 'memBuffers': mem.buffers / 1024 / 1024, 'memCached': mem.cached / 1024 / 1024}
tmp = memInfo['memTotal'] - memInfo['memFree'] - \ tmp = memInfo['memTotal'] - memInfo['memFree'] - \

@ -40,8 +40,8 @@
<span class="tit">区间检索:</span> <span class="tit">区间检索:</span>
<span class="gt" onclick="Wday(1,'getload')">昨天</span> <span class="gt" onclick="Wday(1,'getload')">昨天</span>
<span class="gt on" onclick="Wday(0,'getload')">今天</span> <span class="gt on" onclick="Wday(0,'getload')">今天</span>
<span class="gt" onclick="Wday(7,'getload')">最近30</span> <span class="gt" onclick="Wday(7,'getload')">最近7</span>
<span class="gt" onclick="Wday(30,'getload')">自定义时间</span> <span class="gt" onclick="Wday(30,'getload')">最近30天</span>
<div class="ss"> <div class="ss">
<span class="st">自定义时间</span> <span class="st">自定义时间</span>
<div class="time"> <div class="time">

Loading…
Cancel
Save