GNU/Linux, 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 интерфейс
    и радоваться начатой заново жизни

5 коммент.:

pa комментирует...

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

jetxee комментирует...

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

bezgubov комментирует...

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

jetxee комментирует...

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

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

Анонимный комментирует...

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

Отправить комментарий