feat
This commit is contained in:
199
src/api/ops/database.ts
Normal file
199
src/api/ops/database.ts
Normal 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
191
src/api/ops/middleware.ts
Normal 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 })
|
||||
}
|
||||
@@ -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}`)
|
||||
}
|
||||
|
||||
@@ -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}`)
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user