diff --git a/src/content/config/traffic.mdx b/src/content/config/traffic.mdx index 8358fe8..959f2d8 100644 --- a/src/content/config/traffic.mdx +++ b/src/content/config/traffic.mdx @@ -6,6 +6,8 @@ | **本月流量** | 同上,另存一份 | 跨过这个节点的重置日 | | **今日流量** | 同上 | 跨过 hub 本地时区的零点 | +三个数字约每分钟更新一次,实时网速不受影响。 + ## 为什么由 hub 累加 网卡流量来自内核计数器,它每次开机从零开始。直接显示的话,机器一重启,总流量就归零。 diff --git a/src/content/dev/architecture.mdx b/src/content/dev/architecture.mdx index 44c70f5..d1b8647 100644 --- a/src/content/dev/architecture.mdx +++ b/src/content/dev/architecture.mdx @@ -51,6 +51,9 @@ tcp udp procs `net_rx_total` / `net_tx_total` 在哪段区间内可以相减:hub 只比较是否相等,变了就重新对基线。重启、 改 `--iface`、网卡增减或被重新归类都走这一条。`iface` 回报当前的 `--iface`,面板用它显示并预填。 +hub 按 agent 自己的节奏收,超出的直接丢弃:与上一条间隔不足 500 ms 的 `report`、同一连接的第二个 +`hello`、每 5 秒超过 128 条的 `ping.result`(每节点至多 64 个探测,每个最短 5 秒一次)。 + ### hub → agent | method | params | 何时发 | @@ -138,15 +141,20 @@ POST /api/db/restore POST /api/db/vacuum |---|---| | `setting` | key/value 配置,替代配置文件 | | `node` | 节点配置 + agent 上报的静态信息,含分组、离线通知的开关与状态 | -| `traffic` | **单调递增的流量累计**。1:1 于 node,但每次上报都写 | +| `traffic` | **单调递增的流量累计**。1:1 于 node,约每分钟写一次 | | `metric` | 历史明细,每节点每分钟一行,按保留天数删 | | `ping_task` / `ping_node` | 探测任务及其节点分配 | | `ping_record` | 探测结果,同样按保留天数删 | | `session` | 登录会话,存 sha256,14 天过期 | -`traffic` 单独一张表,因为它和 `node` 的读写方式完全不同:一个是偶尔修改的配置,一个是每秒都在写的数据。 +`traffic` 单独一张表,因为它和 `node` 的读写方式完全不同:一个是偶尔修改的配置,一个是持续累加的数据。 更重要的是,`metric` 可以随意清理而累计流量不受影响,累计值不是从明细算出来的。 +累计值约每分钟记一次账:hub 在内存里保留每个节点最新的一条读数,跨分钟时记账,`boot_id` 变化或读数变小 +时断点两侧各记一次,连接断开和 hub 正常退出时补记。内核计数器一直在累加,后一次记账包含中间的全部增量, +结果与逐条记账相同。hub 被强行杀掉时少记最后不到一分钟,节点下次上报补回(前提是期间没重启)。探测结果 +同样按分钟成批写入。 + `metric` 的一行描述的是它之前的那一分钟,而不是某一时刻:网速由累计值的差算出,其余字段是这一分钟内的 平均值。 diff --git a/src/content/dev/theme.mdx b/src/content/dev/theme.mdx index 95308d5..c628c7b 100644 --- a/src/content/dev/theme.mdx +++ b/src/content/dev/theme.mdx @@ -296,11 +296,12 @@ body 是整个设置对象,会替换已保存的那份,规则和面板相同 ## 匿名拿不到什么 -匿名访问 `GET /api/nodes` 只返回公开的节点,响应里没有地址(`ip`、`ipv4`、`ipv6`、`ipv4_pin`、`ipv6_pin`)、 -`hostname`、`remark`、`token` 这些 key:不是空字符串,而是根本不存在。国家只给一个 `country`,手填的 -优先。 +匿名访问 `GET /api/nodes` 只返回公开的节点,响应里没有地址(`ip`、`ipv4`、`ipv6`、`ipv4_pin`、`ipv6_pin`、 +`ipv4_auto`、`ipv6_auto`、`addresses`)、`hostname`、`remark`、`token` 这些 key:不是空字符串,而是根本 +不存在。国家只给一个 `country`,手填的优先。 -指标部分走白名单,所以 `boot_id`、`iface`、`net_rx_total`、`net_tx_total` 也只给登录后的面板。 +指标部分走白名单:内核原始计数器 `net_rx_total`、`net_tx_total` 和 `boot_id` 谁都拿不到,`iface` 和地址 +一样只在登录后返回。`metrics` 里的 `total_rx`、`total_tx`、`month_rx`、`month_tx` 由 hub 填入,与顶层同名字段相同。 字段定义以 hub 的源码为准。写主题时按「这个 key 可能不存在」处理。 diff --git a/src/content/install/agent.mdx b/src/content/install/agent.mdx index ebf2409..95b35f6 100644 --- a/src/content/install/agent.mdx +++ b/src/content/install/agent.mdx @@ -23,7 +23,8 @@ curl -fsSL https://hub.example.com/install.sh | sh -s -- \ | 上报间隔 | `--interval <秒>` | 1–3600,默认 1 | | 指定统计的网卡 | `--iface <列表>` | 见[流量统计](/config/traffic#转发流量的机器要手动指定) | -两项都记在机器上,以后重装或升级时不写就沿用。 +两项都记在机器上,以后重装或升级时不写就沿用。节点在线时,弹窗显示并预填它当前的上报间隔和统计网卡; +上报间隔没改就不写进命令。 ## 批量安装