🎉服务公测中,公测期间积分免费领 · 正式版预计 1元 = 100积分

探针源码

监控探针以 Go 语言编写,源码完全公开,欢迎审计。

概述

探针是一个轻量级后台程序,部署在你的服务器上,负责采集系统资源指标并定时上报到星梦云平台。探针采用主动上报模式,仅向平台发起出站连接,无需开放任何入站端口。

探针源码下载

包含完整 Go 源码与依赖配置

下载源码

技术栈

  • 语言:Go
  • 系统采集:gopsutil — 跨平台系统指标采集库
  • 配置管理:godotenv — 从 .env 文件加载环境变量

文件结构

文件职责
main.go程序入口,加载配置,启动三个定时任务协程
monitor.go系统指标采集,获取 CPU、内存、磁盘、带宽数据
report.go数据上报,组装 JSON 并通过 HTTP POST 发送到平台
traffic.go流量监控,月度累计统计、虚拟网卡过滤、本地持久化

运行流程

探针启动后,依次完成以下步骤:

  1. 加载配置 — 从 .env 文件读取平台地址(MASTER_ADDRESS)、节点 ID(NODE_ID)、节点密钥(NODE_KEY)和用户 ID(UID)
  2. 初始化流量监控 — 加载上次保存的月度流量数据,如不存在则从零开始
  3. 首次上报 — 立即执行一次数据上报,确保平台快速感知节点上线
  4. 启动定时任务 — 运行三个独立的定时协程,详见下表
任务间隔说明
流量采集30 秒读取网卡流量计数器,计算本周期内的上行 / 下行字节数,累加到月度总量
数据上报1 分钟采集全部系统指标,组装 JSON 并 POST 到平台接口
流量持久化5 分钟将月度流量数据写入本地文件,防止异常退出导致数据丢失

程序收到退出信号(Ctrl+C 或 SIGTERM)时,会先将当前流量数据保存到本地文件,再安全退出。

平台接口调用

探针通过 HTTP POST 向平台上报数据:

POST {MASTER_ADDRESS}/api/monitor/report

请求体为 JSON 格式,包含以下字段:

字段类型说明
uidstring用户 ID
nodeIdstring节点 ID,由平台分配
nodeKeystring节点密钥,用于身份校验
cpuModelstringCPU 型号
cpuCoresintCPU 核心数
memoryTotalfloat64总内存(MB)
diskTotalfloat64总磁盘空间(MB)
cpuUsagefloat64CPU 使用率(%)
memoryUsagefloat64内存使用率(%)
diskUsagefloat64磁盘使用率(%)
netSpeedUploadfloat64实时上行带宽(Mbps)
netSpeedDownloadfloat64实时下行带宽(Mbps)
monthTrafficUploadfloat64当月累计上行流量(MB)
monthTrafficDownloadfloat64当月累计下行流量(MB)

请求示例

JSON
{
  "uid": "user_abc123",
  "nodeId": "node_xyz789",
  "nodeKey": "key_a1b2c3d4",
  "cpuModel": "Intel(R) Xeon(R) E5-2680 v4",
  "cpuCores": 4,
  "memoryTotal": 8192.00,
  "diskTotal": 51200.00,
  "cpuUsage": 23.45,
  "memoryUsage": 67.89,
  "diskUsage": 45.12,
  "netSpeedUpload": 1.23,
  "netSpeedDownload": 56.78,
  "monthTrafficUpload": 1024.50,
  "monthTrafficDownload": 2048.30
}

流量监控细节

探针在流量采集时会自动过滤以下虚拟网卡,确保只统计真实网络流量:

  • Docker(docker、veth、br-)
  • 虚拟化平台(vmnet、vboxnet、vEthernet、Hyper-V、VMware)
  • VPN / 隧道(tun、tap)
  • 回环与蓝牙(lo、Loopback、Bluetooth)

月度流量数据每 5 分钟持久化到本地文件 monthly_traffic.json。跨月自动重置计数器,重启程序不会丢失当月数据。

安全说明

最小权限运行

探针以普通用户权限运行即可,不需要 root / Administrator 权限。仅读取系统资源指标,不会修改任何系统配置。

仅出站连接

探针仅向平台服务器发起出站 HTTP 请求,不会监听任何端口,不会接受外部连接。

数据最小化

探针仅采集并上报本页面声明的系统指标数据,不采集用户文件、进程列表、网络连接等隐私信息。

常见问题

探针占用多少资源?

探针是轻量级 Go 程序,运行时内存占用通常在 20MB 以下,CPU 占用几乎可忽略。

支持 Windows 吗?

支持。探针使用 gopsutil 库,兼容 Linux 和 Windows 系统。磁盘采集在 Linux 下读取 /,Windows 下读取 C:\。

如何验证探针确实只采集了这些数据?

源码完全公开,你可以自行审计。探针不使用任何混淆或闭包,所有网络请求和文件操作均在源码中可见。