最近因为自己的需要 , 修改了下 serverstatus 的一些功能 . 现在分享给大家 . 有需要的可以自取 .
github 地址 :https://github.com/91yun/ServerStatus
修改的内容如下 :
- 服务端使用了 docker 的方式 .
- 增加了被墙的检测
- 把下载速度改成了带宽 ( 下载速度 *8) 更加直观的观察服务器的带宽占用
- 加了连接数的检测 ,
- 优化了 css, 对手机的适配
- 使用 vnstat 的月流量统计代替总流量统计 ( 目前只显示 eth0 网卡的流量 )
- 添加了可选的 Basic HTTP authentication
配置文件没有改变 , 会用的朋友一看就懂 .
服务器端安装
mkdir /home/ServerStatus cd /home/ServerStatus wget --no-check-certificate https://raw.githubusercontent.com/91yun/ServerStatus/master/server/config.json docker create --name=sss \ --restart=always \ -v /home/ServerStatus/config.json:/ServerStatus/server/config.json \ -p 3561:3561 \ -p 80:80 \ -e "USERNAME=admin" \ -e "PASSWORD=91yun" \ rongdede/serverstatus:server
配置文件地址 : /home/ServerStatus/config.json
配置方式和原版一样 .
用户名 :admin
可以自行修改
密码 :91yun
可以自行修改
客户端安装
yum -y install epel-release
yum -y install python-pip
yum clean all
yum -y install gcc
yum -y install python-devel
pip install psutil
mkdir -p /home/serverstatus
cd /home/serverstatus
wget https://github.com/91yun/ServerStatus-1/raw/master/clients/client-psutil.py
编辑客户端配置文件 vim client-psutil.py
SERVER = "127.0.0.1" # 改成呢你的服务器地址
PORT = 3561
USER = "USER" # 改成唯一的客户端用户名,服务器根据这个字段判断是哪台服务器
PASSWORD = "USER_PASSWORD" # 修改你的密码,和其他客户端可以是相同的
启动客户端
nohup python /home/serverstatus/client-psutil.py &> /dev/null &
是时候该更新一下了,现在最新的Linux发行版软件库里面的vnstat已经是2.x版本,支持的参数有变化,用这个脚本显示不了流量,另外这个脚本也不支持最新的python3.8版本。
服务端用docker部署 是不是还得先装web服务器 然后再部署这个
不用。docker里面带了nginx
vnstat要在server还是client安装?还是两个都要安装?
只需要在client装
还有,GFW检测功能有待加强,主要是国内测试节点太少,对于部分运营商在某些出口节点设置的屏蔽、干扰几乎完全检测不到
干扰是不可能检测到的.另外只是检查普遍意义上的屏蔽.像移动自己搞的就没办法了.这种实时检测的是没办法尽善尽美的.否则耗时太长.
我觉得测试节点应该可以适当增加点,比如目前ping.pe的中国测试节点已有13个,涵盖了联通、移动、阿里云、腾讯、UCloud等不同ISP/IDC的机房和线路
机制不一样,这个是每秒提交检测数据,如果1秒内没法完成检测就会造成其他数据出问题。
客户端(Debian9/Python 2.7.13)运行client-psutil.py后,显示以下错误:
(‘Caught Exception:’, ValueError(“invalid literal for int() with base 10: ‘awk: line 2: function gensub never defined'”,))
在CentOS7下运行此脚本没有这个问题
注:vnstat已安装并启动成功
sudo apt-get install -y gawk
OK~又发现几个新问题:负载显示值不准,经常是实际负载值的两三倍;网络显示值明显偏高;其中一个VPS流量显示值始终为0B | 0B
1.负载和什么做的对比?
2.网络是根据网卡流量计算的,有些偏差是正常的,因为每种显示的网络计算方式的间隔都不一样.
3.显示0B|0B的原因是你网卡名称不是eth0 , 在client-psutil.py里搜索”vnstat –dumpdb”改成 “vnstat –dumpdb -i 网卡名” 然后kill进程后,重启下这个程序就可以了.
基准是top命令显示的%Cpu(s) us值;
我同时也在用doubi的云监控(同样基于ServerStatus),同一个VPS你的示值是他的10倍左右;
的确,那台VPS网卡名是ens3,按照你说的方法修改脚本重启之后已解决。
应该是8倍,因为原来serverstatus显示的是下载速度, 我改成了带宽. 也就是下载速度*8. 因为服务一般都是说带宽,比如100M带宽,200M带宽,带宽比下载速度在服务器上更加直观.
那么你的流量显示单位是字节(B)还是比特(b)?如果不同的话最好还是标注下单位,以免被误解
带宽肯定是b拉.下载才用B.
另外,vnstat统计的流量月初会重置?
发现 vnstat 的一个缺点,那就是不能实时反映流量变化,存在一定滞后性
还有,既然你的网络带宽是以bps为单位,那就麻烦把数值精度调高一点,不然看起来都是8的倍数感觉怪怪的
还有流量显示,如果一律取整,不如干脆不要显示.0
并非取整,会显示小数点后两位
单位是G的话确实是显示小数点后面两位,M的话只会显示.0M,另外如果小于1M的话只会显示0B,有点奇怪
估计是bug,我自己用的倒是正常的,回头我看看
我是按照docker官网说明装的18.06.1-ce版,而不是你github里面写的docker-io,这个是否会有影响?
我自己的是正常的.显示0B的应该都是网卡名不对.
你这显示的单位都是T或G,如果单位是M就会显示xx.0M;显示0B | 0B那是网卡名的问题,而只有一边显示0B那就是vnstat统计的rx/tx流量<1M时的结果
服务端创建docker容器并启动之后,lsof查看发现80/tcp和3561/tcp端口都没有被监听,是为什么呢?
你确定docker启动了吗? docker ps
刚才启动错了,docker start的不是sss容器而是IMAGE,现在OK了,多谢,如果能够添加SSL支持就更完美了!
http://23.95.192.254/
用户名:admin
密码:haha
博主可以看看,新加坡-1的监控状态就是问题所以,老是一闪一闪的。
执行python /home/serverstatus/client-psutil.py
出现如下提示
You are connecting via: IPv4
sh: 1: vnstat: not found
(‘Caught Exception:’, ValueError(“invalid literal for int() with base 10: ‘awk: line 2: function gensub never defined'”,))
Connecting…
Authentication successful. Access granted.
报错是vnstat没安装成功,流量统计依赖vnstat,你可以手动安装下.
客户端是debian连接不起,centos就没问题
客户端你可以手动执行下
pythong /home/serverstatus/client-psutil.py
看看报什么错误