昨晚闲来无事心血来潮,想再做一个服务器探针。考虑到之前氧化科创有一个大半年没动静的探针项目,现在已经又没一点生息,便想着重新用 Python Psutil 再搓一个,顺便实践一下之前没尝试的主题分离。
最终效果如下:
Demo(吗?):https://status.runyun.cc/
设计思路
自从上次 Uptime Kuma 被润云数据运维玩炸之后,他自己现在缺少一个”看起来很好玩“的探针索斯。正好是大学放假,为了让自己电脑”看起来很有用“,就做了这样一个小项目索斯!
这样就不用天天邀请和被邀请欣赏《来自深渊》了索斯!
目前实现的功能有:
- 通过文件方式存储状态信息,这样我们破烂超开机也能流畅运行力!
- 可设置上传密钥
- 展示端可以快速切换主题力!虽然是靠很硬核的变量实现的
- 展示端可以自定义系统、处理器之类的信息,非常便于忽悠你的用户(确信
- 展示端可对CPU、内存、硬盘的具体用量进行单独的隐藏(直接不输出,额外适合超开模拟器✌)
- 被测端无需有外向内的公网访问,也就是只需要展示端能被外网访问就行
- 被测端可以设置测试后是否上传数据
- 被测端可以指定输出的硬盘挂载点力!这样就不会被恐怖 docker 刷一整屏的挂载点信息
- 通过硬核的方式(计算提交时间差和数据绝对值差)计算网络用量,并且通过提交时间差判断设备是否活着
- 最后,法普塔可爱索斯
* 检查服务器是否还活着的功能还没做,我考虑的是用上次上传时间判断是不是活着的(做了)
展示端氨装
1、克隆仓库
git clone https://github.com/Someone-Yang/status_sosu
2、按需配置
主要是配置端口和密钥,不然我也不知道会发生什么。(鲁♂棒性警告)
3、转到程序目录,运行主程序 app.py
cd ./status_sosu
python ./app.py
没想到吧,这坨大💩项目还没支持自己守护自己;你得自己使用 screen 或者 supervisor 让展示端 app.py 常驻运行。
👆我们称这个为”最轻量化,给予用户绝对自由!“
4、直接暴露端口或使用 Nginx 等服务器转发端口,以便被测端可以正常访问
有个示例 Nginx 反代配置(留意自行修改本地服务地址 localhost:5000)
location ^~ /
{
proxy_pass http://localhost:5000;
proxy_set_header Host localhost;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
}
被测端氨装
1、克隆仓库
git clone https://github.com/Someone-Yang/status_sosu_client
2、按需配置
总得把展示端地址和密钥写上吧。
3、转到程序目录,运行主程序 app.py
cd ./status_sosu_client
python ./app.py
4、使用 Cron 等添加定时任务,定期运行本程序
本程序不保持常驻运行,即采即发即走。👈说了这个叫”自由“!
建议使用 crontab 每分钟运行一次。设置方法如下:
先创建一个 runstatus.sh
cd /path/to/status_sosu_client
python ./app.py
然后用
crontab -e
编辑定时任务,添加任务事项
* * * * * /path/to/runstatus.sh
保存退出。现在每分钟就会自动采集一次信息并上传。记得关掉设置 config.yml 里的日志功能(log),不然磁盘会瞬爆。
🙏希望轻量没事。