Як вести облік і моніторинг споживання трафіку за допомогою vnStat
vnStat є легкою консольною утилітою, яка веде історію мережевого трафіку в Linux. Фонова служба vnstatd зчитує лічильники інтерфейсів із ядра та зберігає їх у невелику базу даних. Після цього ви можете переглядати трафік за годинами, днями, місяцями й роками або стежити за поточною швидкістю в реальному часі. vnStat не перехоплює пакети, тому навантаження від нього дуже низьке. Він показує, скільки трафіку пройшло через кожен інтерфейс, але не показує, які IP-адреси, порти чи з'єднання його створили.
У цій інструкції показано, як встановити vnStat із репозиторію або з вихідного коду та як переглядати статистику трафіку. vnStat стане в пригоді на будь-якому сервері, де трафік обмежений або тарифікується, наприклад на Linux VPS чи виділеному сервері INTROSERV.
Встановіть vnStat із репозиторію
Підключіться до сервера по SSH. Докладніше див. Підключення через SSH.
Ubuntu і Debian
vnStat є у стандартних репозиторіях. Встановіть його:
sudo apt update sudo apt install -y vnstat
Під час встановлення служба vnstat запускається й додається в автозавантаження. Перевірте, що вона працює:
sudo systemctl status vnstat
У виводі має бути active (running). Якщо служба не запущена, додайте її в автозавантаження й запустіть командою sudo systemctl enable --now vnstat.

AlmaLinux і Rocky Linux
vnStat є в репозиторії EPEL. Підключіть EPEL і встановіть vnStat:
sudo dnf install -y epel-release sudo dnf install -y vnstat
Додайте службу в автозавантаження й запустіть її:
sudo systemctl enable vnstat && sudo systemctl start vnstat
Перевірте, що вона працює:
sudo systemctl status vnstat
Встановіть vnStat із вихідного коду
Збирайте vnStat із вихідного коду, якщо для вашого дистрибутива немає пакета або вам потрібна найновіша версія.
Якщо vnStat уже встановлено з репозиторію, спочатку видаліть пакет: sudo apt remove -y vnstat в Ubuntu і Debian або sudo dnf remove -y vnstat в AlmaLinux і Rocky Linux. Обидві інсталяції використовують той самий файл конфігурації, базу даних та ім'я служби, тому разом вони конфліктують.
Встановіть залежності для збирання. В Ubuntu і Debian:
sudo apt update && sudo apt install -y build-essential libsqlite3-dev wget
В AlmaLinux і Rocky Linux:
sudo dnf group install -y "Development Tools" sudo dnf install -y sqlite-devel wget
Завантажте й розпакуйте останній випуск:
wget https://humdi.net/vnstat/vnstat-latest.tar.gz tar -xf vnstat-latest.tar.gz cd vnstat-*/
Архів розпаковується в каталог із номером версії в назві, наприклад vnstat-2.13. Маска vnstat-*/ дає змогу перейти в нього, не вводячи номер версії.
Зберіть і встановіть vnStat:
./configure --prefix=/usr --sysconfdir=/etc && make && sudo make install
Параметр --prefix=/usr встановлює програми в /usr/bin і /usr/sbin, а --sysconfdir=/etc розміщує файл конфігурації в /etc/vnstat.conf.
В AlmaLinux і Rocky Linux з увімкненим SELinux, якщо vnStat раніше було встановлено з репозиторію, спочатку відновіть мітки SELinux для каталогу бази даних. Інакше служба не запуститься з помилкою Permission denied:
sudo restorecon -Rv /var/lib/vnstat
Встановіть службу systemd, додайте її в автозавантаження й запустіть:
sudo cp -v examples/systemd/vnstat.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now vnstat
Перевірте версію та статус служби:
vnstat --version sudo systemctl status vnstat
Визначте мережевий інтерфейс
За замовчуванням vnStat додає до своєї бази всі мережеві інтерфейси сервера, крім петлевого. Щоб побачити інтерфейси, які зараз є в базі, виконайте:
vnstat --dbiflist
Список інтерфейсів також показує команда ip a. У прикладах нижче використовується інтерфейс ens3. Замініть його на ім'я свого інтерфейсу, наприклад eth0 або enp1s0.
За замовчуванням vnStat зберігає нові дані в базу кожні 5 хвилин. Одразу після встановлення команда vnstat повідомляє, що даних поки немає, наприклад Not enough data available yet або No data. Зачекайте кілька хвилин і виконайте команду знову.
Перегляд статистики трафіку
Запустіть vnstat без параметрів, щоб побачити зведення за всіма інтерфейсами: трафік за поточну добу й місяць із прогнозом на кінець періоду.
vnstat
В усіх звітах rx означає вхідний трафік, tx вихідний, а total їхню суму.
Трафік за годинами
Щоб переглянути 12 останніх погодинних записів, виконайте:
vnstat -i ens3 -h --limit 12

Трафік за днями
Щоб переглянути 2 останні записи за днями, виконайте:
vnstat -i ens3 -d --limit 2
Без --limit кількість записів задає параметр ListDays у /etc/vnstat.conf, за замовчуванням 30. Він обмежує лише вивід, а не дані в базі.
Трафік за місяцями
vnstat -i ens3 -m

Трафік за роками
vnstat -i ens3 -y
Трафік у реальному часі
Щоб стежити за поточною швидкістю передавання даних, виконайте:
vnstat -i ens3 -l
Швидкість оновлюється, доки ви не натиснете Ctrl+C. Якщо команда працювала довше ніж 10 секунд, vnStat після цього покаже зведення за цей час.

Трафік за задану кількість секунд
Щоб виміряти середню швидкість трафіку за певний час, вкажіть його в секундах. Наприклад, 20 секунд:
vnstat -i ens3 -tr 20
Без числа вимірювання триває 5 секунд. Результат з'явиться, коли цей час мине.
Графік за останні 24 години
Щоб вивести трафік за останні 24 години у вигляді текстового графіка, виконайте:
vnstat -i ens3 -hg

Для обробки статистики в скриптах використовуйте параметр --json або --oneline. Наприклад, vnstat -i ens3 --json d виводить статистику за днями у форматі JSON.
Задайте інтерфейс за замовчуванням
Якщо на сервері кілька інтерфейсів, а перевіряєте ви зазвичай один із них, вкажіть його як інтерфейс за замовчуванням у файлі конфігурації /etc/vnstat.conf. Відкрийте файл:
sudo nano /etc/vnstat.conf
В AlmaLinux і Rocky Linux nano за замовчуванням не встановлено. Встановіть його командою sudo dnf install -y nano або використовуйте vi.
Знайдіть рядок Interface, видаліть крапку з комою на його початку й вкажіть ім'я свого інтерфейсу:
Interface "ens3"
Збережіть файл. Тепер vnstat показує цей інтерфейс, якщо запустити його без параметра -i, наприклад vnstat -d. Служба vnstat і далі відстежує всі інтерфейси.
Повний список параметрів виводить команда vnstat --longhelp, докладний опис є в man vnstat.