import psutil import platform import json from datetime import datetime def get_server_info(): # 获取服务器运行状态 info = {} # 1. 系统基本信息 info["system"] = { "os": platform.system(), "os_version": platform.version(), "node": platform.node(), "machine": platform.machine(), "processor": platform.processor(),# 处理器型号 "boot_time": datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") # 启动时间 } # 2. CPU 信息 cpu_usage = psutil.cpu_percent(interval=1) info["cpu"] = { "cpu_count": psutil.cpu_count(logical=False), "cpu_count_logical": psutil.cpu_count(logical=True), "cpu_usage": cpu_usage, "cpu_percent": psutil.cpu_percent(interval=1, percpu=True) } # 3. 内存信息 mem = psutil.virtual_memory() info["memory"] = { "total": round(mem.total / (1024**3), 2), "available": round(mem.available / (1024**3), 2), "percent": mem.percent } # 4. 磁盘信息 disks = [] for partition in psutil.disk_partitions(): usage = psutil.disk_usage(partition.mountpoint) disks.append({ "device": partition.device, "mountpoint": partition.mountpoint, "fstype": partition.fstype, "total": round(usage.total / (1024**3), 2), "used": round(usage.used / (1024**3), 2), "percent": usage.percent }) info["disks"] = disks # 5. 网络信息 net = psutil.net_io_counters() info["network"] = { "bytes_sent": round(net.bytes_sent / (1024**2), 2), "bytes_recv": round(net.bytes_recv / (1024**2), 2) } # 6. 进程信息(示例:前5个高CPU进程) processes = [] for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']): if len(processes) >= 5: break if proc.info['cpu_percent'] > 0: processes.append({ "PID": proc.info['pid'], "name": proc.info['name'], "cpu_percent": proc.info['cpu_percent'] }) info["top_processes"] = sorted(processes, key=lambda x: x["cpu_percent"], reverse=True) return info def get_server_json(): server_info = get_server_info() return json.dumps(server_info, indent=2, ensure_ascii=False)