vnStat — это бесплатный инструмент с открытым исходным кодом для мониторинга сетевого трафика в консольном режиме, предназначенный для операционной системы Linux. С помощью vnStat вы можете отслеживать сетевую статистику за различные периоды времени. Он прост, легкий и потребляет небольшую часть системных ресурсов. vnStat позволяет генерировать данные о сетевом трафике за час, день, месяц, неделю и день. В этом руководстве вы узнаете, как установить и использовать vnStat для мониторинга сетевого трафика.
Особенности
- Мониторинг нескольких интерфейсов одновременно.
- Предоставляет несколько вариантов вывода данных, например по дням, неделям и т. д.
- Сортировка данных по часам, дням, месяцам или неделям, а также выборка 10 дней с наибольшим трафиком.
- Возможность вывода данных в формате изображения.
- Мониторинг нескольких сетевых интерфейсов одновременно.
- Легкий и с низким потреблением ресурсов процессора.
В этом руководстве вы узнаете, как установить и использовать инструмент VnStat для мониторинга сетевого трафика в Ubuntu 22.04.
Необходимые условия
- Сервер под управлением Ubuntu 20.04.
- На сервере настроен пароль root.
Начало работы
Перед началом рекомендуется обновить и модернизировать все системные пакеты до последней версии. Вы можете обновить их все с помощью следующей команды:
apt update -y apt upgrade -y
После обновления всех пакетов вы можете установить VnStat из исходного кода на следующем шаге.
Установка vnStat
По умолчанию последняя версия vnStat недоступна в стандартном репозитории Ubuntu. Поэтому вам нужно будет скомпилировать его из исходного кода.
Сначала установите все зависимости, необходимые для компиляции vnStat, с помощью следующей команды:
apt-get install build-essential gcc make libsqlite3-dev -y
После установки всех зависимостей загрузите последнюю версию исходного кода vnStat с помощью следующей команды:
wget https://humdi.net/vnstat/vnstat-2.10.tar.gz
По завершении загрузки распакуйте загруженный файл с помощью следующей команды:
tar -xvzf vnstat-2.10.tar.gz
Затем перейдите в каталог с распакованными файлами и настройте программу с помощью следующей команды:
cd vnstat-2.10 ./configure --prefix=/usr --sysconfdir=/etc
Затем установите vnStat, выполнив следующую команду:
make make install
После установки vnStat вы можете проверить версию установленного vnStat с помощью следующей команды:
vnstat -v
Вы должны получить следующий вывод:
vnStat 2.10 by Teemu Toivola
После завершения вы можете перейти к следующему шагу.
Использование Systemd для управления VnStat
Для управления VnStat с помощью systemd вам необходимо скопировать файл службы vnStat из исходного кода vnStat в каталог /etc/systemd/system/:
cp -v vnstat-2.10/examples/systemd/vnstat.service /etc/systemd/system/
Затем включите службу vnStat и запустите ее с помощью следующей команды:
systemctl enable vnstat systemctl start vnstat
Вы также можете проверить состояние службы vnStat с помощью следующей команды:
systemctl status vnstat
Вы должны получить следующий вывод:
? vnstat.service - vnStat network traffic monitor
Loaded: loaded (/lib/systemd/system/vnstat.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-11-29 08:34:08 IST; 2h 49min ago
Docs: man:vnstatd(1)
man:vnstat(1)
man:vnstat.conf(5)
Main PID: 1730 (vnstatd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/vnstat.service
??1730 /usr/sbin/vnstatd -n
Nov 29 08:34:08 vyompc systemd[1]: Started vnStat network traffic monitor.
Nov 29 08:34:08 vyompc vnstatd[1730]: Info: vnStat daemon 1.18 started. (pid:1730 uid:122 gid:128)
Nov 29 08:34:08 vyompc vnstatd[1730]: Info: Monitoring: enp20s0 (1000 Mbit) wlp22s0 (1000 Mbit)
После завершения вы можете перейти к следующему шагу.
Как отслеживать сетевой трафик с помощью vnStat
vnStat предоставляет несколько опций, позволяющих отслеживать сетевой трафик. Вы можете отобразить список всех доступных опций с помощью следующей команды:
vnstat --help
Вы должны получить следующий вывод:
vnStat 2.10 by Teemu Toivola
-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 set list begin date
-e, --end 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 select interface
Use "--longhelp" or "man vnstat" for complete list of options.
Перед использованием vnStat необходимо подождать некоторое время, чтобы обновить базу данных vnStat. После обновления базы данных вы можете запустить vnStat без каких-либо опций, как показано ниже:
vnstat
Вы должны увидеть следующий вывод:
rx / tx / total / estimated
wlp22s0:
Oct '22 17.80 GiB / 4.35 GiB / 22.15 GiB
Nov '22 16.61 GiB / 3.62 GiB / 20.23 GiB / 21.48 GiB
yesterday 332.22 MiB / 114.17 MiB / 446.39 MiB
today 710.25 MiB / 44.85 MiB / 755.11 MiB / 1.55 GiB
Чтобы использовать конкретный сетевой интерфейс, используйте опцию -i, как показано ниже:
vnstat -i ens3
Вы должны получить суточную и месячную статистику в следующем выводе:
Database updated: 2020-11-12 06:30:00
ens3 since Saturday 29 January 2022
rx: 185.89 GiB tx: 38.82 GiB total: 224.70 GiB
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Oct '22 17.80 GiB | 4.35 GiB | 22.15 GiB | 71.04 kbit/s
Nov '22 16.61 GiB | 3.62 GiB | 20.23 GiB | 71.20 kbit/s
------------------------+-------------+-------------+---------------
estimated 17.64 GiB | 3.85 GiB | 21.48 GiB |
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
yesterday 332.22 MiB | 114.17 MiB | 446.39 MiB | 43.34 kbit/s
today 710.25 MiB | 44.85 MiB | 755.11 MiB | 154.31 kbit/s
------------------------+-------------+-------------+---------------
estimated 1.46 GiB | 92 MiB | 1.55 GiB |
Чтобы отобразить почасовую статистику, запустите следующую команду:
vnstat -h
Вы должны получить следующий вывод:
ens3 / hourly h rx (MiB) tx (MiB) ][ h rx (MiB) tx (MiB) ][ h rx (MiB) tx (MiB) 12 5.4 0.2 ][ 20 30.4 14.8 ][ 04 0.0 0.0 13 72.7 15.0 ][ 21 24.8 6.4 ][ 05 0.0 0.0 14 1.9 0.4 ][ 22 20.1 9.8 ][ 06 0.0 0.0 15 0.0 0.0 ][ 23 0.0 0.0 ][ 07 0.0 0.0 16 0.0 0.0 ][ 00 0.0 0.0 ][ 08 147.0 10.2 17 36.4 9.6 ][ 01 0.0 0.0 ][ 09 64.1 9.4 18 54.0 23.4 ][ 02 0.0 0.0 ][ 10 496.9 23.9 19 86.5 34.5 ][ 03 0.0 0.0 ][ 11 2.3 1.3
Чтобы отобразить дневную статистику, выполните следующую команду:
vnstat -d
Вы должны получить следующий вывод:
ens3 / daily
day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Sunday 30 October 2022 266.75 MiB | 47.81 MiB | 314.56 MiB | 30.54 kbit/s
Monday 31 October 2022 701.49 MiB | 225.89 MiB | 927.38 MiB | 90.04 kbit/s
Tuesday 01 November 2022 506.20 MiB | 184.50 MiB | 690.70 MiB | 67.06 kbit/s
Wednesday 02 November 2022 631.15 MiB | 182.43 MiB | 813.59 MiB | 78.99 kbit/s
Thursday 03 November 2022 189.21 MiB | 41.18 MiB | 230.39 MiB | 22.37 kbit/s
Friday 04 November 2022 703.67 MiB | 175.49 MiB | 879.16 MiB | 85.36 kbit/s
Saturday 05 November 2022 518.96 MiB | 130.47 MiB | 649.43 MiB | 63.05 kbit/s
Sunday 06 November 2022 301.74 MiB | 81.95 MiB | 383.69 MiB | 37.25 kbit/s
Вы можете использовать опцию -t для отображения дней с наибольшим трафиком:
vnstat -t
Вы должны получить следующий вывод:
ens3 / top 1
# day rx | tx | total | avg. rate
-----------------------------+-------------+-------------+---------------
1 Thursday 03 February 2022 2.58 GiB | 214.64 MiB | 2.79 GiB | 277.76 kbit/s
2 Saturday 05 February 2022 2.11 GiB | 229.32 MiB | 2.33 GiB | 231.67 kbit/s
3 Tuesday 01 February 2022 1.81 GiB | 190.56 MiB | 2.00 GiB | 198.71 kbit/s
4 Wednesday 02 February 2022 1.80 GiB | 179.75 MiB | 1.98 GiB | 196.72 kbit/s
5 Sunday 10 July 2022 1.69 GiB | 248.34 MiB | 1.93 GiB | 192.21 kbit/s
6 Saturday 19 February 2022 1.56 GiB | 172.67 MiB | 1.73 GiB | 171.56 kbit/s
7 Friday 16 September 2022 1.44 GiB | 201.21 MiB | 1.64 GiB | 163.16 kbit/s
8 Friday 17 June 2022 1.34 GiB | 278.89 MiB | 1.61 GiB | 160.33 kbit/s
9 Friday 25 March 2022 1.06 GiB | 504.19 MiB | 1.55 GiB | 154.51 kbit/s
10 Monday 07 February 2022 1.30 GiB | 160.68 MiB | 1.46 GiB | 145.30 kbit/s
-----------------------------+-------------+-------------+---------------
Чтобы отобразить статистику сетевого трафика в режиме реального времени, выполните следующую команду:
vnstat -l
Вы должны получить следующий вывод:
Monitoring ens3... (press CTRL-C to stop)
rx: 11 kbit/s 7 p/s tx: 9 kbit/s 6 p/s^C
ens3 / traffic statistics
rx | tx
--------------------------------------+------------------
bytes 17 KiB | 18 KiB
--------------------------------------+------------------
max 24 kbit/s | 33 kbit/s
average 6.78 kbit/s | 7.39 kbit/s
min 0 kbit/s | 0 kbit/s
--------------------------------------+------------------
packets 78 | 82
--------------------------------------+------------------
max 10 p/s | 11 p/s
average 3 p/s | 4 p/s
min 0 p/s | 0 p/s
--------------------------------------+------------------
time 20 seconds
Вы также можете очистить записи базы данных для интерфейса ens3 и остановить мониторинг с помощью следующей команды:
vnstat -i ens3 --remove --force
Вы должны получить следующий вывод:
Interface "ens3" removed from database. The interface will no longer be monitored. Use --add if monitoring the interface is again needed.
Вы также можете снова добавить удаленный интерфейс ens3, выполнив следующую команду:
vnstat -i ens3 --add
Вы должны получить следующий вывод:
Adding interface "ens3" for monitoring to database... Restart the vnStat daemon if it is currently running in order to start monitoring "ens3".
Затем перезапустите службу vnStat, чтобы применить изменения:
systemctl restart vnstat