本文重在 ServerStatus 的安装流程,介绍和更多使用请到:探针 – 技焉洲
指标 | 描述 |
---|---|
适用系统 | Debian 系发行版,包括 Ubuntu, Armbian,其他发行版稍改命令一般也可;Windows 10/11 |
走通流程时间 | 15 分钟 |
Github: zdz/ServerStatus-Rust: ✨ Rust 版 ServerStatus 探针、威力加强版
官方文档: 介绍 – Rust 版 ServerStatus 云探针 (ssr.rs)
前置准备:
- (非必要)一个二级域名解析到作为服务端机子的 IP 上,比如 serverstatus.vfly2.com 。既可用于 web 端界面访问,也可用于客户端联系服务端。
- (非必要)VPS 的网络可以访问 GitHub
安装 ServerStatus-Rust
确保安装了一些软件工具
sudo apt install -y curl unzip
获取机器架构,查找最新版本
ARCHITECTURE=$(uname -m)
github_project="zdz/ServerStatus-Rust"
tag=$(curl -m 10 -sL "https://api.github.com/repos/$github_project/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
echo ${tag}
创建安装目录(比如用家目录下的 myserve/serverstatus)
mkdir -p ~/myserve/serverstatus && cd ~/myserve/serverstatus
安装服务端
下载和解压服务端
curl -LO https://github.com/zdz/ServerStatus-Rust/releases/download/${tag}/server-${ARCHITECTURE}-unknown-linux-musl.zip && \
unzip -o "server-${ARCHITECTURE}-unknown-linux-musl.zip" && \
rm "server-${ARCHITECTURE}-unknown-linux-musl.zip"
安装客户端
下载和解压客户端
curl -L -O https://github.com/zdz/ServerStatus-Rust/releases/download/${tag}/client-${ARCHITECTURE}-unknown-linux-musl.zip && \
unzip -o "client-${ARCHITECTURE}-unknown-linux-musl.zip" && \
rm "client-${ARCHITECTURE}-unknown-linux-musl.zip"
作为服务端的机器,ServerStatus-Rust 的服务端和客户端都要安装。
serverstatus 结构,客户端主动上报服务端:
服务端配置
如果需要开启防火墙
myserve="serverstatus"
sudo ufw allow 8080,9394/tcp comment $myserve && sudo ufw reload
服务端配置
进入工作目录,编辑服务端的配置文件
cd ~/myserve/serverstatus && sudo vim config.toml
配置文件示例
# 默认安装的路径
workspace = "/home/vfly2/myserve/serverstatus"
# 侦听地址, ipv6 使用 [::]:9394
grpc_addr = "0.0.0.0:9394"
http_addr = "0.0.0.0:8080"
# 默认30s无上报判定下线
offline_threshold = 30
# 管理员账号,不设置的话,默认随机生成,用于查看 /detail, /map
admin_user = "admin_user"
admin_pass = "112233"
# 每个客户端都要有一条
hosts = [
{name = "vfly2bwg", password = "123456", alias = "Bwg", location = "US", type = "KVM", labels = "os=debian;ndd=2024/1/15;spec=2C/2G/40G;"},
{name = "vfly2ht", password = "123456", alias = "HT", location = "TR", type = "VMware", labels = "os=debian;ndd=2024/3/28;spec=1C/1G/20G;"},
{name = "vfly2as", password = "123456", alias = "alongserver", location = "AS", type = "arm", labels = "os=arch;ndd=2029/11/25;spec=4C/2G/14G;", notify = false},
]
# 告警间隔默认为30s
notify_interval = 30
# 开关 true 打开 telegram 机器人提醒,当下线和上线机器人会发消息
[tgbot]
enabled = false
bot_token = "<tg bot token>"
chat_id = "<chat id>"
title = "❗<b>Server Status</b>"
online_tpl = "{{config.title}} \n😆 {{host.location}} {{host.alias}} 主机恢复上线啦"
offline_tpl = "{{config.title}} \n😱 {{host.location}} {{host.alias}} 主机已经掉线啦"
必须要自定义的的变量: workspace、admin_user 和 admin_pass、hosts,其他可以不管,不影响基本使用。
hosts = [
{name = "vfly2bwg", password = "123456", alias = "Bwg", location = "US", type = "KVM", labels = "os=debian;ndd=2024/1/15;spec=2C/2G/40G;"},
{name = "vfly2ht", password = "123456", alias = "HT", location = "TR", type = "VMware", labels = "os=debian;ndd=2024/3/28;spec=1C/1G/20G;"},
{name = "vfly2as", password = "123456", alias = "alongserver", location = "AS", type = "arm", labels = "os=arch;ndd=2029/11/25;spec=4C/2G/14G;", notify = false},
]
说明:
- name 主机唯一标识,不可重复。待会客户端那里要用。
- password 对应的密码,客户端那里用的
- alias 展示名
- location 国家缩写即可,如 cn us 等,所有国家见 https://github.com/zdz/ServerStatus-Rust/tree/master/web/static/flags/4×3
- type 机器类型
- 自定义标签 labels = "os=debian;ndd=2022/11/25;spec=2C/4G/60G;"
- os 可选,不填则使用上报数据(可用 centos debian ubuntu alpine pi arch windows linux)
- ndd(next due date) 下次续费时间
- spec 为主机规格
- notify = false 禁止该机器的告警,一般针对网络差,频繁上下线的机器
- monthstart = 1 没启用 vnstat 时,表示月流量从每月哪天开始统计
- disabled = true 单机禁用
怎么获取 bot token: Python 编写 Telegram机器人 – 技焉洲
更多配置 见 Releases 中 zip 压缩包里的 config.toml
在安装目录下,执行下面命令。
测试配置文件是否有效
./stat_server -c config.toml -t
根据配置发送测试消息,验证 telegram 机器人通知是否生效
./stat_server -c config.toml --notify-test
服务端运行
./stat_server -c config.toml
这时,如果没有出错,访问 IP:8080 即可看到 Web 网页。
但是现在如果断开 SSH 连接,服务端也就不运行了,使用 systemd 守护进程解决这个问题,具体内容请往下看。
若想查看地图,访问 IP:8080/map
查看帮助
./stat_server -h
hosts_group
hosts 跟 hosts_group 两种配置模式任挑一种配置即可,本文不涉及 hosts_group 的用法。
客户端配置
Linux
在安装目录下,执行下面命令。
./stat_client -a "http://serverstatus.vfly2.com:8080/report" -u vfly2bwg -p 123456
# 也可以用 grpc 协议,选一种即可
./stat_client -a "grpc://serverstatus.vfly2.com:9394" -u vfly2bwg -p 123456
- -a:服务端的网址
- -u:这台机器的在服务端配置文件 hosts 里设置的用户名
- -p:~设置的密码
如果正常启动,在 Web 网页就能看到这台机器了。
依然是:如果断开 SSH 连接,客户端也就不运行了,下文使用 systemd 守护进程解决这个问题。
查看帮助
./stat_client -h
Windows
在 https://github.com/zdz/ServerStatus-Rust/releases 下载 Windows 平台的程序文件,选择 client-x86_64-pc-windows-msvc.zip 这种的,注意下载客户端 client。
解压,在程序文件所在目录打开命令行,执行命令(和 Linux 的一样)
stat_client -a "http://serverstatus.vfly2.com:8080/report" -u vfly2 -p 123456
如果正常启动,在 Web 网页就能看到这台机器了。
开启 vnstat
vnstat 是 Linux 的一个流量统计工具,开启 vnstat
后,server
完全依赖客户机的 vnstat
数据来显示月流量和总流量,优点是重启不丢流量数据。
在 client 端安装 vnstat
sudo apt install -y vnstat
vnstat --version # 确保 version >= 2.6
修改 vnstat 配置文件
vim /etc/vnstat.conf
# 置空 Interface 可以自动选择网口
# 或者手动指定
systemctl restart vnstat
测试查看月流量,可以显示是哪个网卡
vnstat -m
vnstat --json m
client 加上 -n 参数开启 vnstat 统计
./stat_client -a "grpc://127.0.0.1:9394" -u h1 -p p1 -n
[[48vnstat 统计流量]]
Systemd 守护进程
客户端
sudo vim /etc/systemd/system/stat_client.service
注意修改 User、Group、WorkingDirectory、ExecStart
# /etc/systemd/system/stat_client.service
[Unit]
Description=ServerStatus-Rust Client
After=network.target
[Service]
User=vfly2
Group=vfly2
Environment="RUST_BACKTRACE=1"
WorkingDirectory=/home/vfly2/myserve/serverstatus
ExecStart=/home/vfly2/myserve/serverstatus/stat_client -a "http://serverstatus.vfly2.com:8080/report" -u vfly2bwg -p 123456
ExecReload=/bin/kill -HUP \$MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
# journalctl -u stat_client -f -n 100
加载配置
sudo systemctl daemon-reload
开机自启,立即启动
sudo systemctl enable --now stat_client
方便读者使用
sudo systemctl stop stat_client
sudo systemctl start stat_client
sudo systemctl restart stat_client
sudo systemctl status stat_client
查看日志
journalctl -u stat_client -f -n 100
服务端
sudo vim /etc/systemd/system/stat_server.service
注意修改 User、Group、WorkingDirectory、ExecStart
cat > /etc/systemd/system/stat_server.service <<EOF
# /etc/systemd/system/stat_server.service
[Unit]
Description=ServerStatus-Rust Server
After=network.target
[Service]
User=vfly2
Group=vfly2
Environment="RUST_BACKTRACE=1"
WorkingDirectory=/home/vfly2/myserve/serverstatus
ExecStart=/home/vfly2/myserve/serverstatus/stat_server -c /home/vfly2/myserve/serverstatus/config.toml
ExecReload=/bin/kill -HUP \$MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
加载配置
sudo systemctl daemon-reload
开机自启,立即启动
sudo systemctl enable --now stat_server
方便读者使用
sudo systemctl stop stat_server
sudo systemctl start stat_server
sudo systemctl restart stat_server
sudo systemctl status stat_server
Windows Service 管理
在 Windows 平台使用其服务功能管理程序,可以实现程序意外退出后的自动重启和开机自启,具体步骤请看:以 Windows 服务运行并开机自启 – 技焉洲 。
原文链接: https://yanh.tech/2023/06/installation-tutorial-of-serverstatus-rust/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。