Skip to content

Repository files navigation

Bat

轻量级 VPS 基础设施监控系统
实时指标采集 · 智能告警 · 可视化仪表盘

platformprobeworkerdashboardtestslicense


这是什么

Bat 是一套专为小型 VPS 集群设计的基础设施监控方案,用于替代 Netdata(120–243MB RSS)等重量级方案。整个系统由三个组件构成:Rust 编写的 Probe 采集端(~2MB RSS),运行在 Cloudflare Workers 上的数据处理和告警引擎,以及部署在 Railway 上的 Next.js 可视化仪表盘。

VPS hosts Cloudflare Railway
┌──────────┐ ┌──────────────┐ ┌──────────────┐
│ bat-probe │──POST──>│ bat │<──GET───│ dashboard │
│ (Rust) │ │ (Hono + D1) │ │ (Next.js 16) │
└──────────┘ └──────────────┘ └──────────────┘
~2MB RSS CF Workers + D1 Bun standalone
30s interval Hourly aggregation Google OAuth
systemd unit Alert evaluation Recharts

功能

Probe(采集端)

  • 系统指标采集 — CPU usage/iowait/steal、内存、磁盘、网络流量,30 秒间隔
  • 极低资源占用 — Rust 编写,~2MB RSS,静态编译 ~300KB ELF
  • 一键安装curl | bash 安装脚本,自动配置 systemd 服务

Worker(数据引擎)

  • 数据接收与存储 — Hono 框架,D1 数据库,支持高频写入
  • 智能告警 — 6 条内置规则(内存、磁盘、iowait、steal、主机离线等)
  • 定时聚合 — Cron 触发的小时级数据聚合,自动清理过期数据

Dashboard(仪表盘)

  • 实时可视化 — Recharts 图表,CPU/内存/磁盘/网络趋势
  • Google OAuth — 基于邮箱白名单的访问控制
  • Probe 分发 — 内置安装脚本和二进制分发,Setup 页面一键部署

安装

Probe 安装(在目标 VPS 上)

curl -fsSL https://<dashboard>/api/probe/install.sh | bash -s -- --url <worker_url> --key <write_key>

Worker 部署(Cloudflare Workers)

cd packages/worker
wrangler secret put BAT_WRITE_KEY --env production
wrangler secret put BAT_READ_KEY --env production
wrangler d1 execute bat-db-prod --env production --file=migrations/0001_initial.sql
wrangler deploy --env production

Dashboard 部署(Railway / Docker)

docker build -f packages/dashboard/Dockerfile .

环境变量:BAT_API_URLBAT_READ_KEYBAT_WRITE_KEYAUTH_SECRETGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETALLOWED_EMAILS

项目结构

bat/
├── packages/
│ ├── dashboard/ # Next.js 16 仪表盘
│ ├── worker/ # Cloudflare Workers 数据引擎
│ └── shared/ # 共享类型定义
├── probe/ # Rust 采集端
│ ├── src/collectors/ # CPU/memory/disk/network 采集器
│ ├── dist/ # systemd unit 文件
│ └── install.sh # 安装脚本
├── docs/ # 设计文档(10 篇)
└── scripts/ # 版本同步、覆盖率检查、logo 生成

技术栈

技术
ProbeRust · tokio · reqwest
WorkerHono · Cloudflare Workers · D1
DashboardNext.js 16 · React 19 · SWR · Recharts
认证NextAuth.js · Google OAuth
工具链Bun · Turbo · Biome · Husky

开发

环境要求

  • Bun 1.3+、Rust 1.80+
  • Wrangler CLI(Worker 开发)

快速开始

bun install
bun --filter @bat/worker dev # Worker: localhost:37025
bun --filter @bat/dashboard dev # Dashboard: localhost:7025cd probe && cargo build --release # Probe

常用命令

命令说明
bun turbo typecheck全量类型检查
bun turbo test运行所有测试
bun run lintBiome 代码检查
bun run lint:fix自动修复 lint 问题
scripts/sync-version.sh同步版本号到所有子包
scripts/resize-logos.py从 logo.png 生成所有派生图标

测试

内容触发时机
L1 UT单元测试(225 个,覆盖率 90%+)pre-commit
L2 LintBiome + TypeScript 类型检查pre-commit
L3 API E2EWorker API 端到端测试pre-push
L4 BDD E2EPlaywright 浏览器测试按需
模块测试数覆盖率
@bat/shared26100%
@bat/worker8590%+
@bat/dashboard4790%+
probe (Rust)67
合计225
bun turbo test# TypeScript 测试cd probe && cargo test# Rust 测试

告警规则

21 条告警规则,全部已实现。Probe 上报原始数据,Worker 服务端评估告警。

Tier 1(每次 ingest 评估)

规则条件严重度
mem_highmem > 85% AND swap > 50%Critical
no_swapswap = 0 AND mem > 70%Critical
disk_full任一挂载点 > 85%Critical
iowait_highiowait > 20% 持续 5minWarning
steal_highsteal > 10% 持续 5minWarning
host_offline超过 120s 未上报Critical
uptime_anomalyuptime < 300sInfo

Tier 2(每次 tier2 上报评估)

规则条件严重度
ssh_password_authSSH 密码认证开启Critical
ssh_root_loginSSH root 登录=yesCritical
no_firewall防火墙未启用Critical
public_port非白名单端口暴露在 0.0.0.0Warning
security_updates安全更新待安装 > 7dWarning
container_restart容器重启次数 > 5Critical
systemd_failed有 failed systemd 单元Warning
reboot_required需要重启 > 7dInfo

Tier 3(每次 ingest 评估,可选字段)

规则条件严重度
cpu_pressurePSI cpu avg60 > 25% 持续 5minWarning
mem_pressurePSI mem avg60 > 10% 持续 5minWarning
io_pressurePSI io avg60 > 20% 持续 5minWarning
disk_io_saturated任一设备利用率 > 80% 持续 5minWarning
tcp_conn_leakTIME_WAIT > 500 持续 5minWarning
oom_killOOM kill 次数 > 0Critical

文档

文档内容
01-metrics-catalogue信号目录:T1/T2/T3/Identity 全量信号、procfs 数据源、21 条告警规则
02-architecture系统架构、关键决策、MVP 范围、部署方案
03-data-structuresD1 Schema、Migration 策略、Payload 类型
04-probeRust Probe:采集器、主循环、配置、systemd
05-workerCF Worker:路由、数据接收、告警、聚合 Cron
06-dashboardNext.js 仪表盘:OAuth、代理架构、图表
07-testing四层测试策略、Husky hooks
08-commits原子化提交计划(Phase 0–5,46 commits)
09-tier3-signalsTier 3 设计:PSI 压力、磁盘 I/O、TCP 状态、OOM kills
10-host-inventory主机清单设计:CPU 拓扑、虚拟化、网络接口、块设备

License

MIT © 2026

About

🦇 Lightweight VPS monitoring — Rust probe, Cloudflare Worker, and Next.js dashboard replacing Netdata

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages