Add dashboard server monitor API

This commit is contained in:
2026-06-10 13:37:20 +08:00
parent bf03a72669
commit f7970c8a57
3 changed files with 280 additions and 0 deletions
+1
View File
@@ -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/
+1
View File
@@ -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';
@@ -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<string, any>;
cpu_stats: Record<string, any>;
}
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<string, NetworkInterfaceStats>;
interfaces: Record<string, NetworkInterface>;
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<string, any>;
memory_details: Record<string, number>;
system_load: Record<string, number>;
process_stats: Record<string, number>;
process_info: ProcessInfo;
network_interfaces: Record<string, Record<string, number>>;
network_connections: Array<Record<string, any>>;
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<ServerMonitorResponse>(
'/api/core/server_monitor/overview',
);
}
export async function getRealtimeStatsApi() {
return requestClient.get<RealtimeStats>('/api/core/server_monitor/realtime');
}
export async function getBasicInfoApi() {
return requestClient.get<BasicInfo>('/api/core/server_monitor/basic_info');
}
export async function getCpuInfoApi() {
return requestClient.get<CpuInfo>('/api/core/server_monitor/cpu_info');
}
export async function getMemoryInfoApi() {
return requestClient.get<MemoryInfo>('/api/core/server_monitor/memory_info');
}
export async function getDiskInfoApi() {
return requestClient.get<DiskInfo>('/api/core/server_monitor/disk_info');
}
export async function getNetworkInfoApi() {
return requestClient.get<NetworkInfo>(
'/api/core/server_monitor/network_info',
);
}
export async function getProcessInfoApi() {
return requestClient.get<ProcessInfo>(
'/api/core/server_monitor/process_info',
);
}
export async function getSystemLoadApi() {
return requestClient.get<SystemLoad>('/api/core/server_monitor/system_load');
}
export async function getBootTimeApi() {
return requestClient.get<BootTime>('/api/core/server_monitor/boot_time');
}
export async function getUsersInfoApi() {
return requestClient.get<UserInfo[]>('/api/core/server_monitor/users_info');
}
export async function getTemperatureInfoApi() {
return requestClient.get<Record<string, any>>(
'/api/core/server_monitor/temperature_info',
);
}
export async function getBatteryInfoApi() {
return requestClient.get<BatteryInfo>(
'/api/core/server_monitor/battery_info',
);
}