推荐一款C/S架构的服务器监控软件,可以对多台服务器以列表形式展示基本状态。演示地址为:https://tz.cloudcpp.com/

项目名称为:ServerStatus中文版
项目 Github 地址为:
https://github.com/cppla/ServerStatus
监控系统由三部分组成
服务器端,用于接受监控数据,并将数据写至 web 目录
客户端,用来发送系统运行状态的数据,会连接至服务器端
Web 展示目录,需要系统提供web服务用于显示静态页面
服务器端运行过程:
$ git clone https://github.com/cppla/ServerStatus.git$ cd ServerStatus/server$ make$ ./sergate --config=config.json \--web-dir=/ServerStatus/web/
代码是用 c++ 写的,使用 make 编译时会调用 g++

Server 端运行后会监听 35601 端口,等待 Client 端连接。

其中 config.json 中提供了用户名和密码,不同的客户端使用不同的密码。在配置文件中可以对节点信息进行描述。
{"servers":[{"username": "s01","name": "vps-1","type": "kvm","host": "chengdu","location": "🇨🇳","password": "USER_DEFAULT_PASSWORD","monthstart": 1},]}
其中 username 和 password 主要用于 35601 端口提供的服务器认证,当认证失败时,client IP 的连接会被禁用1分钟。
客户端运行只需要安装 python3 以及 psutil 即可
pip3 install psutil
将 ServerStatus/client 下的 client-psutil.py 拷贝至客户端,修改 client-psutil.py 中的服务器IP,使用 config.json 中指定的用户名、密码,运行即可。
#!/usr/bin/env python3# coding: utf-8# Update by : https://github.com/cppla/ServerStatus, Update date: 20220323# 依赖于psutil跨平台库# 版本:1.0.3, 支持Python版本:2.7 to 3.9# 支持操作系统:Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD and NetBSD, both 32-bit and 64-bit architectures# 说明: 默认情况下修改server和user就可以了。丢包率监测方向可以自定义,例如:CU = "www.facebook.com"。SERVER = "127.0.0.1"USER = "s01"PASSWORD = "USER_DEFAULT_PASSWORD"
修改 SERVER 为服务器的IP,使用 config.json 中为节点指定的用户名密码,调用 python3 运行 client-psutil.py 脚本:
$ python3 client-psutil.py

连接成功会提示 Access granted,当服务器端断开,客户端会不停地重连。
当客户端和服务端正常通讯,此时系统监控数据会上传至 ServerStatus/web/ 目录,项目作者推荐将 web 目录拷贝至 apache 或 其它 http 服务的根目录。我们这里使用 python 的 http.server 模块搭建一个预览版:
$ cd ServerStatus/web/$ python3 -m http.server 3000
通过浏览器访问 web 服务的端口即可查看监控页面:

页面是动态刷新的,点击节点,可以看到详细信息

除了网页版,项目还提供了一个命令行版,供内部调试用。

脚本位于:ServerStatus/web/ssview.py,使用的是 web目录下的json/stats.json 作为数据源,需要在代码中将 demo 数据换成服务器数据。
if __name__ == '__main__':#default = 'https://tz.cloudcpp.com/json/stats.json'default = 'http://192.168.1.1:3000/json/stats.json'ads = sys.argv[1] if len(sys.argv) == 2 else defaultsscmd(ads)
在命令行通过 python 调用 ssview.py,需要提前安装 PrettyTable 模块
$ pip install PrettyTable$ python3 web/ssview.py
此项目常用搭建“机场”节点监控,方便对挂掉的主机进行快速定位。C/S架构方便快速搭建,并且客户端依赖只需要安装 python 环境即可,一个脚本即解决客户端数据收集的问题,方便扩展。




