通过ServerStatus监控多个VPS状态

随着VPS降价跟大量做站或其他需求,手里的VPS也越来越多。那么如何来管理跟监控这些VPS呢,大佬们早就帮我们开辟了道路。目前管理多个VPS可以使用APPNode(vpsmate的前身),不知道宝塔面板有没有多个VPS管理的功能。那么监控VPS除了监控宝以外,现在也渐渐的开始流行自行搭建页面查看状态了。其中大名鼎鼎的就是ServerStatus脚本了。

通过ServerStatus监控多个VPS状态

ServerStatus脚本最早来源于BlueVM在lowendtalk公布的一个程序,接下来在mojeda的修改下形成了初型,但是还是需要安装mysql。最终在BotoX的魔改下只需要安装http程序即可完成监控,适用于小内存的VPS。不过大佬已经很久没有更新了。最后国内的大佬又开启了中文化以及更适合国内需求的魔改。

我最早就一直在用BotoX版本的ServerStatus脚本,所以今天也是用它来做示例。ServerStatus分为主机端跟客户端,主机端需要安装服务,客户端可以直接使用2.7版本以上的Python就可以,也可以做成服务。以前的时候我习惯用CentOS6,无法做主机端,只用使用Debian来做,为此我来给BotoX大佬提过Issues,大佬一直没有回复。最终用CentOS7才正常了。

在线演示地址为:https://status.botox.bz/

主机端安装

安装程序

首先安装http程序,nginx或是apache都可以,这一部分我就不介绍了。我是把所有的安装文件放入urs目录,接下来是下载代码。

cd /usr/local/share
git clone https://github.com/BotoX/ServerStatus.git

然后安装
cd ServerStatus/server
make
./sergate

接下来就是编辑server目录下的配置文件config.json
{"servers":
[
{
"username": "s01",
"name": "Mainserver 1",
"type": "Dedicated Server",
"host": "GenericServerHost123",
"location": "Austria",
"password": "some-hard-to-guess-copy-paste-password"
},
]
}

