mirror of https://github.com/midoks/mdserver-web
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.4 KiB
103 lines
3.4 KiB
# coding:utf-8
|
|
|
|
# ---------------------------------------------------------------------------------
|
|
# MW-Linux面板
|
|
# ---------------------------------------------------------------------------------
|
|
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
|
# ---------------------------------------------------------------------------------
|
|
# Author: midoks <midoks@163.com>
|
|
# ---------------------------------------------------------------------------------
|
|
|
|
import os
|
|
import sys
|
|
import re
|
|
import time
|
|
import math
|
|
import psutil
|
|
|
|
|
|
import core.mw as mw
|
|
|
|
# -------------------------------------------- 数据查询相关 --------------------------------------------
|
|
# 格式化addtime列
|
|
def toAddtime(data, tomem=False):
|
|
import time
|
|
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
|
|
|
|
# 格式化addtime列
|
|
def toUseAddtime(data):
|
|
dlen = len(data)
|
|
for i in range(dlen):
|
|
data[i]['addtime'] = time.strftime('%m/%d %H:%M', time.localtime(float(data[i]['addtime'])))
|
|
return data
|
|
|
|
def getLoadAverageByDB(start, end):
|
|
# 获取系统的负载统计信息
|
|
data = mw.M('load_average').dbPos(mw.getPanelDataDir(),'system')\
|
|
.where("addtime>=? AND addtime<=?", (start, end,))\
|
|
.field('pro,one,five,fifteen,addtime')\
|
|
.order('id asc').select()
|
|
data = toUseAddtime(data)
|
|
return data
|
|
|
|
def getDiskIoByDB(start, end):
|
|
# 获取系统的磁盘IO统计信息
|
|
data = mw.M('diskio').dbPos(mw.getPanelDataDir(),'system')\
|
|
.where("addtime>=? AND addtime<=?", (start, end))\
|
|
.field('read_count,write_count,read_bytes,write_bytes,read_time,write_time,addtime')\
|
|
.order('id asc').select()
|
|
data = toUseAddtime(data)
|
|
return data
|
|
|
|
def getCpuIoByDB(start, end):
|
|
# 获取系统的CPU/IO统计信息
|
|
data = mw.M('cpuio').dbPos(mw.getPanelDataDir(),'system')\
|
|
.where("addtime>=? AND addtime<=?",(start, end))\
|
|
.field('pro,mem,addtime')\
|
|
.order('id asc').select()
|
|
data = toUseAddtime(data)
|
|
return data
|
|
|
|
def getNetworkIoByDB(start, end):
|
|
# 获取系统网络IO统计信息
|
|
# id,
|
|
data = mw.M('network').dbPos(mw.getPanelDataDir(),'system')\
|
|
.where("addtime>=? AND addtime<=?", (start, end))\
|
|
.field('up,down,total_up,total_down,down_packets,up_packets,addtime')\
|
|
.order('id asc').select()
|
|
data = toUseAddtime(data)
|
|
return data
|
|
|
|
# -------------------------------------------- 数据查询相关 --------------------------------------------
|
|
|