This commit is contained in:
ygx
2026-03-29 20:44:50 +08:00
parent 564eb09b40
commit 9a6f224b9b
31 changed files with 4299 additions and 2764 deletions

199
src/api/ops/database.ts Normal file
View File

@@ -0,0 +1,199 @@
import { request } from '@/api/request'
/** 数据库类型枚举 */
export type DatabaseType = 'MySQL' | 'PostgreSQL' | 'Redis' | 'MongoDB' | 'DM' | 'KingBase'
/** 数据库服务状态 */
export type DatabaseStatus = 'online' | 'offline' | 'error'
/** 数据库服务接口返回数据结构 */
export interface DatabaseService {
id: number
created_at: string
updated_at: string
deleted_at: string | null
service_identity: string
server_identity: string
name: string
category: string
type: DatabaseType
host: string
port: number
username: string
password: string // 列表接口恒为空字符串,详情接口不返回
database: string
description: string
enabled: boolean
interval: number
extra: string
tags: string
status: DatabaseStatus
status_code: number
status_message: string
response_time: number
last_check_time: string
last_online_time: string | null
last_offline_time: string | null
continuous_errors: number
uptime: number
collect_on: boolean
collect_interval: number
collect_args: string
collect_last_result: string
}
/** 列表接口返回的分页数据 */
export interface DatabaseListResponse {
total: number
page: number
page_size: number
data: DatabaseService[]
}
/** 创建数据库服务请求参数 */
export interface CreateDatabaseParams {
service_identity?: string
server_identity?: string
name: string
category: string
type: DatabaseType
host: string
port: number
username?: string
password?: string
database?: string
description?: string
enabled?: boolean
interval?: number
extra?: string
tags?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
}
/** 更新数据库服务请求参数 */
export interface UpdateDatabaseParams {
service_identity?: string
server_identity?: string
name?: string
category?: string
type?: DatabaseType
host?: string
port?: number
username?: string
password?: string
database?: string
description?: string
enabled?: boolean
interval?: number
extra?: string
tags?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
}
/** 列表查询参数 */
export interface DatabaseQueryParams {
page?: number
size?: number
keyword?: string
enabled?: boolean
}
/** 指标采集请求参数 */
export interface CollectMetricsParams {
ids: number[]
persist?: boolean
}
/** 指标采集结果项 */
export interface CollectMetricsResultItem {
id: number
service_identity: string
metrics?: Record<string, any>
error?: string
}
/** 指标采集响应 */
export interface CollectMetricsResponse {
results: CollectMetricsResultItem[]
}
/** 指标元数据项 */
export interface MetricMetaItem {
metric_name: string
metric_unit: string
type: string
last_timestamp: string
}
/** 指标元数据响应 */
export interface MetricMetaResponse {
data_source: string
collector_identity: string
server_identity: string
count: number
metrics: MetricMetaItem[]
}
/** 指标元数据查询参数 */
export interface MetricMetaQueryParams {
data_source: string
server_identity?: string
keyword?: string
limit?: number
}
/**
* 获取数据库服务列表
* @param params 查询参数
*/
export const fetchDatabaseList = (params: DatabaseQueryParams) =>
request.get<DatabaseListResponse>('/DC-Control/v1/database', { params })
/**
* 获取数据库服务详情
* @param id 服务ID
*/
export const fetchDatabaseDetail = (id: number) =>
request.get<DatabaseService>(`/DC-Control/v1/database/${id}`)
/**
* 创建数据库服务
* @param data 创建参数
*/
export const createDatabase = (data: CreateDatabaseParams) =>
request.post<{ message: string; id: number }>('/DC-Control/v1/database', data)
/**
* 更新数据库服务
* @param id 服务ID
* @param data 更新参数
*/
export const updateDatabase = (id: number, data: UpdateDatabaseParams) =>
request.put<{ message: string }>(`/DC-Control/v1/database/${id}`, data)
/**
* 删除数据库服务(软删除)
* @param id 服务ID
*/
export const deleteDatabase = (id: number) =>
request.delete<{ message: string }>(`/DC-Control/v1/database/${id}`)
/**
* 按服务主键采集指标
* @param data 采集参数
*/
export const collectDatabaseMetrics = (data: CollectMetricsParams) =>
request.post<CollectMetricsResponse>('/DC-Control/v1/database/metrics/collect', data)
/**
* 查询指标元数据
* @param params 查询参数
*/
export const fetchMetricMeta = (params: MetricMetaQueryParams) =>
request.get<MetricMetaResponse>('/DC-Control/v1/services/metrics/meta', { params })

191
src/api/ops/middleware.ts Normal file
View File

