ServerStatus-Tiny
多服务器探针监控平台便携版
2022.10.1
- 基于 ServerStatus-Hotaru 开发
开发
后端为PHP
接口,以实现Windows/Linux
均可架设服务端小改
UI界面-VUE,优化卡片显示增加
各操作系统旗帜:含树莓派(Raspberry
)、Termux
、Linux
等增加
双栈IPV6/IPV4
监控支持、增加国内服务器在线监控支持增加
单个服务器监控IP地址数据、在线时间字段适配
Termux
,能够监控 termux,支持androd7+,无root/root均可修复
跨平台支持,已测试: Mac、Windows 2012、Ubuntu、Termux(Android 10、Android 6)、Raspberry 2B+兼容
兼容原版ServerStatus
、ServerStatus-Hotaru
、ServerStatus-Tokyo
- 总结:无需docker、支持跨平台、支持Termux
二开这个项目主要是由于原项目需要 docker
部署服务端,要跑一个 caddy 的服务端;
- 无奈于架设比较繁琐,其实主要原因是我需要在 Windowserver 2012 云服务器不支持虚拟化,无法跑不了 docker 也就安装不了服务端;
- 之后尝试了一下在树莓派上面跑,估计是硬件太久远了也跑不起来,socket 一直重连!!!
- 我需要监控一下几个
Termux
服务,试了一下都跑不了,各种报错 - 于是,重写了~😅
ps: 写 shell
脚本时............一言难尽
主题: 基于 Vue 3 和 Semantic UI ServerStatus
监控: 基于 ServerStatus 服务器后端: PHP
- 所有客户端/服务端均做了兼容处理
- 理论上兼容原版
ServerStatus
、ServerStatus-Hotaru
、ServerStatus-Tokyo
- 若只喜欢本项目
WEB
界面:可以只替换本项目WEB
覆盖目标WEB目录,并配置好PHP
环境即可 - 若只需要兼容
Termux
可以只使用client.sh
(无root推荐)、status-psutil.py
(有root推荐) - 欢迎fork、PR
- [注]!!! 客户端中需要修改配置,
socket模式/后端模式
_二选一!!!_为了兼容原项目预留的 - [已测试平台]
- 均以 WindowsServer2012 作为
PHP
服务端,运行在本项目Backend
模式下 MacOS
Python3.10 psutil==5.5 客户端status-psutil.py
正常✅Windows
Python3.8 psutil==2.2.1 客户端status-psutil.py
正常✅Raspberry 2B+
Python3.8 psutil==2.2.1 客户端status-psutil.py
正常✅Termux - Android 6 rooted
Python3.7 psutil==2.2.1 客户端status-psutil.py
正常✅Termux - Android 10 rooted
Python3.10.11 psutil==2.2.1 客户端status-psutil.py
正常✅Termux - Android 10 No root
客户端client.sh
正常✳️ (网速/流量读取不到)
- 均以 WindowsServer2012 作为
# 服务端 | 手动指派网站目录 php >= 5
git clone https://github.com/zsuroy/ServerStatus-Tiny
cd WEB
# 跨平台客户端 | 若 psutil 报错 > 装2.2.1
git clone https://github.com/zsuroy/ServerStatus-Tiny
cd clients
pip install -r requirements.txt
python3 status-psutil.py
# Linux 可选客户端 | 特指 termux(无root推荐)
git clone https://github.com/zsuroy/ServerStatus-Tiny
cd clients
bash client.sh
只介绍本项目后端模式的修改,socket模式的配置,请参考底部相关项目链接
接口
app.php
; 前台config.js
define("FILE_NAME", "./json/stats.json"); //文件名
define("PSK", "123"); //PASSWORD
# [Client-psutil.py]
# backend mode: post the status data to the web
SERVER = "http://127.0.0.1/debug/stats/app.php" # 服务端api接口地址:可以直接域名或ip或完整路径
PORT = 80 # 后端模式端口无用
USER = "SUE-1" # 主机名:标示作用
PASSWORD = "123" # 随机生成个复杂的密码与服务端保持一致
INTERVAL = 5 # 更新间隔,单位:秒
SERVERINFO = {"name": "MAC", "type": "KVM", "host": USER, "location": "CN", "region": "CN"} # 公共信息
# ===> either socket or backend mode shoule be saved.
# public settings following
CHECKSOURCE = 1 # 网络通讯正常测试源 [0: GFW, 1; CN]
# [client.sh]
SERVER="http://192.168.1.4/debug/stats/" # api_url: begin with "http(s)" or only ip address(domain)
PORT=35601 # 端口无用
USER="SUROY-DEMO" # hostname
PASSWORD="123" # the verified password
INTERVAL=1 # Update interval
BACKENDMODE=0 # 后端模式: 0启动
SOURCEID=1 # 网络通讯正常测试源 [0: GFW, 1; CN]
SERVERINFO="\"name\":\"Nova4e\",\"type\":\"termux\",\"host\":\"${USER}\",\"location\":\"CN\",\"region\":\"termux\",\"custom\":\"\","
开发了包括但不限于以下模版
{ "name": "显示名","type":"架构","host":"主机名-唯一标示","location":"地区","region":"地区-旗帜","custom":"用户自定义显示内容","online4":"IPV4状态","online6":"IPV4状态","uptime":"服务器在线时间","load":"服务器负载","memory_total":"总内存","memory_used":"已用内存","swap_total":"swap","swap_used":750628,"hdd_total":"硬盘大小","hdd_used":25600,"cpu":0,"network_rx":3020,"network_tx":1020, "network_in": 40924739, "network_out": 14312368,"updated":"上次更新时间戳","ip":"IP地址"}
{ "name": "Linux","type":"Arm","host":"SUROY","location":"CN","region":"linux","os":"archlinux","custom":"","online4":true,"online6":false,"uptime":"7d 12:36","load":1.25,"memory_total":9768472,"memory_used":1249760,"swap_total":2393756,"swap_used":750628,"hdd_total":213780,"hdd_used":25600,"cpu":0,"network_rx":3020,"network_tx":1020, "network_in": 40924739, "network_out": 14312368,"updated":"10-10 12:30:40","ip":"192.168.1.4"}
特殊旗帜:树莓派raspberry
、Termuxtermux
、Linuxlinux
、海盗旗pirate
、彩虹旗rainbow
、trans
替换旗帜即替换 region
或 os
属性内容,更多旗帜参考 V1.0.2
更新
Termux 开机自启任务
#!/data/data/com.termux/files/usr/bin/sh
screen -wipe
screen -dmS status python3 /data/data/com.termux/files/home/ServerStatus/status-psutil.py
总结
[Termux] 无root推荐client.sh
、有root推荐status-psutil.py
其余设备均用
status-psutil.py
- Termux
- proot
- psutil 2.2.1
pip3 install psutil==2.2.1
- python2.7/3.8/3.10
- Need root!!!
- error when having no root (Android 7+ no permission view /proc) giampaolo/psutil#384
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/psutil/__init__.py", line 90, in <module> import psutil._pslinux as _psplatform File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/psutil/_pslinux.py", line 123, in <module> scputimes = namedtuple('scputimes', _get_cputimes_fields()) File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/psutil/_pslinux.py", line 107, in _get_cputimes_fields with open('/proc/stat', 'rb') as f: PermissionError: [Errno 13] Permission denied: '/proc/stat'
- Termux:
client.sh
无法获取流量/网速数据 - 新发现问题请提交ISSUE,我会尽快跟进解决
普通用户请直接忽略
仅仅记录个人开发过程的BUG苦逼历程
-
[开发设备]
机型
: Mac Os版本
: Python3.9
- 历史版本更新记录可前往RELEASES 页面 查看
- WEB: 新增离线检测判定服务
app.php
- 新增服务器ip、在线时间显示
- 双旗帜卡片显示模式: 左侧地区、右侧系统
- 旗帜新增列表如下:
ubuntu
、debian
、windows
、docker
、fedora
、centos
、suselinux
、archlinux
、nas
、router
、android
、mac
、ios
、alpine
- 原有旗帜:
各个国家旗帜及raspberry
、termux
、linux
、pirate
、rainbow
、trans
- ServerStatus-Hotaru: https://github.com/cokemine/ServerStatus-Hotaru MIT License
- ServerStatus:https://github.com/BotoX/ServerStatus WTFPL License
- ServerStatus-Toyo:https://github.com/ToyoDAdoubiBackup/ServerStatus-Toyo MIT License
- 国内IPV6资源检测:东北大学测速站、test-ipv6.com
- 图标、旗帜: iconfont