Skip to content

Commit 6f7e140

Browse files
docs: initial FCP documentation and GitHub Actions deploy
Co-authored-by: Cursor <cursoragent@cursor.com>
0 parents  commit 6f7e140

24 files changed

Lines changed: 837 additions & 0 deletions

.github/workflows/deploy.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: 部署到 GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
build:
10+
name: 构建 Docusaurus
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
with:
15+
fetch-depth: 0
16+
17+
- uses: actions/setup-node@v4
18+
with:
19+
node-version: 18
20+
cache: 'npm'
21+
22+
- name: 安装依赖
23+
run: npm install
24+
25+
- name: 构建网站
26+
run: npm run build
27+
28+
- name: 上传构建制品
29+
uses: actions/upload-pages-artifact@v3
30+
with:
31+
path: build
32+
33+
deploy:
34+
name: 部署到 GitHub Pages
35+
needs: build
36+
permissions:
37+
pages: write
38+
id-token: write
39+
environment:
40+
name: github-pages
41+
url: ${{ steps.deployment.outputs.page_url }}
42+
runs-on: ubuntu-latest
43+
steps:
44+
- name: 部署到 GitHub Pages
45+
id: deployment
46+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Dependencies
2+
/node_modules
3+
# Production
4+
/build
5+
# Generated files
6+
.docusaurus
7+
.cache-loader
8+
# Misc
9+
.DS_Store
10+
.env.local
11+
.env.development.local
12+
.env.test.local
13+
.env.production.local
14+
npm-debug.log*
15+
yarn-debug.log*
16+
yarn-error.log*

