root 61a3b1ccad feat: switch monitor client to Docker-first runtime
- 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
2026-03-20 10:13:18 +00:00

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_URL
  • HF_MONITER_IDENTIFIER
  • HF_MONITER_API_KEY
  • HF_MONITER_REPORT_INTERVAL
  • HF_MONITER_LOG_LEVEL
  • HF_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_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 不上报
Description
Lightweight Go telemetry client for HarborForge Monitor
Readme 79 KiB
Languages
Go 96.9%
Dockerfile 3.1%