Linboard:轻量级 Linux 系统监控看板
已发布基于 Go 与 React / TypeScript,将主机资源、存储、Docker、systemd、进程、日志和健康告警汇集到一个只读网页看板,支持单二进制部署与本机令牌认证。
项目概览
Linboard 是一个轻量级 Linux 系统监控看板,将主机指标、存储、Docker、systemd、进程、日志与健康告警汇集到同一个网页中。
项目采用 Go 与 React / TypeScript,构建时将前端嵌入 Go 二进制。运行时只需一个进程,无需 Node.js 或数据库;监控历史保存在有容量限制的内存缓存中。
主要功能
| 模块 | 可查看内容 |
|---|---|
| 主机资源 | CPU、内存、Swap、系统负载、温度与网络趋势 |
| 存储 | 挂载容量、设备 IO 与可选的 SMART 健康查询 |
| Docker | 容器、镜像、资源使用情况,以及基于标签的 Compose 分组 |
| 服务与定时任务 | systemd 服务状态、系统与当前用户的 Timer |
| 进程与端口 | 进程资源使用、TCP 监听、UDP 绑定及进程归属 |
| 日志 | journal、指定文件与 Docker 日志的有限历史查询和实时流 |
| 健康告警 | 持续资源异常、服务失败和容器频繁重启等站内状态与事件 |
各数据源使用运行用户已有的访问权限。某个来源不可用时独立报告状态,其他模块仍可继续提供数据。首次采样缺少基线、计数器回退或权限不足时,返回空值或明确状态,避免把不可用数据展示成零。
技术实现
采集与查询分离
后端按主机、磁盘、进程、Docker、systemd、日志和健康状态拆分模块,由应用入口显式组装依赖与路由。采集器按不同周期更新模块快照,HTTP 查询读取缓存,健康规则也基于已有快照计算。
Linux 主机 / Docker / systemd ↓ 各模块采集器 ↓ 模块快照与有界趋势 ↓ 认证 API → Web 看板
固定日志来源 → 有限历史查询 / 认证 SSE → Web 看板模块快照 → 健康规则 → 站内状态与事件采集调度传播 context,设置期限与并发限制;同一采集任务串行执行,耗时超过周期时丢弃积压的时钟信号。趋势最多保留 15 分钟,同时受样本数量与字节预算约束,不持久化历史。
单二进制与接口契约
前端使用 React / TypeScript,通过同源 /api/v1 获取数据。仓库以 api/openapi.yaml 定义接口契约,并生成前端类型。完整构建先生成前端静态资源,再通过 Go 的 embed 与 webui 构建标签将其嵌入可执行文件。
| 目录 | 职责 |
|---|---|
cmd/linboard | 启动参数与进程生命周期 |
internal/app | 模块、依赖与路由组装 |
internal/platform | HTTP、认证、采集调度、缓存及固定来源访问 |
internal/modules | 业务模块及各自的数据快照 |
web | 前端界面与静态资源嵌入入口 |
api/openapi.yaml | API 契约 |
只读访问与日志流
服务仅监听 127.0.0.1,所有业务 API 均需 Bearer Token。前端将令牌保存在标签页内存中,刷新后需要重新登录。项目不提供服务启停、容器控制或网页终端。
实时日志通过认证 SSE 返回,限制同时连接数、单路持续时间与每批输出大小;连接断开或服务退出时取消对应读取。健康告警仅在站内展示,不执行自动修复或外发通知。
使用方式
构建需要 Go 1.27.1 或更高版本、Node.js 24 或更高版本及 npm。在项目仓库根目录执行:
npm cinpm run build:linboard./bin/linboard --port 17839打开 http://127.0.0.1:17839,从用户配置目录内的 linboard/token 文件读取令牌并在登录页输入,通常位于 $HOME/.config/linboard/token。前台运行时按 Ctrl+C 停止,构建后的二进制无需 Node.js 即可运行。
Docker、静态文件日志和 SMART 默认关闭,需要显式配置。启用 Docker 的命令为:
./bin/linboard --docker-socket /run/docker.sock不带 webui 标签构建 cmd/linboard 时,得到的是不含网页界面的 API 服务。systemd 安装、SSH 转发、文件日志配置与更新步骤见运行指南。
适用范围与开源来源
Linboard 面向 Linux 单机监控,保留短期内存趋势;进程重启后不会保留这些历史数据。可选数据源依赖对应工具与权限,具体访问边界见安全说明。
项目采用 AGPL-3.0-only 许可。主机与磁盘的部分采集逻辑适配自 kula,项目保留了来源与修改记录;perch 提供了监控功能与只读数据组织方式的参考,Eight.ly 提供了面板布局与视觉设计参考。