@@ -0,0 +1,191 @@
import { request } from '@/api/request'
/** 中间件服务项 */
export interface MiddlewareItem {
id: number
created_at: string
updated_at: string
deleted_at: string | null
service_identity: string
server_identity: string
name: string
category: string
type: string
description: string
enabled: boolean
interval: number
extra: string
tags: string
status_url: string
status: string
status_code: number
status_message: string
response_time: number
last_check_time: string
last_online_time: string | null
last_offline_time: string | null
continuous_errors: number
uptime: number
agent_config: string
collect_on: boolean
collect_args: string
collect_interval: number
collect_last_result: string
}
/** 中间件列表响应 */
export interface MiddlewareListResponse {
total: number
page: number
page_size: number
data: MiddlewareItem[]
}
/** 中间件列表请求参数 */
export interface MiddlewareListParams {
page?: number
size?: number
keyword?: string
enabled?: boolean
}
/** 创建中间件请求参数 */
export interface MiddlewareCreateData {
service_identity?: string
server_identity?: string
name: string
category: string
type: string
description?: string
enabled?: boolean
interval?: number
extra?: string
tags?: string
status_url?: string
agent_config?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
policy_ids?: number[]
}
/** 更新中间件请求参数 */
export interface MiddlewareUpdateData {
service_identity?: string
server_identity?: string
name?: string
category?: string
type?: string
description?: string
enabled?: boolean
interval?: number
extra?: string
tags?: string
status_url?: string
agent_config?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
status?: string
status_code?: number
status_message?: string
response_time?: number
last_check_time?: string
last_online_time?: string | null
last_offline_time?: string | null
continuous_errors?: number
uptime?: number
policy_ids?: number[]
}
/** 采集配置更新参数 */
export interface MiddlewareCollectData {
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
}
/** 指标上报项 */
export interface MetricItem {
service_identity: string
timestamp: string
[key: string]: any
}
/** 指标上报请求参数 */
export interface MetricsUploadData {
metrics: MetricItem[]
}
/** 指标上报响应 */
export interface MetricsUploadResponse {
message: string
count: number
}
/** 指标元数据项 */
export interface MetricMetaItem {
metric_name: string
metric_unit: string
type: string
last_timestamp: string
}
/** 指标元数据响应 */
export interface MetricsMetaResponse {
data_source: string
collector_identity: string
server_identity: string
count: number
metrics: MetricMetaItem[]
}
/** 指标元数据请求参数 */
export interface MetricsMetaParams {
data_source: string
server_identity?: string
keyword?: string
limit?: number
}
/** 获取中间件服务列表(匿名接口) */
export const fetchMiddlewareList = (params?: MiddlewareListParams) => {
return request.get<MiddlewareListResponse>('/DC-Control/v1/middleware', { params })
}
/** 获取中间件服务详情 */
export const fetchMiddlewareDetail = (id: number) => {
return request.get<MiddlewareItem>(`/DC-Control/v1/middleware/${id}`)
}
/** 创建中间件服务 */
export const createMiddleware = (data: MiddlewareCreateData) => {
return request.post<{ message: string; id: number }>('/DC-Control/v1/middleware', data)
}
/** 更新中间件服务 */
export const updateMiddleware = (id: number, data: MiddlewareUpdateData) => {
return request.put<{ message: string }>(`/DC-Control/v1/middleware/${id}`, data)
}
/** 部分更新采集配置 */
export const patchMiddlewareCollect = (id: number, data: MiddlewareCollectData) => {
return request.patch<{ message: string }>(`/DC-Control/v1/middleware/${id}/collect`, data)
}
/** 删除中间件服务 */
export const deleteMiddleware = (id: number) => {
return request.delete<{ message: string }>(`/DC-Control/v1/middleware/${id}`)
}
/** 上报中间件服务指标(匿名接口) */
export const uploadMiddlewareMetrics = (data: MetricsUploadData) => {
return request.post<MetricsUploadResponse>('/DC-Control/v1/middleware/metrics/upload', data)
}
/** 查询中间件服务指标元数据 */
export const fetchMiddlewareMetricsMeta = (params: MetricsMetaParams) => {
return request.get<MetricsMetaResponse>('/DC-Control/v1/services/metrics/meta', { params })
}

View File

@@ -1,40 +1,130 @@
import { request } from "@/api/request";
import { request } from '@/api/request'
/** PC 列表查询参数 */
export interface PCListParams {
page?: number
size?: number
keyword?: string
collect_on?: boolean
}
/** 资源使用率信息 */
export interface ResourceInfo {
value: number // 使用率百分比
total?: string // 总量描述
used?: string // 已用描述
}
/** PC 数据结构 */
export interface PCItem {
id: number
created_at: string
updated_at: string
deleted_at: string | null
pc_identity: string
name: string
host: string
ip_address: string
description: string
os: string
os_version: string
kernel: string
server_type: string
tags: string
location: string
remote_access: string
remote_port: number
agent_config: string
status: string
last_check_time: string
collect_on: boolean
collect_args: string
collect_interval: number
collect_last_result: string
// 资源使用率(前端展示用,可能来自采集数据)
cpu_info?: ResourceInfo
memory_info?: ResourceInfo
disk_info?: ResourceInfo
}
/** PC 列表返回数据 */
export interface PCListResult {
total: number
page: number
page_size: number
data: PCItem[]
}
/** PC 创建参数 */
export interface PCCreateParams {
pc_identity?: string
name: string
host: string
ip_address?: string
description?: string
os?: string
os_version?: string
kernel?: string
server_type?: string
tags?: string
location?: string
remote_access?: string
remote_port?: number
agent_config?: string
status?: string
last_check_time?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
}
/** PC 更新参数 */
export interface PCUpdateParams {
id: number
pc_identity?: string
name?: string
host?: string
ip_address?: string
description?: string
os?: string
os_version?: string
kernel?: string
server_type?: string
tags?: string
location?: string
remote_access?: string
remote_port?: number
agent_config?: string
status?: string
last_check_time?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
}
/** 获取PC列表分页 */
export const fetchPCList = (data?: {
page?: number;
page_size?: number;
keyword?: string;
datacenter_id?: number;
rack_id?: number;
status?: string;
sort?: string;
order?: string;
}) => {
return request.post("/Assets/v1/pc/list", data || {});
};
export const fetchPCList = (params?: PCListParams) => {
return request.get<PCListResult>('/DC-Control/v1/pcs', { params })
}
/** 获取PC详情 */
export const fetchPCDetail = (id: number) => {
return request.get(`/Assets/v1/pc/detail/${id}`);
};
return request.get<PCItem>(`/DC-Control/v1/pcs/${id}`)
}
/** 创建PC */
export const createPC = (data: any) => {
return request.post("/Assets/v1/pc/create", data);
};
export const createPC = (data: PCCreateParams) => {
return request.post<PCItem>('/DC-Control/v1/pcs', data)
}
/** 更新PC */
export const updatePC = (data: any) => {
return request.put("/Assets/v1/pc/update", data);
};
export const updatePC = (id: number, data: Omit<PCUpdateParams, 'id'>) => {
return request.put<{ message: string }>(`/DC-Control/v1/pcs/${id}`, data)
}
/** 删除PC */
export const deletePC = (id: number) => {
return request.delete(`/Assets/v1/pc/delete/${id}`);
};
/** 获取机柜列表(用于下拉选择) */
export const fetchRackListForSelect = (datacenterId?: number) => {
return request.get("/Assets/v1/rack/all", { params: { datacenter_id: datacenterId } });
};
return request.delete<{ message: string }>(`/DC-Control/v1/pcs/${id}`)
}

View File

@@ -1,31 +1,94 @@
import { request } from "@/api/request";
import { request } from '@/api/request'
/** 服务器类型 */
export interface ServerItem {
id: number
created_at: string
updated_at: string
deleted_at: string | null
server_identity: string
name: string
host: string
ip_address: string
description: string
os: string
os_version: string
kernel: string
server_type: string
tags: string
location: string
remote_access: string
remote_port: number
agent_config: string
status: string
last_check_time: string
collect_on: boolean
collect_args: string
collect_interval: number
collect_last_result: string
}
/** 服务器列表响应 */
export interface ServerListResponse {
total: number
page: number
page_size: number
data: ServerItem[]
}
/** 服务器列表请求参数 */
export interface ServerListParams {
page?: number
size?: number
keyword?: string
collect_on?: boolean
}
/** 创建/更新服务器请求参数 */
export interface ServerFormData {
server_identity?: string
name?: string
host?: string
ip_address?: string
description?: string
os?: string
os_version?: string
kernel?: string
server_type?: string
tags?: string
location?: string
remote_access?: string
remote_port?: number
agent_config?: string
status?: string
last_check_time?: string
collect_on?: boolean
collect_args?: string
collect_interval?: number
collect_last_result?: string
}
/** 获取服务器列表(分页) */
export const fetchServerList = (params?: {
page?: number;
size?: number;
keyword?: string;
collect_on?: boolean;
}) => {
return request.get("/DC-Control/v1/servers", { params });
};
export const fetchServerList = (params?: ServerListParams) => {
return request.get<ServerListResponse>('/DC-Control/v1/servers', { params })
}
/** 获取服务器详情 */
export const fetchServerDetail = (id: number) => {
return request.get(`/DC-Control/v1/servers/${id}`);
};
return request.get<ServerItem>(`/DC-Control/v1/servers/${id}`)
}
/** 创建服务器 */
export const createServer = (data: any) => {
return request.post("/DC-Control/v1/servers", data);
};
export const createServer = (data: ServerFormData) => {
return request.post<ServerItem>('/DC-Control/v1/servers', data)
}
/** 更新服务器 */
export const updateServer = (id: number, data: any) => {
return request.put(`/DC-Control/v1/servers/${id}`, data);
};
export const updateServer = (id: number, data: Partial<ServerFormData>) => {
return request.put<{ message: string }>(`/DC-Control/v1/servers/${id}`, data)
}
/** 删除服务器 */
export const deleteServer = (id: number) => {
return request.delete(`/DC-Control/v1/servers/${id}`);
};
return request.delete<{ message: string }>(`/DC-Control/v1/servers/${id}`)
}

View File

@@ -85,6 +85,15 @@ export const request = {
},
delete<T = any>(url: string, config?: RequestConfig): Promise<T> {
return instance.delete(url, config);
},
patch<T = any>(url: string, data = {}, config?: RequestConfig): Promise<T> {
let params: any
if (config?.needWorkspace) {
params = { workspace: import.meta.env.VITE_APP_WORKSPACE, ...data };
} else {
params = data;
}
return instance.patch(url, params, config);
}
};