18 KiB
运维管理平台第一版开发内容
第一版目标:先做一个可用的运维控制台闭环,让用户可以在同一个平台里查看项目环境状态、管理微服务、执行发布/重启、查看公共数据资源状态,并追踪操作记录。
第一版不做成数据库客户端,也不引入复杂审批流。生产环境相关操作先通过二次确认、影响范围提示和审计记录来控制风险。
1. 第一版范围
1.1 必须完成
- 全局液态玻璃 UI 基础层。
- 项目运维台首页。
- 微服务列表。
- 服务详情页。
- 发布服务抽屉。
- 重启服务确认流程。
- 发布记录页。
- 数据资源状态页。
- 日志与事件页。
- 权限与审计页。
- Mock 数据层或接口适配层。
1.2 第一版暂不做
- 生产数据库在线查询。
- 数据库恢复操作。
- 完整审批流。
- 多租户计费和组织管理。
- 自动扩缩容策略配置。
- 复杂灰度规则编排。
- 实时 WebSocket 日志流,第一版可用轮询或静态刷新替代。
- Kubernetes YAML 在线编辑。
2. 用户角色
| 角色 | 第一版权限 |
|---|---|
| SRE Admin | 查看全部页面,执行发布、重启、回滚入口可见,查看审计 |
| Developer | 查看服务、日志、事件,非生产环境可发版,生产环境只读 |
| Viewer | 只读查看首页、服务、资源、发布记录 |
权限第一版可以先前端状态控制,但操作接口必须预留服务端校验字段。
3. 全局信息架构
左侧导航:
- 总览
- 微服务
- 发布记录
- 数据漫游
- 配置中心
- 日志与事件
- 监控告警
- 权限与审计
第一版页面实现优先级:
- 总览
- 微服务
- 服务详情
- 发布记录
- 数据漫游
- 日志与事件
- 权限与审计
配置中心和监控告警第一版保留导航入口,可以先显示建设中空状态。
4. 全局框架开发
4.1 App Shell
开发内容:
- 左侧玻璃导航。
- 顶部上下文工具栏。
- 主内容区。
- 右侧操作抽屉容器。
- 全局 Toast 容器。
顶部工具栏字段:
- 项目:
Project A - 环境:
dev / test / staging / prod - 集群:
cluster-cn-1 - 当前告警数
- 当前用户
- 当前角色
验收标准:
- 切换项目、环境、集群后,当前页面列表和统计数据同步刷新。
prod环境下,发布和重启流程显示生产环境提醒。- 侧边导航、顶部栏、主内容区都符合液态玻璃层级规范。
4.2 全局样式基础
开发内容:
tokens.css:颜色、圆角、阴影、字号、间距。glass.css:玻璃容器、强玻璃面、弱玻璃面。layout.css:后台布局、页面间距、响应式约束。components.css:按钮、Badge、表格、输入框、菜单、Tabs。
验收标准:
- 所有页面共用同一套 Token。
- 禁止页面内随意写新的主色、状态色和玻璃阴影。
- 不支持
backdrop-filter时,表格和表单仍然可读。
5. 页面开发内容
5.1 总览页
页面目标:用户进入平台后第一眼看到当前项目环境是否健康。
模块:
- 顶部筛选栏。
- 状态总览卡。
- 微服务列表。
- 最近事件。
- 数据资源摘要。
状态总览卡:
| 卡片 | 数据 |
|---|---|
| 运行中服务数 | healthy 服务数量 |
| 异常服务数 | warning + critical 服务数量 |
| 最近发布 | 服务名、版本、时间 |
| 活跃告警 | 当前未恢复告警数量 |
| 数据库状态 | 正常资源数 / 总资源数 |
微服务列表字段:
- 服务名
- 状态
- 当前版本
- 实例数
- CPU / 内存
- 最近发布
- 负责人
- 操作:日志、详情、更多
更多菜单:
- 发布
- 重启
- 配置
- 回滚
验收标准:
- 首页主体是微服务表格,不是卡片墙。
- 异常服务在表格中有清晰状态。
- 点击发布打开发布抽屉。
- 点击重启打开重启确认流程。
- 点击详情进入服务详情页。
5.2 微服务页
页面目标:集中检索和管理所有服务。
筛选能力:
- 服务名搜索。
- 状态筛选。
- 负责人筛选。
- 命名空间筛选。
列表字段:
- 服务名
- 命名空间
- 状态
- 当前版本
- 实例数
- CPU
- 内存
- 最近发布
- 负责人
- 操作
验收标准:
- 搜索和筛选可以组合使用。
- 表格支持空状态、加载状态、错误状态。
- 危险操作不直接暴露为大按钮。
5.3 服务详情页
页面目标:围绕单个服务完成状态排查和操作决策。
顶部信息:
- 返回按钮。
- 面包屑:项目 / 环境 / 集群 / 服务。
- 服务名。
- 状态 Badge。
- 命名空间。
- 负责人。
- 创建时间。
Tabs:
- 概览
- 实例
- 发布
- 日志
- 监控
- 配置
- 事件
概览 Tab:
- 状态摘要。
- 依赖服务:MySQL、Redis、MongoDB、MQ。
- 监控概览:CPU、内存、QPS、错误率、平均响应延迟、P95 响应延迟。
- 最近事件。
- 实例列表。
实例 Tab:
- Pod / 实例名。
- 节点。
- 重启次数。
- 健康状态。
- 运行时长。
- 操作:查看日志、重启单实例。
发布 Tab:
- 当前版本。
- 历史版本。
- 发布策略。
- 操作人。
- 发布时间。
- 状态。
日志 Tab:
- 时间范围。
- 日志级别。
- 关键词搜索。
- 服务实例筛选。
- 日志列表。
监控 Tab:
- CPU。
- 内存。
- QPS。
- 错误率。
- 延迟。
配置 Tab:
- 环境变量只读展示。
- 配置项只读展示。
- Secret 只显示引用名,不显示明文。
事件 Tab:
- 健康检查失败。
- 发布事件。
- 重启事件。
- 配置变更事件。
- 依赖连接异常。
验收标准:
- 所有 Tabs 有稳定布局,不因为数据为空而塌陷。
- 日志、监控、事件可以按当前服务过滤。
- Secret 不展示明文。
- 从详情页也可以打开发布抽屉和重启确认流程。
5.4 发布服务抽屉
页面目标:完成一次可控、可追踪的服务发布。
入口:
- 首页服务行更多菜单。
- 微服务页服务行更多菜单。
- 服务详情页主操作。
流程:
- 选择版本或镜像 Tag。
- 选择发布策略。
- 查看变更内容。
- 预检查。
- 确认执行。
- 发布中。
- 完成。
发布策略第一版:
| 策略 | 第一版能力 |
|---|---|
| 滚动发布 | 可选择,默认推荐 |
| 灰度发布 | 可展示为禁用或基础选项 |
| 全量发布 | 可选择,但显示高风险提示 |
预检查项:
- 实例状态。
- 依赖服务。
- 配置变更。
- 镜像拉取。
生产环境规则:
- 显示当前环境
prod。 - 显示影响实例数。
- 要求勾选“我已阅读并确认以上信息”。
- 主按钮在勾选前禁用。
- 操作完成后生成审计记录。
验收标准:
- 发布抽屉顶部和底部固定,中间可滚动。
- 发布前能看到当前版本和目标版本。
- 发布执行中显示步骤状态。
- 发布成功后服务当前版本更新。
- 发布失败时显示失败原因和查看事件入口。
5.5 重启确认流程
页面目标:安全执行单实例或全部实例重启。
入口:
- 服务行更多菜单。
- 服务详情页实例列表。
流程:
- 选择重启范围:单实例 / 全部实例。
- 选择重启方式:滚动重启 / 立即重启。
- 展示影响范围。
- 确认执行。
- 展示执行结果。
生产环境规则:
- 默认选择滚动重启。
- 立即重启需要二次确认。
- 显示预计影响实例数。
验收标准:
- 全部实例重启必须展示影响范围。
- 单实例重启必须展示实例名和节点。
- 操作完成后生成事件和审计记录。
5.6 发布记录页
页面目标:追踪所有发布行为。
筛选能力:
- 时间范围。
- 服务。
- 环境。
- 状态。
- 操作人。
表格字段:
- 时间。
- 服务。
- 环境。
- 版本变更。
- 发布策略。
- 操作人。
- 状态。
- 耗时。
- 操作:详情、查看事件。
发布详情:
- 基本信息。
- 预检查结果。
- 步骤日志。
- 关联审计记录。
验收标准:
- 发布成功、失败、执行中、已回滚有清晰状态。
- 点击记录可以查看发布详情。
- 首页和服务详情页的发布记录数据一致。
5.7 数据资源状态页
页面目标:从运维视角查看公共数据资源状态。
资源类型:
- MySQL。
- MongoDB。
- Redis。
- MQ / Kafka。
列表字段:
- 资源名。
- 类型。
- 状态。
- 主从/副本状态。
- 容量。
- 连接数。
- 慢查询/错误摘要。
- 备份状态。
- 关联服务。
- 负责人。
资源详情:
- 基础信息。
- 连接状态。
- 容量趋势。
- 关联服务列表。
- 最近异常事件。
- 最近备份记录。
第一版限制:
- 不开放 SQL 查询。
- 不开放 Mongo 查询。
- 不开放备份恢复。
- 可以展示“申请权限”或“建设中”入口,但不执行真实操作。
验收标准:
- 用户可以看出 MySQL、MongoDB、Redis、MQ 是否正常。
- 能看出资源和服务之间的关联关系。
- 生产环境不出现直接查询入口。
5.8 日志与事件页
页面目标:集中排查问题。
日志筛选:
- 时间范围。
- 服务。
- 实例。
- 级别。
- 关键词。
事件筛选:
- 时间范围。
- 服务。
- 类型。
- 状态。
事件类型:
- 发布。
- 重启。
- 健康检查。
- 配置变更。
- 数据库连接异常。
验收标准:
- 从服务详情跳转过来时自动带上服务过滤条件。
- 错误事件可以跳转到服务详情。
- 日志区支持空状态和错误状态。
5.9 权限与审计页
页面目标:追踪谁在什么环境操作了什么。
审计字段:
- 操作时间。
- 操作人。
- 角色。
- 操作对象。
- 操作类型。
- 环境。
- 集群。
- 执行结果。
- 关联发布记录。
- 关联事件。
操作类型:
- 发布服务。
- 重启服务。
- 重启实例。
- 回滚版本。
- 查看配置。
- 查看日志。
验收标准:
- 发布、重启操作完成后必须出现审计记录。
- 生产环境操作有明显标识。
- 审计列表支持按时间、操作人、环境筛选。
6. 核心组件清单
6.1 基础组件
GlassSurfaceGlassPanelGlassDrawerButtonIconButtonStatusBadgeMetricCardProgressMeterTabsSelectSegmentedControlSearchInputDropdownMenuToastSkeletonEmptyState
6.2 业务组件
AppSidebarTopContextBarServiceTableServiceActionMenuServiceHeaderMetricsGridMetricLineChartInstanceTableReleaseDrawerRestartDialogReleaseRecordTableDataResourceTableEventTimelineAuditTable
7. 数据结构
7.1 Project
type Project = {
id: string;
name: string;
};
7.2 Environment
type Environment = "dev" | "test" | "staging" | "prod";
7.3 Cluster
type Cluster = {
id: string;
name: string;
region: string;
};
7.4 Service
type ServiceStatus = "healthy" | "warning" | "critical" | "unknown" | "running";
type Service = {
id: string;
name: string;
namespace: string;
status: ServiceStatus;
version: string;
desiredInstances: number;
readyInstances: number;
cpuUsage: number;
memoryUsage: number;
lastReleaseAt: string;
owner: string;
dependencies: string[];
};
7.5 ServiceInstance
type ServiceInstance = {
id: string;
name: string;
node: string;
status: ServiceStatus;
restartCount: number;
uptime: string;
};
7.6 ReleaseRecord
type ReleaseStatus = "success" | "failed" | "running" | "rolled_back";
type ReleaseStrategy = "rolling" | "canary" | "full";
type ReleaseRecord = {
id: string;
serviceId: string;
serviceName: string;
environment: Environment;
fromVersion: string;
toVersion: string;
strategy: ReleaseStrategy;
operator: string;
status: ReleaseStatus;
durationSeconds: number;
createdAt: string;
};
7.7 DataResource
type DataResourceType = "mysql" | "mongodb" | "redis" | "kafka";
type DataResourceStatus = "healthy" | "warning" | "critical" | "unknown";
type DataResource = {
id: string;
name: string;
type: DataResourceType;
status: DataResourceStatus;
topology: string;
capacityUsedPercent: number;
connections: number;
slowQueryCount: number;
backupStatus: string;
relatedServices: string[];
owner: string;
};
7.8 EventRecord
type EventType = "release" | "restart" | "health_check" | "config_change" | "database_connection";
type EventRecord = {
id: string;
type: EventType;
serviceId?: string;
resourceId?: string;
level: "info" | "warning" | "error";
message: string;
createdAt: string;
};
7.9 AuditRecord
type AuditRecord = {
id: string;
operator: string;
role: string;
action: string;
targetType: "service" | "instance" | "resource" | "config";
targetName: string;
environment: Environment;
cluster: string;
result: "success" | "failed";
relatedId?: string;
createdAt: string;
};
8. 接口草案
第一版可以先用 Mock 接口,真实后端接入时保持路径和字段稳定。
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/projects |
项目列表 |
| GET | /api/clusters |
集群列表 |
| GET | /api/dashboard/summary |
首页统计 |
| GET | /api/services |
服务列表 |
| GET | /api/services/:id |
服务详情 |
| GET | /api/services/:id/instances |
服务实例 |
| GET | /api/services/:id/metrics |
服务监控 |
| GET | /api/services/:id/logs |
服务日志 |
| GET | /api/services/:id/events |
服务事件 |
| POST | /api/services/:id/releases |
创建发布任务 |
| POST | /api/services/:id/restart |
重启服务 |
| GET | /api/releases |
发布记录 |
| GET | /api/releases/:id |
发布详情 |
| GET | /api/resources |
数据资源列表 |
| GET | /api/resources/:id |
数据资源详情 |
| GET | /api/events |
事件列表 |
| GET | /api/audits |
审计列表 |
所有列表接口都需要支持:
projectIdenvironmentclusterIdpagepageSize
9. Mock 数据要求
第一版 Mock 数据必须覆盖以下状态:
- Healthy 服务。
- Warning 服务。
- Critical 服务。
- 实例数不满足期望值。
- CPU / 内存较高。
- 发布成功。
- 发布失败。
- 发布中。
- MySQL 正常。
- MongoDB 警告。
- Redis 正常。
- Kafka 异常。
- prod 环境发布确认。
- 权限不足禁用操作。
验收标准:
- 不依赖真实后端也能完整走通页面和操作流程。
- Mock 发布成功后,当前服务版本和发布记录同步变化。
- Mock 重启成功后,事件列表和审计列表同步新增记录。
10. 路由建议
/overview
/services
/services/:serviceId
/releases
/resources
/resources/:resourceId
/logs-events
/audit
/settings
/alerts
第一版默认进入 /overview。
11. 开发里程碑
11.1 M1:视觉基础和全局框架
交付:
- Token。
- 玻璃样式。
- App Shell。
- 侧边导航。
- 顶部上下文工具栏。
- 基础按钮、Badge、表格、输入框。
验收:
- 页面整体接近 UI 规范中的液态玻璃风格。
- 基础组件有 hover、active、focus、disabled 状态。
11.2 M2:首页和微服务列表
交付:
- 总览页。
- 微服务列表页。
- 服务表格。
- 状态总览卡。
- 搜索和筛选。
验收:
- 可以通过首页定位异常服务。
- 可以进入服务详情。
- 可以打开发布和重启入口。
11.3 M3:服务详情和操作流程
交付:
- 服务详情页。
- Tabs。
- 监控概览。
- 实例列表。
- 发布抽屉。
- 重启确认。
验收:
- 发布流程可完整走完。
- 重启流程可完整走完。
- prod 环境必须出现确认约束。
11.4 M4:记录、资源和审计
交付:
- 发布记录页。
- 数据资源状态页。
- 日志与事件页。
- 权限与审计页。
验收:
- 发布和重启后有事件记录。
- 发布和重启后有审计记录。
- 数据资源页不暴露生产查询入口。
11.5 M5:联调和验收
交付:
- Mock 数据完整。
- 接口适配层稳定。
- 空、加载、错误状态补齐。
- 响应式和可访问性检查。
验收:
- 所有第一版页面可通过导航访问。
- 所有第一版操作可从入口到反馈闭环。
- UI 视觉符合液态玻璃规范。
12. 验收清单
12.1 视觉验收
- 页面背景是浅色冰蓝液态玻璃风格。
- 主界面信息密度足够,不是营销页。
- 表格、抽屉、状态卡、菜单的玻璃层级清晰。
- 状态色只用于语义,不滥用。
- 文本不和背景纹理冲突。
12.2 功能验收
- 能切换项目、环境、集群。
- 能查看服务状态。
- 能搜索和筛选服务。
- 能进入服务详情。
- 能执行发布流程。
- 能执行重启流程。
- 能查看发布记录。
- 能查看数据资源状态。
- 能查看日志和事件。
- 能查看审计记录。
12.3 风险验收
- prod 发布必须二次确认。
- prod 重启必须二次确认。
- 危险操作不裸露成主按钮。
- Secret 不显示明文。
- 生产数据库没有直接查询入口。
- 发布和重启都有审计记录。
12.4 状态验收
- 页面有 Loading 状态。
- 页面有 Empty 状态。
- 页面有 Error 状态。
- 操作有 Success 反馈。
- 操作有 Failed 反馈。
- 禁用按钮有原因说明。
13. 第一版最终交付物
- 可运行的前端页面。
- 全局 UI Token 和玻璃样式。
- 第一版 Mock 数据。
- 第一版接口适配层。
- 核心业务组件。
- 发布和重启操作闭环。
- 发布、事件、审计记录闭环。
- README 中补充启动、构建、预览和验证方式。
14. 后续版本方向
第二版建议补充:
- 接入真实 Kubernetes / Docker 部署状态。
- 接入真实日志系统。
- 接入 Prometheus 或其他监控数据。
- 增加灰度发布策略。
- 增加回滚流程。
- 增加审批流。
- 增加数据库备份恢复。
- 增加告警规则管理。
- 增加团队和权限模型。