mirror of
https://github.com//cppla/ServerStatus
synced 2025-07-03 16:05:59 +08:00
扔到线程里,优化网速展示
This commit is contained in:
parent
2f7acc3564
commit
518543edb8
@ -27,7 +27,6 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
import collections
|
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
def get_uptime():
|
def get_uptime():
|
||||||
@ -80,54 +79,6 @@ def get_cpu():
|
|||||||
result = 100-(t[len(t)-1]*100.00/st)
|
result = 100-(t[len(t)-1]*100.00/st)
|
||||||
return round(result, 1)
|
return round(result, 1)
|
||||||
|
|
||||||
traffic_clock = time.time()
|
|
||||||
traffic_diff = 0
|
|
||||||
def TCLOCK(func):
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
global traffic_clock, traffic_diff
|
|
||||||
now_clock = time.time()
|
|
||||||
traffic_diff = now_clock - traffic_clock
|
|
||||||
traffic_clock = now_clock
|
|
||||||
return func(*args, **kwargs)
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
class Traffic:
|
|
||||||
def __init__(self):
|
|
||||||
self.rx = collections.deque(maxlen=10)
|
|
||||||
self.tx = collections.deque(maxlen=10)
|
|
||||||
|
|
||||||
@TCLOCK
|
|
||||||
def get(self):
|
|
||||||
f = open('/proc/net/dev', 'r')
|
|
||||||
net_dev = f.readlines()
|
|
||||||
f.close()
|
|
||||||
avgrx = 0; avgtx = 0
|
|
||||||
|
|
||||||
for dev in net_dev[2:]:
|
|
||||||
dev = dev.split(':')
|
|
||||||
if "lo" in dev[0] or "tun" in dev[0] \
|
|
||||||
or "docker" in dev[0] or "veth" in dev[0] \
|
|
||||||
or "br-" in dev[0] or "vmbr" in dev[0] \
|
|
||||||
or "vnet" in dev[0] or "kube" in dev[0]:
|
|
||||||
continue
|
|
||||||
dev = dev[1].split()
|
|
||||||
avgrx += int(dev[0])
|
|
||||||
avgtx += int(dev[8])
|
|
||||||
|
|
||||||
self.rx.append(avgrx)
|
|
||||||
self.tx.append(avgtx)
|
|
||||||
avgrx = 0; avgtx = 0
|
|
||||||
|
|
||||||
l = len(self.rx)
|
|
||||||
for x in range(l - 1):
|
|
||||||
avgrx += self.rx[x+1] - self.rx[x]
|
|
||||||
avgtx += self.tx[x+1] - self.tx[x]
|
|
||||||
|
|
||||||
avgrx = int(avgrx / l / traffic_diff)
|
|
||||||
avgtx = int(avgtx / l / traffic_diff)
|
|
||||||
|
|
||||||
return avgrx, avgtx
|
|
||||||
|
|
||||||
def liuliang():
|
def liuliang():
|
||||||
NET_IN = 0
|
NET_IN = 0
|
||||||
NET_OUT = 0
|
NET_OUT = 0
|
||||||
@ -199,6 +150,15 @@ pingTime = {
|
|||||||
'189': 0,
|
'189': 0,
|
||||||
'10086': 0
|
'10086': 0
|
||||||
}
|
}
|
||||||
|
netSpeed = {
|
||||||
|
'netrx': 0.0,
|
||||||
|
'nettx': 0.0,
|
||||||
|
'clock': 0.0,
|
||||||
|
'diff': 0.0,
|
||||||
|
'avgrx': 0,
|
||||||
|
'avgtx': 0
|
||||||
|
}
|
||||||
|
|
||||||
def _ping_thread(host, mark, port):
|
def _ping_thread(host, mark, port):
|
||||||
lostPacket = 0
|
lostPacket = 0
|
||||||
allPacket = 0
|
allPacket = 0
|
||||||
@ -226,9 +186,34 @@ def _ping_thread(host, mark, port):
|
|||||||
allPacket = 0
|
allPacket = 0
|
||||||
startTime = endTime
|
startTime = endTime
|
||||||
|
|
||||||
time.sleep(1)
|
time.sleep(INTERVAL)
|
||||||
|
|
||||||
def get_packetLostRate():
|
def _net_speed():
|
||||||
|
while True:
|
||||||
|
with open("/proc/net/dev", "r") as f:
|
||||||
|
net_dev = f.readlines()
|
||||||
|
avgrx = 0
|
||||||
|
avgtx = 0
|
||||||
|
for dev in net_dev[2:]:
|
||||||
|
dev = dev.split(':')
|
||||||
|
if "lo" in dev[0] or "tun" in dev[0] \
|
||||||
|
or "docker" in dev[0] or "veth" in dev[0] \
|
||||||
|
or "br-" in dev[0] or "vmbr" in dev[0] \
|
||||||
|
or "vnet" in dev[0] or "kube" in dev[0]:
|
||||||
|
continue
|
||||||
|
dev = dev[1].split()
|
||||||
|
avgrx += int(dev[0])
|
||||||
|
avgtx += int(dev[8])
|
||||||
|
now_clock = time.time()
|
||||||
|
netSpeed["diff"] = now_clock - netSpeed["clock"]
|
||||||
|
netSpeed["clock"] = now_clock
|
||||||
|
netSpeed["netrx"] = int((avgrx - netSpeed["avgrx"]) / netSpeed["diff"])
|
||||||
|
netSpeed["nettx"] = int((avgtx - netSpeed["avgtx"]) / netSpeed["diff"])
|
||||||
|
netSpeed["avgrx"] = avgrx
|
||||||
|
netSpeed["avgtx"] = avgtx
|
||||||
|
time.sleep(INTERVAL)
|
||||||
|
|
||||||
|
def get_realtime_date():
|
||||||
t1 = threading.Thread(
|
t1 = threading.Thread(
|
||||||
target=_ping_thread,
|
target=_ping_thread,
|
||||||
kwargs={
|
kwargs={
|
||||||
@ -253,12 +238,17 @@ def get_packetLostRate():
|
|||||||
'port': PORBEPORT
|
'port': PORBEPORT
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
t4 = threading.Thread(
|
||||||
|
target=_net_speed,
|
||||||
|
)
|
||||||
t1.setDaemon(True)
|
t1.setDaemon(True)
|
||||||
t2.setDaemon(True)
|
t2.setDaemon(True)
|
||||||
t3.setDaemon(True)
|
t3.setDaemon(True)
|
||||||
|
t4.setDaemon(True)
|
||||||
t1.start()
|
t1.start()
|
||||||
t2.start()
|
t2.start()
|
||||||
t3.start()
|
t3.start()
|
||||||
|
t4.start()
|
||||||
|
|
||||||
def byte_str(object):
|
def byte_str(object):
|
||||||
'''
|
'''
|
||||||
@ -286,7 +276,7 @@ if __name__ == '__main__':
|
|||||||
elif 'INTERVAL' in argc:
|
elif 'INTERVAL' in argc:
|
||||||
INTERVAL = int(argc.split('INTERVAL=')[-1])
|
INTERVAL = int(argc.split('INTERVAL=')[-1])
|
||||||
socket.setdefaulttimeout(30)
|
socket.setdefaulttimeout(30)
|
||||||
get_packetLostRate()
|
get_realtime_date()
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
print("Connecting...")
|
print("Connecting...")
|
||||||
@ -317,11 +307,8 @@ if __name__ == '__main__':
|
|||||||
print(data)
|
print(data)
|
||||||
raise socket.error
|
raise socket.error
|
||||||
|
|
||||||
traffic = Traffic()
|
|
||||||
traffic.get()
|
|
||||||
while True:
|
while True:
|
||||||
CPU = get_cpu()
|
CPU = get_cpu()
|
||||||
NetRx, NetTx = traffic.get()
|
|
||||||
NET_IN, NET_OUT = liuliang()
|
NET_IN, NET_OUT = liuliang()
|
||||||
Uptime = get_uptime()
|
Uptime = get_uptime()
|
||||||
Load_1, Load_5, Load_15 = os.getloadavg()
|
Load_1, Load_5, Load_15 = os.getloadavg()
|
||||||
@ -347,8 +334,8 @@ if __name__ == '__main__':
|
|||||||
array['hdd_total'] = HDDTotal
|
array['hdd_total'] = HDDTotal
|
||||||
array['hdd_used'] = HDDUsed
|
array['hdd_used'] = HDDUsed
|
||||||
array['cpu'] = CPU
|
array['cpu'] = CPU
|
||||||
array['network_rx'] = NetRx
|
array['network_rx'] = netSpeed.get("netrx")
|
||||||
array['network_tx'] = NetTx
|
array['network_tx'] = netSpeed.get("nettx")
|
||||||
array['network_in'] = NET_IN
|
array['network_in'] = NET_IN
|
||||||
array['network_out'] = NET_OUT
|
array['network_out'] = NET_OUT
|
||||||
array['ip_status'] = IP_STATUS
|
array['ip_status'] = IP_STATUS
|
||||||
|
@ -25,7 +25,6 @@ import time
|
|||||||
import timeit
|
import timeit
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import collections
|
|
||||||
import psutil
|
import psutil
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
@ -58,48 +57,6 @@ def get_hdd():
|
|||||||
def get_cpu():
|
def get_cpu():
|
||||||
return psutil.cpu_percent(interval=INTERVAL)
|
return psutil.cpu_percent(interval=INTERVAL)
|
||||||
|
|
||||||
traffic_clock = time.time()
|
|
||||||
traffic_diff = 0
|
|
||||||
def TCLOCK(func):
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
global traffic_clock, traffic_diff
|
|
||||||
now_clock = time.time()
|
|
||||||
traffic_diff = now_clock - traffic_clock
|
|
||||||
traffic_clock = now_clock
|
|
||||||
return func(*args, **kwargs)
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
class Traffic:
|
|
||||||
def __init__(self):
|
|
||||||
self.rx = collections.deque(maxlen=10)
|
|
||||||
self.tx = collections.deque(maxlen=10)
|
|
||||||
|
|
||||||
@TCLOCK
|
|
||||||
def get(self):
|
|
||||||
avgrx = 0; avgtx = 0
|
|
||||||
for name, stats in psutil.net_io_counters(pernic=True).items():
|
|
||||||
if "lo" in name or "tun" in name \
|
|
||||||
or "docker" in name or "veth" in name \
|
|
||||||
or "br-" in name or "vmbr" in name \
|
|
||||||
or "vnet" in name or "kube" in name:
|
|
||||||
continue
|
|
||||||
avgrx += stats.bytes_recv
|
|
||||||
avgtx += stats.bytes_sent
|
|
||||||
|
|
||||||
self.rx.append(avgrx)
|
|
||||||
self.tx.append(avgtx)
|
|
||||||
avgrx = 0; avgtx = 0
|
|
||||||
|
|
||||||
l = len(self.rx)
|
|
||||||
for x in range(l - 1):
|
|
||||||
avgrx += self.rx[x+1] - self.rx[x]
|
|
||||||
avgtx += self.tx[x+1] - self.tx[x]
|
|
||||||
|
|
||||||
avgrx = int(avgrx / l / traffic_diff)
|
|
||||||
avgtx = int(avgtx / l / traffic_diff)
|
|
||||||
|
|
||||||
return avgrx, avgtx
|
|
||||||
|
|
||||||
def liuliang():
|
def liuliang():
|
||||||
NET_IN = 0
|
NET_IN = 0
|
||||||
NET_OUT = 0
|
NET_OUT = 0
|
||||||
@ -172,6 +129,15 @@ pingTime = {
|
|||||||
'189': 0,
|
'189': 0,
|
||||||
'10086': 0
|
'10086': 0
|
||||||
}
|
}
|
||||||
|
netSpeed = {
|
||||||
|
'netrx': 0.0,
|
||||||
|
'nettx': 0.0,
|
||||||
|
'clock': 0.0,
|
||||||
|
'diff': 0.0,
|
||||||
|
'avgrx': 0,
|
||||||
|
'avgtx': 0
|
||||||
|
}
|
||||||
|
|
||||||
def _ping_thread(host, mark, port):
|
def _ping_thread(host, mark, port):
|
||||||
lostPacket = 0
|
lostPacket = 0
|
||||||
allPacket = 0
|
allPacket = 0
|
||||||
@ -199,9 +165,34 @@ def _ping_thread(host, mark, port):
|
|||||||
allPacket = 0
|
allPacket = 0
|
||||||
startTime = endTime
|
startTime = endTime
|
||||||
|
|
||||||
time.sleep(1)
|
time.sleep(INTERVAL)
|
||||||
|
|
||||||
def get_packetLostRate():
|
def _net_speed():
|
||||||
|
while True:
|
||||||
|
with open("/proc/net/dev", "r") as f:
|
||||||
|
net_dev = f.readlines()
|
||||||
|
avgrx = 0
|
||||||
|
avgtx = 0
|
||||||
|
for dev in net_dev[2:]:
|
||||||
|
dev = dev.split(':')
|
||||||
|
if "lo" in dev[0] or "tun" in dev[0] \
|
||||||
|
or "docker" in dev[0] or "veth" in dev[0] \
|
||||||
|
or "br-" in dev[0] or "vmbr" in dev[0] \
|
||||||
|
or "vnet" in dev[0] or "kube" in dev[0]:
|
||||||
|
continue
|
||||||
|
dev = dev[1].split()
|
||||||
|
avgrx += int(dev[0])
|
||||||
|
avgtx += int(dev[8])
|
||||||
|
now_clock = time.time()
|
||||||
|
netSpeed["diff"] = now_clock - netSpeed["clock"]
|
||||||
|
netSpeed["clock"] = now_clock
|
||||||
|
netSpeed["netrx"] = int((avgrx - netSpeed["avgrx"]) / netSpeed["diff"])
|
||||||
|
netSpeed["nettx"] = int((avgtx - netSpeed["avgtx"]) / netSpeed["diff"])
|
||||||
|
netSpeed["avgrx"] = avgrx
|
||||||
|
netSpeed["avgtx"] = avgtx
|
||||||
|
time.sleep(INTERVAL)
|
||||||
|
|
||||||
|
def get_realtime_date():
|
||||||
t1 = threading.Thread(
|
t1 = threading.Thread(
|
||||||
target=_ping_thread,
|
target=_ping_thread,
|
||||||
kwargs={
|
kwargs={
|
||||||
@ -226,12 +217,17 @@ def get_packetLostRate():
|
|||||||
'port': PORBEPORT
|
'port': PORBEPORT
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
t4 = threading.Thread(
|
||||||
|
target=_net_speed,
|
||||||
|
)
|
||||||
t1.setDaemon(True)
|
t1.setDaemon(True)
|
||||||
t2.setDaemon(True)
|
t2.setDaemon(True)
|
||||||
t3.setDaemon(True)
|
t3.setDaemon(True)
|
||||||
|
t4.setDaemon(True)
|
||||||
t1.start()
|
t1.start()
|
||||||
t2.start()
|
t2.start()
|
||||||
t3.start()
|
t3.start()
|
||||||
|
t4.start()
|
||||||
|
|
||||||
def byte_str(object):
|
def byte_str(object):
|
||||||
'''
|
'''
|
||||||
@ -259,7 +255,7 @@ if __name__ == '__main__':
|
|||||||
elif 'INTERVAL' in argc:
|
elif 'INTERVAL' in argc:
|
||||||
INTERVAL = int(argc.split('INTERVAL=')[-1])
|
INTERVAL = int(argc.split('INTERVAL=')[-1])
|
||||||
socket.setdefaulttimeout(30)
|
socket.setdefaulttimeout(30)
|
||||||
get_packetLostRate()
|
get_realtime_date()
|
||||||
while 1:
|
while 1:
|
||||||
try:
|
try:
|
||||||
print("Connecting...")
|
print("Connecting...")
|
||||||
@ -290,11 +286,8 @@ if __name__ == '__main__':
|
|||||||
print(data)
|
print(data)
|
||||||
raise socket.error
|
raise socket.error
|
||||||
|
|
||||||
traffic = Traffic()
|
|
||||||
traffic.get()
|
|
||||||
while 1:
|
while 1:
|
||||||
CPU = get_cpu()
|
CPU = get_cpu()
|
||||||
NetRx, NetTx = traffic.get()
|
|
||||||
NET_IN, NET_OUT = liuliang()
|
NET_IN, NET_OUT = liuliang()
|
||||||
Uptime = get_uptime()
|
Uptime = get_uptime()
|
||||||
Load_1, Load_5, Load_15 = os.getloadavg() if 'linux' in sys.platform else (0.0, 0.0, 0.0)
|
Load_1, Load_5, Load_15 = os.getloadavg() if 'linux' in sys.platform else (0.0, 0.0, 0.0)
|
||||||
@ -321,8 +314,8 @@ if __name__ == '__main__':
|
|||||||
array['hdd_total'] = HDDTotal
|
array['hdd_total'] = HDDTotal
|
||||||
array['hdd_used'] = HDDUsed
|
array['hdd_used'] = HDDUsed
|
||||||
array['cpu'] = CPU
|
array['cpu'] = CPU
|
||||||
array['network_rx'] = NetRx
|
array['network_rx'] = netSpeed.get("netrx")
|
||||||
array['network_tx'] = NetTx
|
array['network_tx'] = netSpeed.get("nettx")
|
||||||
array['network_in'] = NET_IN
|
array['network_in'] = NET_IN
|
||||||
array['network_out'] = NET_OUT
|
array['network_out'] = NET_OUT
|
||||||
array['ip_status'] = IP_STATUS
|
array['ip_status'] = IP_STATUS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user