vnStat is an open source, GPL-licensed, console-based network traffic monitor. It’s lightweight and can be used without root privilege. Traffic statistics is stored in a database and presented per network interfaces. Each interface has its own database. The latest stable version is vnStat 1.1.5.
This tutorial explains how to install vnStat on Debian 8/Ubuntu 16.04/14.04 server and how to use it.
Install vnSTAT on Debian 8/Ubuntu 16.04/14.04 Server
vnStat is available from Debian/Ubuntu official repositories.
sudo apt-get install vnstat
The vnstatd daemon will be automatically started after it’s installed. And it will auto start when Debian/Ubuntu is booted up. You can check this out with systemctl.
systemctl status vnstat
● vnstat.service - vnStat network traffic monitor Loaded: loaded (/lib/systemd/system/vnstat.service; enabled) Active: active (running) since Sat 2016-04-16 05:58:33 EDT; 1 months 9 days ago Docs: man:vnstatd(1) man:vnstat(1) man:vnstat.conf(5) Main PID: 654 (vnstatd) CGroup: /system.slice/vnstat.service └─654 /usr/sbin/vnstatd -n
“Enabled” means auto start with system boot is enabled.
Create Database for Network Interface
After vnStat is installed on Debian/Ubuntu , a database will be automatically initialized for each network interface.
/var/lib/vnstat is the database directory for vnStat.
[email protected]:~$ ls /var/lib/vnstat/ eth0 eth1
A new database can be created with the following command. Replace
eth0 with the interface that should be monitored.
vnstat --create -i eth0
To remove database for an interface, run the below command. Replace
eth0 with the interface that you don’t want to monitor.
vnstat --delete -i eth0
The daemon vnstatd is responsible for data retrieval and storage whereas the vnstat command provides an interface for querying the traffic information stored in network interface specific databases.
View Live Network Traffic
To view live network traffic, run this command:
vnstat -i eth0 -l
-i stands for interface.
-l stands for live. Replace eth0 with your interface name. Press Ctrl+C to stop.
In the above screenshot, rx means Receive which is incoming traffic and tx means Transmit which is outgoing traffic. You can see how much bandwidth (transfer rate) is being used. All Digital Ocean SSD cloud servers have 1 Gbit network interface. (Create an account with Digital Ocean via my affiliate link, you will get $10 free credit 🙂 )
View Hourly Traffic
Show network traffic of last 24 hours.
With this command, you can find out what time of the day your Web site sustain most traffic. Again,
r stands for Receive which is incoming traffic;
t stands for transmit which is outgoing traffic.
View Daily Network Traffic
This command will show the daily traffic statistics of last 30 days.
View Weekly Traffic
This command shows network traffic statistics of last 7 days, last week and current week.
View Monthly Network Traffic
Please note that
Apr '16 in the above screen means April 2016. At first glance, I thought it means April 16th. If you don’t like this format, you can change it by editing the vnstat config file.
sudo nano /etc/vnstat.conf
Find the 19th line.
MonthFormat "%b '%y"
Change the lower case y to upper case Y. You can also remove the
' character. Save and close the file. Run
vnstat -m command again. Now you can see clearly that it means year 2016.
%y and %Y are two Unix date format strings. %y only output the last two digits of year (16) whereas %Y outputs the entire 4 digits of year (2016).
Show Top 10 Days
To change the rate unit, use
-ru (rate unit) option. For instance, to view live traffic in bytes, add number 0 as the parameter to
vnstat -i wlp3s0 -l -ru 0
To view traffic in bits, add number 1 as the parameter to
vnstat -i wlp3s0 -l -ru 1