Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

20070823

vnstat: простая программа для подсчёта трафика

Часто оплата интернета напрямую зависит от количества переданных данных, проще говоря трафика. Особенно это характер для доступа в интернет через мобильный телефон (GPRS, EDGE, UMTS...).

Скажем, я сейчас пользуюсь тарифным планом, предполагающим оплату 20€ за пакет 500 МБ, однако после превыщения указанного предела, услуга не прерывается, но стоимость доступа в Интернет незаметно меняется: просто каждый мегабайт стоит уже около 6€. В общем, жуть. Понятно, что я заинтересован чётко отслеживать израсходованный мной трафик. Подобных ситуаций можно привести ещё много.

Подсчёт трафика в Linux дело несложное. Каждый может настроить iptables как ему угодно, написать свои скрипты, сохранять статистику в базе данных... Можно использовать готовые решения, вроде ntop. Однако для моих целей мне всё это показалось слишком сложным.

И я нашёл очень простой инструмент для учёта трафика: vnstat. Он, кстати, есть в репозиториях Debian, так что установка не представляет сложностей. Она практически не требует настройки, просто считает трафик и позволяет смотреть статистику. Думаю, для «домашнего» использования этого более чем достаточно.

Трафик считается отдельно для каждого сетевого устройства (интерфейса). Чтобы начать подсчёт трафика на том или ином интерфейсе, например ppp0 (в моём случае это подключение через мобильный телефон), надо выполнить следующую команду, которая создаст базу данных для этого интерфейса:

vnstat -u -i ppp0


В случае Debian включается и отключается подсчёт трафика автоматически при включении или выключении сетевого устройства (это можно делать также вручную).

И всё! Теперь весь трафик будет учтён!

Чтобы узнать суммарную статистику по трафику через интерфейс ppp0, достаточно выполнить следующую команду:

$ vnstat -i ppp0
Database updated: Thu Aug 23 22:00:01 2007

ppp0

received: 354.63 MB (76.6%)
transmitted: 108.14 MB (23.4%)
total: 462.77 MB

rx | tx | total
-----------------------+------------+-----------
yesterday 18.58 MB | 3.31 MB | 21.89 MB
today 39.39 MB | 6.28 MB | 45.68 MB
-----------------------+------------+-----------
estimated 42 MB | 6 MB | 48 MB


Как легко видеть, у меня в запасе до ограничения в 500 МБ ещё около 40 МБ. На этот пост точно хватит.

Дополнение: доступны и другие формы отчётов (см. man vnstat). Например, для просмотра использования трафика по месяцам:
$ vnstat -i интерфейс -m

по неделям:
$ vnstat -i интерфейс -w

по дням:
$ vnstat -i интерфейс -d

по часам:
$ vnstat -i интерфейс -h

и, наконец, для желающих формировать собственные отчёты, может пригодится
$ vnstat -i интерфейс  --dumpdb


Если же возникнет желание стереть (сбросить) всю собранную статистику и начать отсчёт с нуля, то, на мой взгляд, самый простой способ это сделать:
  1. остановить подсчёт статистики для используемого интерфейса:
    vnstat -i интерфейс -u -r --disable

  2. удалить базу данных с собранной статистики (файл /var/lib/vnstat/интерфейс)

  3. создать новую базу данных с помощью
    vnstat -u -i интерфейс
    и радоваться начатой заново жизни

10 коммент.:

  1. Как знать, сколько дней он уже считает? Как сбрасывать статистику? Мне нужно знать, сколько я использую в день, неделю, месяц. Это возможно?

    ОтветитьУдалить
  2. Я дополнил заметку о том, как можно посмотреть другие виды статистики и как можно сбрасывать статистику.

    ОтветитьУдалить
  3. после ребута ее надо снова запускать? и сохраняется ли статистика после ребута?

    ОтветитьУдалить
  4. В случае установки пакета vnstat из Debian — устанавливаются также и скрипты, запускающие и останавливающие vnstat при подъёме и опускании сетевого интерфейса. Если поднимается при загрузке — то и vnstat будет включаться при загрузке. Если поднимается потом вручную — vnstat будет включаться потом.

    В случае установки vnstat не из репозитория Debian, а ручками самостоятельно — позаботиться о своевременном запуске и останове vnstat тоже придётся самому.

    ОтветитьУдалить
  5. Анонимный13/3/08 20:45

    также можно посмотреть на http://www.sqweek.com/sqweek/index.php?p=1

    ОтветитьУдалить
  6. Есть GUI perl скрипт который использует функционал vnstat и делает удобным для вас слежку за вашим лимитным трафиком. :)

    Вот ссылка: https://sourceforge.net/projects/mytreetc/

    ОтветитьУдалить
  7. помогите пожалуйста всё сделал как тут написано но в ответ выдаёт следущее:
    root@vitaliy-desktop:/home/vitaliy# vnstat -u -i ppp0
    root@vitaliy-desktop:/home/vitaliy# vnstat -i ppp0
    ppp0: Not enough data available yet.
    root@vitaliy-desktop:/home/vitaliy# vnstat -i ppp0 -m
    ppp0: Not enough data available yet.
    Не пойму в чём дело пользуюсь gprs, ubuntu 9.10
    заранее благодарен

    ОтветитьУдалить
  8. посмотрите в ifconfig интерфейс который смотрит в инет, возможно у вас просто не ppp0

    ОтветитьУдалить
  9. Виталий, посмотрите, пожалуйста, как у вас называется сетевой интерфейс (устойство), через который вы выходите в интернет. Он совсем не обязательно будет ppp0 (ppp0 — обычно для модемных соединений), может быть и eth0 (для Ethernet), и wlan0 (обычно для WiFi) и всякие другие варианты тоже могут быть. Имена используемых интерфейсов можно увидеть, выполнив команду route -n, в последней колонке. Соответственно, если компьютер подключен по локальной сети, то и считать нужно на интерфейсе eth0. Если по WiFi — скорее всего на wlan0 (есть несколько вариантов, зависит от драйвера).

    ОтветитьУдалить