|
|
@ -124,6 +124,23 @@ def get_memory_info(client, timeout, info_list:list=None): |
|
|
|
info_list.append(f'memory: {e}') |
|
|
|
return None |
|
|
|
|
|
|
|
def get_network_info(client, timeout, interface_name, info_list:list=None): |
|
|
|
try: |
|
|
|
if interface_name is None: |
|
|
|
return None |
|
|
|
stdin, stdout, stderr = client.exec_command(f'ifstat -i {interface_name} 0.1 1', timeout=timeout) |
|
|
|
output = stdout.read().decode().split('\n')[2] |
|
|
|
data = output.split() |
|
|
|
result = { |
|
|
|
"in": float(data[0]), |
|
|
|
"out": float(data[1]) |
|
|
|
} |
|
|
|
return result |
|
|
|
except Exception as e: |
|
|
|
if info_list is not None: |
|
|
|
info_list.append(f'network: {e}') |
|
|
|
return None |
|
|
|
|
|
|
|
# 持续获取一个服务器的信息 |
|
|
|
def keep_check_one(server: dict, shared_data_list: dict, server_title: str, interval: float, re_connect_time: float=5): |
|
|
|
# 处理一下需要检查的存储空间路径 |
|
|
@ -156,12 +173,15 @@ def keep_check_one(server: dict, shared_data_list: dict, server_title: str, inte |
|
|
|
storage_info = get_storage_info(client, interval*3, server['storage_list'], info_list=error_info_list) |
|
|
|
# 内存信息 |
|
|
|
memory_info = get_memory_info(client, interval*3, info_list=error_info_list) |
|
|
|
# 网络信息 |
|
|
|
network_info = get_network_info(client, interval*3, server.get('network_interface_name', None), info_list=error_info_list) |
|
|
|
|
|
|
|
# 记录信息 |
|
|
|
with data_list_lock: |
|
|
|
shared_data_list[server_title]['gpu_info_list'] = gpu_info |
|
|
|
shared_data_list[server_title]['storage_info_list'] = storage_info |
|
|
|
shared_data_list[server_title]['memory_info'] = memory_info |
|
|
|
shared_data_list[server_title]['network_info'] = network_info |
|
|
|
shared_data_list[server_title]['updated'] = True |
|
|
|
shared_data_list[server_title]['maxGPU'] = len(gpu_info) |
|
|
|
if len(error_info_list) > 0: |
|
|
@ -217,6 +237,11 @@ def filter_data(title_list: list): |
|
|
|
memory_info = data_dict[title].get('memory_info', None) |
|
|
|
if memory_info is not None: |
|
|
|
server_data[title]['memory_info'] = memory_info |
|
|
|
# 网络 |
|
|
|
network_info = data_dict[title].get('network_info', None) |
|
|
|
if network_info is not None: |
|
|
|
server_data[title]['network_info'] = network_info |
|
|
|
|
|
|
|
result['time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') |
|
|
|
result['server_data'] = server_data |
|
|
|
return result |
|
|
|