diff --git a/src/content/config/traffic.mdx b/src/content/config/traffic.mdx index b1178b9..8aeb1c7 100644 --- a/src/content/config/traffic.mdx +++ b/src/content/config/traffic.mdx @@ -22,7 +22,8 @@ boot_id 和上次一样 → delta = max(当前读数 - 上次读数, 0) 其余情况 → delta = 0,只重新对基线 ``` -「其余情况」有三种:节点第一次上报、同一个 boot 下读数变小(某个网卡消失了)、`boot_id` 变了。 +「其余情况」有三种:节点第一次上报、同一个 boot 下读数变小(某个网卡消失了)、`boot_id` 变了 +(重启了,或者改了下面说的统计网卡)。 三种都选重新对基线,因为赌错的代价差几个数量级: - 猜错方向计进去,一次虚增一整个 lifetime 计数器(几百 GB),而总流量单调递增,只能手工改回来 @@ -38,6 +39,88 @@ boot_id 和上次一样 → delta = max(当前读数 - 上次读数, 0) 前提是机器没重启。掉线期间重启过的话 `boot_id` 变了,那一段没有基线可减。 +## 哪些网卡计入 + +默认规则是同一份线上的字节只数一次,大多数机器不用配置: + +- lo、容器和虚拟机的网卡、隧道(WireGuard、Tailscale、tun、sit、gre、vxlan 等)不计 +- 网桥、bond、VLAN、macvlan 这类叠在别的网卡上的设备不计,只计它们底下的那块 +- 除了看名字,还按内核给出的链路信息判断,自己起名的网桥和隧道也认得出 +- PPPoE 只认 OpenWrt 的 `pppoe-wan`。pppd 拨号的 `ppp0` 默认照计,因为 LTE 拨号时它是唯一的链路; + 用 pppd 拨 PPPoE 的机器会把拨号口和底下的网卡各算一遍,需要按下文指定 + +agent 启动时会打印一行,列出此刻计入的网卡: + +```bash +# systemd +journalctl -u monitor-agent | grep "counting traffic" + +# OpenRC +grep "counting traffic" /var/log/monitor-agent.log +``` + +### 转发流量的机器要手动指定 + +软路由、桥接了软路由的宿主机上,一个包会先后经过 WAN 口和 LAN 口两块真网卡,按默认规则会算两遍。 +哪块面向运营商只有你知道,需要手动指定。 + +在面板 **节点 → 下载按钮** 打开安装弹窗,打开 **指定统计的网卡**,在「只统计」或「不统计」里填网卡名, +下面的安装命令会随之带上 `--iface`。节点在线时,弹窗会显示并预填它当前的设置。 + +直接写命令也一样: + +```bash +curl -fsSL https://hub.example.com/install.sh | sh -s -- \ + --server https://hub.example.com --token --iface eth1 +``` + +面向运营商的一般就是默认路由所在的那块: + +```bash +# dev 后面就是网卡名 +ip route show default +``` + +| 机器 | `--iface` | +|---|---| +| PPPoE 拨号 | 拨号口,OpenWrt 叫 `pppoe-wan`,pppd 叫 `ppp0` | +| DHCP 或静态 IP 上网的软路由 | WAN 口,如 `eth1` | +| PVE 宿主机上桥接了软路由 | 接运营商的那块物理口,如 `enp1s0` | +| PVE 宿主机只算自己、不算 guest | `vmbr0` | + +写法: + +| 弹窗 | 命令 | 含义 | +|---|---|---| +| 只统计 `eth1, eth2` | `--iface eth1,eth2` | 只统计列出的网卡,默认规则不再生效 | +| 不统计 `eth0` | `--iface -eth0` | 从本来会计入的网卡里去掉这一块,如软路由的 LAN 口;排除优先于列出 | + +只认完整的网卡名,`eth*` 这类通配会被拒绝,免得什么都没匹配上还以为设好了。 + +**批量添加**的弹窗里也有这个选项。一批机器都有一块同名的内网网卡时(比如都叫 `ens19`),在「不统计」 +里填它,每台都只去掉那一块。 + +### 改设置 + +在安装弹窗里改好,复制命令到那台机器上重跑。弹窗里的开关关着时,命令不带 `--iface`,重跑(包括 +升级)会沿用机器上原来的设置;开关打开、两栏都留空,则生成 `--iface ''`,恢复默认规则。 + +也可以直接改配置文件: + +```bash +# 改 MONITOR_IFACE= 这一行,没有就加一行 +vi /opt/monitor/agent.env + +# systemd +systemctl restart monitor-agent + +# OpenRC +rc-service monitor-agent restart +``` + +改了之后 hub 重新对基线:从这一刻起按新的网卡累加,已有的总流量不变,新旧两组网卡读数的差值 +不会被当成流量。网卡增减、被重新归类时也一样。 + ## 月度周期按商家的重置日算 每个节点有自己的**每月重置日**(1–31),在节点编辑里设。 diff --git a/src/content/dev/architecture.mdx b/src/content/dev/architecture.mdx index 18d94a3..7ba1d4e 100644 --- a/src/content/dev/architecture.mdx +++ b/src/content/dev/architecture.mdx @@ -39,14 +39,16 @@ disk_total、agent_version、ipv4、ipv6 `Metrics`: ```text -boot_id uptime cpu load[3] +boot_id iface uptime cpu load[3] mem_total mem_used swap_total swap_used disk_total disk_used net_rx_total net_tx_total ← 内核 lifetime 计数器,hub 负责累加 net_rx net_tx ← 瞬时速率 B/s,agent 自己算差值 tcp udp procs ``` -`boot_id` 来自 `/proc/sys/kernel/random/boot_id`,是 hub 识别 VPS 重启的唯一依据。 +`boot_id` 来自 `/proc/sys/kernel/random/boot_id`,后接 `/` 与所计网卡集合的摘要。它标明 +`net_rx_total` / `net_tx_total` 在哪段区间内可以相减:hub 只比较是否相等,变了就重新对基线。重启、 +改 `--iface`、网卡增减或被重新归类都走这一条。`iface` 回报当前的 `--iface`,面板用它显示并预填。 ### hub → agent diff --git a/src/content/install/agent.mdx b/src/content/install/agent.mdx index f3117cf..e5f19af 100644 --- a/src/content/install/agent.mdx +++ b/src/content/install/agent.mdx @@ -9,7 +9,8 @@ curl -fsSL https://hub.example.com/install.sh | sh -s -- \ --server https://hub.example.com --token ``` -以 root 在目标主机执行,几秒钟后节点就会在面板里亮起来。 +以 root 在目标主机执行,几秒钟后节点就会在面板里亮起来。软路由、PVE 宿主机这类转发流量的机器, +装之前先看[流量统计](/config/traffic)页的「哪些网卡计入」一节。 二进制由 hub 转发(`/agent/`),节点不需要能连上 GitHub——能连上 hub 就能装, IPv6-only 或者出不去的机器也一样。 diff --git a/src/content/reference/faq.mdx b/src/content/reference/faq.mdx index 759f932..37c0f73 100644 --- a/src/content/reference/faq.mdx +++ b/src/content/reference/faq.mdx @@ -177,7 +177,8 @@ WAL 模式下不截断的话文件只会变大不会变小,所以这三步是 hub 重跑一遍安装脚本:校验通过才替换,起不来自动回滚,没写的参数沿用上次的。 -agent 重跑一遍它的安装命令。没有自动更新,因为自更新意味着 agent 能以 root 下载并执行任意二进制。 +agent 重跑一遍它的安装命令,没写的 `--interval` 和 `--iface` 沿用机器上原来的设置。没有自动更新, +因为自更新意味着 agent 能以 root 下载并执行任意二进制。 主题点卡片上的 ⟳。