ServerStatus-Hotaru 中文使用教程
2026-06-22发表于
Serverstatus一、项目速览
入门 · 1 分钟版
如果你手上有三五台 VPS 或者云服务器,想用一个页面就能看清每台机器的 CPU、内存、流量和在线状态——ServerStatus-Hotaru 就是为此而生的轻量级探针系统。
它本质上是一个 C 语言编写的服务端 + Python/Go 客户端 的组合。服务端负责收集和展示数据,客户端部署在每台被监控的机器上,定期上报状态。整个项目只有 2 个核心文件,部署完就能在浏览器里看到类似「云监控面板」的界面。
一句话判断:如果你需要「免费、极简、不依赖第三方平台」的多服务器监控,而且不想折腾 Prometheus + Grafana 那一套重型方案,这个项目值得花 10 分钟试一下。
二、核心功能与架构
进阶 · 推荐细读
它是什么:ServerStatus-Hotaru 是经典项目 ServerStatus-Toyo 的改良版,用 C 重写了服务端,前端换成了 Vue 3.0 + SemanticUI。它只做一件事——实时展示多台服务器的基本运行状态。
它解决什么问题:当你管理多台服务器时,最频繁的需求是「看一眼那台机器还活着吗」「流量有没有跑超」。传统方案要么太笨重(Zabbix),要么需要第三方服务(UptimeRobot)。这个项目给你一个自建的面板,所有数据存在本地,不经过任何外部服务。
谁最该用:个人站长、学生党、中小团队——只要你有 2-20 台服务器,而且只关心 CPU/内存/磁盘/流量/在线状态这 5 个指标。
架构非常简单:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 服务器 A │ │ 服务器 B │ │ 服务器 C │
│ (客户端) │ │ (客户端) │ │ (客户端) │
│ 上报状态 ────┼──► │ 上报状态 ────┼──► │ 上报状态 ────┼──►
└──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────┐
│ 服务端 (C) │
│ 端口 35601 │
│ 前端页面 │
└──────────────┘
服务端:用 C 写的二进制文件 sergate,监听一个端口(默认 35601),接收客户端上报的 JSON 数据,然后提供 HTTP 接口给前端渲染。它不做数据持久化——重启就丢历史数据,只保留当前状态。
客户端:有两个版本。默认版是纯 Python 脚本,依赖 psutil 读取系统信息;Go 客户端是为没有 Python 环境的机器准备的(比如 Alpine Linux 容器)。客户端默认按重启清零计算流量,也可以选装 vnStat 实现按月累计。
作者视角补充:很多人第一次用会困惑「为什么历史数据没了」。因为设计哲学就是「轻量级」——服务端不写数据库,不存日志,所有数据都在内存里。如果你需要历史趋势图,这个项目不适合你,请右转 NodeStatus 或 Prometheus。
三、动手实践
入门
下面我们从零开始部署一套完整的监控系统。假设你有一台「服务端机器」(用来展示面板)和至少一台「客户端机器」(被监控的机器)。
环境准备
服务端要求:CentOS 7、Debian 8、Ubuntu 15.10 及以上,需要 wget 和 bash。
客户端要求:Python 2.7+(或 Go 环境),需要 pip。
一键安装服务端
在服务端机器上执行:
wget https://raw.githubusercontent.com/cokemine/ServerStatus-Hotaru/master/status.sh
bash status.sh s
脚本会做三件事:编译 C 服务端、下载前端页面、启动服务。如果在中国大陆服务器上跑,建议换用 Coding.net 镜像:
wget https://cokemine.coding.net/p/hotarunet/d/ServerStatus-Hotaru/git/raw/master/status.sh
bash status.sh s
安装过程中会提示你输入服务端 IP 和端口,默认端口 35601。安装完后,浏览器访问 http://你的IP:35601 就能看到面板了——不过现在还没有任何客户端数据。
安装客户端
在被监控的机器上执行:
wget https://raw.githubusercontent.com/cokemine/ServerStatus-Hotaru/master/status.sh
bash status.sh c
脚本会问三个问题:
- 服务端 IP:刚才那台机器的 IP
- 服务端端口:默认 35601
- 客户端用户名:随便起,比如 server1
- 客户端密码:随便设,但要和服务端配置一致
常见踩坑 1:客户端提示
psutil安装失败。这是最常见的问题——某些最小化安装的 Linux 没有python3-pip。手动补一下:
bash apt install python3-pip -y # Debian/Ubuntu yum install python3-pip -y # CentOS pip3 install psutil常见踩坑 2:面板上显示「离线」但客户端进程明明在跑。原因是防火墙没放开 35601 端口。检查一下:
```bashiptables 临时放行
iptables -I INPUT -p tcp --dport 35601 -j ACCEPT
或者用 firewalld
firewall-cmd --add-port=35601/tcp --permanent && firewall-cmd --reload
```
验证效果
在服务端机器上查看客户端是否连接成功:
curl http://127.0.0.1:35601/json/stats.json
如果返回类似下面的 JSON,说明客户端已经上报数据了:
{
"servers": [
{
"name": "server1",
"host": "你的客户端IP",
"uptime": "3 days, 2 hours",
"cpu": 12.5,
"memory_total": 1024,
"memory_used": 512,
"hdd_total": 20480,
"hdd_used": 10240,
"network_rx": 123456789,
"network_tx": 98765432
}
]
}
刷新浏览器页面,你应该能看到服务器卡片了。
四、进阶玩法
深入 · 老手可选
自定义流量计算方式
默认情况下,客户端重启后流量归零。如果你想按月累计流量,需要安装 vnStat。手动安装脚本会自动处理,但如果你是一键安装的,可以这样启用:
# 在客户端机器上安装 vnStat
apt install vnstat -y
# 然后修改客户端配置,添加一行
echo "USE_VNSTAT=true" >> /usr/local/ServerStatus/client/config.conf
# 重启客户端
systemctl restart status-client
手动配置多客户端
如果你有很多台机器要监控,一键安装脚本每次都要交互输入很麻烦。可以直接编辑服务端的配置文件:
vim /usr/local/ServerStatus/server/config.json
格式如下:
{
"servers": [
{
"username": "server1",
"password": "pass123",
"host": "192.168.1.10",
"name": "主站服务器"
},
{
"username": "server2",
"password": "pass456",
"host": "192.168.1.11",
"name": "API 服务器"
}
]
}
然后每台客户端机器上,手动修改客户端的配置文件 /usr/local/ServerStatus/client/config.conf,内容就是服务端 IP、端口、用户名和密码。
作者视角补充:这个配置文件没有热重载机制。改完必须重启服务端进程。我建议用
pkill sergate杀掉旧进程,再用nohup重新启动,而不是用kill -9——后者可能导致端口未释放。
自定义前端
如果你觉得默认的 Vue 主题太素,可以自己改。前端源码在 hotaru_theme 仓库。修改后重新打包:
npm install
npm run build
把生成的 dist 目录覆盖到服务端的 /usr/local/ServerStatus/web 即可。
五、判断与建议
进阶 · 推荐细读
应该选它的情况:
- 你只需要实时状态,不需要历史图表
- 服务器数量在 20 台以内
- 你希望部署过程不超过 5 分钟
- 你不想为监控额外花钱买第三方服务
不该选它的情况:
- 你需要监控 MySQL、Nginx 等应用层指标(它只监控系统级)
- 你需要告警通知(项目作者已明确不添加此功能,推荐用 NodeStatus)
- 你需要历史数据回溯分析(服务端不存日志)
- 你的服务器超过 50 台(C 语言服务端性能尚可,但前端没有分组管理功能)
结论:ServerStatus-Hotaru 是一个「刚刚好」的工具——刚好够用,刚好轻量,刚好免费。它不会成长为全能监控平台,但作为个人站长手里那十几台机器的「健康仪表盘」,它做得比任何大而全的方案都更省心。
如果你想在它的基础上加告警、加历史数据、加 Docker 支持,作者已经为你指明了方向:NodeStatus。但如果你只是想「看一眼机器还活着没」——就这个了,别犹豫。
项目信息
| 项目 | 值 |
|---|---|
| 仓库 | cokemine/ServerStatus-Hotaru |
| 语言 | C |
| Star | 2,467 |
| Fork | 623 |
| 主页 | 无 |
参考链接
40
19
1
682
文章目录
评论