From 21c7b9bd175d72702d3159735ab7fa1935806905 Mon Sep 17 00:00:00 2001 From: 8192bytes <8192bytes@disroot.org> Date: Sat, 17 Aug 2024 11:02:19 +0000 Subject: [PATCH 1/2] stats feature --- requirements.txt | 4 +++- service/__main__.py | 26 ++++++++++++++++---------- service/util/stats.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 service/util/stats.py diff --git a/requirements.txt b/requirements.txt index fefe83c..4beb048 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ distro==1.8.0 -requests==2.28.1 \ No newline at end of file +requests==2.28.1 +websockets==12.0 +psutil==6.0.0 diff --git a/service/__main__.py b/service/__main__.py index 32351eb..aebaa2c 100644 --- a/service/__main__.py +++ b/service/__main__.py @@ -2,6 +2,8 @@ from service.windows import generic as genericWindows from api.metadata import get_metadata from log.initialize import * +from service.util import stats +import time logger = initialize_logger() @@ -10,15 +12,19 @@ #uuid = get_uuid() uuid = '97136816-d27e-63ed-17ba-acc64438ef4f' -metadata = get_metadata(uuid) -logger.info("Got metadata like below;") -logger.info("{}", metadata) +stats.init_stats_process() -if platform.system() == 'Linux': - genericLinux.start(metadata) -elif platform.system() == 'Windows': - genericWindows.start(metadata) -else: - logger.info("============== End of Execution at {} =============".format( - time.asctime())) \ No newline at end of file +while True: + metadata = get_metadata(uuid) + logger.info("Got metadata like below;") + logger.info("{}", metadata) + + if platform.system() == 'Linux': + genericLinux.start(metadata) + elif platform.system() == 'Windows': + genericWindows.start(metadata) + else: + logger.info("============== End of Execution at {} =============".format( + time.asctime())) + sleep.time(600) diff --git a/service/util/stats.py b/service/util/stats.py new file mode 100644 index 0000000..542440b --- /dev/null +++ b/service/util/stats.py @@ -0,0 +1,34 @@ +from multiprocessing import Process +import asyncio +import websockets +import psutil +import time + +async def websocket_handler(websocket, path): + try: + while True: + cpu_percentages = psutil.cpu_percent(interval=1, percpu=True) + memory = psutil.virtual_memory()[2] + + io_read = psutil.disk_io_counters()[3] + io_write = psutil.disk_io_counters()[4] + time.sleep(1) + io_read = (psutil.disk_io_counters()[3] - io_read)/1048576 + io_write = (psutil.disk_io_counters()[4] - io_write )/1048576 + + + await websocket.send(f'{{"cpu" : {cpu_percentages}, "ram" : {memory}, "io" : [{io_read:.2f}, {io_write:.2f}] }}') + + await asyncio.sleep(1) + except websockets.ConnectionClosed: + pass + +def init_websocket(): + start_websocket = websockets.serve(websocket_handler, "0.0.0.0", 5050) + + asyncio.get_event_loop().run_until_complete(start_websocket) + asyncio.get_event_loop().run_forever() + +def init_stats_process(): + proc = Process(target=init_websocket) + proc.start() From 11962bf7d18bdbe00dd0de4210ef952fba7e5b2b Mon Sep 17 00:00:00 2001 From: 8192bytes <8192bytes@disroot.org> Date: Sat, 17 Aug 2024 11:17:11 +0000 Subject: [PATCH 2/2] error fix --- service/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/__main__.py b/service/__main__.py index aebaa2c..2efa278 100644 --- a/service/__main__.py +++ b/service/__main__.py @@ -27,4 +27,4 @@ else: logger.info("============== End of Execution at {} =============".format( time.asctime())) - sleep.time(600) + time.sleep(600)