搭建一个有后台管理的服务器监控网站-NodeStatus
环境准备
服务器:腾讯云轻量应用服务器
系统:Debian 11
安装好Docker、Docker-compose
NodeStatus搭建
项目地址:NodeStatus
简介
NodeStatus是一个用TypeScript编写的服务器监控程序,可以实时显示服务器的状态和性能。
先简单介绍一下服务端和客户端的功能。
服务端:
- 提供一个Web界面,显示所有连接的客户端的状态和性能,包括CPU、内存、硬盘、网络等指标。
- 支持自定义主题和语言,可以根据用户的喜好和需求修改界面的样式和内容。
- 提供了后台管理界面,以通过修改服务器相关配置。
客户端:
- 采集服务器的状态和性能数据,定时发送给服务端。
- 支持Go和Node.js两种版本,可以根据服务器的环境选择合适的版本。
- 支持使用dsn参数或者分别指定host、user、password、port参数来连接服务端。
- 支持使用pm2管理进程,实现后台运行和自动重启。
NodeStatus的主要特点有:
- 支持本地和Docker安装
- 支持多个客户端连接
- 支持自定义主题和语言
NodeStatus的安装方法有两种:
- 本地安装:需要先安装Node.js,然后使用npm或pnpm安装nodestatus-server和pm2,然后运行status-server或status-server-run命令启动服务。
- Docker安装:需要先安装Docker和docker-compose,然后下载docker-compose.yml文件,修改环境变量相关配置,然后运行docker compose up -d命令启动服务。(本教程使用)
NodeStatus的客户端有两个版本:
- Go版本:https://github.com/cokemine/nodestatus-client-go
- Node.js版本(已弃用,不推荐):https://github.com/cokemine/nodestatus-client
客户端的使用方法是(Go版本):
手动安装:
运行时需传入客户端对应参数。
假设你的服务端地址是 https://status.mydomain.com,客户端用户名 username,密码 password。
可以使用一键脚本进行安装。
wget https://raw.githubusercontent.com/cokemine/nodestatus-client-go/master/install.sh
#安装
bash install.sh
#卸载
bash install.sh uninstall
# 更新
bash install.sh update
# 安装时指定 DSN
bash install.sh install --dsn "wss://username:password@status.mydomain.com"
Web安装:
使用后台管理界面能够修改服务器相关配置并自动生成连接。(本教程使用)
通过Docker-compose安装服务端
首先,首先通过SSH登陆服务器,依次输入以下命令。
apt update -y ## 更新软件源
mkdir -p ~/data/docker_data/NodeStatus ## 在docker_data文件夹下创建Ward文件夹
cd ~/data/docker_data/NodeStatus ## 进入文件夹
wget https://raw.githubusercontent.com/cokemine/nodestatus/master/docker-compose.yml ## 在创建的文件夹下载docker-compose.yml文件
docker-compose.yml文件内容如下,如果不能远程下载,直接创建docker-compose.yml文件并将以下内容复制进去即可。
version: "3"
services:
nodestatus:
image: cokemine/nodestatus
container_name: nodestatus
restart: always
environment:
PORT: 35601
VERBOSE: "false"
PING_INTERVAL: 30
TZ: Asia/Shanghai
USE_PUSH: "false"
USE_IPC: "true"
USE_WEB: "true"
WEB_THEME: "hotaru-theme"
WEB_TITLE: "Server Status"
WEB_SUBTITLE: "Servers' Probes Set up with NodeStatus"
WEB_HEADTITLE: "NodeStatus"
WEB_USERNAME: "admin"
WEB_PASSWORD: "password"
WEB_SECRET: "password"
PUSH_TIMEOUT: 120
PUSH_DELAY: 15
TGBOT_TOKEN: ""
TGBOT_CHATID: ""
TGBOT_PROXY: ""
TGBOT_WEBHOOK: ""
volumes:
- /root/data/docker_data/nodestatus/server:/usr/local/NodeStatus/server
- /root/data/docker_data/nodestatus/tmp:/tmp:rw
ports:
- "35601:35601"
这是作者对配置文件的介绍:
PORT : NodeStatus 所用端口, 默认 35601
VERBOSE : 是否输出更多日志信息,默认 false
PING_INTERVAL : 用于心跳检测是否与客户端异常断开连接, 默认 30 (30 秒)
TZ : 用于设置时区,默认 Asia/Shanghai
USE_PUSH : 是否使用 Telegram 推送, 默认 true
USE_IPC : 是否需要 IPC 修改服务端配置, 默认 true
USE_WEB : 是否需要开启一个小型 web 面板修改服务端配置, 默认 true
WEB_THEME : NodeStatus 前端使用的主题,默认 hotaru-theme , 可选 hotaru-theme | classic-theme
WEB_TITLE : 自定义站点显示标题,默认 Server Status
WEB_SUBTITLE : 自定义站点显示副标题,默认 Servers' Probes Set up with NodeStatus
WEB_HEADTITLE : 用于定义 head 标签中的 title 元素,默认 NodeStatus
WEB_USERNAME : WEB 面板用户名,默认 admin
WEB_PASSWORD : WEB 面板密码
WEB_SECRET : 用于 jsonwebtoken, 建议设为一个随机的字符串, 默认不填即和密码相同
PUSH_TIMEOUT : 客户端报警推送超时时间 (在这个时间内无论客户端发生了什么只要重新恢复与客户端的连接就不会推送), 默认 120 (120 秒)
PUSH_DELAY : 报警推送服务启动延迟 (防止重启服务端后导致的集中推送), 默认 15 (15 秒)
TGBOT_TOKEN : Telegram Bot Token (从 BotFather 申请到)
TGBOT_CHATID : Telegram Bot 需要推送的 chat_id, 如不清楚可以先启动 NodeStatus, 对 Bot 发送 /start 获取这个 id, 多个请用 , 隔开
TGBOT_PROXY : Telegram 代理服务器配置,例 http://127.0.0.1:10808,仅支持 http 代理
TGBOT_WEBHOOK : Telegram Webhook 配置,不填写默认 Polling,例: https://tz.mydomain.com,使用 Webhook 务必需要开启 https,若你使用了 https,则建议填写你的域名以开启 Webhook, 而非 Polling。
如果你不想配置Telegram机器人,直接将USE_PUSH改为false就好。
按照自己的需求修改完docker-compose.yml文件并保存后,在docker-compose.yml所在文件夹下输入以下命令就能启动服务端。
docker compose up -d
在浏览器的地址栏输入:服务器IP地址:35601,就能进入服务器监控界面,如下图所示。

服务器监控界面现在还没有服务器信息展示,下面介绍一下客户端的安装流程。
通过后台Web页面安装客户端
首先需要进入后台管理界面。在浏览器网址栏输入服务器IP地址:35601/admin,就能进入后台管理登陆界面。

这里的用户名和密码就是docker-compose.yml中设置的用户名以及密码,输入后进入后台管理界面。

点击Management菜单。

点击New按钮。

Username和Password随意按需填写,Name可以自定义服务器名称,Type是虚拟化方式,Location和Region是地址以及区域。比如我想要监控一台新加坡地区的Vultr服务器,就可以按以下方式填写。

可以看到Script自动生成了一段代码,通过SSH登陆你要监控的服务器,将这一段代码粘贴进去就可以了。
进入监控界面,就可以看到一台服务器已经成功监控了。

评论区