返回项目列表

Linboard:轻量级 Linux 系统监控看板

已发布
Go / React / TypeScript / Linux / Docker / systemd

基于 Go 与 React / TypeScript,将主机资源、存储、Docker、systemd、进程、日志和健康告警汇集到一个只读网页看板,支持单二进制部署与本机令牌认证。

Linboard:轻量级 Linux 系统监控看板

项目概览#

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/platformHTTP、认证、采集调度、缓存及固定来源访问
internal/modules业务模块及各自的数据快照
web前端界面与静态资源嵌入入口
api/openapi.yamlAPI 契约

只读访问与日志流#

服务仅监听 127.0.0.1,所有业务 API 均需 Bearer Token。前端将令牌保存在标签页内存中,刷新后需要重新登录。项目不提供服务启停、容器控制或网页终端。

实时日志通过认证 SSE 返回,限制同时连接数、单路持续时间与每批输出大小;连接断开或服务退出时取消对应读取。健康告警仅在站内展示,不执行自动修复或外发通知。

使用方式#

构建需要 Go 1.27.1 或更高版本、Node.js 24 或更高版本及 npm。在项目仓库根目录执行:

Terminal window
npm ci
npm 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 的命令为:

Terminal window
./bin/linboard --docker-socket /run/docker.sock

不带 webui 标签构建 cmd/linboard 时,得到的是不含网页界面的 API 服务。systemd 安装、SSH 转发、文件日志配置与更新步骤见运行指南。

适用范围与开源来源#

Linboard 面向 Linux 单机监控,保留短期内存趋势;进程重启后不会保留这些历史数据。可选数据源依赖对应工具与权限,具体访问边界见安全说明。

项目采用 AGPL-3.0-only 许可。主机与磁盘的部分采集逻辑适配自 kula,项目保留了来源与修改记录;perch 提供了监控功能与只读数据组织方式的参考,Eight.ly 提供了面板布局与视觉设计参考。