为服务器添加探针
2020/08
29
05:08
Github仓库:https://github.com/cppla/ServerStatus
安装:
git clone https://github.com/cppla/ServerStatus.git
cd autodeploy
# 安装 docker
curl -sSL https://get.docker.com/ | sh
服务端部署
【服务端】指的是提供监控服务的机器,此机器接收客户端发来的服务器详情数据并处理后提供一个网站来展示探针页面
修改config.json
添加服务器信息
{"servers":
[
{
"username": "s01",
"name": "node1",
"type": "xen",
"host": "host1",
"location": "cn",
"password": "USER_DEFAULT_PASSWORD"
},
{
"username": "s02",
"name": "node2",
"type": "vmware",
"host": "host2",
"location": "jp",
"password": "USER_DEFAULT_PASSWORD"
},
{
"disabled": true,
"username": "s03",
"name": "node3",
"type": "Nothing",
"host": "host3",
"location": "fr",
"password": "USER_DEFAULT_PASSWORD"
},
{
"username": "s04",
"name": "ssss",
"type": "ssss",
"host": "ssss",
"location": "ssss",
"password": "USER_DEFAULT_PASSWORD"
}
]
}
启动容器:需要注意 {$path}
和两个{$port}
都要自定义。
docker build -f Dockerfile -t sss .
docker run -d --restart=always --name=sss -v {$path}/config.json:/ServerStatus/server/config.json -p {$port1}:80 -p {$port2}:35601 sss
修改iptable 添加rules
sudo nano /etc/iptables/rules.v4
添加:
...
-A INPUT -p tcp --dport {$port2 这里要自己输入} -j ACCEPT
-A FORWARD -p tcp --dport 35601 -j ACCEPT
-A FORWARD -p tcp --sport 35601 -j ACCEPT
...
sudo su
iptables-restore < /etc/iptables/rules.v4 && netfilter-persistent reload
客户端部署
【客户端】指的是被监控的机器,将本机需要记录的数据发送给服务端。
【服务端】机器也可以同时是【客户端】机器(之一)。
下载客户端脚本:
wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.com/cppla/ServerStatus/master/clients/client-linux.py'
修改其中的参数:
vi client-linux.py
将其中的 SERVER
, USERNAME
, PASSWORD
, PORT
分别修改为上文中服务端配置文件内自定义的值( port
为【服务端】定义的与客户端通信端口,默认为 35601 ,若未修改过,此项可以不更改)后保存,然后执行:
python client-linux.py
不出意外的话现在看看服务端页面应该能看到当前客户端的数据了
服务端网页访问
不讲究的话可以直接通过 [服务端公网 IP]:[服务端网页端口]
来访问探针页面了(如果端口是 80
那么不需要指定端口);如果配置了 HTTPS ,或者不想通过上面两种需要显式地指定端口的方式来访问,或者兼而有之 我全都要 ,那么你需要安装一个网站服务器,比如 Caddy 或 Nginx 等,并做好相应设置(如反代端口等)
配置客户端进程守护
安装Supervisor 实现 Linux 进程守护
sudo apt-get install supervisor -y
添加配置文件
sudo nano /etc/supervisor/conf.d/ServerStatus.conf
写入以下文件
[program: ServerStatus]
command=python client-linux.py SERVER="server_ip" USER="s01" PASSWORD="*" ; 相应参数需要按照上文说明修改
autorestart=true
autostart=true
stderr_logfile=/var/log/ProjectName.err.log
stdout_logfile=/var/log/ProjectName.out.log
user=root
startsecs=1
保存后重新载入 Supervisor 即可:
sudo supervisorctl reload
发表回复