Files
MoShiro/backend/probe
justme 7cc3afbd9b fix(build): use native NativeAOT SDK in Linux fast lane
Only use the StuDev AotAnywhere SDK when explicitly enabled by Windows cross-platform builds.

Co-authored-by: JustMe <mr.toing@outlook.com>
2026-10-05 17:37:50 +00:00
..

Monitor Probe

Probe 是网络测量的发起端,通常运行在家宽或其他需要观测的网络出口。它连接 Agent、执行线路任务,并把本端采集的原始数据交给 Agent 汇总上报。Probe 不直接连接 Backend,也不提供远程命令或文件管理功能。

工作流程

Backend ──任务与节点列表──> Agent <──测量会话──> Probe
                              │                     │
                              └──汇总并上报数据 <───┘

Probe 使用面板生成的 probe.json 读取自身身份、首次连接用的 Agent 地址和本地测试限制。成功连接后,Agent 会同步可用节点列表;Probe 将列表缓存到同目录的 agents.json。probe.json 含私钥,请限制文件访问权限,不要提交到版本控制。

构建

需要 .NET SDK 10。为应用 backend/global.json 的 SDK 设置,请从 backend/ 目录构建:

cd backend
dotnet build probe/src/Monitor.Probe -c Release

发布 NativeAOT 程序需要对应平台的 C/C++ 工具链;<RID> 应与构建环境和目标平台匹配:

dotnet publish probe/src/Monitor.Probe -c Release -r <RID> -p:PublishAot=true

也可在仓库根目录运行 bash scripts/publish.sh probe <RID>,再使用 scripts/package.sh probe <RID> 生成部署包。支持平台和安装流程见 ../../docs/deployment.md。

配置与运行

在管理端创建 Probe 并下载一次性身份配置,将文件保存为目标机上的 /etc/monitor/probe.json。随后运行:

monitor-probe --config /etc/monitor/probe.json

不传 --config 时默认读取 /etc/monitor/probe.json。配置中的 limits 是本地硬上限,Backend 无法远程放宽;路由器等低性能设备可调低测试码率和包速率,避免 Probe 自身成为测量瓶颈。部署时可使用仓库的 packaging/ 文件和安装脚本。

也可使用 OCI 镜像 registry.oeo.one/monitor/monitor-probe:<version>,自动选择 Linux amd64 或 arm64 镜像。容器默认读取 /etc/monitor/probe.json,并在同一目录维护 agents.json 缓存,因此挂载目录必须允许 UID/GID 1654 读写。建议使用宿主网络,并按 ICMP 测量需求添加 NET_RAW 能力。

设计说明

  • Probe 只执行编译进程序的测量模块。它不认识 Backend,不落盘测量数据,也不能执行命令或自行更新。
  • 测量模块由 backend/shared/Monitor.Measurement/ 与 Agent 共用;Probe 负责发起连接、调度任务和记录本端数据。
  • 测量模型和协议细节见 ../../docs/measurement.md 与 ../../docs/protocol.md;整体架构见 ../../docs/architecture.md。