Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, status | |
| from fastapi.responses import JSONResponse | |
| import platform | |
| import psutil | |
| # Initialize the router for this feature | |
| router = APIRouter( | |
| prefix="/server-status", | |
| tags=["Server Info"], | |
| responses={404: {"description": "Not found"}}, | |
| ) | |
| def get_server_status(): | |
| """ | |
| Retrieves detailed hardware and software status of the server. | |
| """ | |
| # --- System Information --- | |
| system_info = { | |
| "system": platform.system(), | |
| "node_name": platform.node(), | |
| "release": platform.release(), | |
| "version": platform.version(), | |
| "machine": platform.machine(), | |
| "processor": platform.processor(), | |
| } | |
| # --- CPU Information --- | |
| cpu_info = { | |
| "physical_cores": psutil.cpu_count(logical=False), | |
| "total_cores": psutil.cpu_count(logical=True), | |
| "cpu_usage_percent": psutil.cpu_percent(interval=1), | |
| "cpu_frequency_mhz": f"{psutil.cpu_freq().current:.2f}", | |
| } | |
| # --- Memory Information (RAM) --- | |
| virtual_memory = psutil.virtual_memory() | |
| memory_info = { | |
| "total_gb": f"{virtual_memory.total / (1024**3):.2f}", | |
| "available_gb": f"{virtual_memory.available / (1024**3):.2f}", | |
| "used_gb": f"{virtual_memory.used / (1024**3):.2f}", | |
| "usage_percent": virtual_memory.percent, | |
| } | |
| # --- Disk Usage Information (Root partition) --- | |
| disk_usage = psutil.disk_usage('/') | |
| disk_info = { | |
| "total_gb": f"{disk_usage.total / (1024**3):.2f}", | |
| "used_gb": f"{disk_usage.used / (1024**3):.2f}", | |
| "free_gb": f"{disk_usage.free / (1024**3):.2f}", | |
| "usage_percent": disk_usage.percent, | |
| } | |
| # --- Network Information (Simple) --- | |
| network_info = { | |
| "bytes_sent_mb": f"{psutil.net_io_counters().bytes_sent / (1024**2):.2f}", | |
| "bytes_recv_mb": f"{psutil.net_io_counters().bytes_recv / (1024**2):.2f}", | |
| } | |
| response_data = { | |
| "system_information": system_info, | |
| "cpu_status": cpu_info, | |
| "memory_status": memory_info, | |
| "disk_status": disk_info, | |
| "network_io": network_info, | |
| } | |
| return JSONResponse(content=response_data, status_code=status.HTTP_200_OK) |