EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Как вести учёт и мониторинг потребления трафика с помощью vnStat

vnStat является лёгкой консольной утилитой, которая ведёт историю сетевого трафика в Linux. Фоновая служба vnstatd считывает счётчики интерфейсов из ядра и сохраняет их в небольшую базу данных. После этого вы можете смотреть трафик по часам, дням, месяцам и годам или следить за текущей скоростью в реальном времени. vnStat не перехватывает пакеты, поэтому нагрузка от него очень низкая. Он показывает, сколько трафика прошло через каждый интерфейс, но не показывает, какие IP-адреса, порты или соединения его создали.

В этой инструкции показано, как установить vnStat из репозитория или из исходного кода и как просматривать статистику трафика. vnStat пригодится на любом сервере, где трафик ограничен или тарифицируется, например на Linux VPS или выделенном сервере INTROSERV.

Установите vnStat из репозитория

Подключитесь к серверу по SSH. Подробнее см. Подключение через SSH.

Ubuntu and 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 из исходного кода, если для вашего дистрибутива нет пакета или вам нужна самая новая версия.

Warning

Если 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.

Info

По умолчанию 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

Tip

Для обработки статистики в скриптах используйте параметр --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.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA