linux-dash 介绍与选型指南
linux-dash 轻量级 Linux 服务器 Web 监控面板的认知与选型篇:介绍三层架构与 29 个监控模块,量化对比 Netdata/glances/Cockpit 并给出选型建议,全部事实联网溯源(查询日期 2026-10-23)。
linux-dash 介绍与选型指南
目标:面向需要为 Linux 服务器挑选一款轻量级 Web 监控面板的读者,完整介绍 linux-dash 的定位、架构、功能模块与社区现状,并与 Netdata、glances、Cockpit 做量化对比,给出「什么场景该选它、什么场景该绕开它」的明确结论。本文所有事实均来自官方仓库与官方徽章服务的联网取证,查询日期为 2026-10-23。
一、环境信息
本文为认知与选型篇,全部数据通过联网溯源获得,未做本地实测。取证来源与查询日期如下:
| 取证项 | 来源 | 查询日期 |
|---|---|---|
| 项目主页与 README | GitHub 仓库 tariqbuilds/linux-dash(原 afaqurk/linux-dash,现已转移) | 2026-10-23 |
| 版本发布历史 | GitHub Releases 页(tags:0.5 / 1.0 / 1.5 / 2.0) | 2026-10-23 |
| 社区活跃度 | GitHub 仓库页内嵌统计(stargazerCount / forksCount)与提交历史页 | 2026-10-23 |
| 对比组件星数 | shields.io GitHub Stars 徽章 JSON 接口 | 2026-10-23 |
| 模块清单 | 仓库 app/server/linux_json_api.sh 源码 | 2026-10-23 |
💡 说明:linux-dash 的仓库已从原作者
afaqurk账号转移至tariqbuilds账号(同一作者 Afaq Tariq 的另一账号),访问旧地址会 301 跳转到新地址,package.json中的 repository 字段仍写着旧地址,属于历史遗留,不影响使用。
二、软件概述
linux-dash 是一个「简单、低开销」的 Linux 服务器 Web 监控面板:在一台 Linux 服务器上部署后,浏览器打开一个网页,就能看到 CPU、内存、磁盘、网络、进程、账户、常见应用等实时状态,界面是一块可拖拽排列的模块化仪表盘。它的自我定位摘自官方 README(查询日期 2026-10-23):
"A simple & low-overhead web dashboard for linux systems" —— 官方仓库 README,v2.0 介绍语
官方给出的三个核心卖点是 小、简单、易用:整个项目(去掉 .git)磁盘占用不到 400KB;前端是一个 AngularJS 单页应用,后端可以在 Node.js、Go、Python、PHP 四种运行时里任选其一,甚至 PHP 模式只是把源码目录挂到 Apache/Nginx 下即可;部署只需 git clone 加一条启动命令。
关键身份信息一览(查询日期 2026-10-23):
| 项目 | 内容 |
|---|---|
| 当前仓库地址 | https://github.com/tariqbuilds/linux-dash (原 afaqurk/linux-dash) |
| 作者 | Afaq Tariq(tariqbuilds) |
| 开源许可 | MIT |
| 最新版本 | 2.0(2017-05-14 发布) |
| 最后一次代码提交 | 2020-03-22(Merge pull request #486) |
| 社区热度 | 10,580 stars / 1,184 forks(仓库页内嵌统计,shields.io 徽章显示 11k) |
| 技术栈 | AngularJS 1.3 前端 + Bash 数据采集脚本 + Node/Go/Python/PHP 任一后端 |
⚠️ 注意:从 2020-03-22 至今(2026-10-23)仓库没有新的代码提交,项目处于停滞维护状态(仓库未被官方标记为 Archived,但已无实质更新)。选型时必须把「不会再有新版本」当作既定前提。
三、核心架构
linux-dash 采用「静态前端 + 轻后端 + Bash 数据源」三层结构,这也是它资源开销极低的根本原因——后端不做任何数据加工,只负责把 Bash 脚本的输出透传给浏览器。
浏览器(AngularJS 单页应用 app/linuxDash.min.js,约 226KB)
│ ①静态资源加载 ②数据通道(二选一/自动降级)
▼
Web 层(四选一):Node.js / Go / Python / PHP(挂到 Apache/Nginx)
│ 调用
▼
app/server/linux_json_api.sh(Bash 脚本,29 个模块函数)
│ 读取
▼
/proc、/etc/passwd、ps、lscpu、df、netstat 等系统原生数据
三层各自的职责:
- 前端:
app/目录下的预构建产物(linuxDash.min.js+linuxDash.min.css+index.html),AngularJS 1.3 单页应用。页面按 5 个页签(系统状态、基本信息、网络、账户、应用)组织,每个监控项是一个可拖拽的「插件」(plugin)小部件。源码在src/js/,改前端需要用 Gulp 重新构建。 - Web 层:
app/server/目录提供了四个等价的服务器实现——index.js(Node.js)、index.go(Go)、index.py(Python)、index.php(PHP)。任何一个都只做两件事:托管app/静态目录,以及把「模块名」转发给数据源脚本。 - 数据源:
app/server/linux_json_api.sh是一个纯 Bash 脚本,内含 29 个模块函数(cpu_info、current_ram、disk_partitions等),函数名即模块名。Web 层以「函数名」为参数调用它,它读取/proc、执行ps/df/lscpu等系统命令后输出 JSON 片段。
💡 技术拓展:linux-dash 的前端到后端有两条数据通道,这也是它与其他监控面板的差异点之一。常见取数模式对比:
模式 原理 特点 REST 轮询 浏览器定时请求 GET /server/?module=<模块名>实现简单、兼容一切反代,有请求间隔延迟 WebSocket 推送 页面加载时建立 WS 长连接,按需发送模块名、服务端推 JSON 延迟低、无重复握手,要求代理支持 Upgrade 头 linux-dash 前端默认优先 WebSocket(Node 后端支持),探测失败则自动降级为 REST 轮询;本方案实际两条通道并存,REST 通道
GET /server/?module=<模块名>是最稳定的取数接口。
Web 层的 HTTP 接口非常精简(以 Node 实现为据,源码 app/server/index.js,查询日期 2026-10-23):
| 接口 | 方法 | 作用 |
|---|---|---|
/ | GET | 返回仪表盘首页(静态 app/index.html) |
/websocket | GET | 返回 {"websocket_support":true},供前端探测 WS 支持 |
/server/?module=<名称> | GET | 执行对应模块函数,返回 JSON |
/websocket(Upgrade) | WS | WebSocket 数据通道,消息体即模块名 |
四、功能特性
4.1 监控模块总表(29 个服务端模块,5 个页面页签)
以下清单取自仓库源码 app/server/linux_json_api.sh 与前端路由 src/js/core/routes.js(查询日期 2026-10-23):
| 页签 | 模块(Bash 函数名) | 展示内容 |
|---|---|---|
| 系统状态 | ram-chart / cpu-avg-load-chart / cpu-utilization-chart / cpu-temp | 内存占用曲线、平均负载、CPU 利用率、CPU 温度(需 lm-sensors) |
| 系统状态 | ram_intensive_processes / cpu_intensive_processes | 内存/CPU 占用最高的进程 TOP 15 |
| 系统状态 | disk_partitions / swap / docker_processes | 磁盘分区用量、Swap、Docker 容器内进程(需本机有 docker 命令) |
| 基本信息 | general_info / memory_info / cpu_info | 主机名、系统版本、运行时长;/proc/meminfo 全量;lscpu 全量 |
| 基本信息 | scheduled_crons / cron_history / io_stats | 全部用户定时任务、cron 执行历史(依赖 /var/log/syslog)、磁盘 IO 统计 |
| 网络 | upload/download-transfer-rate、ip_addresses | 各网卡实时上/下行速率、IP 地址清单(含外网 IP,依赖 dig+resolver1.opendns.com) |
| 网络 | network_connections / arp_cache / ping / bandwidth | 当前 TCP 连接分布、ARP 缓存、ping_hosts 配置文件中主机的延迟、各网卡累计流量 |
| 账户 | user_accounts / logged_in_users / recent_account_logins | 系统账户清单、当前登录用户、一年内最近登录记录(依赖 lastlog) |
| 应用 | common_applications | 检测 php/node/mysql/mongo/vim/python/ruby/java/apache2/nginx/openssl/vsftpd/make 是否安装及路径 |
| 应用 | memcached / redis / pm2_stats | Memcached stats(需本机 11211 端口)、Redis INFO 关键指标(需 redis-cli)、PM2 进程列表(需 pm2) |
💡 说明:前端 5 个页签里出现的图表型插件(ram-chart 等)与表格型插件最终都落到同一份 Bash 模块函数上取数;
ping模块的主机清单来自可编辑配置文件app/server/config/ping_hosts,默认内容为google.com、yahoo.com、twitter.com三行,这是 linux-dash 少数几个「可配置项」之一。
4.2 特性小结
- 体积极小:官方 README 声称去掉
.git后全项目不到 400KB(查询日期 2026-10-23);预构建前端 JS 226KB、CSS 5KB,无需 npm 构建即可使用。 - 后端自由:Node.js(官方推荐)、Go、Python、PHP 四种实现并存,选择完全取决于服务器上已有什么运行时。
- 零依赖数据库:不落盘、不存历史,所有数据现取现读,天然没有存储扩容和备份负担。
- 无任何认证机制:官方 README 明确写了 "Linux Dash does not provide any security or authentication features",并强烈建议部署者自行加一层防护(HTTP Basic 认证、反代访问控制等)。
- 单机视角:只能看部署它的那台服务器,没有跨节点聚合能力。
五、快速开始(官方最小可用示例)
以下步骤逐字取自官方仓库 README(查询日期 2026-10-23,Node.js 为官方推荐路径):
## 1. clone the repo
git clone --depth 1 https://github.com/afaqurk/linux-dash.git
## 2. go to the cloned directory
cd linux-dash/app/server
## 3. install dependencies
npm install --production
## 4. start linux-dash (on port 80 by default; may require sudo)
node index.js
启动后浏览器访问 http://<服务器IP>/ 即可看到仪表盘。README 同时说明:端口可用环境变量 LINUX_DASH_SERVER_PORT 或 --port 参数修改,监听地址默认 0.0.0.0、可用 LINUX_DASH_SERVER_HOST 修改。其余三种后端的启动命令(Go:go run index.go;Python:python index.py;PHP:把 Web 服务器根目录指向 app/ 目录)同样写在 README 中。
⚠️ 注意:上面是官方 README 的原始步骤,直接在 80 端口启动需要 root 权限,且不加认证就把系统信息暴露在公网上非常危险。面向 Ubuntu 22.04 的完整安装(含非特权端口、HTTP Basic 认证、systemd 托管与两种路径的排障实录)见本专栏《Ubuntu 22.04 安装 linux-dash 指南》。
六、适用场景与限制
6.1 适合的场景
- 个人 VPS / 家庭服务器的快速巡检页:一台低配机器上跑个常驻面板,偶尔打开看一眼负载、内存、磁盘,部署成本几乎为零。
- 低资源占用的常驻监控:Node 后端常驻内存约 50MB 上下(pm2 实测 31–53MB 量级,见专栏 CLI 篇),比任何带时序数据库的监控栈低两个数量级。
- 内网/受信环境的简易仪表盘:配合反代 Basic 认证,给团队提供一个「一眼看服务器状态」的轻入口。
- 教学与二开:Bash 模块函数 + AngularJS 插件的结构极其直白,读懂
linux_json_api.sh就能自定义数据模块。
6.2 明确的限制
- 项目停滞:最后提交 2020-03-22,最后发布 2.0(2017-05-14),不再有安全更新;新系统上的兼容性问题(如新版 PHP、新版 awk)不会有官方修复。
- 无认证、无告警、无历史:三者都要靠外围组件补齐(反代认证、外部告警系统、外部采集),linux-dash 本体只做「看当下」。
- 单机视角:没有节点聚合,多台服务器需要各部署一套,没有统一入口。
- 数据实时性依赖页面打开:无后台采集进程,页面不开就没有数据,不能做事后追溯。
七、同类选型对比
面向「Linux 服务器监控」这一需求,选取社区内最常被拿来对比的三款工具做量化对比。星数取自 shields.io GitHub Stars 徽章接口(查询日期 2026-10-23):netdata 81k、glances 34k、Cockpit 15k、linux-dash 11k。
| 维度 | linux-dash 2.0 | Netdata | glances | Cockpit |
|---|---|---|---|---|
| 定位 | 轻量 Web 仪表盘 | 全功能实时性能监控 | 终端优先的跨平台监控 | 服务器管理 Web 控制台 |
| GitHub Stars(2026-10-23) | 11k(精确 10,580) | 81k | 34k | 15k |
| 主语言 | Bash + AngularJS + Node/Go/Python/PHP | C + Node.js | Python | C + JavaScript |
| 数据存储 | 无(现取现读) | 内置时序库,可存历史 | 可选输出到 InfluxDB 等 | 无持久监控历史(依赖 systemd 日志) |
| 告警能力 | 无 | 内置(健康检查引擎) | 依托 Python API 二开 | 无内置 |
| 多节点聚合 | 无 | 有(流复制/父节点) | 有(glances -s/-c 主从模式) | 无(单机管理) |
| 额外能力 | 无 | 每秒级千余指标、APM 集成 | GPU/传感器/容器/进程深度视图 | 存储管理、网络配置、终端、软件更新、容器管理 |
| 运行开销 | 极低(约几十 MB) | 低到中等(官方宣称常驻约 1–2% 单核 + 百 MB 级内存) | 低(Python 进程) | 中等(systemd 常驻多组件) |
| 维护状态 | 停滞(最后提交 2020-03) | 活跃 | 活跃 | 活跃(Red Hat 主导) |
| 部署复杂度 | git clone 即用 | 脚本一键安装 | pip/apt 安装 | 多数发行版自带或 apt 安装 |
7.1 如何选型
- 只想要一个「打开网页看一眼」的轻面板、且接受它不再更新 → linux-dash,部署成本最低、界面最简。
- 要逐秒指标、历史曲线、告警、多机聚合 → Netdata,监控能力是四个中最强的,代价是常驻资源与学习成本都更高。
- 习惯在终端里看监控、又要跨平台(含 BSD/macOS) → glances,Web 模式只是它的附加形态;其深度对比可参考本专栏姊妹篇 《glances 介绍与选型指南》。
- 要直接在网页里管理服务器(改配置、管存储、开终端)而不只是看监控 → Cockpit,它是管理控制台,监控只是其一。
- 生产环境、有合规或长期维护要求 → 不建议 linux-dash:无认证、无更新这两个硬伤必须靠大量外围工作弥补,此时 Netdata/Cockpit 更稳。
💡 说明:glances 与 linux-dash 的安装、配置、命令实操在本专栏与 glances 专栏都有完整覆盖,可点击互链跳转:《Ubuntu 24.04 安装 glances 4.5.8 指南》、《glances 4.5.8 配置参数详解》。
八、参考链接
- 官方仓库(当前地址):https://github.com/tariqbuilds/linux-dash (查询日期 2026-10-23)
- 官方 Wiki:https://github.com/tariqbuilds/linux-dash/wiki (查询日期 2026-10-23)
- 在线 Demo:https://afaqurk.github.io/linux-dash (查询日期 2026-10-23)
- 版本发布页:https://github.com/tariqbuilds/linux-dash/releases (查询日期 2026-10-23)
- 对比组件仓库:https://github.com/netdata/netdata 、https://github.com/nicolargo/glances 、https://github.com/cockpit-project/cockpit (星数经 shields.io 徽章接口取证,查询日期 2026-10-23)