✨ Rust 版 ServerStatus 探針、威力加強版
專案地址:zdz/ServerStatus-Rust: ✨ Rust 版 ServerStatus 探針、威力加強版 (github.com)
官方教程:安裝部署 - Rust 版 ServerStatus 雲探針 (ssr.rs)
這是一個多伺服器監測工具
效果如下:
1 準備工作#
環境:centos7 伺服器兩台 (建議使用香港伺服器)
建議使用國外的,國內的伺服器拉取倉庫代碼比較慢,可感人了。
比如:你的伺服器環境不支持國外環境,腳本執行拉取遠程倉庫代碼就出現超時,無法完成情況。
我這裡使用手動一步安裝,也是大致根據腳本來完成的。
注:在這之前需要了解伺服端和客戶端是什麼,如何將客戶端和伺服端關聯起來
伺服端(Server)通常是指提供某種服務或資源的計算機或設備
客戶端(Client)是指使用伺服端提供的服務或資源的計算機或設備。
伺服端和客戶端是計算機網絡中的兩個角色,伺服端提供服務或資源,客戶端使用服務或獲取資源。它們通過網絡進行通信,實現數據的傳輸和交互。
在典型的客戶端 - 伺服端模型中,通常會存在多個客戶端和一個伺服端之間的通信。這是因為伺服端的目標是為多個客戶端提供服務或資源。
客戶端和伺服端的數量不僅限於一對多的關係,也可以存在多個伺服端。
客戶端和伺服端通常不只有一個,而是可以存在多個客戶端和一個或多個伺服端之間的通信。這種多對一或多對多的關係是為了滿足大規模應用或系統的需求,並提供更好的性能、可靠性和可擴展性。
例如:
在搭建 frp 時,將 Frp 作為中轉伺服器,連接遠程桌面。
這 ServerStatus_Rust 跟 frp 搭建有異曲同工之妙,也是一个伺服端一个客戶端
大致流程:外網連接伺服器,通過 frp 配置的伺服器中轉連接本地 Windows 桌面
這裡的配置的 frp 伺服端是伺服器,客戶端是本地 Windows 桌面
來一張圖更為貼切:
其中伺服端也可以作為客戶端,自己給自己實時發送數據,來檢測自身數據變化(不限於負載、流量、內存等)
檢測伺服器架構:
uname -a
下載:Release v1.7.2 · zdz/ServerStatus-Rust (github.com)
如果你的伺服器是 x86 64,就選擇如下圖安裝包。
將其上傳到伺服器
/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 (伺服端上的),直接替換也行
伺服端與客戶端的關聯關係:
config.toml 文件對應伺服端
完成配置如下:
伺服端也可以使用第三方平台搭建,如 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
修改如下圖所示:
配置修改如下:
4 搭建 nginx 反向代理#
主要是用於將帶有端口號的地址反向代理為一個域名(二級域名)
如果你使用 ip 地址 + 端口號的形式訪問就不需要反向代理了,也就省下這一步驟。
5 卸載伺服端和客戶端:#
- 先停掉 之前開啟的服務
查看服務狀態:
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/ 目錄下檢查是否有這兩文件,再做刪除操作。
6 擴展功能#
伺服器掛了,tg 機器人發通知或微信通知
7 總結#
恕我太愚鈍,花了一天多的時間搭建這,嘗試了多種方式終於知道怎麼看對應的腳步和文檔了,小有收穫。終於弄明白了 severstatus_rust 不同伺服器之間如何相關聯,也對腳本有了更好的認識。
附件#
參考 1:搭建兩個專屬自己的伺服器監控 ——Ward && ServerStatus