Skip to content

nocoo/bat

Repository files navigation

Bat

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

platform probe worker dashboard tests license


这是什么

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 生成

技术栈

技术
Probe Rust · tokio · reqwest
Worker Hono · Cloudflare Workers · D1
Dashboard Next.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:8787
bun --filter @bat/dashboard dev    # Dashboard: localhost:7025
cd probe && cargo build --release   # Probe

常用命令

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

测试

内容 触发时机
L1 UT 单元测试(225 个,覆盖率 90%+) pre-commit
L2 Lint Biome + TypeScript 类型检查 pre-commit
L3 API E2E Worker API 端到端测试 pre-push
L4 BDD E2E Playwright 浏览器测试 按需
模块 测试数 覆盖率
@bat/shared 26 100%
@bat/worker 85 90%+
@bat/dashboard 47 90%+
probe (Rust) 67
合计 225
bun turbo test          # TypeScript 测试
cd probe && cargo test  # Rust 测试

告警规则

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

Tier 1(每次 ingest 评估)

规则 条件 严重度
mem_high mem > 85% AND swap > 50% Critical
no_swap swap = 0 AND mem > 70% Critical
disk_full 任一挂载点 > 85% Critical
iowait_high iowait > 20% 持续 5min Warning
steal_high steal > 10% 持续 5min Warning
host_offline 超过 120s 未上报 Critical
uptime_anomaly uptime < 300s Info

Tier 2(每次 tier2 上报评估)

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

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

规则 条件 严重度
cpu_pressure PSI cpu avg60 > 25% 持续 5min Warning
mem_pressure PSI mem avg60 > 10% 持续 5min Warning
io_pressure PSI io avg60 > 20% 持续 5min Warning
disk_io_saturated 任一设备利用率 > 80% 持续 5min Warning
tcp_conn_leak TIME_WAIT > 500 持续 5min Warning
oom_kill OOM kill 次数 > 0 Critical

文档

文档 内容
01-metrics-catalogue 信号目录:T1/T2/T3/Identity 全量信号、procfs 数据源、21 条告警规则
02-architecture 系统架构、关键决策、MVP 范围、部署方案
03-data-structures D1 Schema、Migration 策略、Payload 类型
04-probe Rust Probe:采集器、主循环、配置、systemd
05-worker CF Worker:路由、数据接收、告警、聚合 Cron
06-dashboard Next.js 仪表盘:OAuth、代理架构、图表
07-testing 四层测试策略、Husky hooks
08-commits 原子化提交计划(Phase 0–5,46 commits)
09-tier3-signals Tier 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

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages