一 前言之前介绍了ServerStat在Linux VPS的安装配置、采用Vnstat来防止重启导致数据丢失的问题，以及如何在LiNUX VPS上手动安装Server-Rust,需要的可以访问之前的博文：1）LiNUX VPS上Server-Rust的手动安装教程2）Serverstaus改用Vnstat统计VPS流量，避免服务器重启引起统计丢失3）Alpine上Server-Rust的手动安装教程博主最近购买了阿里云国际的CDT作为上网备用，限于其配置，只有468M内存和2G硬盘，无法安装debian，因此采用体积和内存占用更小的alpine。本文介绍下如何在Alpine上安装vnstat作为Server-Rust client的流量统计工具。二 vnstat安装教程1 直接apk安装# 更新软件源 apk update # 安装 vnstat apk add vnstat2 查看vnstat版本vnstat --version成功的话会显示vnStat 2.13 by Teemu Toivola (SQLite 3.51.2)3 修改/etc/vnstat.conf，下面这三个字段处要修改，有;注释的需要把;拿掉BandwidthDetection 0 # 禁用自动检测网络接口最大带宽 MaxBandwidth 0 # 解除带宽限制 Interface "" # 自动选择网口(默认非eth0需设置)4 设置启动# 启动 vnstat 服务 sudo rc-service vnstat start注意，这里第2步虽然显示成功了，但其实并没有生成相应的文件，如用上面命令会报错：rc-service: service `vnstat' does not exist问了AI，给了我答案：如果你安装后依然报错，或者想确认服务文件是否存在，可以检查一下 /etc/init.d/ 目录下是否有 vnstat 这个文件：ls -l /etc/init.d/vnstat正常情况下，安装完软件后这个文件就会自动出现，之后你就可以正常使用 rc-service vnstat status 等命令来管理它了。如果 /etc/init.d/ 目录下找不到 vnstat 文件，说明刚才的安装过程没有成功，或者没有正确生成对应的启动脚本，就要按照下面手动创建了。5 手动创建 vnstat 启动脚本在 Alpine Linux 中，如果包管理器没有自动生成，我们可以手动在 /etc/init.d/ 目录下创建一个标准的启动脚本。5.1使用编辑器创建文件：sudo vim /etc/init.d/vnstat5.2将以下标准的 Alpine init 脚本内容复制进去并保存注意，这里要修改目录位置 /usr/bin/vnstatd改为/usr/sbin/vnstatd：#!/sbin/openrc-run description="vnStat network traffic monitor" command="/usr/sbin/vnstatd" command_args="-n -d" pidfile="/run/vnstat/vnstat.pid" command_user="vnstat:vnstat" depend() { need net use logger }保存退出。5.3赋予这个脚本可执行权限sudo chmod +x /etc/init.d/vnstat5.4创建必要的运行目录vnstat 需要一个专门的目录来存放进程文件和数据。手动创建并确保权限正确：# 创建 pid 目录 sudo mkdir -p /run/vnstat # 创建 vnstat 的数据库目录（如果不存在的话） sudo mkdir -p /var/lib/vnstat # 确保 vnstat 用户（如果存在）拥有这些目录的权限 # 如果提示用户不存在，可以先跳过 chown，或者先创建 vnstat 用户 sudo chown -R vnstat:vnstat /run/vnstat /var/lib/vnstat 2>/dev/null || true5.5再次尝试启动现在 /etc/init.d/ 下已经有了 vnstat 脚本，你可以再次运行之前的命令了sudo rc-service vnstat start sudo rc-update add vnstat default三 Serverstat使用vnstat1 修改VPS的/etc/init.d/stat_client文件，在 command_args 末尾添加 -n 参数。command_args="-a 'http://al.fvars.com:8080/report' -u server-alcdt -p 87887191 -n &"2 加载修改文件并重启客户端service stat_client restart3 到这里就配置成功了演示地址http://ss.5var.com
一 前言之前介绍了ServerStat在Linux VPS的安装配置、采用Vnstat来防止重启导致数据丢失的问题，以及如何在安装了openwrt的n1旁路由上安装Serverstat,以及如何在LiNUX VPS上手动安装Server-Rust,需要的可以访问之前的博文：1）随时随地监控你的VPS状态——Serverstat部署折腾之路2）Serverstaus改用Vnstat统计VPS流量，避免服务器重启引起统计丢失3）N1折腾之openwrt安装ServerStatus_Rust客户端4)LiNUX VPS上Server-Rust的手动安装教程博主最近购买了阿里云国际的CDT作为上网备用，限于其配置，只有468M内存和2G硬盘，无法安装debian，因此采用体积和内存占用更小的alpine。但alpine系统部分组件和命令与debian不同，按原文的安装方法无法安装。本文介绍下如何在Alpine上手动安装Server-Rust client客户端（client即发送流量信息的VPS，server即收集流量信息并汇总展示的VPS），一般1台服务器作为服务器端和客户端，其他VPS作为客户端。二 stat_client客户端安装教程1 /opt目录下创建ServerStat目录mkdir -p /opt/ServerStatus && cd /opt/ServerStatus2 下载stat_client客户端到官方地址下载根据自己的服务器内核选择合适的客户端版本，这里以x86 64位的Linux为例：wget --no-check-certificate -qO client-x86_64-unknown-linux-musl.zip https://github.com/zdz/ServerStatus-Rust/releases/download/v1.8.1/client-x86_64-unknown-linux-musl.zip3 解压缩unzip -o client-x86_64-unknown-linux-musl.zip4 修改stat_client的权限chmod +x stat_client5 复制stat_client.service到/etc/init.d/,并改名为stat_clientmv -v stat_client.service /etc/init.d/stat_client6 替换 /etc/init.d/stat_client 文件用下面的代码替换stat_client中的内容，并将IP改为你服务器的IP或你的域名，注意这里的-u后的用户名、-p后面的密码，与上面config.toml中的name、password必须一致，否则会通讯不成功。#!/sbin/openrc-run name="ServerStatus-Rust Client" description="Client for ServerStatus-Rust" command="/opt/ServerStatus/stat_client" command_args="-a 'http://ss.vvars.com:8080/report' -u h1 -p p1 &" command_user="root:root" directory="/opt/ServerStatus" depend() { need net } start_pre() { ebegin "Starting ${name}" } stop_pre() { ebegin "Stopping ${name}" }同时修改stat_client的权限chmod +x /etc/init.d/stat_client7 将 stat_client加入系统服务rc-update add stat_client default8 启动服务service stat_client start10 查看状态，显示running即为成功service stat_client status11 其他命令service stat_client stop 停止客户端服务 service stat_client restart 重启客户端服务
一 前言之前介绍了ServerStat在Linux VPS的安装配置、采用Vnstat来防止重启导致数据丢失的问题，以及如何在安装了openwrt的n1旁路由上安装Serverstat,需要的可以访问之前的博文：1）随时随地监控你的VPS状态——Serverstat部署折腾之路2）Serverstaus改用Vnstat统计VPS流量，避免服务器重启引起统计丢失3）N1折腾之openwrt安装ServerStatus_Rust客户端本文介绍下如何在LiNUX VPS上手动安装Server-Rust,包括client客户端和server服务器端的安装，client即发送流量信息的VPS，server即收集流量信息并汇总展示的VPS，一般1台服务器作为服务器端和客户端，其他VPS作为客户端。二 stat_client客户端安装教程1 /opt目录下创建ServerStat目录mkdir -p /opt/ServerStatus && cd /opt/ServerStatus2 下载stat_client客户端到官方地址下载根据自己的服务器内核选择合适的客户端版本，这里以x86 64位的Linux为例：wget --no-check-certificate -qO client-x86_64-unknown-linux-musl.zip https://github.com/zdz/ServerStatus-Rust/releases/download/v1.8.1/client-x86_64-unknown-linux-musl.zip3 解压缩unzip -o client-x86_64-unknown-linux-musl.zip4 修改stat_client的权限chmod +x stat_client5 复制stat_client.service到/etc/systemd/system/mv -v stat_client.service /etc/systemd/system/stat_client.service6 修改 /etc/systemd/system/stat_client.service 文件将IP改为你服务器的IP或你的域名，注意这里的-u后的用户名、-p后面的密码，与上面config.toml中的name、password必须一致，否则会通讯不成功。ExecStart=/opt/ServerStatus/stat_client -a "http://ss.vvars.com:8080/report" -u Server-alice -p vvars.com7 使用命令开机自启systemctl enable stat_client8 重新保存加载systemctl daemon-reload9 启动服务systemctl start stat_client10 查看状态，显示running即为成功systemctl status stat_client11 其他命令systemctl stop stat_client 停止客户端服务 systemctl restart stat_client 重启客户端服务三 stat_server服务器端安装教程部署stat_server的部分步骤与stat_client是一样的，具体如下1 /opt目录下创建ServerStat目录mkdir -p /opt/ServerStatus && cd /opt/ServerStatus2 下载stat_server服务器端到官方地址下载根据自己的服务器内核选择合适的客户端版本，这里以x86 64位的Linux为例：wget --no-check-certificate -qO server-x86_64-unknown-linux-musl.zip https://github.com/zdz/ServerStatus-Rust/releases/download/v1.8.1/server-x86_64-unknown-linux-musl.zip3 解压缩unzip -o server-1.8.1-unknown-linux-musl.zip4 修改stat_server的权限chmod +x stat_server5 复制stat_server.service到/etc/systemd/system/mv -v stat_server.service /etc/systemd/system/stat_server.service5修改/opt/ServerStatus/config.toml文件下面几个位置注意：1）管理用户名，用于查看 /detail, /map，建议设置，保护你的服务器安全。# 管理员账号,不设置默认随机生成，用于查看 /detail, /map jwt_secret = "" # 修改这个, 使用 openssl rand -base64 16 生成 secret admin_user = "vvars" admin_pass = "vvars.com"2) 修改host参数下的name和password参数这里的值将来作为服务器端和客户端通信的密码，需要配置准确。hosts = [ {name = "Server-alice", password = "vvars.com", alias = "alice 1刀落地机", location = "hk", type = "kvm", labels = "os=debian;ndd=2025/1/28;spec=1C/1G/5G;"}, {name = "h2", password = "p2", alias = "n2", location = "de", type = "kvm", disabled = false}, {name = "h3", password = "p3", alias = "n3", location = "hk", type = "kvm", monthstart = 1}, {name = "h4", password = "p4", alias = "n4", location = "cn", type = "kvm", notify = true, labels = "ndd=2022/11/25;spec=2C/4G/60G;"}, ]3 修改提醒机器人,以TG为例tg-bot-token网上教程很多，建议自行搜索。获取频道ID的办法可以参考 获取Telegram私人电报频道的ID的两种办法[tgbot] # 开关 true 打开 enabled = true bot_token = "tg-bot-token" #这里的Token通过TG的botFather创建和获取 chat_id = "-100xxxxxxx" #新建群聊，获取群聊id # host 可用字段见 payload.rs 文件 HostStat 结构, {{host.xxx}} 为占位变量 # 例如 host.name 可替换为 host.alias，大家根据自己的喜好来编写通知消息 # {{ip_info.query}} 主机 ip, {{sys_info.host_name}} 主机 hostname，见 server_status.proto title = "警告Server Status" online_tpl = "{{config.title}} \n哈哈 {{host.location}} {{host.name}} 主机恢复上线啦" offline_tpl = "{{config.title}} \n不好 {{host.location}} {{host.name}} 主机已经掉线啦" # custom 模板置空则停用自定义告警，只保留上下线通知 custom_tpl = """ {% if host.memory_used / host.memory_total > 0.5 %} 不好 {{host.name}} 主机内存使用率超50%, 当前{{ (100 * host.memory_used / host.memory_total) | round }}% {% endif %} {% if host.hdd_used / host.hdd_total > 0.5 %} 不好 {{host.name}} 主机硬盘使用率超50%, 当前{{ (100 * host.hdd_used / host.hdd_total) | round }}% {% endif %} """ ###################### tgbot end ############################6 测试配置文件是否正常systemctl daemon-reload #加载修改文件 ./stat_server -c config.toml -t #测试配置文件是否正常，没有问题的话会显示success字样 ./stat_server -c config.toml --notify-test #测试通知是否正常，正确的话会在相应的TG或者微信收到通知 ./stat_server -c config.toml #运行配置文件7 使用命令开机自启systemctl enable stat_server8 重新保存加载systemctl daemon-reload9 启动服务systemctl start stat_server10 查看状态，显示running即为成功systemctl status stat_server11 其他命令systemctl stop stat_server 停止服务器端服务 systemctl restart stat_server 重启服务器端服务参考文件ServerStatus-Rust安装脚本
一 前言之前介绍了ServerStat在Linux VPS的安装配置以及采用Vnstat来防止重启导致数据丢失的问题,需要的可以访问之前的博文：1）随时随地监控你的VPS状态——Serverstat部署折腾之路2）Serverstaus改用Vnstat统计VPS流量，避免服务器重启引起统计丢失本文介绍下如何在安装了openwrt的n1旁路由上安装Serverstat。Openwrt Serverstat安装教程1、下载stat_client，上传到/opt/ServerStatus目录mkdir -p /opt/ServerStatus赋予权限chmod +x stat_client2、新建/etc/init.d/stat_client文件nano /etc/init.d/stat_client粘贴如下内容（注意替换网址及密码等信息）#!/bin/sh /etc/rc.common # OpenWrt init script for stat_client START=99 USE_PROCD=1 start_service() { procd_open_instance procd_set_param command /opt/ServerStatus/stat_client -a "https://status.67890.de/report" -u h1 -p p1 -i pppoe-wan procd_set_param respawn procd_close_instance }保存赋予权限chmod +x /etc/init.d/stat_client3、将脚本添加到开机启动项/etc/init.d/stat_client enable4、手动启动脚本/etc/init.d/stat_client start
接上篇 随时随地监控你的VPS状态——Serverstat部署折腾之路 后，很多站长碰到服务器重启导致统计数据丢失问题，本篇博文讲解如何使用vnstat统计VPS流量，避免重启带来的流量清零问题。1 vnstat简介vnstat 是Linux下一个流量统计工具，开启 vnstat 后，server 完全依赖客户机的 vnstat 数据来显示月流量和总流量，优点是重启不丢流量数据。2 更新软件包和安装vnstatapt update apt install -y vnstat安装完成后核实vnsta版本，确保为2.6以上vnstat --version # 确保版本 >= 2.63 修改/etc/vnstat.conf，下面这三个字段处要修改，有;注释的需要把;拿掉BandwidthDetection 0 # 禁用自动检测网络接口最大带宽 MaxBandwidth 0 # 解除带宽限制 Interface "" # 自动选择网口(默认非eth0需设置)4 重启vnstat并检验配置是否成功systemctl restart vnstat vnstat -m # 查看月流量统计 vnstat --json m # JSON格式查看月流量5 修改每台VPS的/etc/systemd/system/stat_client.service文件，在 ExecStart 末尾添加 -n 参数。ExecStart=/opt/ServerStatus/stat_client -a "http://ss.vvars.com:8080/report" -u Server-alice -p vvars.com -n6 加载修改文件并重启客户端systemctl daemon-reload systemctl restart stat_client7 到这里就配置成功了演示地址http://ss.5var.com
随时随地监控你的VPS状态——Serverstat部署折腾之路
作为一个代码小白，网上教程的学习比一般人慢，有的时候出差了排查原因，都不知道问题出在哪里，只能靠笨鸟勤飞一样的反复折腾，比如serverstat的部署，我就安装、卸载、更换其他版本、再安装、调试，直到最后终于成功，这里把折腾之路后的总结写下来，希望能帮到大家。感谢 zdz 大佬提供的脚本。 本站配置完成后的访问地址：https://ss.5var.com1 一键脚本安装利用一键脚本安装server_stat的服务器端和客户端；mkdir -p /opt/ServerStatus && cd /opt/ServerStatus wget --no-check-certificate -qO one-touch.sh 'https://raw.githubusercontent.com/zdz/ServerStatus-Rust/master/scripts/one-touch.sh' bash -ex one-touch.sh不出意外的话，输入http://IP地址:8080就可以访问了，说明配置成功，如果不行说明安装不成功，需要核实问题症结。2 修改配置文件修改/opt/ServerStatus/config.toml文件，下面几个位置注意：1）管理用户名，用于查看 /detail, /map，建议设置，保护你的服务器安全。# 管理员账号,不设置默认随机生成，用于查看 /detail, /map jwt_secret = "" # 修改这个, 使用 openssl rand -base64 16 生成 secret admin_user = "vvars" admin_pass = "vvars.com"2) 修改host参数下的name和password参数这里的值将来作为服务器端和客户端通信的密码，需要配置准确。hosts = [ {name = "Server-alice", password = "vvars.com", alias = "alice 1刀落地机", location = "hk", type = "kvm", labels = "os=debian;ndd=2025/1/28;spec=1C/1G/5G;"}, {name = "h2", password = "p2", alias = "n2", location = "de", type = "kvm", disabled = false}, {name = "h3", password = "p3", alias = "n3", location = "hk", type = "kvm", monthstart = 1}, {name = "h4", password = "p4", alias = "n4", location = "cn", type = "kvm", notify = true, labels = "ndd=2022/11/25;spec=2C/4G/60G;"}, ]3 修改提醒机器人,以TG为例tg-bot-token网上教程很多，建议自行搜索。获取频道ID的办法可以参考 获取Telegram私人电报频道的ID的两种办法[tgbot] # 开关 true 打开 enabled = true bot_token = "tg-bot-token" #这里的Token通过TG的botFather创建和获取 chat_id = "-100xxxxxxx" #新建群聊，获取群聊id # host 可用字段见 payload.rs 文件 HostStat 结构, {{host.xxx}} 为占位变量 # 例如 host.name 可替换为 host.alias，大家根据自己的喜好来编写通知消息 # {{ip_info.query}} 主机 ip, {{sys_info.host_name}} 主机 hostname，见 server_status.proto title = "警告Server Status" online_tpl = "{{config.title}} \n哈哈 {{host.location}} {{host.name}} 主机恢复上线啦" offline_tpl = "{{config.title}} \n不好 {{host.location}} {{host.name}} 主机已经掉线啦" # custom 模板置空则停用自定义告警，只保留上下线通知 custom_tpl = """ {% if host.memory_used / host.memory_total > 0.5 %} 不好 {{host.name}} 主机内存使用率超50%, 当前{{ (100 * host.memory_used / host.memory_total) | round }}% {% endif %} {% if host.hdd_used / host.hdd_total > 0.5 %} 不好 {{host.name}} 主机硬盘使用率超50%, 当前{{ (100 * host.hdd_used / host.hdd_total) | round }}% {% endif %} """ ###################### tgbot end ##########################3 修改 /etc/systemd/system/stat_client.service 文件将IP改为你服务器的IP或你的域名，注意这里的-u后的用户名、-p后面的密码，与上面config.toml中的name、password必须一致，否则会通讯不成功。ExecStart=/opt/ServerStatus/stat_client -a "http://ss.vvars.com:8080/report" -u Server-alice -p vvars.com4 测试配置文件是否正常systemctl daemon-reload #加载修改文件 ./stat_server -c config.toml -t #测试配置文件是否正常，没有问题的话会显示success字样 ./stat_server -c config.toml --notify-test #测试通知是否正常，正确的话会在相应的TG或者微信收到通知 ./stat_server -c config.toml #运行配置文件5 加载修改文件并重新启动服务器端和客户端systemctl daemon-reload #加载修改文件 systemctl restart stat_server #重启服务器端 systemctl restart stat_client #重启客户端没问题的话，再次访问http://IP:8080的话会更新配置信息。到这里单个VPS的监控就结束了。6 配置多个VPS，重复1-5步，确保每个都运行正常；7 配置总客户端，让所有VPS状态集中显示1) 修改集中显示VPS的config.toml确定要作为集中显示的VPS，修改该VPS的/opt/ServerStatus/config.toml，在host下面列出其他vps的对应配置信息hosts = [ {name = "alibaba-hk", password ="vvars.com", alias = "阿里云国际香港", location = "hk", type = "kvm", labels = "os=debian;ndd=2027/11/25;spec=1C/1G/30G;"}, {name = "Server-alice", password = "vvars.com", alias = "alice 1刀落地机", location = "hk", type = "kvm", labels = "os=debian;ndd=2025/1/28;spec=1C/1G/5G;"}, {name = "netcup", password = "vvars.com", alias = "Netcup德国主机VPS1000黑五款", location = "de", type = "kvm", labels = "os=debian;ndd=2025/1/28;spec=4C/8G/512G;"}, {name = "c1vhosting", password = "vvars.com", alias = "C1Vhosting灵车", location = "it", type = "kvm", labels = "os=debian;ndd=2025/11/28;spec=2C/4G/80G;"}, {name = "evhosting", password = "87887191", alias = "EVhostingh黑五大盘鸡", location = "nl", type = "kvm", labels = "os=debian;ndd=2025/1/26;spec=2C/4G/3000G;"}, ]修改完后加载修改文件并重新启动服务器端和客户端systemctl daemon-reload #加载修改文件 systemctl restart stat_server #重启服务器端 systemctl restart stat_client #重启客户端2）修改非集中显示的VPS的 /etc/systemd/system/stat_client.service 文件把其中的地址改为集中显示VPS的地址或域名，这一步很重要，用于把信息上报给集中显示客户端后显示ExecStart=/opt/ServerStatus/stat_client -a "http://ss.vvars.com:8080/report" -u Server-alice -p vvars.com修改完后加载修改文件并重新启动服务器端和客户端systemctl daemon-reload #加载修改文件 systemctl restart stat_server #重启服务器端 systemctl restart stat_client #重启客户端8 回到集中显示VPS的地址http://ss.vvars.com:8080，正常的话应该就能显示了9 最后整理了serverstat的常用命令#加载修改后的配置文件 systemctl daemon-reload # 启动 systemctl start stat_server systemctl start stat_client # 状态查看 systemctl status stat_server systemctl status stat_client # 使用以下命令开机自启 systemctl enable stat_server systemctl enable stat_client # 停止 systemctl stop stat_server systemctl stop stat_client