探针源码
监控探针以 Go 语言编写,源码完全公开,欢迎审计。
概述
探针是一个轻量级后台程序,部署在你的服务器上,负责采集系统资源指标并定时上报到星梦云平台。探针采用主动上报模式,仅向平台发起出站连接,无需开放任何入站端口。
探针源码下载
包含完整 Go 源码与依赖配置
技术栈
- 语言:Go
- 系统采集:gopsutil — 跨平台系统指标采集库
- 配置管理:godotenv — 从 .env 文件加载环境变量
文件结构
| 文件 | 职责 |
|---|---|
| main.go | 程序入口,加载配置,启动三个定时任务协程 |
| monitor.go | 系统指标采集,获取 CPU、内存、磁盘、带宽数据 |
| report.go | 数据上报,组装 JSON 并通过 HTTP POST 发送到平台 |
| traffic.go | 流量监控,月度累计统计、虚拟网卡过滤、本地持久化 |
运行流程
探针启动后,依次完成以下步骤:
- 加载配置 — 从 .env 文件读取平台地址(MASTER_ADDRESS)、节点 ID(NODE_ID)、节点密钥(NODE_KEY)和用户 ID(UID)
- 初始化流量监控 — 加载上次保存的月度流量数据,如不存在则从零开始
- 首次上报 — 立即执行一次数据上报,确保平台快速感知节点上线
- 启动定时任务 — 运行三个独立的定时协程,详见下表
| 任务 | 间隔 | 说明 |
|---|---|---|
| 流量采集 | 30 秒 | 读取网卡流量计数器,计算本周期内的上行 / 下行字节数,累加到月度总量 |
| 数据上报 | 1 分钟 | 采集全部系统指标,组装 JSON 并 POST 到平台接口 |
| 流量持久化 | 5 分钟 | 将月度流量数据写入本地文件,防止异常退出导致数据丢失 |
程序收到退出信号(Ctrl+C 或 SIGTERM)时,会先将当前流量数据保存到本地文件,再安全退出。
平台接口调用
探针通过 HTTP POST 向平台上报数据:
POST {MASTER_ADDRESS}/api/monitor/report请求体为 JSON 格式,包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| uid | string | 用户 ID |
| nodeId | string | 节点 ID,由平台分配 |
| nodeKey | string | 节点密钥,用于身份校验 |
| cpuModel | string | CPU 型号 |
| cpuCores | int | CPU 核心数 |
| memoryTotal | float64 | 总内存(MB) |
| diskTotal | float64 | 总磁盘空间(MB) |
| cpuUsage | float64 | CPU 使用率(%) |
| memoryUsage | float64 | 内存使用率(%) |
| diskUsage | float64 | 磁盘使用率(%) |
| netSpeedUpload | float64 | 实时上行带宽(Mbps) |
| netSpeedDownload | float64 | 实时下行带宽(Mbps) |
| monthTrafficUpload | float64 | 当月累计上行流量(MB) |
| monthTrafficDownload | float64 | 当月累计下行流量(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:\。
如何验证探针确实只采集了这些数据?
源码完全公开,你可以自行审计。探针不使用任何混淆或闭包,所有网络请求和文件操作均在源码中可见。
