# HarborForge.Monitor 轻量级 Go 遥测客户端,用于把服务器硬件状态上报到 HarborForge Monitor。 它**不依赖 OpenClaw**,适合普通 Linux 主机、VPS、Nginx 机器等。 ## 采集内容 - CPU 使用率 - 内存使用率 - 磁盘使用率 - Swap 使用率 - Load Average - Uptime - Nginx 是否安装 - `/etc/nginx/sites-enabled` 列表 ## 上报接口 客户端调用: - `POST /monitor/server/heartbeat-v2` - Header: `X-API-Key` ## 项目结构 ```text HarborForge.Monitor/ ├── cmd/harborforge-monitor/ # 程序入口 ├── internal/config/ # 配置加载 ├── internal/telemetry/ # 指标采集与上报 ├── Dockerfile # 容器化运行 ├── config.example.json └── README.md ``` ## 配置 先在 HarborForge Monitor 中注册服务器并生成 API Key。 然后准备配置文件,例如 `/etc/harborforge-monitor/config.json`: ```json { "backendUrl": "https://monitor.hangman-lab.top", "identifier": "vps-nginx-01", "apiKey": "your-api-key", "reportIntervalSec": 30, "logLevel": "info" } ``` 也支持环境变量覆盖。为了兼容你的命名,这里优先支持: - `HF_MONITER_BACKEND_URL` - `HF_MONITER_IDENTIFIER` - `HF_MONITER_API_KEY` - `HF_MONITER_REPORT_INTERVAL` - `HF_MONITER_LOG_LEVEL` - `HF_MONITER_ROOTFS` 同时也兼容旧的/正确拼写的 `HF_MONITOR_*` 变量名。 ## 本地开发 ```bash go mod tidy go build ./cmd/harborforge-monitor ./harborforge-monitor -config ./config.example.json -dry-run -once ``` ## Docker 运行 构建镜像: ```bash docker build -t harborforge-monitor . ``` 推荐以**宿主机 rootfs 只读挂载**方式运行,这样容器里采集到的是宿主机信息而不是容器自身: ```bash docker run -d \ --name harborforge-monitor \ --restart unless-stopped \ -e HF_MONITER_BACKEND_URL=https://monitor.hangman-lab.top \ -e HF_MONITER_IDENTIFIER=vps-nginx-01 \ -e HF_MONITER_API_KEY=your-api-key \ -e HF_MONITER_REPORT_INTERVAL=30 \ -e HF_MONITER_ROOTFS=/host \ -v /:/host:ro \ harborforge-monitor ``` `Dockerfile` 里已经预置了这些环境变量: - `HF_MONITER_BACKEND_URL` - `HF_MONITER_IDENTIFIER` - `HF_MONITER_API_KEY` - `HF_MONITER_REPORT_INTERVAL` - `HF_MONITER_LOG_LEVEL` - `HF_MONITER_ROOTFS` ## 注意 - Docker 模式下,建议挂载 `-v /:/host:ro` 并设置 `HF_MONITER_ROOTFS=/host` - 这样 CPU/MEM/LOAD/UPTIME 会通过 host proc/sys 视角采集,磁盘和 nginx 配置也会走宿主机路径 - 当前 Nginx site 列表读取的是 `${ROOTFS}/etc/nginx/sites-enabled` - 如果机器没有安装 Nginx,会回报 `nginx_installed = false` - 该客户端不会尝试读取 OpenClaw 信息,`agents` 默认为空,`openclaw_version` 不上报