其中"username"是给客户端用来适配的一个用户名,而不是VPS上的用户名。"name"是VPS的名称,我用来代表VPS商,"type"是类型,"host"是主机节点,"location"是主机位置,"password"跟"username"相匹配,用来区别客户端。
如果想在配置文件中保留客户端,但又不想在前台显示,就可以使用参数"disabled": true。
接下来把ServerStatus/status目录下的所有文件拷贝到网站目录下。我这里以LNMP举例,网站目录是status。
sudo cp -r ServerStatus/status/* /home/wwwroot/status

主机端配置服务

Debian

添加服务。
cp ServerStatus/other/sergate.initd /etc/init.d/sergate
编辑服务配置
# Change this according to your setup!
DAEMON_PATH="/usr/local/share/ServerStatus/server"
WEB_PATH="/var/www/botox.bz/status"
DAEMON="sergate"
OPTS="-d $WEB_PATH"
RUNAS="www-data"

其中"/var/www/botox.bz/status"改成网站目录/home/wwwroot/status,"www-data"改成LNMP默认用户www
修改完毕
# Change this according to your setup!
DAEMON_PATH="/usr/local/share/ServerStatus/server"
WEB_PATH="/home/wwwroot/status"
DAEMON="sergate"
OPTS="-d $WEB_PATH"
RUNAS="www"

启动服务并添加到自启动中。
service sergate start
update-rc.d sergate defaults

最后记得防火墙打开35601端口。然后打开网站查看是不是页面已经启动。

CentOS7或Arch

添加服务。
cp ServerStatus/other/sergate.service /etc/systemd/system/sergate.service
编辑服务配置
WorkingDirectory=/usr/local/share/ServerStatus/server
User=botox.bz
Group=http
ExecStart=/usr/local/share/ServerStatus/server/sergate -d /home/botox.bz/status

其中botox.bz、http改成LNMP用户及用户组www,/home/botox.bz/status改成网站目录/home/wwwroot/status
修改完毕
WorkingDirectory=/usr/local/share/ServerStatus/server
User=www
Group=www
ExecStart=/usr/local/share/ServerStatus/server/sergate -d /home/wwwroot/status

启动服务并添加到自启动中。
systemctl start sergate
systemctl enable sergate

最后记得防火墙打开35601端口。然后打开网站查看是不是页面已经启动。

客户端安装

除了主机端本身要安装客户端以外,其他所有受控端都要安装客户端。以下举例都是基于非主机端。

升级Python

安装ServerStatus必须Python必须要在2.7版本以上,查看Python版本使用以下命令:
python-v
CentOS6的Python默认都是2.6版本的,因此需要手动升级Python,升级的Python的版本以2.7.8举例。
cd ~
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
yum -y install xz
tar -xvf Python-2.7.8.tar.xz
cd Python-2.7.8
./configure --prefix=/usr/local/python27
make && make install
make clean
make distclean

安装完毕以后检查版本号:
/usr/local/python27/bin/python2.7 -V
接下来就是把默认的python替换为2.7
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/python27/bin/python2.7 /usr/bin/python

替换完毕后,大部分软件不受影响,但是yum还是要用原来的2.6版本,于是
vi /usr/bin/yum
把第一行的/usr/bin/python替换为/usr/bin/python2.6.6,最后执行版本查看命令
python -V

Client手动安装

CentOS6、Debian安装

下载代码:
cd /usr/local/share/
mkdir -p ServerStatus/clients
cd ServerStatus/clients/
wget https://raw.github.com/BotoX/ServerStatus/master/clients/client.py

然后编辑代码
vi client.py
主要修改以下内容:
SERVER = "status.botox.bz"
PORT = 35601
USER = "s01"
PASSWORD = "some-hard-to-guess-copy-paste-password"
INTERVAL = 1 # Update interval

需要把"status.botox.bz"改成自己的地址,"s01"和"some-hard-to-guess-copy-paste-password"分别改成对应的用户名和密码。不同的客户端用户名不能相同,密码可以一样,不需要在VPS中新建用户及密码。
最后加载执行权限并测试是否正常
chmod -R 755 /usr/local/share/ServerStatus/
./client.py

测试时请注意观察网站主机端显示是否已经能够监测出状态。正常好执行以下代码,保证代码后台运行。
nohup ./client.py &> /dev/null &
最后将代码加入开机执行代码中。
vi /etc/rc.local
su -l root -c "/usr/local/share/ServerStatus/clients/client.py &> /dev/null &"

CentOS7、Arch手动安装

CentOS7不需要升级Python版本,同样是先下载client.py并编辑,我就不再重复。只需要添加系统服务即可。
vi /etc/systemd/system/serverstatus.service
添加以下代码。
[Unit]
Description=ServerStatus Client
After=network.target

[Service]
Type=simple
IgnoreSIGPIPE=no
User=root
ExecStart=/usr/local/share/ServerStatus/clients/client.py

[Install]
WantedBy=multi-user.target
然后把服务添加至自启动中。
systemctl start serverstatus.service
systemctl enable serverstatus.service

整个安装过程也就是这样了。国人也有一些改版的,例如cpplaToyoDAdoubi

展示页面:
cppla:https://tz.cloudcpp.com
ToyoDAdoubi:https://tz.toyoo.pw

其他

以下为其他安装的参考:
ServerStatus中文版 云服务器探针/VPS监控工具:https://www.cmsky.com/serverstatus/
用好这三个脚本轻松搭建服务器状态在线监控-ServerStatus,Stat Hub,Vmstat:https://www.freehao123.com/serverstatus/
多服务器,云探针,云监控:ServerStatus一键管理脚本:https://www.moerats.com/archives/266/

通过ServerStatus监控多个VPS状态:等您坐沙发呢!

发表评论

表情
还能输入210个字