Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dingdingpw/monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

12 Commits

Repository files navigation

Monitor Party

Monitor Party 是一个轻量级 VPS / 服务器监控面板,由中心端 vps-server 和采集端 vps-agent 组成。中心端提供公开监控面板、管理员后台、节点管理、Agent 安装命令生成、Agent 二进制下载和 WebSocket 数据推送;Agent 负责采集并上报 CPU、内存、硬盘、网络、负载、连接数和在线状态。

默认示例域名:https://www.monitor.party

严重升级提示

本次更新缩减了发布文件体积,清理了历史残留的前端构建文件,并重新生成了内嵌前端和 release 二进制。更新过程中如果替换、卸载或导入操作不当,可能会造成节点、套餐信息、站点设置或 token 数据丢失。升级前请务必备份中心端数据文件:

sudo cp /var/lib/vps-monitor/server.json /var/lib/vps-monitor/server.json.bak.$(date +%Y%m%d%H%M%S)

如果已进入后台,也建议先使用「节点管理」里的「一键导出」导出节点备份 JSON,再执行升级。

本次更新

  • Windows Agent 现在支持真正的 Windows Service 模式,服务启动/停止会响应系统服务管理器,不再以普通控制台程序方式注册。
  • Windows 安装脚本修复 TLS 1.2、服务创建、中文 Node ID 和 UTF-8 BOM 问题,配置文件改为 UTF-8 无 BOM 写入。
  • Agent 配置解析兼容带 BOM 的 config.env,避免 Windows PowerShell 5.1 写入 BOM 后解析失败。
  • Release 构建脚本改为低并发 go build -p 1,降低多平台编译时内存占用,并在构建失败时立即中断。
  • 新增每节点本周期流量统计,默认每月 1 号重置,后台可设置 1-31 号;小月没有对应日期时自动按当月最后一天重置。
  • 本周期上传/下载流量由中心端持久化到 server.json,节点或中心端重启后会继续保持统计。
  • Agent 新增系统/负载采集字段:真实主机名、发行版、内核、CPU 架构、虚拟化、CPU 型号、物理/逻辑核心、磁盘读写速率和进程数。
  • Server 将新增 Agent 字段透传到 WebSocket 的 Host / State 数据中,前台展开节点详情即可查看。
  • 前台详情页补充系统、内核、CPU、磁盘读写、进程、TCP / UDP、运行时长、数据更新时间等展示。
  • 后台节点管理新增「一键导出 / 一键导入」,导出 JSON 备份,导入时合并节点和套餐信息,不主动删除现有节点。
  • Release 构建脚本现在会自动构建并同步前端,再编译中心端,避免漏嵌前端资源。
  • 清理历史残留的前端 hash 产物,vps-server 发布文件体积明显缩小。

一键安装

需要改的只有两个地方: https://你的域名 你的后台密码

Linux 中心端一键安装:

curl -fsSL https://raw.githubusercontent.com/dingdingpw/monitor/main/release/install-server-linux.sh | sudo sh -s -- --bin-url "https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-linux-amd64"

ARM64:

https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-linux-arm64

ARMv7:

https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-linux-armv7

386:

https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-linux-386

带参数一次性安装,避免交互:

curl -fsSL https://raw.githubusercontent.com/dingdingpw/monitor/main/release/install-server-linux.sh | sudo sh -s -- \
 --public-url "https://你的域名" \
 --admin-user "admin" \
 --admin-pass "你的后台密码" \
 --auth-secret "换成一串随机密钥" \
 --bin-url "https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-linux-amd64"

安装完看状态:

sudo systemctl status vps-server

查看日志:

sudo journalctl -u vps-server -f

windows 中心端一键安装:

$arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } elseif ($env:PROCESSOR_ARCHITECTURE -eq "x86" -and -not $env:PROCESSOR_ARCHITEW6432) { "386" } else { "amd64" }
$installDir = "C:\Program Files\vps-monitor"
$dataDir = "C:\ProgramData\vps-monitor"
New-Item -ItemType Directory -Force -Path $installDir,$dataDir | Out-Null
Invoke-WebRequest "https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-windows-$arch.exe" -OutFile "$installDir\vps-server.exe" -UseBasicParsing
$env:ADDR = ":3000"
$env:PUBLIC_URL = "https://你的域名"
$env:AUTH_SECRET = [guid]::NewGuid().ToString("N") + [guid]::NewGuid().ToString("N")
$env:ADMIN_USER = "admin"
$env:ADMIN_PASS = "你的后台密码"
$env:DATA_PATH = "$dataDir\server.json"
& "$installDir\vps-server.exe"

如果你想后台开机自启,用这个一键安装为计划任务:

$arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } elseif ($env:PROCESSOR_ARCHITECTURE -eq "x86" -and -not $env:PROCESSOR_ARCHITEW6432) { "386" } else { "amd64" }; $installDir = "C:\Program Files\vps-monitor"; $dataDir = "C:\ProgramData\vps-monitor"; New-Item -ItemType Directory -Force -Path $installDir,$dataDir | Out-Null; Invoke-WebRequest "https://raw.githubusercontent.com/dingdingpw/monitor/main/release/vps-server-windows-$arch.exe" -OutFile "$installDir\vps-server.exe" -UseBasicParsing; $secret = [guid]::NewGuid().ToString("N") + [guid]::NewGuid().ToString("N"); $run = "@`r`n`$env:ADDR=':3000'`r`n`$env:PUBLIC_URL='https://你的域名'`r`n`$env:AUTH_SECRET='$secret'`r`n`$env:ADMIN_USER='admin'`r`n`$env:ADMIN_PASS='你的后台密码'`r`n`$env:DATA_PATH='$dataDir\server.json'`r`n& '$installDir\vps-server.exe'`r`n"; Set-Content -Path "$installDir\run-server.ps1" -Value $run -Encoding UTF8; schtasks /Create /TN "vps-server" /TR "powershell.exe -ExecutionPolicy Bypass -File `"$installDir\run-server.ps1`"" /SC ONSTART /RL HIGHEST /F; schtasks /Run /TN "vps-server"

功能

  • 一体化中心端:公开面板、管理后台、API、WebSocket、Agent 下载均由 vps-server 提供。
  • 多平台 Agent:Linux amd64 / arm64 / armv7 / 386,Windows amd64 / arm64 / 386
  • 实时监控:CPU、内存、Swap、硬盘、网络速率、累计流量、负载、运行时间和在线状态。
  • 节点管理:预创建节点、生成安装命令、删除节点、编辑套餐/购买信息。
  • 节点级 token:每个节点独立 Agent token,中心端不再使用全局 AGENT_TOKEN
  • 安全加固:拒绝默认弱密钥、限制 Node ID 字符集、配置文件权限收紧、Agent 默认要求 HTTPS。

架构

vps-server
 - 公开监控面板 /
 - 管理后台 /admin
 - Agent 上报接口 /api/agent/report
 - WebSocket /ws
 - Agent 安装脚本 /install/*
 - Agent 二进制下载 /download/*
vps-agent
 - 读取本机配置
 - 定时采集系统指标
 - 使用节点专属 token 上报到中心端

目录

cmd/vps-server/ 中心端入口
cmd/vps-agent/ Agent 入口
internal/server/ 中心端逻辑、后台页面、静态资源、内嵌 Agent 二进制
internal/server/web/dist/ 中心端内嵌前端构建产物
internal/server/agent_bins/ 中心端内嵌 Agent 下载文件
internal/agent/ Agent 指标采集
internal/config/ Agent 配置解析
internal/reporter/ Agent 上报逻辑
scripts/ 构建、安装、卸载脚本源文件
release/ 发布用二进制和安装脚本
web/ Vue 前端源码
data/ 本地开发数据示例

快速安装中心端

下载 GitHub Release 中适合服务器架构的中心端二进制和安装脚本,例如 Linux amd64:

vps-server-linux-amd64
install-server-linux.sh
uninstall-server-linux.sh

放到同一目录后执行:

chmod +x install-server-linux.sh vps-server-linux-amd64
sudo ./install-server-linux.sh

脚本会询问:

Public URL [https://www.monitor.party]
Internal secret (leave empty to generate)
Admin username [admin]
Admin password (leave empty to generate)
Listen address [:3000]
Max nodes [2000]
Binary download URL (empty for local file)

说明:

  • Public URL:公网访问地址,生产环境必须使用 HTTPS,例如 https://monitor.example.com
  • Internal secret:中心端内部安全密钥,不是后台登录密码;留空会自动生成。
  • Admin username:后台管理员用户名,默认 admin
  • Admin password:后台管理员登录密码,和 Internal secret 不需要一致;留空会自动生成。
  • Listen address:中心端监听地址,默认 :3000
  • Max nodes:最大节点数,默认 2000
  • Binary download URL:留空时使用当前目录的本地二进制。

中心端现在不需要填写 Agent token。Agent token 会在后台为每个节点单独生成。

Internal secretAdmin password 不是同一个东西,不需要一致。前者用于中心端内部安全用途,后者只用于 /admin 后台登录。

安装完成后访问:

https://你的域名/admin

Nginx 反向代理

生产环境建议使用 HTTPS 反向代理到本机 3000 端口:

server {
 listen 80;
 server_name monitor.example.com;
 return 301 https://$host$request_uri;
}
server {
 listen 443 ssl http2;
 server_name monitor.example.com;
 ssl_certificate /etc/letsencrypt/live/monitor.example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/monitor.example.com/privkey.pem;
 location / {
 proxy_pass http://127.0.0.1:3000;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 }
 location /ws {
 proxy_pass http://127.0.0.1:3000;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 }
}

添加 Agent 节点

推荐只通过后台生成安装命令:

  1. 打开 https://你的域名/admin
  2. 使用中心端安装时设置的管理员账号密码登录。
  3. 添加节点 中输入 Node ID,例如 US-node-001
  4. 点击 添加并生成
  5. 复制后台生成的 Linux 或 Windows 安装命令到目标服务器执行。

每次生成命令都会为该节点签发新的独立 token。服务端只保存 token hash,不保存明文 token。

Node ID 规则:

支持中文、英文、数字和常见分隔符
长度 1-96
不能包含换行、引号、斜杠、反斜杠、Shell 控制符或 HTML 尖括号

建议使用地区前缀:

US-node-001
JP-node-001
HK-node-001
DE-node-001
CN-上海-腾讯云

Linux Agent

后台生成的命令示例:

curl -fsSL https://monitor.example.com/install/agent-linux.sh | sudo sh -s -- --server https://monitor.example.com --token NODE_TOKEN --node-id US-node-001

安装后会创建:

/usr/local/bin/vps-agent
/etc/vps-agent/config.env
/etc/systemd/system/vps-agent.service

常用命令:

sudo systemctl status vps-agent
sudo systemctl restart vps-agent
sudo journalctl -u vps-agent -f

卸载:

curl -fsSL https://monitor.example.com/uninstall/agent-linux.sh | sudo sh

Windows Agent

后台生成的命令需要在管理员 PowerShell 中执行,示例:

powershell -ExecutionPolicy Bypass -Command "iwr https://monitor.example.com/install/agent-windows.ps1 -UseBasicParsing | iex; Install-VpsAgent -Server 'https://monitor.example.com' -Token 'NODE_TOKEN' -NodeId 'US-win-001'"

安装后会创建:

C:\Program Files\vps-agent\vps-agent.exe
C:\ProgramData\vps-agent\config.env
Windows 服务:vps-agent

常用命令:

Get-Service vps-agent
Restart-Service vps-agent
Stop-Service vps-agent
Start-Service vps-agent

卸载:

powershell -ExecutionPolicy Bypass -Command "iwr https://monitor.example.com/uninstall/agent-windows.ps1 -UseBasicParsing | iex"

配置文件

中心端配置:

/etc/vps-monitor/server.env

示例:

ADDR=:3000
AUTH_SECRET=replace-with-strong-random-secret
ADMIN_USER=admin
ADMIN_PASS=replace-with-strong-random-password
PUBLIC_URL=https://monitor.example.com
DATA_PATH=/var/lib/vps-monitor/server.json
MAX_NODES=2000

修改后重启:

sudo systemctl restart vps-server

Agent 配置:

Linux: /etc/vps-agent/config.env
Windows: C:\ProgramData\vps-agent\config.env

示例:

SERVER=https://monitor.example.com
TOKEN=node-specific-token
NODE_ID=US-node-001
BASIC_INTERVAL=2s
DISK_INTERVAL=30s
CONNECTION_INTERVAL=60s
MOUNTS=auto
NETWORK_EXCLUDE=lo,docker*,veth*,br-*
DISK_EXCLUDE_FS=tmpfs,devtmpfs,overlay,squashfs,proc,sysfs,cgroup,cgroup2

数据文件

中心端默认数据文件:

/var/lib/vps-monitor/server.json

其中包含节点列表、上报数据、购买信息、站点设置和节点 token hash。建议升级前备份:

sudo cp /var/lib/vps-monitor/server.json /var/lib/vps-monitor/server.json.bak.$(date +%Y%m%d%H%M%S)

流量统计

  • 累计接收 / 累计发送 来自节点系统网卡累计字节数,表示该节点网卡总接收/发送流量,节点重启或网卡计数器重置后可能归零。
  • 本周期接收 / 本周期发送 由中心端根据 Agent 每次上报的网卡累计值差额计算,并持久化到 server.json,节点或中心端重启后会继续累计。
  • 每个节点默认每月 1 号重置本周期流量;可在后台节点编辑里设置 1-31 号作为流量重置日。
  • 如果设置的重置日超过当月天数,会自动使用当月最后一天,例如 31 号在 2 月会按 28/29 号重置。
  • 当节点重启导致网卡累计值变小,中心端会认为计数器重置,只更新基准值,不扣减本周期流量。

升级中心端

替换二进制并重启即可,数据文件不会自动删除:

sudo systemctl stop vps-server
sudo cp /usr/local/bin/vps-server /usr/local/bin/vps-server.bak.$(date +%Y%m%d%H%M%S)
sudo install -m 0755 ./vps-server-linux-amd64 /usr/local/bin/vps-server
sudo systemctl start vps-server
sudo journalctl -u vps-server -n 100 --no-pager

如果从旧的全局 AGENT_TOKEN 版本升级到节点级 token 版本,旧 Agent 需要重新在后台生成命令并重装,否则无法通过新鉴权。

卸载

卸载中心端:

sudo ./uninstall-server-linux.sh

彻底清空中心端配置和数据:

sudo rm -rf /etc/vps-monitor /var/lib/vps-monitor

注意:删除 /var/lib/vps-monitor 会清空节点、购买信息、站点设置和节点 token,所有 Agent 都需要重新添加并安装。

卸载 Linux Agent:

sudo ./uninstall-agent-linux.sh

卸载 Windows Agent:

.\uninstall-agent-windows.ps1

本地开发

运行中心端:

AUTH_SECRET=replace-with-strong-random-secret \
ADMIN_USER=admin \
ADMIN_PASS=replace-with-strong-random-password \
PUBLIC_URL=http://127.0.0.1:3000 \
DATA_PATH=./data/server.json \
go run ./cmd/vps-server

运行 Agent:

SERVER=http://127.0.0.1:3000 \
TOKEN=node-specific-token \
NODE_ID=local-node-001 \
go run ./cmd/vps-agent run --config /path/to/config.env

说明:Agent 默认要求 HTTPS,只有 localhost127.0.0.1 允许 HTTP。

构建

构建前端:

cd web
npm install
npm run build
cd ..

构建 release:

powershell -ExecutionPolicy Bypass -File "scripts\build-release.ps1"

Linux / macOS:

sh scripts/build-release.sh

产物会写入:

release/

主要产物:

vps-server-linux-amd64
vps-server-linux-arm64
vps-server-linux-armv7
vps-server-linux-386
vps-server-windows-amd64.exe
vps-server-windows-arm64.exe
vps-server-windows-386.exe
vps-agent-linux-amd64
vps-agent-linux-arm64
vps-agent-linux-armv7
vps-agent-linux-386
vps-agent-windows-amd64.exe
vps-agent-windows-arm64.exe
vps-agent-windows-386.exe
install-server-linux.sh
install-agent-linux.sh
install-agent-windows.ps1
uninstall-server-linux.sh
uninstall-agent-linux.sh
uninstall-agent-windows.ps1

常见问题

中心端启动失败

检查 AUTH_SECRETADMIN_PASS 是否为空、是否仍是 change-me。新版本只拒绝空值和默认弱值。

sudo journalctl -u vps-server -n 100 --no-pager

后台无法登录

检查 /etc/vps-monitor/server.env:

ADMIN_USER=admin
ADMIN_PASS=replace-with-strong-random-password

修改后重启:

sudo systemctl restart vps-server

Agent 一直离线

检查:

SERVER 是否是正确 HTTPS 地址
TOKEN 是否来自后台为该节点生成的安装命令
NODE_ID 是否和后台节点一致
中心端防火墙是否放行 443 或 3000
反向代理 /ws 是否支持 Upgrade

查看日志:

sudo journalctl -u vps-agent -f
sudo journalctl -u vps-server -f

前台 WebSocket 不刷新

确认 Nginx /ws 配置包含:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

重新生成节点 token

进入后台,点击节点对应的 命令,系统会为该节点生成新的 token 并更新服务端保存的 hash。旧 token 会失效,需要用新命令重装或更新 Agent 配置。

安全建议

  • AUTH_SECRETADMIN_PASS 不需要一致;不要留空,不要使用 change-me
  • 不要把真实生产环境的 server.envconfig.env、token、密码提交到 GitHub。
  • 生产环境必须使用 HTTPS。
  • 管理后台建议配合防火墙、Cloudflare Access 或 Nginx Basic Auth 做额外保护。
  • 节点安装命令包含该节点明文 token,只在可信终端执行,不要公开粘贴。

友链

License

About

Monitor Party 是一个轻量级 VPS / 服务器监控面板,包含中心端 `vps-server` 和采集端 `vps-agent`。中心端提供公开监控面板、管理员后台、Agent 安装命令生成、节点管理、购买信息展示和 Agent 二进制下载;Agent 负责上报 CPU、内存、硬盘、网络、负载和在线状态

Resources

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /