Ubuntu安装vnstat控制台网络流量监视器

时间:2020-01-09 10:45:33  来源:igfitidea点击:

如何在Ubuntu上安装vnstat是基于控制台的网络流量监视器,以保持所选接口的5分钟间隔,每小时,每天,每月和每年的网络流量记录?
在此教程中,您将学习如何在基于Ubuntu LTS 16.04、18.04和20.04 LTS的台式机或者服务器上安装vnstat。
它是一个免费的基于开源控制台的网络流量监视工具。
它不是数据包嗅探器。
即使没有root权限,也可以使用vnStat。
让我们看看如何在Ubuntu机器上设置vnstat。

第1步Ubuntu使用apt/apt-get安装vnstat

执行以下apt命令/apt-get命令以更新系统:

sudo apt update
sudo apt upgrade

搜索vnstat软件包,执行:

apt show vnstat

输出示例:

Package: vnstat
Version: 2.6-1
Priority: optional
Section: universe/net
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Christian Göttsche <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 310 kB
Pre-Depends: init-system-helpers (>= 1.54~)
Depends: libc6 (>= 2.29), libsqlite3-0 (>= 3.7.6.1), adduser, lsb-base
Suggests: vnstati
Homepage: https://humdi.net/vnstat/
Download-Size: 88.9 kB
APT-Sources: http://mirrors.linode.com/ubuntu focal/universe amd64 Packages
Description: console-based network traffic monitor
vnStat is a network traffic monitor for Linux. It keeps a log of
daily network traffic for the selected interface(s). vnStat is not
a packet sniffer. The traffic information is analyzed from the /proc
filesystem, so vnStat can be used without root permissions.

安装

执行以下命令以在Ubuntu服务器上设置和安装vnstat:

sudo apt-get install vnstat

或者

sudo apt install vnstat

步骤2设定vnstat

每个接口的缺省数据库目录位于以下位置(使用ls命令/cd命令):

cd /var/lib/vnstat/
ls -l /var/lib/vnstat/

输出示例:

total 4
-rw-r--r-- 1 vnstat vnstat 2792 Apr 23 19:28 eth0

使用ip命令找出您的接口名称:

ip l show
ip a show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 40:9f:38:28:f6:b5 brd ff:ff:ff:ff:ff:ff

记下接口名称enp0s31f6。
我们需要使用文本编辑器(例如nano或者vim)编辑/etc/vnstat.conf文件:

sudo nano /etc/vnstat.conf

将默认接口名称设置为enp0s31f6(或者在较旧的Ubuntu系统上为eth0):

Interface "enp0s31f6"

我们可以自定义日期输出格式,如下所示:

DayFormat    "%Y-%m-%d"
MonthFormat  "%Y-%m"
TopFormat    "%Y-%m-%d"

设置数据保留期限策略(使用-1表示无限制,使用0禁用它)

5MinuteHours   48
HourlyDays      4
DailyDays      62
MonthlyMonths  25
YearlyYears    -1
TopDayEntries  20

保存并关闭文件。

步骤3启用并启动vnstat服务

我们将在Ubuntu Linux上使用systemctl命令来控制系统系统,例如vnstat.service。
启用服务的语法如下:

sudo systemctl enable vnstat.service

启动vnstat服务

sudo systemctl start vnstat.service

停止vnstat服务

sudo systemctl stop vnstat.service

重新启动/重新加载vnstat服务

编辑/etc/vnstat.conf后,我们必须重新启动或者重新加载服务:

sudo systemctl restart vnstat.service

或者

sudo systemctl reload vnstat.service

查找vnstat服务的状态

sudo systemctl status vnstat.service

步骤4查看网络流量图

我们分为两个部分,如下所示:

  • vnstatd守护程序后台服务,用于根据/etc/vnstat.conf文件监视和更新接口数据库。
  • vnstat命令行sysadmins/developers的命令行工具,用于查询由vnstatd守护程序存储的流量信息。换句话说,我们需要使用vnstat命令。

让我们在Ubuntu框中执行以下命令来查询vnstat数据库:

vnstat

新安装的系统的输出示例:

Database updated: 2020-04-23 19:39:00
 
   eth0 since 2020-04-23
 
          rx:  94.30 KiB      tx:  113.71 KiB      total:  208.01 KiB
 
   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+--------------
       2020-04     94.30 KiB |  113.71 KiB |  208.01 KiB |        0 bit/s
     ------------------------+-------------+-------------+--------------
     estimated       --      |     --      |     --      |
 
   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+--------------
         today     94.30 KiB |  113.71 KiB |  208.01 KiB |       24 bit/s
     ------------------------+-------------+-------------+--------------
     estimated       114 KiB |     138 KiB |     252 KiB |

我们可以选择以下界面:

vnstat -i eth0

是否要显示接口eth0,eth2和eth3合并的流量摘要?
尝试:

vnstat -i eth0+eth1+eth3

我们可以以xml格式输出有关VPN接口tun0的所有信息:

vnstat -i tun0 --xml

json格式怎么样?
尝试:

vnstat --json

以下两个特殊选项只能与--json,-xml和列表输出一起使用。
传递-b选项以从日期定义的特定日期/时间开始列表输出,而不是根据要显示的条目数选择开始。
该日期只能采用YYYY-MM-DD HH:MM和YYYY-MM-DD格式。
另一种选择是通过-e设置结束日期:

vnstat -b {YYYY-MM-DD} -i {interface} --xml
vnstat -e {YYYY-MM-DD} -i {interface} --json

可以使用以下格式删除接口eth1的数据库条目并停止对其进行监视:

vnstat -i eth1 --remove

查看每小时流量统计

vnstat -h
vnstat -i eth0 -h

查看每日(天)流量统计信息

vnstat -d
vnstat -i tun0 -d

显示每月流量统计

vnstat -m

显示年度流量统计

vnstat -y
enp0s31f6  /  yearly
 
         year        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+--------------
          2019    382.24 GiB |   78.11 GiB |  460.35 GiB |  125.39 kbit/s
          2020    834.28 GiB |  345.17 GiB |    1.15 TiB |    1.03 Mbit/s
     ------------------------+-------------+-------------+--------------
     estimated      2.61 TiB |    1.08 TiB |    3.70 TiB |

以上显示了过去几年每年的流量统计信息。

显示热门流量日

vnstat -t
vnstat -i eth0

如何实时显示所选接口的当前传输速率,直到中断

如果运行时间超过10秒,则会在中断后显示另一个显示实时网络传输速率和统计信息的漂亮选项:

vnstat -l
vnstat -i tun0 -l
vnstat -i eth0 -l

获得帮助

执行以下man命令:

man vnstat
vnstat --help
vnstat --longhelp
vnStat 2.6 by Teemu Toivola <tst at iki dot fi>
 
      -5,  --fiveminutes [limit]   show 5 minutes
      -h,  --hours [limit]         show hours
      -hg, --hoursgraph            show hours graph
      -d,  --days [limit]          show days
      -m,  --months [limit]        show months
      -y,  --years [limit]         show years
      -t,  --top [limit]           show top days
 
      -b, --begin <date>           set list begin date
      -e, --end <date>             set list end date
 
      --oneline [mode]             show simple parsable format
      --json [mode] [limit]        show database in json format
      --xml [mode] [limit]         show database in xml format
 
      -tr, --traffic [time]        calculate traffic
      -l,  --live [mode]           show transfer rate in real time
      -i,  --iface <interface>     select interface