小计:

更新:现在新版的已经有显示当月流量显示了

​ 最近装上了ServerStatus中文版,监控了自己的vps起来,但是有些主机需要每个月重置流量。

于是就有了本文

安装ServerStatus中文版

GitHub地址:

[github.com](https://github.com/cppla/ServerStatus)

vnstat 探测流量与流量重置

1,安装vnstat

1.首先,您将需要为您的Linux版本启用EPEL存储库包

yum -y install epel-release
yum -y update

2.安装VnStat。

使用yum命令行实用程序在您的系统上安装vnstat包:

yum -y install vnstat

3,安装完成后重启下服务,获取接口信息

service vnstat restart

4,输入命令查看接口流量(默认5分钟刷新流量)

vnstat -q

​ 如图所示:

image-20211013104520804

也可以直接输入 vnstat -u 手动刷新流量显示值,然后输入 vnstat -q 查看新的流量

image-20211013104727298

2.修改探针文件

​ 1,修改client-linux.py文件

​ 将下列内容

def liuliang():
    NET_IN = 0
    NET_OUT = 0
    with open('/proc/net/dev') as f:
        for line in f.readlines():
            netinfo = re.findall('([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)', line)
            if netinfo:
                if netinfo[0][0] == 'lo' or 'tun' in netinfo[0][0] \
                        or 'docker' in netinfo[0][0] or 'veth' in netinfo[0][0] \
                        or 'br-' in netinfo[0][0] or 'vmbr' in netinfo[0][0] \
                        or 'vnet' in netinfo[0][0] or 'kube' in netinfo[0][0] \
                        or netinfo[0][1]=='0' or netinfo[0][9]=='0':
                    continue
                else:
                    NET_IN += int(netinfo[0][1])
                    NET_OUT += int(netinfo[0][9])
    return NET_IN, NET_OUT

替换为

def liuliang():
    NET_IN = 0
    NET_OUT = 0
    vnstat=os.popen('vnstat --dumpdb').readlines()
    for line in vnstat:
        if line[0:4] == "m;0;":
            mdata=line.split(";")
            NET_IN=int(mdata[3])*1024*1024
            NET_OUT=int(mdata[4])*1024*1024
            break
    return NET_IN, NET_OUT

重启ServerStatus 生效

如果安装的 vnstat 版本不是 v1.x 而是新的 v2.x.替换为以下代码

def liuliang():
    NET_IN = 0
    NET_OUT = 0
    vnstat=os.popen('vnstat --oneline').readlines()
    for line in vnstat:
        mdata=line.split(";")
        NET_IN=str(mdata[8])
        NET_IN=re.findall('\d+\.\d*', NET_IN)
        NET_IN=int(float(NET_IN[0])*1024*1024*1024)
        NET_OUT=str(mdata[9])
        NET_OUT=re.findall('\d+\.\d*', NET_OUT)
        NET_OUT=int(float(NET_OUT[0])*1024*1024*1024)
    return NET_IN, NET_OUT

3,配置vnstat刷新时间和流量重置时间

修改文件/etc/vnstat.conf配置文件

1,默认每月流量重置时间为 1 号

# on which day should months change
MonthRotate 1

2,默认流量刷新时间为5分钟

# how often (in minutes) bandwidth detection is redone when
# BandwidthDetection is enabled (0 = disabled)
BandwidthDetectionInterval 5

提示

修改了每月重置流量不是当月生效的,是下月生效。

如果不生效可以手动清除流量

rm -r /var/lib/vnstat/.* 
rm -r /var/lib/vnstat/* 

重启vnstat

service vnstat restart

参考/感谢

​ 1.https://zbttl-github-io.vercel.app/fu-wu-qi-tan-zhen-yu-liu-liang-chong-zhi/

​ 2.如何在CentOS 7上安装VnStat网络监控 (vue5.com)

最后修改:2022 年 05 月 19 日
如果觉得我的文章对你有用,请随意赞赏