Files
Logan.Li fd60361d93 chore: 统一本地服务器与远程仓库源码
- 合并 main 与 master 历史并以服务器结构为基线
- 保留迁移、数据保留、AWS 账单与部署安全能力
- 建立 SDD 规格和 CI 验证闭环
2026-08-05 20:03:25 +08:00

240 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AIOps 智能运维平台
> 企业级云原生智能运维解决方案,集成资产管理、Kubernetes 管理、应用发布、监控告警、自动化运维和 AI 智能分析。
## 技术栈
### 前端
- React 19 + TypeScript + Vite
- Tailwind CSS + shadcn/ui + **PageShell 统一页面骨架**(`dg-page*` 设计令牌)
- Zustand (状态管理) / TanStack Query (数据获取)
- i18next 国际化(中/英双语,`zh-CN` / `en-US`)
- Recharts (图表) / Lucide React (图标)
- CodeMirror 6 (YAML 编辑器) / xterm.js (WebSocket 终端)
### 后端
- Go 1.25 / Gin Web Framework
- GORM (ORM) / MySQL 8.0 / Redis 7 / SQLite (local 模式)
- JWT 认证 / Zap 日志 / Viper 配置
- WebSocket (Gorilla) / PTY 终端 (creack/pty)
- 自研轻量 Kubernetes HTTP 客户端(channel.k8s.io WebSocket 协议)
- go:embed 嵌入前端静态资源(单二进制 / 单容器部署)
- **LDAP / Active Directory** 统一身份认证(登录、用户列表、批量导入)
- Agent CLI 引擎(`pkg/agentcli/`):ReAct + Evolver + 双协议 LLM(OpenAI / Anthropic)
### Agent
- Go 1.22 模块(Go 1.25 工具链)静态编译 (CGO_ENABLED=0)
- /proc 指标采集 + 远程任务双通道
- 支持 linux-amd64 / linux-arm64 / darwin-arm64
## 三种部署方式
| 方式 | 命令 | 架构 | 适用场景 |
|------|------|------|----------|
| **① 独立二进制** | `./run.sh build` → `./aiops` | 单文件 embed,输出到项目根目录 | 无 Docker/K8s,边缘/本机 |
| **② Docker Compose** | `./run.sh docker up` | 3 容器 (MySQL + Redis + AIOps embed) | 单机生产、演示 |
| **③ Kubernetes** | `./run.sh kubernetes deploy` | embed 单容器 + MySQL/Redis StatefulSet | 生产集群,`devops` 命名空间 |
统一入口 `./run.sh`,详见 `./run.sh help`。
### 版本与镜像
- **发布版本**:Git tag 为权威来源(如 `v1.5.0`)
- **Docker 镜像**:`lghost/aiops:<tag>`(Docker Hub)
- **二进制版本**:`./aiops version` / `GET /version`
- **一键发版**:`./run.sh release v1.5.0`(打 tag → 编译二进制 → 构建镜像 → 推送 Docker Hub → 更新 K8s manifest)
```bash
docker login
./run.sh release v1.5.0
./aiops version # 查看二进制版本
curl http://localhost:8080/version # 查看运行版本
```
## 快速开始
### 本地开发
```bash
./run.sh dev # 前端 :5173 + 后端 :8080 (热重载)
./run.sh stop # 停止
./run.sh status # 查看状态
```
### Docker Compose 部署
```bash
# 日常推荐:镜像已存在时,跳过构建直接启动(低负载)
./run.sh docker fast
# 代码有变更:增量构建 + 启动
./run.sh docker up
./run.sh docker up v1.5.0 # 指定版本构建
# 仅升级应用容器,不重建 MySQL/Redis
./run.sh docker upgrade
# 依赖或缓存异常时:无缓存全量重建
./run.sh docker up fresh
./run.sh docker push v1.5.0 # 构建并推送到 lghost/aiops
./run.sh docker down # 停止容器
./run.sh docker logs # 查看日志
```
访问地址(前后端同一端口):
- http://localhost:8080
- http://localhost:8080/version(健康检查推荐,无 DB 依赖)
> **小机器提示(2 核 / 8GB)**:`docker up` 会触发前端 `npm run build`(临时 `node` 进程 CPU 可达 100%+),属构建期正常现象;AIOps 运行时仅为 Go 二进制,稳态 CPU 通常 < 1%。日常用 `docker fast` 可避免重复编译。
### Kubernetes 部署
```bash
./run.sh kubernetes deploy # 构建镜像 + 全量部署
./run.sh kubernetes upgrade v1.5.0 # 指定版本滚动更新
./run.sh kubernetes push v1.5.0 # 构建并推送 Docker Hub
# 访问: http://<NODE_IP>:30080
# 镜像: lghost/aiops:<tag>
```
### 独立二进制部署
```bash
./run.sh build # 编译到项目根目录 ./aiops
./run.sh build tag v1.5.0 # 指定版本编译
./aiops version # 查看版本
./aiops --mode local # 本地模式 (SQLite + redka)
./run.sh binary upgrade # 停服 → 重编译 → 后台启动
```
> Mac 上 `./run.sh build` 产出 **darwin** 二进制,仅本机可用。
> Linux 服务器请在 Linux 上构建,或使用 Docker/K8s embed 镜像(`Dockerfile` 固定 `GOOS=linux GOARCH=amd64`)。
### Agent 构建
```bash
./run.sh build agent # 交叉编译 Agent (linux-amd64 + linux-arm64)
./agent/bin/aiops-agent-linux-amd64 version
```
### 默认账号
| 用户名 | 密码 | 角色 |
|--------|------|------|
| admin | 123456 | 超级管理员 |
| ops01 | 123456 | 运维 |
| dev01 | 123456 | 开发 |
> 生产环境请修改默认密码与 `JWT_SECRET`。
## LDAP / Active Directory
系统设置 → LDAP 支持 **OpenLDAP** 与 **Active Directory** 双目录:
| 能力 | OpenLDAP | Active Directory |
|------|----------|------------------|
| 连接 / 登录认证 | ✅ | ✅ |
| 用户列表 / 批量导入 | ✅ | ✅ |
| OU / 容器浏览 | ✅ | ✅(含 `CN=Users` 等容器) |
| 目录内创建用户 | ✅ | ✅(需 LDAPS + 服务账号权限) |
**AD 推荐配置示例**:
| 配置项 | 推荐值 |
|--------|--------|
| 目录类型 | Active Directory |
| Base DN | `DC=company,DC=com` |
| Admin DN | `CN=svc-aiops,CN=Users,DC=company,DC=com` |
| 搜索过滤器 | 留空(使用内置兼容过滤器)或 `(sAMAccountName=%s)` |
| 用户名字段 | `sAMAccountName` |
| LDAPS | 创建 AD 用户时必须启用 |
## 项目结构
```
aiops/
├── frontend/ # 前端 (React + TypeScript)
│ ├── src/
│ │ ├── api/ # API 封装(按菜单域拆分:server/k8s/monitor/deploy/...)
│ │ ├── pages/ # 复杂页面(monitor/approval/audit 等域级页面)
│ │ ├── components/ # 业务组件 + layout(PageShell/PageTabs/...)
│ │ ├── locales/ # i18n 翻译文件 (zh-CN / en-US)
│ │ ├── i18n/ # i18next 初始化
│ │ ├── hooks/ # 自定义 Hooks(useTheme / useConfirm 等)
│ │ ├── store/ # Zustand 状态管理
│ │ └── types/ # TypeScript 类型
│ └── Dockerfile # [legacy] 独立 Nginx 镜像,Compose 已改用 embed
│
├── backend/ # 后端 (Go + Gin)
│ ├── main.go # 应用入口
│ ├── embed.go # go:embed 前端静态资源
│ ├── static/ # 前端构建产物(embed 目标目录)
│ ├── controller/ # HTTP 处理器(60+ 文件按领域拆分)
│ ├── router/ # 路由注册
│ ├── model/ # GORM 数据模型(86+ 表)
│ ├── pkg/ # agentcli/remoteexec/kubernetesclient/...
│ └── Dockerfile # [legacy] 分离式后端镜像
│
├── agent/ # 监控 Agent(独立 Go module)
├── docs/ # 开发文档
│ └── agent/ # Agent CLI 设计文档集
├── deploy/kubernetes/ # K8s 部署清单 (devops 命名空间)
├── docker-compose.yml # MySQL + Redis + AIOps embed(3 容器)
├── docker-compose.k8s.yml # 单应用容器(连接外部 DB)
├── Dockerfile # embed 单容器镜像(推荐)
├── run.sh # 统一入口脚本
└── aiops # 独立二进制产物(gitignore,项目根目录)
```
## 核心功能
| 模块 | 说明 |
|------|------|
| 仪表盘 | 成本统计、告警聚合、Top 资源、SSL 提醒、趋势图表 |
| 资产管理 | 服务器 CRUD、批量导入、WebShell、云账号/域名/账单 |
| Kubernetes 管理 | 多集群、Deployment 三模式编辑器、Pod 终端/文件浏览、拓扑图、国际化 |
| 应用发布 | CI/CD 流水线、发布配置、SSH + K8s 双路径部署、凭证管理 |
| 监控中心 | 监控大屏、主机指标、SNMP/站点拨测、**中间件监控**(Redis/MySQL 直连采集)、日志中心(Loki/ES)、**日志告警引擎** |
| 自动化运维 | 定时任务、脚本库、**远程执行**(Go-native SSH,执行/上传) |
| AIOps 智能 | AI 助手、告警分析、容量预测、**Agent CLI**(ReAct + WebSocket 实时回传 + 终端审计回放) |
| 资源申请 | 云服务器/应用部署申请审批 |
| 系统管理 | 用户/角色、**LDAP / AD 统一认证**、操作审计、终端会话审计、凭证配置(7 种类型)、大模型设置(OpenAI + Anthropic 双协议) |
### UI 与体验
- **PageShell 设计系统**:全站统一页面骨架(标题区 / 指标条 / 工具栏 / Tab / 内容区),CSS 变量驱动
- **7 套主题**:跟随系统、深海蓝、明亮白 + One Dark / Dracula / Tokyo Night / Catppuccin
- **国际化**:i18next 框架,已覆盖 dashboard / server / alert / approval / audit / deploy / k8s 等模块
## 常见问题
| 现象 | 原因 | 处理 |
|------|------|------|
| `docker up` 时 `node` CPU 100%+ | Docker 构建前端(`npm run build`) | 正常,构建结束后自动消失;日常用 `docker fast` |
| 构建后 load 仍偏高 | 宿主机其他服务(网关/监控 Agent) | `top` 排查非 AIOps 进程 |
| MySQL 内存占用高 | 默认 buffer pool 较大 | Compose 已限制 `innodb-buffer-pool-size=256M` |
| Mac 二进制无法在 Linux 运行 | 平台不匹配 | 在 Linux 构建或使用 Docker 镜像 |
| LDAP 登录失败 | 过滤器/字段映射与目录类型不匹配 | 系统设置选择正确目录类型并配置 `user_mapping` |
## 文档
详细开发文档见 [docs/README.md](./docs/README.md)。
| 文档 | 说明 |
|------|------|
| [快速开始](./docs/quick-start.md) | 环境准备、本地开发 |
| [部署指南](./docs/deployment.md) | 二进制 / Docker / K8s / 版本发版 |
| [开发规范](./docs/development-guide.md) | 代码规范、Git 工作流、PageShell / i18n |
| [项目结构](./docs/project-structure.md) | 目录结构说明 |
| [AI Agent / Agent CLI 设计](./docs/ai-agent/00-README.md) | ReAct 引擎、Evolver、安全系统 |
| [CLAUDE.md](./CLAUDE.md) | AI 助手指引(完整命令参考) |
| [AGENTS.md](./AGENTS.md) | AI Agent 工作指南 |
## License
GNU General Public License v3.0 or later (GPL-3.0-or-later). See [LICENSE](./LICENSE).