- 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
111 lines
2.7 KiB
Markdown
111 lines
2.7 KiB
Markdown
# 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` 不上报
|