README.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# FCP 产品文档
2+
3+
FCP(FluxMQ Control Plane)产品文档站点,基于 Docusaurus 构建。
4+
5+
## 本地开发
6+
7+
```bash
8+
npm install
9+
npm run start
10+
```
11+
12+
访问 http://localhost:3000
13+
14+
## 构建
15+
16+
```bash
17+
npm run build
18+
npm run serve # 预览构建结果
19+
```
20+
21+
## GitHub Actions 与 Pages 部署
22+
23+
推送代码到 `main` 分支后,GitHub Actions 会自动构建并部署到 GitHub Pages。
24+
25+
**首次使用需在仓库设置中开启 Pages:**
26+
27+
1. 打开 [quickmsg/fcp-doc](https://github.com/quickmsg/fcp-doc)**Settings****Pages**
28+
2. **Source** 选择 **GitHub Actions**
29+
3. 保存后,每次推送到 `main` 会触发 `.github/workflows/deploy.yml`,构建 Docusaurus 并部署
30+
31+
部署完成后访问:`https://quickmsg.github.io/fcp-doc/`(若未配置自定义域名)。
32+
33+
## 文档结构
34+
35+
- **产品介绍**:FCP 定位、功能、与 FluxMQ 关系
36+
- **安装部署**:Linux 安装包、Docker、配置说明
37+
- **配置说明**:config.toml 配置项
38+
- **功能指南**:应用、License、项目、组织、用户、代理、监控、告警、审计
39+
- **API 概览**:REST API 与认证说明
40+
- **FAQ**:常见问题
41+
42+
## 作为 Git 子模块使用
43+
44+
在 FluxMQ 主仓库中添加 FCP 文档子模块(需先在 GitHub 创建仓库 `quickmsg/fcp-doc`):
45+
46+
```bash
47+
# 1. 在 fcp-doc 目录初始化并推送到远程(首次)
48+
cd fcp-doc
49+
git init
50+
git add .
51+
git commit -m "docs: initial FCP documentation"
52+
git branch -M main
53+
git remote add origin git@github.com:quickmsg/fcp-doc.git
54+
git push -u origin main
55+
56+
# 2. 在 fluxmq 根目录添加子模块(若 fcp-doc 目录已存在且含未提交内容,可先备份后删除再执行)
57+
cd /path/to/fluxmq
58+
git submodule add git@github.com:quickmsg/fcp-doc.git fcp-doc
59+
```
60+
61+
克隆主仓库时拉取子模块:
62+
63+
```bash
64+
git clone --recurse-submodules git@github.com:quickmsg/fluxmq.git
65+
# 或已克隆后
66+
git submodule update --init --recursive
67+
```

docs/FAQ.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# 常见问题
2+
3+
## 安装与部署
4+
5+
**Q: 支持哪些数据库?**
6+
A: PostgreSQL 13+、MySQL 8.0+、SQLite 3.x。生产环境建议使用 PostgreSQL 或 MySQL。
7+
8+
**Q: 首次登录账号从哪里来?**
9+
A: 若配置中 `admin.auto_create = true`,首次启动时会根据 `admin` 节创建管理员账号。否则需通过迁移或脚本创建。
10+
11+
**Q: 代理端口 8081 无法访问?**
12+
A: 检查 config.toml 中 `[proxy]` 的 host/port,以及防火墙、安全组是否放行该端口。
13+
14+
## License 与 FluxMQ
15+
16+
**Q: FluxMQ 如何切换到 FCP 模式?**
17+
A: 在 FluxMQ 的 config.yaml 中设置 `license.mode: FCP`,并配置 `proxy.serverUrl``proxy.token``proxy.applicationId`,指向 FCP 及在 FCP 中创建的应用。
18+
19+
**Q: FCP 中应用与 FluxMQ 的对应关系?**
20+
A: 一个 FCP 应用可对应多台 FluxMQ 节点(同一业务集群)。每台节点配置相同的 applicationId 与对应 token。
21+
22+
**Q: Token 泄露怎么办?**
23+
A: 在 FCP 应用管理中重新生成或更换 Proxy Token,并更新所有 FluxMQ 节点的 config.yaml 后重启。
24+
25+
## 权限与多租户
26+
27+
**Q: 如何限制某用户只能看某个项目?**
28+
A: 将用户角色设为项目管理员或普通用户,并只分配至对应项目,即可实现按项目隔离。
29+
30+
**Q: 审计日志保留多久?**
31+
A: 以实际实现与配置为准,可在配置或数据库中设置保留策略。
32+
33+
## 监控与告警
34+
35+
**Q: 告警不触发?**
36+
A: 检查告警规则条件是否满足、规则是否启用,以及通知渠道是否配置正确且可用。
37+
38+
**Q: 支持哪些通知渠道?**
39+
A: 常见为钉钉、飞书、企业微信等,以 FCP 当前实现为准,在「通知渠道」中配置。

docs/api/overview.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# API 概览
2+
3+
FCP 提供 REST API,供前端与第三方系统集成。
4+
5+
## 认证
6+
7+
- 登录:`POST /api/v1/auth/login`,请求体含 `username``password`,返回 JWT。
8+
- 获取当前用户:`GET /api/v1/auth/me`,Header 需带 `Authorization: Bearer <token>`
9+
- 其他接口均在 Header 中携带上述 Token。
10+
11+
## 主要模块
12+
13+
| 模块 | 路径前缀 | 说明 |
14+
|------|----------|------|
15+
| 认证 | /api/v1/auth | 登录、当前用户 |
16+
| 组织 | /api/v1/organizations | 组织 CRUD |
17+
| 项目 | /api/v1/projects | 项目 CRUD |
18+
| 应用 | /api/v1/applications | 应用 CRUD(以实际路由为准) |
19+
| License | /api/v1/licenses | License 管理(以实际路由为准) |
20+
| 告警 | /api/v1/alerts | 告警列表与状态更新 |
21+
| 告警规则 | /api/v1/alert-rules | 告警规则 CRUD |
22+
| 通知渠道 | /api/v1/notification-channels | 通知渠道配置(以实际路由为准) |
23+
| 审计 | /api/v1/audit-logs | 审计日志查询 |
24+
25+
## 说明
26+
27+
- 实际路径与请求/响应格式以 fmq-admin 代码与 OpenAPI 文档为准。
28+
- 更多接口可参考 [fmq-admin README](https://github.com/quickmsg/fmq-admin) 中的 API 章节。

docs/config/read.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# 配置说明
2+
3+
FCP 使用 **config.toml** 作为主配置文件(部分部署方式支持环境变量覆盖)。
4+
5+
## 配置示例
6+
7+
```toml
8+
[server]
9+
address = "0.0.0.0:8080"
10+
11+
[database]
12+
type = "sqlite"
13+
url = "/opt/fcp-admin/data/data.db"
14+
15+
[jwt]
16+
secret = "your-jwt-secret-key"
17+
expiration = 86400
18+
19+
[admin]
20+
username = "admin"
21+
password = "admin"
22+
email = "admin@example.com"
23+
auto_create = true
24+
25+
[logging]
26+
level = "info"
27+
file_dir = "logs"
28+
29+
[proxy]
30+
host = "0.0.0.0"
31+
port = 8081
32+
```
33+
34+
## 配置项说明
35+
36+
|| 配置项 | 说明 |
37+
|----|--------|------|
38+
| server | address | 服务监听地址,如 `0.0.0.0:8080` |
39+
| database | type | 数据库类型:postgres / mysql / sqlite |
40+
| database | url | 数据库连接 URL |
41+
| jwt | secret | JWT 签名密钥,生产环境务必修改 |
42+
| jwt | expiration | Token 有效期(秒) |
43+
| admin | username / password / email | 初始管理员账号(auto_create 时创建) |
44+
| admin | auto_create | 是否自动创建管理员 |
45+
| logging | level | 日志级别:debug / info / warn / error |
46+
| logging | file_dir | 日志目录 |
47+
| proxy | host / port | 代理服务监听地址与端口,供 FluxMQ FCP 模式连接 |
48+
49+
## 数据库 URL 示例
50+
51+
```bash
52+
# PostgreSQL
53+
url = "postgres://user:password@localhost:5432/fcp_admin"
54+
55+
# MySQL
56+
url = "mysql://user:password@localhost:3306/fcp_admin"
57+
58+
# SQLite
59+
url = "sqlite:./data/fcp_admin.db"
60+
```
61+
62+
修改配置后需重启 FCP 服务。

docs/guide/alerts.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 告警管理
2+
3+
FCP 支持告警规则与告警记录,并可对接多种通知渠道。
4+
5+
## 告警规则
6+
7+
- **创建规则**:在 **告警规则** 中配置触发条件(如连接数超限、节点离线等)。
8+
- **严重程度**:可设置多级严重程度,便于分级处理。
9+
- **关联对象**:规则可关联到应用、集群或全局。
10+
11+
## 告警记录
12+
13+
- **告警列表**:查看历史告警及状态(未处理/已处理/已忽略)。
14+
- **状态更新**:对单条告警进行确认、处理或忽略。
15+
16+
## 通知渠道
17+
18+
-**通知渠道** 中配置钉钉、飞书、企业微信等,用于接收告警通知。
19+
- 告警触发后,FCP 按规则将消息推送到已配置的渠道。
20+
21+
## API 示例
22+
23+
- 获取告警列表:`GET /api/v1/alerts`
24+
- 更新告警状态:`PUT /api/v1/alerts/:id`
25+
- 告警规则 CRUD:`/api/v1/alert-rules`
26+
27+
具体路径与请求体以实际 API 文档为准。

docs/guide/applications.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# 应用管理
2+
3+
应用(Application)是 FCP 中管理 FluxMQ 集群的基本单元,对应一个或多个 FluxMQ 节点。
4+
5+
## 概念
6+
7+
- **应用**:代表一套 FluxMQ 业务集群,用于 License 分配、代理与监控。
8+
- **应用类型**:如 FluxMQ;后续可扩展其他类型。
9+
- **License 激活方式**:本地文件(LOCAL)或通过 FCP 激活(FCP 模式)。
10+
11+
## 创建应用
12+
13+
1. 登录 FCP 控制台。
14+
2. 进入 **应用管理**(或「应用」菜单)。
15+
3. 点击 **新建应用**,填写:
16+
- 应用名称
17+
- 所属项目
18+
- 应用类型(如 FluxMQ)
19+
- License 激活方式(FCP 时需在本应用下分配 License)
20+
- 可选:监控采集间隔、数据保留天数等。
21+
22+
## 代理与连接
23+
24+
- **代理模式**:当 FluxMQ 使用 FCP 模式时,需在 FCP 中为该应用配置 **Proxy Token****代理端口** 等。
25+
- FluxMQ 端在 `config.yaml` 中配置 `proxy.serverUrl``proxy.token``proxy.applicationId`,指向本 FCP 及对应应用。
26+
27+
## 监控
28+
29+
- 可为应用配置监控采集间隔;FCP 从 FluxMQ 节点拉取指标并展示。
30+
-**监控****应用详情** 中查看连接数、消息量等。

docs/guide/audit.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# 操作审计
2+
3+
FCP 记录用户关键操作,便于安全审计与问题追溯。
4+
5+
## 审计内容
6+
7+
- 登录/登出
8+
- 组织、项目、应用、用户、License 等资源的创建、修改、删除
9+
- 告警规则与通知渠道的变更
10+
- 其他敏感操作(以实际实现为准)
11+
12+
## 查看审计日志
13+
14+
- **系统管理员**:可查看全部审计日志。
15+
- **组织/项目管理员**:通常仅可查看本组织/项目相关操作(以权限设计为准)。
16+
17+
**审计日志** 页面可按时间、用户、操作类型等筛选查询。
18+
19+
## API
20+
21+
- 获取审计日志:`GET /api/v1/audit-logs`
22+
- 支持分页与筛选参数,具体见 API 文档。

docs/guide/licenses.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# License 管理
2+
3+
FCP 负责 FluxMQ 在 **FCP 模式** 下的 License 签发、分配与激活。
4+
5+
## 两种 License 模式(FluxMQ 侧)
6+
7+
| 模式 | 说明 |
8+
|------|------|
9+
| **LOCAL** | FluxMQ 使用本地 license 文件,不依赖 FCP。 |
10+
| **FCP** | FluxMQ 通过 FCP 进行 License 校验与拉取,需在 FCP 中创建应用并分配 License。 |
11+
12+
## 在 FCP 中管理 License
13+
14+
1. **签发/导入 License**
15+
系统管理员在 FCP 中上传或签发 License(具体以产品实现为准)。
16+
17+
2. **分配到应用**
18+
将 License 分配到指定应用(Application),并设置连接数等限制。
19+
20+
3. **FluxMQ 激活**
21+
- FluxMQ 配置 `license.mode: FCP``proxy.*`(serverUrl、token、applicationId)。
22+
- 启动后向 FCP 发起激活请求,FCP 校验通过后下发 License 信息。
23+
24+
## 连接数限制
25+
26+
- 每个 License 可设置最大连接数等限制。
27+
- FCP 按应用维度统计连接并校验是否超限,超限时可按策略拒绝或告警。

0 commit comments

Comments
 (0)