多服务器监测面板
✨ Rust 版 ServerStatus 探针、威力加强版
项目地址:zdz/ServerStatus-Rust: ✨ Rust 版 ServerStatus 探针、威力加强版 (github.com)
官方教程:安装部署 - Rust 版 ServerStatus 云探针 (ssr.rs)
这是一个多服务器监测工具
效果如下:
![image-20230626014338353](/assets/image-20230626014338353-Ctl6uwGy.png)
1 准备工作
环境:centos7服务器两台 (建议使用香港服务器)
建议使用国外的,国内的服务器拉取仓库代码比较慢,可感人了。
比如:你的服务器环境不支持国外环境,脚本执行拉取远程仓库代码就出现超时,无法完成情况。 我这里使用手动一步安装,也是大致根据脚本来完成的。
注:在这之前需要了解服务端和客户端是什么,如何将客户端和服务端关联起来
服务端(Server)通常是指提供某种服务或资源的计算机或设备
客户端(Client)是指使用服务端提供的服务或资源的计算机或设备。
服务端和客户端是计算机网络中的两个角色,服务端提供服务或资源,客户端使用服务或获取资源。它们通过网络进行通信,实现数据的传输和交互。
在典型的客户端-服务端模型中,通常会存在多个客户端和一个服务端之间的通信。这是因为服务端的目标是为多个客户端提供服务或资源。
客户端和服务端的数量不仅限于一个对多的关系,也可以存在多个服务端。
客户端和服务端通常不只有一个,而是可以存在多个客户端和一个或多个服务端之间的通信。这种多对一或多对多的关系是为了满足大规模应用或系统的需求,并提供更好的性能、可靠性和可扩展性。
例如:
在搭建frp时,将Frp作为中转服务器,连接远程桌面。
这ServerStatus_Rust跟frp搭建有异曲同工之妙,也是一个服务端一个客户端
大致流程:外网连接服务器,通过frp配置的服务器中转连接本地Windows桌面
这里的配置的frp服务端是服务器,客户端是本地Windows桌面
来一张图更为贴切:
![image-20230626020256880](/assets/image-20230626020256880-DwTRN_wg.png)
其中服务端也可以作为客户端,自己给自己实时发送数据,来检测自身数据变化(不限于负载、流量、内存等)
检测服务器架构:
uname -a
下载:Release v1.7.2 · zdz/ServerStatus-Rust (github.com)
如果你的服务器是x86 64,就选择如下图安装包。
![](/assets/2023-06-26_00-13-46-BMDmTCN4.png)
将其上传到服务器
/opt/ServerStatus/
目录下,服务端需要将客户端和服务端都上传
创建目录:
mkdir -p /opt/ServerStatus && cd /opt/ServerStatus
2 服务端搭建
需要安装服务端和客户端
server.sh 配置:
#!/bin/bash
set -ex
WORKSPACE=/opt/ServerStatus
mkdir -p ${WORKSPACE}
cd ${WORKSPACE}
# 下载, arm 机器替换 x86_64 为 aarch64
OS_ARCH="x86_64"
latest_version=$(curl -m 10 -sL "https://api.github.com/repos/zdz/ServerStatus-Rust/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
wget --no-check-certificate -qO "server-${OS_ARCH}-unknown-linux-musl.zip" "https://github.com/zdz/ServerStatus-Rust/releases/download/${latest_version}/server-${OS_ARCH}-unknown-linux-musl.zip"
wget --no-check-certificate -qO "client-${OS_ARCH}-unknown-linux-musl.zip" "https://github.com/zdz/ServerStatus-Rust/releases/download/${latest_version}/client-${OS_ARCH}-unknown-linux-musl.zip"
unzip -o "server-${OS_ARCH}-unknown-linux-musl.zip"
unzip -o "client-${OS_ARCH}-unknown-linux-musl.zip"
# systemd service
mv -v stat_server.service /etc/systemd/system/stat_server.service
mv -v stat_client.service /etc/systemd/system/stat_client.service
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
# https://fedoraproject.org/wiki/Systemd/zh-cn
# https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/index.html
# 修改 /etc/systemd/system/stat_client.service 文件,将IP改为你服务器的IP或你的域名
执行:
bash -ex server.sh
不能执行,就换用手动方式,一步一步执行。
mkdir -p /opt/ServerStatus && cd /opt/ServerStatus
//上传服务端和客户端压缩包至/opt/ServerStatus目录下
//解压
unzip -o server-x86_64-unknown-linux-musl.zip
unzip -o client-x86_64-unknown-linux-musl.zip
//通过ll命令查看是否解压成功是否有 stat_client.service 文件
//将改文件移动到 /etc/systemd/system/stat_client.service
mv -v stat_client.service /etc/systemd/system/stat_client.service
# systemd service
mv -v stat_server.service /etc/systemd/system/stat_server.service
mv -v stat_client.service /etc/systemd/system/stat_client.service
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
修改配置:
去掉注释,也就是去掉#号
后面的地址替换成自己服务端反向代理的域名
例如你的域名是:https://w.lxip.top
则替换后就是https://w.lxip.top/report
如果不想反向代理,或者觉得麻烦,那就直接使用服务器公网ip地址+端口号
例如地址:http://139.212.12.120:8080 (服务端上的),直接替换也行
服务端与客户端的关联关系:
![image-20230626012319564](/assets/image-20230626012319564-Bo9a0ZQa.png)
![image-20230626012950615](/assets/image-20230626012950615-DVNxwnRS.png)
config.toml文件对应服务端
完成配置如下:
![image-20230626013208676](/assets/image-20230626013208676-D_a3Qd-9.png)
服务端也可以使用第三方平台搭建,如 Railway 部署
3 客户端搭建
client.sh 配置
#!/bin/bash
set -ex
WORKSPACE=/opt/ServerStatus
mkdir -p ${WORKSPACE}
cd ${WORKSPACE}
# 下载, arm 机器替换 x86_64 为 aarch64
OS_ARCH="x86_64"
latest_version=$(curl -m 10 -sL "https://api.github.com/repos/zdz/ServerStatus-Rust/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
wget --no-check-certificate -qO "client-${OS_ARCH}-unknown-linux-musl.zip" "https://github.com/zdz/ServerStatus-Rust/releases/download/${latest_version}/client-${OS_ARCH}-unknown-linux-musl.zip"
unzip -o "client-${OS_ARCH}-unknown-linux-musl.zip"
# systemd service
mv -v stat_client.service /etc/systemd/system/stat_client.service
systemctl daemon-reload
# 启动
systemctl start stat_client
# 状态查看
systemctl status stat_client
# 使用以下命令开机自启
systemctl enable stat_client
# 停止
# systemctl stop stat_client
# https://fedoraproject.org/wiki/Systemd/zh-cn
# https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/index.html
# 修改 /etc/systemd/system/stat_client.service 文件,将IP改为你服务器的IP或你的域名
执行:
bash -ex client.sh
不能执行,就换用手动方式,一步一步执行。
//递归创建目录
mkdir -p /opt/ServerStatus && cd /opt/ServerStatus
//上传客户端压缩包至/opt/ServerStatus目录下
//解压
unzip -o client-x86_64-unknown-linux-musl.zip
//通过ll命令查看是否解压成功是否有 stat_client.service 文件
//将改文件移动到 /etc/systemd/system/stat_client.service
mv -v stat_client.service /etc/systemd/system/stat_client.service
//重启加载一下
systemctl daemon-reload
# 启动
systemctl start stat_client
# 状态查看
systemctl status stat_client
都安装完成后如图所示:
将客户端注册到服务端上:
打开 stat_client.service 文件:
vim /etc/systemd/system/stat_client.service
修改如下图所示:
![](/assets/2023-06-26_00-44-00-BFFtYqGG.png)
配置修改如下:
![image-20230626014148113](/assets/image-20230626014148113-Y6Gs8lpz.png)
搭建nginx反向代理
主要是用于将带有端口号的地址反向代理为一个域名(二级域名)
如果你使用ip地址+端口号的形式访问就不需要反向代理了,也就省下这一步骤。
卸载服务端和客户端:
- 先停掉 之前开启的服务 查看服务状态:
systemctl status stat_server
systemctl status stat_client
如果服务状态是active(激活)就需要先停止,使用下面的命令
systemctl stop stat_server
systemctl stop stat_client
再执行简单粗暴的方式删除文件夹的文件 在/opt/文件下删除ServerStatus文件夹(包括ServerStatus文件夹所有内容)
rm -rf ServerStatus
注意:别使用 /* 来删除所文件,小心一不小心就删库了,对于第一次使用删除命令来删除文件夹下所有内容,是很容易犯这样的问题的。 原因:大致是习惯性使用可视化界面,把那种思维方式带到linux下,以为linux跟可视化界面删除方式删除方式相同,这就容易误操作,删库了。禁止这么操作,这是很严重的问题。
删除完成后使用 ll命令,查看一下是否删除完成
然后还需要删除残余文件:
rf -rf /etc/systemd/system/stat_server.service
rf -rf /etc/systemd/system/stat_client.service
不确定是否有这个两个文件,可以切换到 /etc/systemd/system/目录下检查是否有这个两文件,再做删除操作。
![](/assets/2023-06-26_01-04-35-cRJAdZir.png)
扩展功能
服务器挂了,tg机器人发通知或微信通知
总结
恕我太愚钝,花了一天多的时间搭建这,尝试了多种方式终于知道怎么看对应的脚步和文档了,小有收获。终于弄明白了severstatus_rust不同服务器之间如何相关联,也对脚本有了更好的认识。
附件
参考1:搭建两个专属自己的服务器监控——Ward && ServerStatus