From 518543edb809a5b4de17c20b19e7022885e977e6 Mon Sep 17 00:00:00 2001 From: macos <tengyue.li@100credit.com> Date: Tue, 7 Apr 2020 18:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=94=E5=88=B0=E7=BA=BF=E7=A8=8B=E9=87=8C?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E7=BD=91=E9=80=9F=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clients/client-linux.py | 101 +++++++++++++++++---------------------- clients/client-psutil.py | 95 +++++++++++++++++------------------- 2 files changed, 88 insertions(+), 108 deletions(-) diff --git a/clients/client-linux.py b/clients/client-linux.py index 740190c..5f84d63 100755 --- a/clients/client-linux.py +++ b/clients/client-linux.py @@ -27,7 +27,6 @@ import os import sys import json import subprocess -import collections import threading def get_uptime(): @@ -80,54 +79,6 @@ def get_cpu(): result = 100-(t[len(t)-1]*100.00/st) 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(): NET_IN = 0 NET_OUT = 0 @@ -199,6 +150,15 @@ pingTime = { '189': 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): lostPacket = 0 allPacket = 0 @@ -226,9 +186,34 @@ def _ping_thread(host, mark, port): allPacket = 0 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( target=_ping_thread, kwargs={ @@ -253,12 +238,17 @@ def get_packetLostRate(): 'port': PORBEPORT } ) + t4 = threading.Thread( + target=_net_speed, + ) t1.setDaemon(True) t2.setDaemon(True) t3.setDaemon(True) + t4.setDaemon(True) t1.start() t2.start() t3.start() + t4.start() def byte_str(object): ''' @@ -286,7 +276,7 @@ if __name__ == '__main__': elif 'INTERVAL' in argc: INTERVAL = int(argc.split('INTERVAL=')[-1]) socket.setdefaulttimeout(30) - get_packetLostRate() + get_realtime_date() while True: try: print("Connecting...") @@ -317,11 +307,8 @@ if __name__ == '__main__': print(data) raise socket.error - traffic = Traffic() - traffic.get() while True: CPU = get_cpu() - NetRx, NetTx = traffic.get() NET_IN, NET_OUT = liuliang() Uptime = get_uptime() Load_1, Load_5, Load_15 = os.getloadavg() @@ -347,8 +334,8 @@ if __name__ == '__main__': array['hdd_total'] = HDDTotal array['hdd_used'] = HDDUsed array['cpu'] = CPU - array['network_rx'] = NetRx - array['network_tx'] = NetTx + array['network_rx'] = netSpeed.get("netrx") + array['network_tx'] = netSpeed.get("nettx") array['network_in'] = NET_IN array['network_out'] = NET_OUT array['ip_status'] = IP_STATUS diff --git a/clients/client-psutil.py b/clients/client-psutil.py index c53b24c..cfa705f 100755 --- a/clients/client-psutil.py +++ b/clients/client-psutil.py @@ -25,7 +25,6 @@ import time import timeit import os import json -import collections import psutil import sys import threading @@ -58,48 +57,6 @@ def get_hdd(): def get_cpu(): 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(): NET_IN = 0 NET_OUT = 0 @@ -172,6 +129,15 @@ pingTime = { '189': 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): lostPacket = 0 allPacket = 0 @@ -199,9 +165,34 @@ def _ping_thread(host, mark, port): allPacket = 0 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( target=_ping_thread, kwargs={ @@ -226,12 +217,17 @@ def get_packetLostRate(): 'port': PORBEPORT } ) + t4 = threading.Thread( + target=_net_speed, + ) t1.setDaemon(True) t2.setDaemon(True) t3.setDaemon(True) + t4.setDaemon(True) t1.start() t2.start() t3.start() + t4.start() def byte_str(object): ''' @@ -259,7 +255,7 @@ if __name__ == '__main__': elif 'INTERVAL' in argc: INTERVAL = int(argc.split('INTERVAL=')[-1]) socket.setdefaulttimeout(30) - get_packetLostRate() + get_realtime_date() while 1: try: print("Connecting...") @@ -290,11 +286,8 @@ if __name__ == '__main__': print(data) raise socket.error - traffic = Traffic() - traffic.get() while 1: CPU = get_cpu() - NetRx, NetTx = traffic.get() NET_IN, NET_OUT = liuliang() Uptime = get_uptime() 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_used'] = HDDUsed array['cpu'] = CPU - array['network_rx'] = NetRx - array['network_tx'] = NetTx + array['network_rx'] = netSpeed.get("netrx") + array['network_tx'] = netSpeed.get("nettx") array['network_in'] = NET_IN array['network_out'] = NET_OUT array['ip_status'] = IP_STATUS