安装 ServerStatus-Rust 轻量探针服务 | Debian
2023-3-29|2023-5-27

D_SUPER
type
status
date
slug
summary
category
tags
icon
探针服务方便监控服务器状态,保证服务在线,服务器上挂探针也是一种信仰。ServerStatus Rust 版本 [Github 地址] 安装简单,定义 system service 文件自动重启,配置 Nginx 可以 https 连接保证安全,开启
vnstat
重启不会删除流量记录。 ServerStatus-Rust 简介
ServerStatus
威力加强版,保持轻量和简单部署,增加以下主要特性:- 使用
rust
完全重写server
、client
,单个执行文件部署
- 多系统支持
Linux
、MacOS
、Windows
、Android
、Raspberry Pi
- 支持上下线和简单自定义规则告警 (
telegram
、wechat
、email
、webhook
)
- 支持
http
协议上报,方便部署到各免费容器服务和配合cf
等优化上报链路
- 支持
vnstat
统计月流量,重启不丢流量数据
- 支持
railway
快速部署
- 支持
systemd
开机自启
- 其它功能,如 🗺️ 见 wiki
安装服务端 Server + 客户端 Client
使用 one-touch.sh 脚本部署
# 创建并进入目录 mkdir -p /opt/ServerStatus && cd /opt/ServerStatus # apt install -y unzip / yum install -y unzip wget --no-check-certificate -qO one-touch.sh 'https://raw.githubusercontent.com/zdz/ServerStatus-Rust/master/one-touch.sh' bash -ex one-touch.sh # 部署完毕,打开 http://127.0.0.1:8080/ 或 http://<你的IP>:8080/ 注意开放端口
one-touch.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或你的域名
设置服务端配置 [*]
vim config.toml
主要设置两部分内容:
1. 管理员用户名和密码 admin_user = "xxx" admin_pass = "xxx" 2. name 和 password 验证 vps 客户端身份 hosts = [ {name = "name1", password = "xxxxx" ... ...} {name = "name2", password = "xxxxx" ... ...} ... ... ]
将用户名和密码同步到本机客户端
vim /etc/systemd/system/stat_client.service ## 修改内容 修改连接地址和 -u 用户名 -p 密码 ExecStart=/opt/ServerStatus/stat_client -a "https://yourdomain.com/report" -u name1 -p xxxxx
重启服务
systemctl daemon-reload systemctl restart stat_client
服务端 Nginx 反向代理
使用
lnmp vhost add
添加域名,配置 nginx/vhost
的 https
部分:location = /report { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_pass http://127.0.0.1:8080/report; } # 反代 json 数据请求 location = /json/stats.json { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_pass http://127.0.0.1:8080/json/stats.json; } # 反代 detail location = /detail { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_pass http://127.0.0.1:8080/detail; } # 反代 map location = /map { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_pass http://127.0.0.1:8080/map; } # 主界面 location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_pass http://127.0.0.1:8080; }
配置 Nginx 代理后,使用
https://yourdomain.com
访问,同时其他客户端与服务端通信地址为: https://yourdomain.com/report
在其他 VPS 上安装客户端
因为主机安装了服务端,此时其他 VPS 只需要与服务端通信,报告自身状态即可。one-touch.sh 脚本部署会同时安装服务端+客户端,因此采用手动安装。
创建文件夹
mkdir -p /opt/ServerStatus cd /opt/ServerStatus
下载客户端文件
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') sudo 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" # sudo wget --no-check-certificate -qO "client-${OS_ARCH}-unknown-linux-musl.zip" "https://ghproxy.com/https://github.com/zdz/ServerStatus-Rust/releases/download/${latest_version}/client-${OS_ARCH}-unknown-linux-musl.zip" sudo unzip -o "client-${OS_ARCH}-unknown-linux-musl.zip"
修改 .service
文件
vim stat_client.service ## 修改内容 修改连接地址和 -u 用户名 -p 密码 ExecStart=/opt/ServerStatus/stat_client -a "https://yourdomain.com/report" -u 用户名 -p 密码
创建系统服务
# systemd service mv -v stat_client.service /etc/systemd/system/stat_client.service systemctl daemon-reload
启动服务
systemctl start stat_client
查看状态(注意保证文件 755 权限)
systemctl status stat_client
设置开机自启动
systemctl enable stat_client
卸载
删除
ServerStatus
文件systemctl stop stat_server systemctl stop stat_client rm -rf /opt/ServerStatus
删除
systemctl
文件rm /etc/systemd/system/stat_server.service rm /etc/systemd/system/stat_client.service
其他功能
测试服务端配置文件
# 测试配置文件是否有效 ./stat_server -c config.toml -t
测试配置通知是否正常
# 根据配置发送测试消息,验证通知是否生效 ./stat_server -c config.toml --notify-test
设置 Tg bot
修改
config.toml
文件[tgbot] # 开关 true 打开 enabled = true bot_token = "12345:ABCDE" chat_id = "12345678"
- 通过
@BotFather
创建自己的通知机器人,并获取bot_token
- 通过
@GetIDs Bot
获取user-id
即chat_id
开启 vnstat
支持
安装
vnstat
## Ubuntu/Debian sudo apt install -y vnstat
修改
systemctl
文件,添加 -n
参数vim /etc/systemd/system/stat_client.service # 在末尾添加 -n 参数 ExecStart= ... ... -n
注:-n
, --vnstat enable vnstat, default:false --vnstat-mr <VNSTAT_MR> vnstat month rotate 1-28 [default: 1]
重启服务生效
systemctl daemon-reload systemctl restart stat_client
安装主题
ServerStatus-web
mjjrock • Updated Mar 20, 2023
推荐阅读
有关 ServerStatus 安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- Waline
- Cusdis