banner
keney

keney

remain optimistic
twitter

多伺服器監測面板

✨ Rust 版 ServerStatus 探針、威力加強版

專案地址:zdz/ServerStatus-Rust: ✨ Rust 版 ServerStatus 探針、威力加強版 (github.com)

官方教程:安裝部署 - Rust 版 ServerStatus 雲探針 (ssr.rs)

在線地址:ServerStatus (ssr.rs)

這是一個多伺服器監測工具

效果如下:

image

1 準備工作#

環境:centos7 伺服器兩台 (建議使用香港伺服器)

建議使用國外的,國內的伺服器拉取倉庫代碼比較慢,可感人了。

比如:你的伺服器環境不支持國外環境,腳本執行拉取遠程倉庫代碼就出現超時,無法完成情況。
我這裡使用手動一步安裝,也是大致根據腳本來完成的。

注:在這之前需要了解伺服端和客戶端是什麼,如何將客戶端和伺服端關聯起來

伺服端(Server)通常是指提供某種服務或資源的計算機或設備

客戶端(Client)是指使用伺服端提供的服務或資源的計算機或設備。

伺服端和客戶端是計算機網絡中的兩個角色,伺服端提供服務或資源,客戶端使用服務或獲取資源。它們通過網絡進行通信,實現數據的傳輸和交互。

在典型的客戶端 - 伺服端模型中,通常會存在多個客戶端和一個伺服端之間的通信。這是因為伺服端的目標是為多個客戶端提供服務或資源。

客戶端和伺服端的數量不僅限於一對多的關係,也可以存在多個伺服端。

客戶端和伺服端通常不只有一個,而是可以存在多個客戶端和一個或多個伺服端之間的通信。這種多對一或多對多的關係是為了滿足大規模應用或系統的需求,並提供更好的性能、可靠性和可擴展性。

例如:

在搭建 frp 時,將 Frp 作為中轉伺服器,連接遠程桌面。

這 ServerStatus_Rust 跟 frp 搭建有異曲同工之妙,也是一个伺服端一个客戶端

大致流程:外網連接伺服器,通過 frp 配置的伺服器中轉連接本地 Windows 桌面

這裡的配置的 frp 伺服端是伺服器,客戶端是本地 Windows 桌面

來一張圖更為貼切:

image-20230626020256880

其中伺服端也可以作為客戶端,自己給自己實時發送數據,來檢測自身數據變化(不限於負載、流量、內存等)

檢測伺服器架構:

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

修改配置:

image
去掉註解,也就是去掉 #號

後面的地址替換成自己伺服端反向代理的域名

例如你的域名是:https://w.lxip.top

則替換後就是https://w.lxip.top/report

如果不想反向代理,或者覺得麻煩,那就直接使用伺服器公網 ip 地址 + 端口號

例如地址:http://139.212.12.120:8080 (伺服端上的),直接替換也行

伺服端與客戶端的關聯關係:

image-20230626012319564

image-20230626012950615

config.toml 文件對應伺服端

完成配置如下:

image-20230626013208676

伺服端也可以使用第三方平台搭建,如 Railway 部署

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

都安裝完成後如圖所示:
image

將客戶端註冊到伺服端上:

打開 stat_client.service 文件:

vim /etc/systemd/system/stat_client.service

修改如下圖所示:

image

配置修改如下:

image-20230626014148113

4 搭建 nginx 反向代理#

主要是用於將帶有端口號的地址反向代理為一個域名(二級域名)

如果你使用 ip 地址 + 端口號的形式訪問就不需要反向代理了,也就省下這一步驟。

參考:ServerStatus-Rust 搭建反向代理部分

ServerStatus 搭建反向代理部分

5 卸載伺服端和客戶端:#

  1. 先停掉 之前開啟的服務
    查看服務狀態:
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/ 目錄下檢查是否有這兩文件,再做刪除操作。

image

6 擴展功能#

伺服器掛了,tg 機器人發通知或微信通知

7 總結#

恕我太愚鈍,花了一天多的時間搭建這,嘗試了多種方式終於知道怎麼看對應的腳步和文檔了,小有收穫。終於弄明白了 severstatus_rust 不同伺服器之間如何相關聯,也對腳本有了更好的認識。

附件#

參考 1:搭建兩個專屬自己的伺服器監控 ——Ward && ServerStatus

參考 2:ServerStatus-Rust 伺服器探針搭建使用

參考 3:安裝部署 - Rust 版 ServerStatus 雲探針 (ssr.rs)

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。