Open-status ticket filtering and shorter list TTL, FreeScout API via jump host with write-path cache clear, OpenBoard finance-hold flags on board create, and expanded shenzhou web tab UX.
499 lines
27 KiB
Markdown
499 lines
27 KiB
Markdown
# joy web · 神州(生产资产世界)
|
||
|
||
> 设计决议 · 2026-07-10 · 命名:**神州**(不用「线上」「生产」作导航主名)
|
||
> 状态:**已定方向,未落地导航与采集**(本文为完整想法整理,供实现与命名体系对齐)
|
||
> 修订 · 2026-07-10:范围从「prod-watch 监测态势」校正为「**生产资产台账**」七类骨架;§4 清单据 devops 权威源(`inventory.ini` + `production-servers.md`)落实。
|
||
|
||
---
|
||
|
||
## 0. 一句话
|
||
|
||
**神兽守内场;神州是它们可以遨游的大地与天下。**
|
||
joy web 必须把「麟悦飞轮 / 神兽集群」与「生产资产世界」分成两个世界——外面跑着的云主机、网站、业务系统、CDN、定时任务,和内场的 VM/飞轮是两回事,否则注意力、权限与误操作代价会缠在一起。
|
||
|
||
| 世界 | 正式名 | 是什么 | 不是什么 |
|
||
|------|--------|--------|----------|
|
||
| 内场 | **飞轮 / 神兽** | Parallels VM、pi 分身、work、Board、NATS、记忆 | 公网站 SLA、云主机 |
|
||
| 工程 | **代码** | feicode / 本地 Git / CI runner 态势 | 迷你 GitHub;生产资产台账 |
|
||
| 外场 | **神州** | 云主机、网站、在线服务、业务系统、CDN/Cloudflare、定时任务、外部依赖 | 飞轮派活;在 joy 里改生产 |
|
||
|
||
英文 id(实现用):`shenzhou`(导航 / tab / `dashboard.shenzhou`)。
|
||
对外口语可说「生产环境 / 外部服务」,**导航与产品文案主名固定为「神州大地」**(2026-07-11 页眉:神兽工坊 / 神州大地 / 混沌蛮荒)。
|
||
|
||
**UI 实现原则**(以神兽硬件 tab 为标准、复用全局样式):见 [`joy-web-design.md`](./joy-web-design.md)。
|
||
资产 · 云主机:总览 section + **每台独立 section** + `#pane-sz-assets` 4 列网格(对齐 `#pane-hardware`)。
|
||
|
||
---
|
||
|
||
## 1. 命名:为何叫「神州」
|
||
|
||
### 1.1 神话与产品同构
|
||
|
||
| 名 | 在飞轮里 | 隐喻 |
|
||
|----|----------|------|
|
||
| **神兽** | 16 分身,各守一 VM | 守土之灵,内场秩序 |
|
||
| **神州** | 生产资产世界:云主机、网站、业务系统、CDN、定时任务 | 神兽可遨游的大地;业务与天下 |
|
||
|
||
「神州」在中文里本就有「中华大地 / 辽阔疆域」之意,比「线上」「生产」更贴麟悦–龙奇–神兽的祥瑞命名血脉,也避免:
|
||
|
||
- 「线上」过泛(什么都在线)
|
||
- 「生产」过冷、易与「生产环境变更」操作话术混淆(红线用语仍用「生产变更」)
|
||
|
||
### 1.2 与红线用语的分工
|
||
|
||
| 用语 | 场景 |
|
||
|------|------|
|
||
| **神州** | joy web 导航、态势产品、文档、agent 读 dashboard |
|
||
| **生产 / 生产服务器** | 红线、devops 变更、Ansible、事故通报(保持严肃操作语义) |
|
||
| **外部服务** | 神州的子集:第三方 API、DNS、CDN 边缘等 |
|
||
|
||
红线不变:生产服务器变更 / 不可逆 / 集群策略 / 跨 VM 批量 → 上报菲比斯。
|
||
**神州 tab 默认只读,不因改名降低管控**(运营档见 §7)。
|
||
|
||
### 1.3 不用的名字
|
||
|
||
| 弃用主名 | 原因 |
|
||
|----------|------|
|
||
| 线上 | 语义空;与飞轮「在线会话」混淆 |
|
||
| 生产(作导航) | 像运维后台,不像产品区;易诱发「在面板上点变更」 |
|
||
| ops-prod / 运维·生产 | 继续把外场塞进内场运维,边界失败 |
|
||
|
||
---
|
||
|
||
## 2. 问题陈述:为何必须拆开
|
||
|
||
### 2.1 现状(2026-07-10)
|
||
|
||
| 已有 | 缺口 |
|
||
|------|------|
|
||
| 顶栏默认偏 **神兽**;任务/消息/记忆/流水线 = 飞轮 | **无**「神州」一等导航 |
|
||
| **代码** tab:feicode 态势 + CI 节点 + 本地 Git | 生产资产未一等公民 |
|
||
| **运维** tab:集群中间件、探针、LLM | 与公网生产资产混谈时角色不清 |
|
||
| **硬件** tab:Mac / NAS / 家用物理机 | 不是云主机/生产资产 |
|
||
| devops `production-servers.md` + `inventory.ini` + `prod-watch.sh` | 数据已在 devops,**面板没有成世界** |
|
||
|
||
### 2.2 混在一起的代价
|
||
|
||
1. **注意力**:神兽 degraded 与 站点 5xx / 业务下单失败抢同一 badge,业务红被淹没。
|
||
2. **采集模型**:`collect_vm` 面向 10.211.55.*;神州是公网生产机 + 公网 HTTP + DNS/CDN API + 各机 cron/timers。
|
||
3. **权限心智**:飞轮可 inject / Board;神州变更默认 **change/control → devops**。
|
||
4. **命名污染**:在「神兽」里塞 production 列 = 让守护神去背公网 SLA,叙事错乱。
|
||
|
||
### 2.3 设计目标
|
||
|
||
- 人一打开 joy web,能回答:**内场还好吗?工程堵吗?神州太平吗?**
|
||
- Agent 读 JSON 时 `dashboard.shenzhou` 与 `dashboard.vms` **并列**,不互相污染。
|
||
- 神兽「遨游神州」= 可观测、可汇报、可提议;**不是**在 joy 里直接动刀。
|
||
|
||
---
|
||
|
||
## 3. 三区信息架构(完整)
|
||
|
||
```
|
||
joy web 顶栏心智(逻辑三区,实现可先扁平 tab)
|
||
|
||
┌──────────────── 飞轮(内场)─────────────────┐ ┌ 工程 ┐ ┌──── 神州(外场)────┐
|
||
│ 神兽 会话 任务 协作 消息 记忆 数据 流水线 │ │ 代码 │ │ 神州(新导航) │
|
||
└──────────────────────────────────────────────┘ └──────┘ └───────────────────┘
|
||
运维 → 建议逐步正名为「集群」(infra / 探针 / LLM)
|
||
硬件 → Mac·NAS·家用物理机(不进神州)
|
||
```
|
||
|
||
### 3.1 飞轮区(神兽家园)
|
||
|
||
| Tab(现状) | 职责 |
|
||
|-------------|------|
|
||
| 神兽 | VM + 分身 + work 健康 |
|
||
| 会话 | tmux / 三员 / SOP 派工承载 |
|
||
| 任务 / 协作 / 消息 | Board、dispatch、NATS、邮箱外勤 |
|
||
| 记忆 / 数据 / 流水线 | 沉淀、资产、业务管线(内场产出) |
|
||
|
||
**不放**:云主机、网站、业务系统、CDN、定时任务、SSL。
|
||
|
||
### 3.2 工程区(代码)
|
||
|
||
见 [`joy-forgejo-observe.md`](./joy-forgejo-observe.md)。
|
||
|
||
> **关注点归属,不是机器归属。** 同一台机按「它在回答哪个关注点的问题」切片,不按物理切两半。
|
||
> `feicode-prod` **不是两面特例**——它就是神州「云主机」类里的一台:runner/zombie 那一项归代码 tab(工程态势),系统/站点/SSL 面归神州(生产资产)。规则跟任何生产机一样。
|
||
|
||
| 属于代码 | 不属于代码(属神州) |
|
||
|----------|----------------------|
|
||
| feicode API、PR、镜像供应链 | weixiaoduo.com 等站点 HTTP |
|
||
| devops / feicode-prod 上的 **Actions runner / zombie** | 同机 nginx / 站点进程 / 业务容器(除 runner 外) |
|
||
| 本地 Git dirty/ahead | 生产机部署是否与 tag 一致(可后续神州「发布面」) |
|
||
|
||
### 3.3 神州区(本设计主体)
|
||
|
||
生产资产世界的**纵向台账**,七类:云主机、网站、在线服务、业务系统、CDN/Cloudflare、定时任务、外部依赖。
|
||
监测(健康/SSL/到期/红点/load)是每类资产的**属性列**,不是独立骨架——顶部留一个脉搏摘要即可。
|
||
|
||
---
|
||
|
||
## 4. 神州资产清单(七类)
|
||
|
||
> 这是神州的**骨架**。监测维度(HTTP 探活 / SSL / 磁盘 / load)是每类里的属性列,不是独立章节。
|
||
> **权威清单源**:devops `~/ansible/inventory.ini`(Ansible 控制节点,标准化管理的生产资产)+ `~/docs/devops/production-servers.md`(规格/SSL/cron 详情,最后更新 2026-04-11,部分需现采刷新)。Mac `~/.ssh/config` 的 ProxyJump 别名是 Mac 侧连接路径,不是资产真相源。**文档不写裸 IP**,前端配置化。
|
||
|
||
### 4.1 云主机
|
||
|
||
**生产主站(`[production]` · 4 台标准化):**
|
||
|
||
| 别名 | 角色 | 规模 / 管理 |
|
||
|---|---|---|
|
||
| `weixiaoduo-prod` | WordPress 业务主站(多站点 80+ 子域名,含 mall 商城 / matomo 统计 / modiqi / mudelms) | 16核30G,宝塔,Docker |
|
||
| `feicode-prod` | feiCode 平台(Forgejo + act_runner + registry×3 + license-server + wenpai-bridge + aimirror) | 80核62G,宝塔,Docker |
|
||
| `cravatar-prod` | Cravatar 头像 + 多站点托管(cravatar / wenpai / litepress / windfonts / admincdn / skypanel / motucloud / site.feibisi) | 72核62G,OpenResty(非宝塔),Podman |
|
||
| `wenpai-org` | 文派(Mac SSH config 旧别名 `wenpai-prod-b`,同 IP 47.243.29.80) | — |
|
||
|
||
**边缘/中继(`[edge]` · 5 台):** `bj-1p` / `hz-1p` / `sz-1p` / `gz-1p` / `hk-edge`(北京/杭州/深圳/广州/香港)。
|
||
|
||
**DNS 节点:** `cn-heyuan`(河源,跑 dns.feibisi.com 的 ThinkPHP 服务;不在 `[edge]` 组,单独用途)。
|
||
|
||
**退役:** `wptea-prod`(47.120.22.94,**2026-04-18 decommissioned**,站点已迁至 weixiaoduo-prod;prod-watch 仍监控 `wptea.com`,待清理)。Mac SSH config 旧别名 `server1` / `myserver` / `aliyun-22` 与 weixiaoduo-prod / feicode-prod / wptea-prod 同 IP 重复,属历史别名。
|
||
|
||
**客户托管机(inventory 之外):** 经 debian 跳,8 台(`aetled` / `dental-part` / `cqxstx` / `yayaka` / `tigerflow` / `oa52` / `jeukh-server` / `yayaka-new`)。**不在 Ansible 标准化管理内**,多为一次性客户服务;持久台账只收「常用维护」的几个,实现时按活跃度筛选纳入,其余按需(feibisi:到时再筛)。
|
||
|
||
属性:SSH 可达、load、磁盘、内存、运行时间、到期、**跑着什么**(→ 关联到 4.3/4.4)。
|
||
|
||
> **采集架构(关键)**:devops 是 Ansible 控制节点,用 `~/.ssh/ansible_ed25519` 直连所有生产机(`[all:vars]` 已配 ConnectTimeout/StrictHostKeyChecking),**比 Mac ProxyJump 干净得多**。神州采集建议委托 devops 跑(结果写 NAS 或回传 Mac dashboard),避免 Mac 开 N 条 SSH 隧道。
|
||
|
||
### 4.2 网站
|
||
|
||
对人访问的公网站点(页面类)。`prod-watch.sh` 当前监控 9 个主域名(**这只是子集**):
|
||
|
||
- weixiaoduo.com / mall.weixiaoduo.com
|
||
- modiqi.com / windfonts.com
|
||
- admincdn.com / cravatar.com / motucloud.com
|
||
- wptea.com(已迁,待移除)/ wpcy.com
|
||
|
||
实际托管站点几十个(见 `production-servers.md` 各机站点表):feibisi.com/feibisi.net、wenpai.cn/wenpai.net、litepress.cn、skypanel.com、cravatar.cn、site.feibisi.com、feicode.com(双视角)、wpfanyi.com(→ wpcy.com 301)等。
|
||
|
||
属性:HTTP code、延迟、SSL 天数、证书、DNS 解析。
|
||
数据源:`~/.cache/prod-watch/latest.json` + alerts;站点全集从生产机 nginx vhost / 宝塔配置采。
|
||
|
||
> **实测 2026-07-10 20:42**:prod-watch 9 站**全绿**(0 alert)——`production-servers.md`(04-11 快照)记的「SSL 大面积过期」**主域名已修**,属历史非现状。**但 prod-watch 覆盖面太窄**:cravatar.cn / litepress.cn / wptea.com / feibisi.cn / weixiaoduo.net 等曾过期站点**不在 9 站清单内,现状未知**;`wptea.com` 已退役仍在清单。**扩 prod-watch 到完整站点表 = Phase 0 第一改进项**,也是神州最直接的价值兑现。
|
||
|
||
### 4.3 在线服务
|
||
|
||
对外 API / 服务端点(机器读的,区别于人读的网站)。
|
||
|
||
- Cravatar 头像 API(cravatar.com / cn.cravatar.com / hk.cravatar.com / en.cravatar.com,公开端点)
|
||
- wenpai-bridge 翻译桥接(feicode-prod)
|
||
- license-server 许可证服务(feicode-prod)
|
||
- dns.feibisi.com DNS 服务(ThinkPHP,cn-heyuan)
|
||
- Matomo 统计 API(tongji.feibisi.com,weixiaoduo-prod)
|
||
|
||
属性:可用性、延迟、错误率、依赖的云主机。
|
||
|
||
### 4.4 业务系统
|
||
|
||
带业务流程的应用(跑在云主机上)。
|
||
|
||
- **WordPress 多站点**:weixiaoduo-prod(80+ 子站,含 mall 商城 / modiqi / mudelms / weizhan 微站)
|
||
- **Matomo 网站分析**:tongji.feibisi.com(weixiaoduo-prod,Docker:matomo-app + matomo-mysql)
|
||
- **Forgejo / feiCode 平台**:feicode-prod(forgejo_FeiCode-1 + forgejo-postgres,11.0.3)
|
||
- **Cravatar 头像服务**:cravatar-prod(含 fonts-vault 容器)
|
||
- **WindFonts 字体 CDN**:cravatar-prod(windfonts-app 管理面)
|
||
- **SkyPanel / MotuCloud**:cravatar-prod 托管
|
||
- **wenpai-bridge / aimirror / registry×3(dockerhub/ghcr/codeberg 镜像代理)**:feicode-prod
|
||
- **Mautic 营销自动化**:feicode-prod 容器 `mautic-Modiqi-1` **已停 4 个月**,待确认是否重启或清理
|
||
- **Weblate**:feicode-prod 容器 **已停 4 个月**
|
||
|
||
属性:版本、依赖(PHP/DB/Redis)、健康、最近错误、关联云主机、容器状态。
|
||
**高价值信号**:业务系统的「业务红」(下单失败、同步卡住、登录异常、容器频繁重启)比「主机 ping 通」更接近真实业务 SLA——神州最该亮的就是这类。
|
||
|
||
### 4.5 CDN & Cloudflare
|
||
|
||
接入层。**CF 运维中心在 modiqi**(`~/.config/cloudflare/` + `~/secrets/cloudflare.enc.yaml` sops+age 加密 + `~/docs/cloudflare-optimization.md`)。
|
||
|
||
实测 NS(2026-07-10 dig):
|
||
|
||
| 用法 | 域名 / 项 |
|
||
|---|---|
|
||
| **CF DNS**(NS=cloudflare) | `admincdn.com`、`wenpai.net` |
|
||
| **CF Workers**(modiqi 部署) | `go.wpcy.net`(短链 url-shortener)、`domain-check`、`domains` |
|
||
| **CF 证书** | 部分站点(wpcommunity/wenfeng 等,范围待确认) |
|
||
| **阿里云 DNS**(不走 CF) | weixiaoduo.com / cravatar.com / feicode.com / modiqi.com / windfonts.com / motucloud.com / wptea.com / wpcy.com / wenpai.cn / feibisi.com / feibisi.net / skypanel.com / feimail.com(hichina/alidns) |
|
||
| **自建 CDN 资源** | admincdn.com(公共资源,cravatar-prod 托管)、windfonts.com(字体 CDN) |
|
||
|
||
CF API token:`modiqi:~/secrets/cloudflare.enc.yaml`(sops+age 加密,需解密读)。
|
||
|
||
属性:zone 健康、Workers 调用、SSL 状态、缓存态、流量/带宽。
|
||
**特殊**:CF purge cache / Workers 部署是最可能需要「低风险运营」操作的一类——见 §7。
|
||
|
||
### 4.6 调度(定时任务)
|
||
|
||
**feicode-prod 已知 cron**(来自 `production-servers.md`):
|
||
|
||
| 周期 | 任务 |
|
||
|---|---|
|
||
| `0 2 * * *` | Forgejo PostgreSQL 备份 |
|
||
| `0 3 * * *` | wenpai-bridge DB 备份 |
|
||
| `0 */6 * * *` | Renovate Bot |
|
||
| `0 5 * * *` | actions-mirror-sync |
|
||
| `*/5 * * *` | webhook 监控 |
|
||
| `* * * * *` | forgejo-pages auto-install-hooks |
|
||
|
||
**Mac 侧**:`prod-watch.sh` 本身(cron `*/5`)。
|
||
**其余机待登机探测**:`systemctl list-timers` + `crontab -l` + wp-cron + 业务级任务(备份/同步/报表/清理)。NAS 备份拉取每天 03:00(devops `backup-prod-to-nas.sh`)。
|
||
|
||
属性:上次跑、下次跑、耗时、成败、卡住/漏跑。
|
||
**痛点**:定时任务最容易「静默死」——跑挂了没人知道、卡住不报、漏跑累积。神州「烽火」很大一块来自这。
|
||
|
||
### 4.7 外部依赖
|
||
|
||
第三方 API / 服务。**主力云厂商 = 阿里云**(三套账号:aliyun-feibisi / aliyun-wenpai / modiqi-aliyun-creds,sops+age 加密存各机 `~/secrets/`)。
|
||
|
||
| 类 | 厂商 | 入口 / 凭据 |
|
||
|---|---|---|
|
||
| **DNS** | 阿里云(万网 hichina/alidns) | 阿里云控制台 |
|
||
| **邮件** | 阿里云企业邮箱 | `imap.qiye.aliyun.com:993` / `smtp.qiye.aliyun.com:465`;14 VM 已部署 IMAP/SMTP 凭据(email-client.py) |
|
||
| **对象存储 / 云服务** | 阿里云(OSS 待精确) | `aliyun-*.enc.yaml` |
|
||
| **支付** | WooCommerce 商城(mall.weixiaoduo.com) | 支付宝/微信(WP 配置内,Phase 2 精确) |
|
||
| **代码镜像** | DockerHub / GHCR / Codeberg | feicode-prod 三套 registry 代理 |
|
||
| **CDN** | Cloudflare | 见 §4.5,token 在 modiqi |
|
||
|
||
凭据统一管理:sops+age 加密 `~/secrets/`(cluster-recall [2701])。
|
||
|
||
属性:可用性、延迟、配额/余额、状态页。Phase 0 只占位,Phase 2 精确化各厂商状态页。
|
||
|
||
### 4.8 明确不进神州
|
||
|
||
| 对象 | 归属 |
|
||
|------|------|
|
||
| 16 台 Parallels VM | 神兽 |
|
||
| joy-konqi / tux / wapuu / clones | 会话 / 神兽 |
|
||
| Board / dispatch | 任务 |
|
||
| NATS 总线本身 | 消息 / 集群运维 |
|
||
| Mac Studio / NAS / KK-PC / huawei-pc | 硬件 |
|
||
| feicode PR / Actions 工作流红 | 代码 |
|
||
|
||
---
|
||
|
||
## 5. 导航与页面结构(产品)
|
||
|
||
### 5.1 顶栏
|
||
|
||
- **新增一级导航:神州**
|
||
- icon 建议:`globe` / `map`(实现时定)
|
||
- badge:仅神州注意力(站点 down、SSL crit、主机 unreachable、任务卡住、业务红),**不与神兽 badge 合并公式**
|
||
|
||
### 5.2 神州内结构
|
||
|
||
**顶部脉搏摘要**(全局注意力:红点几处、SSL crit、主机 unreachable、任务卡住、业务红)+ **纵向资产分类**(每类一张表/折叠区,监测维度是该类的属性列)。
|
||
|
||
| # | section id | 标题 | 内容 |
|
||
|---|------------|------|------|
|
||
| 0 | `shenzhou-pulse` | 脉搏 | 顶部跨类摘要:此刻神州安否?红点几处?不展开细节 |
|
||
| 1 | `shenzhou-hosts` | 云主机 | §4.1 台账 + 健康/盘/load 属性 |
|
||
| 2 | `shenzhou-sites` | 网站 | §4.2 + HTTP/SSL 属性(prod-watch 主源) |
|
||
| 3 | `shenzhou-services` | 在线服务 | §4.3 API 端点 |
|
||
| 4 | `shenzhou-business` | 业务系统 | §4.4 + 业务红/版本/容器态 |
|
||
| 5 | `shenzhou-cdn` | CDN & Cloudflare | §4.5 zone/DNS/缓存 |
|
||
| 6 | `shenzhou-jobs` | 调度 | §4.6 定时任务上次/下次/成败 |
|
||
| 7 | `shenzhou-edge` | 边缘 | bj/hz/sz/gz/hk-edge(5 台,经 devops)等公网中继(可选,或并入云主机) |
|
||
| 8 | `shenzhou-alerts` | 烽火 | 跨类告警时间线(prod-watch + vmalert + 任务失败 + 业务红 + SSL 到期) |
|
||
| 9 | `shenzhou-external` | 外部依赖 | §4.7 第三方状态(Phase 2) |
|
||
|
||
Phase 0 可只做 0+2+8(脉搏 + 网站表 + 烽火,纯 prod-watch);Phase 1 加 1(云主机);Phase 2 补 3/4/5/6/9。
|
||
|
||
### 5.3 文案语气
|
||
|
||
- 用「疆域 / 脉搏 / 烽火」可点到为止,**主体仍用 云主机/网站/业务系统/CDN/定时任务**,避免过度玩梗影响扫读。
|
||
- 页脚固定:
|
||
|
||
> 神州 · 生产资产世界 · 变更走 devops / 红线上报菲比斯 · 神兽可观测、不擅自动刀
|
||
|
||
---
|
||
|
||
## 6. 数据模型
|
||
|
||
### 6.1 `dashboard.shenzhou`
|
||
|
||
```text
|
||
view: shenzhou
|
||
ok: bool # 采集总成是否可用
|
||
ts: "..."
|
||
summary: {
|
||
hosts_total, hosts_up, hosts_down,
|
||
sites_total, sites_down, sites_slow,
|
||
services_total, services_down,
|
||
business_total, business_alert,
|
||
ssl_warn, ssl_crit,
|
||
jobs_total, jobs_failed, jobs_stuck,
|
||
attention_score
|
||
}
|
||
cloud_hosts: [ { id, role, reachable, load, disk_pct, mem_pct, uptime, expires, runs[], services{}, hint } ]
|
||
sites: [ { id, url, http_code, latency_ms, ssl_days, status, checked_at } ]
|
||
services: [ { id, endpoint, available, latency_ms, error_rate, host_id } ]
|
||
business: [ { id, kind, version, deps{}, healthy, container_status, last_error, host_id } ]
|
||
cdn: [ { id, provider, zone, ssl_mode, cache_hit_ratio, rules } ]
|
||
jobs: [ { id, name, host_id, last_run, next_run, duration, status } ]
|
||
edge: [ ... ]
|
||
external: [ { id, kind, available, latency_ms, quota, status_page } ]
|
||
alerts: [ { level, source, msg, at } ]
|
||
attention: [ { level, kind: host|site|service|business|ssl|cdn|job|edge|external, id, msg } ]
|
||
```
|
||
|
||
与 `dashboard.forgejo` / `dashboard.vms` 并列;**禁止**把生产资产塞进 `vms`。
|
||
|
||
### 6.2 采集原则
|
||
|
||
| 原则 | 说明 |
|
||
|------|------|
|
||
| 只读为主 | Phase 0 无任何写操作;运营档白名单另见 §7 |
|
||
| 委托 devops | 生产机采集优先在 devops 跑(ansible key 直连),Mac 走 ProxyJump 作降级 |
|
||
| 优先文件 | Phase 0:读 `prod-watch` 已有 JSON / 告警 + devops `production-servers.md`,少开新 SSH |
|
||
| 配置化 | 七类资产列表来自 inventory.ini / yaml,非前端写死 |
|
||
| 超时降级 | 单机/单端点失败不影响整页;`reachable:false` + error |
|
||
| 代理 | 公网探测与 feicode 一样注意 Mac 代理干扰 |
|
||
| SSH 去重 | 同一台云主机被代码 tab(runner)与神州(系统)各采时,共享会话、badges 不叠加 |
|
||
| 权限 | 变更文档写明:神州观察 ≠ 授权 change |
|
||
|
||
### 6.3 与现有采集的关系
|
||
|
||
| 现有 | 神州用法 |
|
||
|------|----------|
|
||
| devops `inventory.ini` + `production-servers.md` | **清单真相源**(标准化生产资产 + 规格/SSL/cron 详情,需定期现采刷新) |
|
||
| `prod-watch.sh` | 「网站」格主源(9 主域名,全集待扩) |
|
||
| `collect_ci_nodes`(feicode-prod runner) | **留在代码**;云主机格另采系统指标 |
|
||
| `collect_physical_hosts` | 家用物理机 → 硬件;**不**改名塞神州 |
|
||
| `collect_infra` / monitoring | 集群侧 → 运维/集群 |
|
||
| vmalert 生产规则 | Phase 2 只读摘要进烽火 |
|
||
| Cloudflare API | **新采**:zone/DNS/缓存/SSL(Phase 1,待 token) |
|
||
| 定时任务 | **新采**:各生产机 `systemctl list-timers` + `crontab -l` + wp-cron(Phase 1,feicode-prod 已知 6 条) |
|
||
| 业务系统 | **新采**:容器态(docker/podman ps)+ health endpoint + 版本探测(Phase 2) |
|
||
|
||
---
|
||
|
||
## 7. 权限与红线(铁律)
|
||
|
||
操作面分三档:
|
||
|
||
| 档 | 范围 | Phase | 授权 |
|
||
|----|------|-------|------|
|
||
| **只读观察** | 看所有资产态势、深链外部状态页 | Phase 0 默认 | 无需授权 |
|
||
| **低风险运营** | Cloudflare purge cache、查日志、重跑 cron(逐项白名单) | Phase 1+ | devops 预批 + 独立 audit |
|
||
| **变更** | 重启服务、改配置、部署、批量生产变更 | **永不进 joy** | devops + 菲比斯红线 |
|
||
|
||
| 动作 | 档 |
|
||
|------|------|
|
||
| 看云主机 / 网站 / 业务系统 / CDN / 任务 / SSL | 只读 ✅ |
|
||
| 深链 feicode / Cloudflare dashboard / 外部状态页 | 只读 ✅ |
|
||
| 神兽根据神州红点发 Board observe 任务 | ✅ 鼓励(遨游 = 感知后协调,非直连生产 shell) |
|
||
| Cloudflare purge cache、查日志、重跑 cron | 低风险运营(白名单) |
|
||
| 在 joy 点「重启 php-fpm / reload nginx / 部署」 | ❌ 变更,走红线 |
|
||
| 批量生产变更 | ❌ 非 joy 职责;devops + 菲比斯红线 |
|
||
|
||
上报链不变:神兽 → 龙奇 → 红线 → 菲比斯。
|
||
|
||
---
|
||
|
||
## 8. 分阶段落地
|
||
|
||
### Phase 0 — 立国(低风险)
|
||
|
||
- [x] 顶栏 **神州** tab + 七类骨架(2026-07-10 UI;2026-07-11 Phase1 探针)
|
||
- [x] `collect_shenzhou()` 读 prod-watch `latest.json` + alerts → 填「网站」格 + 顶部脉搏 + 烽火(2026-07-10 落地,`src/joy/dashboard/shenzhou.py`,66/66 测试过)
|
||
- [x] ~~读 production-servers.md 做 SSL 快照~~ → 实测 04-11 快照的过期已修复(§4.2),改用 prod-watch 实时 SSL;**扩清单**才是真盲区
|
||
- [x] badge 独立(含 hosts/services);文档本文
|
||
- [x] **不** 新 SSH 风暴(Phase 0 纯读 prod-watch 缓存 + 配置台账)
|
||
|
||
### Phase 1 — 开疆
|
||
|
||
- [x] 「云主机」格:标准化生产资产 SSH 探针,**委托 devops 并发**(缓存 120s;2026-07-11 tux)
|
||
- [ ] 客户机按活跃度筛选纳入(常用维护的几个)
|
||
- [ ] Cloudflare API 接入 →「CDN & Cloudflare」格
|
||
- [ ] 「定时任务」格:systemctl list-timers + crontab + wp-cron(feicode-prod 6 条打底)
|
||
- [ ] 低风险运营白名单(purge cache / 查日志 / 重跑 cron)逐项 audit
|
||
- [ ] 站点 × 主机弱关联(域名 → 云主机映射,从 nginx vhost / 宝塔采)
|
||
- [ ] 清理 prod-watch 里已退役的 `wptea.com`
|
||
|
||
### Phase 2 — 入世
|
||
|
||
- [ ] 「业务系统」格:容器态(docker/podman ps)+ health endpoint + 版本(业务红 > 主机 ping;揪出 Mautic/Weblate 长期停止这类)
|
||
- [x] 「在线服务」格:公网 HTTPS 轻探(内部端点 skip;2026-07-11)
|
||
- [ ] 「在线服务」格:更细延迟/错误率
|
||
- [ ] 「外部依赖」格:第三方状态页
|
||
- [ ] vmalert 生产告警只读摘要进烽火
|
||
- [ ] 跨类关联(zombie 漏磁盘:代码 tab 的 zombie × 神州的盘满 → 同一病根联动)
|
||
- [ ] (可选)顶栏视觉「飞轮 | 工程 | 神州」分组,仍单 SPA
|
||
|
||
### 非目标(长期)
|
||
|
||
- 第二套独立 `prod.joy` 站点(除非单 SPA 证明不够)
|
||
- 神州内嵌第二 Forgejo
|
||
- 在面板上完成生产发布流水线
|
||
|
||
---
|
||
|
||
## 9. 与其它 tab 的改名建议(非强制同步做)
|
||
|
||
| 现状 | 建议 | 说明 |
|
||
|------|------|------|
|
||
| 运维 | **集群** | 强调内场基建,减少与神州撞车 |
|
||
| 硬件 | 保持 | 家用/宿主物理层 |
|
||
| 代码 | 保持 | 工程区 |
|
||
| 神兽 | 保持 | 内场主角 |
|
||
|
||
改名可随 Phase 0 或随后 PR,**不阻塞神州 tab 先上**。
|
||
|
||
---
|
||
|
||
## 10. 实现触点(供编码时索引)
|
||
|
||
| 层 | 路径 / 约定 |
|
||
|----|-------------|
|
||
| 导航 | `src/joy/web/app.js` → `TABS` 增 `{ id: 'shenzhou', label: '神州', ... }` |
|
||
| UI | `src/joy/web/js/tabs/shenzhou.js`(新,七类折叠区) |
|
||
| 采集 | `src/joy/dashboard/shenzhou.py` 或 `collect_shenzhou` in package;生产侧采集委托 devops |
|
||
| schema | `dashboard/schema.py` chunk 名 `shenzhou`(七子段) |
|
||
| 配置 | `configs/shenzhou.example.yml`(cloud_hosts / sites / services / business / cdn / jobs / external 七段,cloud_hosts 从 inventory.ini 生成) |
|
||
| Cloudflare | `~/.config/joy/cloudflare.yml`(CF API token + zone 白名单) |
|
||
| 缓存 | `/tmp/joy-dashboard.json` → `shenzhou` 键 |
|
||
| 真相源 | devops `~/ansible/inventory.ini` + `~/docs/devops/production-servers.md` |
|
||
| 交叉文档 | 本文;`joy-forgejo-observe.md`(代码≠神州);linuxjoy `prod-watch.sh` |
|
||
|
||
---
|
||
|
||
## 11. 验收标准(Phase 0)
|
||
|
||
1. 顶栏可见 **神州**,默认不必进神兽才能看到生产红点。
|
||
2. `GET /api/dashboard` JSON 含 `shenzhou.summary` + `sites`(或明确 `_error`)。
|
||
3. 人为制造或回放 prod-watch 告警时,神州 badge ≥ 1,**神兽 badge 公式不变**。
|
||
4. 文档与 UI 文案主名均为「神州」,无「线上」作导航名。
|
||
5. 七类骨架在 UI 占位可见(哪怕只有「网站」格有数据,其余折叠区标 "Phase 1+")。
|
||
6. 无任何「一键重启生产」类控件;低风险运营档 Phase 0 不开。
|
||
|
||
---
|
||
|
||
## 12. 决议记录
|
||
|
||
| 项 | 决议 |
|
||
|----|------|
|
||
| 是否单独导航 | **是** — 一级 tab「神州」 |
|
||
| 是否塞进神兽 | **否** |
|
||
| 是否长期挂在运维子页 | **否**(最多过渡,不作为终态) |
|
||
| 主名 | **神州**(不用「线上」) |
|
||
| 骨架 | **资产台账(纵切七类)**,监测维度降为属性——**不是** prod-watch 监测仪表盘(横切) |
|
||
| 清单真相源 | devops `inventory.ini` + `production-servers.md`(标准化资产);客户机 inventory 外、按需筛 |
|
||
| 采集架构 | **委托 devops**(ansible key 直连)优先,Mac ProxyJump 降级 |
|
||
| 操作面 | 只读(默认)/ 低风险运营(白名单)/ 变更(走红线)三档 |
|
||
| 与代码 tab | **关注点归属,不是机器归属**;feicode-prod 是云主机层一台,非特例 |
|
||
| 隐喻 | 神兽守内场,可观神州、遨游天下,不在此擅自动刀 |
|
||
|
||
---
|
||
|
||
## 13. 相关文档
|
||
|
||
- 飞轮与命名:`linuxjoy/docs/architecture/company-flywheel.md`
|
||
- 代码态势:[`joy-forgejo-observe.md`](./joy-forgejo-observe.md)
|
||
- **生产资产真相源**:`devops:~/ansible/inventory.ini` + `devops:~/docs/devops/production-servers.md`
|
||
- 生产站点脚本:`linuxjoy/scripts/cluster/prod-watch.sh`
|
||
- 生产 SSH:`linuxjoy/docs/ai-context/project-structure.md`
|
||
- joy 面板架构:[`../joy-panel-cli-architecture-plan.md`](../joy-panel-cli-architecture-plan.md)
|
||
|
||
---
|
||
|
||
*本文整理自 2026-07-10 会话:推送 joy-cli 后,讨论生产未接入 joy web、不宜与神兽混用;菲比斯定名「神州」。同日范围校正为「生产资产台账」七类骨架,§4 清单据 devops 权威源(inventory.ini + production-servers.md)落实——纠正 wptea-prod 退役、wenpai-org 规范名、gz-1p 实存、admincdn 非独立机、客户机非标准化等;发现 SSL 大面积过期为首批烽火素材。标注「待补」处(Cloudflare / 客户机角色 / 关键定时任务 / 外部依赖厂商)需进一步确认。*
|