61a3b1ccad5747cdf6c9c9ea8eb26ef0a571012f
- remove install.sh-based deployment path - add multi-stage Dockerfile for HarborForge.Monitor - support HF_MONITER_* env vars and keep HF_MONITOR_* compatibility - add rootfs-aware host metric collection for Docker deployment
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
项目结构
HarborForge.Monitor/
├── cmd/harborforge-monitor/ # 程序入口
├── internal/config/ # 配置加载
├── internal/telemetry/ # 指标采集与上报
├── Dockerfile # 容器化运行
├── config.example.json
└── README.md
配置
先在 HarborForge Monitor 中注册服务器并生成 API Key。
然后准备配置文件,例如 /etc/harborforge-monitor/config.json:
{
"backendUrl": "https://monitor.hangman-lab.top",
"identifier": "vps-nginx-01",
"apiKey": "your-api-key",
"reportIntervalSec": 30,
"logLevel": "info"
}
也支持环境变量覆盖。为了兼容你的命名,这里优先支持:
HF_MONITER_BACKEND_URLHF_MONITER_IDENTIFIERHF_MONITER_API_KEYHF_MONITER_REPORT_INTERVALHF_MONITER_LOG_LEVELHF_MONITER_ROOTFS
同时也兼容旧的/正确拼写的 HF_MONITOR_* 变量名。
本地开发
go mod tidy
go build ./cmd/harborforge-monitor
./harborforge-monitor -config ./config.example.json -dry-run -once
Docker 运行
构建镜像:
docker build -t harborforge-monitor .
推荐以宿主机 rootfs 只读挂载方式运行,这样容器里采集到的是宿主机信息而不是容器自身:
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_URLHF_MONITER_IDENTIFIERHF_MONITER_API_KEYHF_MONITER_REPORT_INTERVALHF_MONITER_LOG_LEVELHF_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不上报
Description
Languages
Go
96.9%
Dockerfile
3.1%