From f7970c8a57869d6cfdf54921bb18b06567589257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Wed, 10 Jun 2026 13:37:20 +0800 Subject: [PATCH] Add dashboard server monitor API --- .gitignore | 1 + web/apps/web-ele/src/api/core/index.ts | 1 + .../web-ele/src/api/core/server-monitor.ts | 278 ++++++++++++++++++ 3 files changed, 280 insertions(+) create mode 100644 web/apps/web-ele/src/api/core/server-monitor.ts diff --git a/.gitignore b/.gitignore index f863201..96f653b 100644 --- a/.gitignore +++ b/.gitignore @@ -308,6 +308,7 @@ web/apps/web-ele/src/api/core/redis-monitor.ts web/apps/web-ele/src/api/core/region.ts web/apps/web-ele/src/api/core/scheduler.ts web/apps/web-ele/src/api/core/server-monitor.ts +!web/apps/web-ele/src/api/core/server-monitor.ts web/apps/web-ele/src/router/routes/modules/wiki.ts web/apps/web-ele/src/views/_core/approval-center/ web/apps/web-ele/src/views/_core/data-source/ diff --git a/web/apps/web-ele/src/api/core/index.ts b/web/apps/web-ele/src/api/core/index.ts index f55626b..039cf33 100644 --- a/web/apps/web-ele/src/api/core/index.ts +++ b/web/apps/web-ele/src/api/core/index.ts @@ -20,6 +20,7 @@ export * from './role'; export * from './resource-scope'; export * from './system-config'; export * from './server-health'; +export * from './server-monitor'; export * from './ui-config'; export * from './user'; export * from './websocket'; diff --git a/web/apps/web-ele/src/api/core/server-monitor.ts b/web/apps/web-ele/src/api/core/server-monitor.ts new file mode 100644 index 0000000..b1faf41 --- /dev/null +++ b/web/apps/web-ele/src/api/core/server-monitor.ts @@ -0,0 +1,278 @@ +import { requestClient } from '#/api/request'; + +export interface BasicInfo { + hostname: string; + ip_address: string; + system: string; + platform: string; + architecture: string; + processor: string; + python_version: string; + machine: string; + node: string; + release: string; + version: string; +} + +export interface CpuInfo { + physical_cores: number; + total_cores: number; + cpu_percent: number; + cpu_percent_per_core: number[]; + max_frequency: number; + min_frequency: number; + current_frequency: number; + cpu_times: Record; + cpu_stats: Record; +} + +export interface MemoryVirtual { + total: number; + available: number; + used: number; + free: number; + percent: number; + active: number; + inactive: number; + buffers: number; + cached: number; + shared: number; +} + +export interface MemorySwap { + total: number; + used: number; + free: number; + percent: number; + sin: number; + sout: number; +} + +export interface MemoryInfo { + virtual: MemoryVirtual; + swap: MemorySwap; +} + +export interface DiskPartition { + device: string; + mountpoint: string; + file_system: string; + total_size: number; + used: number; + free: number; + percent: number; +} + +export interface DiskInfo { + partitions: DiskPartition[]; + total_read_bytes: number; + total_write_bytes: number; + total_read_count: number; + total_write_count: number; + total_read_time?: number; + total_write_time?: number; +} + +export interface NetworkTotal { + bytes_sent: number; + bytes_recv: number; + packets_sent: number; + packets_recv: number; + errin: number; + errout: number; + dropin: number; + dropout: number; +} + +export interface NetworkInterfaceStats { + bytes_sent: number; + bytes_recv: number; + packets_sent: number; + packets_recv: number; + errin: number; + errout: number; + dropin: number; + dropout: number; +} + +export interface NetworkAddress { + family: string; + address: string; + netmask?: string; + broadcast?: string; +} + +export interface NetworkInterfaceStatsDetail { + is_up: boolean; + duplex: string; + speed: number; + mtu: number; +} + +export interface NetworkInterface { + addresses: NetworkAddress[]; + stats: NetworkInterfaceStatsDetail; +} + +export interface NetworkConnection { + local_address: string; + status: string; + pid?: number; +} + +export interface NetworkInfo { + total: NetworkTotal; + per_interface: Record; + interfaces: Record; + connections: NetworkConnection[]; +} + +export interface Process { + pid: number; + name: string; + cpu_percent: number; + memory_percent: number; + status: string; + create_time: string; +} + +export interface ProcessInfo { + total_processes: number; + top_processes: Process[]; + running_processes: number; + sleeping_processes: number; +} + +export interface SystemLoad { + load_1min: number; + load_5min: number; + load_15min: number; + cpu_count: number; +} + +export interface BootTime { + boot_time: string; + uptime_seconds: number; + uptime_formatted: string; + uptime_days: number; + uptime_hours: number; + uptime_minutes: number; +} + +export interface UserInfo { + name: string; + terminal?: string; + host?: string; + started?: string; + pid?: number; +} + +export interface BatteryInfo { + percent: number; + power_plugged: boolean; + seconds_left?: number; +} + +export interface RealtimeStats { + cpu_percent: number; + memory_percent: number; + disk_io: { + read_speed: number; + write_speed: number; + }; + network_io: { + download_speed: number; + upload_speed: number; + }; + network_total: { + bytes_recv: number; + bytes_sent: number; + }; + disk_total: { + read_bytes: number; + write_bytes: number; + }; + cpu_details: Record; + memory_details: Record; + system_load: Record; + process_stats: Record; + process_info: ProcessInfo; + network_interfaces: Record>; + network_connections: Array>; + timestamp: string; +} + +export interface ServerMonitorResponse { + basic_info: BasicInfo; + cpu_info: CpuInfo; + memory_info: MemoryInfo; + disk_info: DiskInfo; + network_info: NetworkInfo; + process_info: ProcessInfo; + system_load: SystemLoad; + boot_time: BootTime; + users_info: UserInfo[]; + timestamp: string; +} + +export async function getServerOverviewApi() { + return requestClient.get( + '/api/core/server_monitor/overview', + ); +} + +export async function getRealtimeStatsApi() { + return requestClient.get('/api/core/server_monitor/realtime'); +} + +export async function getBasicInfoApi() { + return requestClient.get('/api/core/server_monitor/basic_info'); +} + +export async function getCpuInfoApi() { + return requestClient.get('/api/core/server_monitor/cpu_info'); +} + +export async function getMemoryInfoApi() { + return requestClient.get('/api/core/server_monitor/memory_info'); +} + +export async function getDiskInfoApi() { + return requestClient.get('/api/core/server_monitor/disk_info'); +} + +export async function getNetworkInfoApi() { + return requestClient.get( + '/api/core/server_monitor/network_info', + ); +} + +export async function getProcessInfoApi() { + return requestClient.get( + '/api/core/server_monitor/process_info', + ); +} + +export async function getSystemLoadApi() { + return requestClient.get('/api/core/server_monitor/system_load'); +} + +export async function getBootTimeApi() { + return requestClient.get('/api/core/server_monitor/boot_time'); +} + +export async function getUsersInfoApi() { + return requestClient.get('/api/core/server_monitor/users_info'); +} + +export async function getTemperatureInfoApi() { + return requestClient.get>( + '/api/core/server_monitor/temperature_info', + ); +} + +export async function getBatteryInfoApi() { + return requestClient.get( + '/api/core/server_monitor/battery_info', + ); +}