Vnstat - мониторим сетевой трафик

Версия для печатиОтправить другуPDF version

Продолжая эпопею считалок и мониторилок сетевых интерфейсов и трафика, рассмотрим утилиту vnstat. Vnstat - консольная утилита для учета сетевого трафика. Сохраяет историю сетевого трафика для выбранных интерфейсов. Трафик считается отдельно для каждого интерфейса (как входящий, так и исходящий). Доступна различная детализация отчетов: час, день, неделя, месяц...

Идем в порты и выполняем установку:

# cd /usr/ports/net/vnstat/ && make install cleen && rehash

После установки утилита "любезно" предупредила, что необходимо внести содержимое файла /usr/local/share/doc/vnstat/vnstat-cron в crontab. Ну а если нас заинтересует информация о утилите, необходимо посетить ресурс http://humdi.net/vnstat/, либо же воспользоваться справочной системой FreeBSD.

Начинаем попытки "подружиться" с утилитой.  Для начала скопируем пример конфигурационного файла непосредственно в рабочий конфигурационный файл:

# cp /usr/local/etc/vnstat.conf.sample /usr/local/etc/vnstat.conf

Следующим шагом редактируем /usr/local/etc/vnstat.conf, подстраивая его под свои нужды.  Я же изменил только название интерфейса, на котором будем "слушать" трафик. Потом в конфигурационном файле находим опцию DatabaseDir, и согласно указанному значению, создаем базу данных (в моем частном случае это /var/db/vnstat, поскольку настройки по умолчанию этого параметра я не изменял).

# mkdir /var/db/vnstat

Добавляем запись в cron для автоматизации процесса сбора статистки и перезапускаем его:

# cat /usr/local/share/doc/vnstat/vnstat-cron >> /etc/crontab
# killall -1 cron

Теперь проинициализируем интерфейсы, для которых будем собирать статистику:

# vnstat -u -i tun0
Error: Unable to read database "/var/db/vnstat/tun0".
Info: -> A new database has been created.
# >vnstat -u -i vlan8
Error: Unable to read database "/var/db/vnstat/vlan8".
Info: -> A new database has been created.

Через некоторое время можно выбрать данные из коллектора:

# vnstat

                      rx      /      tx      /     total    /   estimated
 tun0:
       Aug '10         5 KiB  /       4 KiB  /       9 KiB  /       0 KiB
         today         5 KiB  /       4 KiB  /       9 KiB  /      --

 vlan8:
       Aug '10       992 KiB  /    4.45 MiB  /    5.42 MiB  /       0 KiB
         today       992 KiB  /    4.45 MiB  /    5.42 MiB  /      --

Для просмотра загрузки интерфейса в реальном времени воспользуемся ключем -l (--live):

# vnstat --live -i vlan8
Monitoring vlan8...    (press CTRL-C to stop)
   rx:        0 kbit/s     3 p/s          tx:        4 kbit/s     3 p/s^C

 vlan8  /  traffic statistics
                           rx         |       tx
--------------------------------------+------------------
  bytes                     0.98 MiB  |        4.29 MiB
--------------------------------------+------------------
          max             312 kbit/s  |     1.86 Mbit/s
      average           42.58 kbit/s  |   186.12 kbit/s
          min               0 kbit/s  |        0 kbit/s
--------------------------------------+------------------
  packets                       3761  |            4361
--------------------------------------+------------------
          max                110 p/s  |         163 p/s
      average                 19 p/s  |          23 p/s
          min                  0 p/s  |           0 p/s
--------------------------------------+------------------
  time                  3.15 minutes

Для того, чтобы узнать больше о возможностях vnstat, советую ознакомиться со страницами руковводства пользователя. Я же наведу только некоторые примеры...

Чтобы вывести статистику за последних 24 часа (с почасовой детализацией), для интерфейса vlan8, команда будет выглядеть следующим образом:

# vnstat -h -i vlan8

Для вывода статистики с дневной детализацией, воспользуемся ключем -d:

# vnstat -d -i vlan8

Для вывода статистики за месяц, существует ключ -m:

# vnstat -m -i vlan8

А чтобы просмотреть статистику 10 самых загруженных дней, можно воспользоваться такой командой:

# vnstat --top10 -i vlan8

Скриншоты не предоставляю, поскольку в коллекторе еще слишком мало информации о собранном трафике (меньше суток).

Также, есть возможность воспользоваться vnStat PHP Frontend - написанный на PHP web-интерфейс для vnStat. Переходим в каталог /usr/local/www и скачиваем архив web-интерфейса:

# cd /usr/local/www/
# wget http://muff.kiev.ua/files/vnstat_php_frontend-1.5.1.tar.gz

Распаковываем скачанный архив:

# tar -xzf vnstat_php_frontend-1.5.1.tar.gz

Потом переименовываем каталог с vnStat PHP Frontend в более "дружелюбное" название:

# mv vnstat_php_frontend-1.5.1 vnstat

Правим конфигурационный файл web-интерфейса /usr/local/www/vnstat/config.php до следующего состояния:

# cat /usr/local/www/vnstat/config.php

<?php
    error_reporting(E_ALL | E_NOTICE);
    $locale = 'en_EN.UTF-8';
    $language = 'en';
    $iface_list = array('vlan8', 'tun0');
    $iface_title['vlan8'] = 'Internal interface';
    $iface_title['tun0'] = 'OpenVPN tunnel';
    $vnstat_bin = '/usr/local/bin/vnstat';
    $data_dir = './dumps';
    $graph_format='svg';
    define('GRAPH_FONT',dirname(__FILE__).'/VeraBd.ttf');
    define('SVG_FONT', 'Verdana');
    define('DEFAULT_COLORSCHEME', 'dark');

?>

Создадим каталог для дампа:

# mkdir /usr/local/www/vnstat/dumps

Потом добавлем в cron следующие строки:

*/5 * * * * root /usr/local/bin/vnstat --dumpdb -i vlan8 > /usr/local/www/vnstat/dumps/vnstat_dump_vlan8
*/5 * * * * root /usr/local/bin/vnstat --dumpdb -i tun0 > /usr/local/www/vnstat/dumps/vnstat_dump_tun0

После измнений перестартовываем cron:

# killall -1 cron

Далее добавляем в конфигурационный блок Apache следующий блок:

Alias /vnstat/ "/usr/local/www/vnstat/"
    <Directory "/usr/local/www/vnstat/">
         Options none
         AllowOverride All
         Order Allow,Deny
         Allow from all
    </Directory>

После внесения изменений, необходимо перезапустить Apache:

# apachectl graceful

Несколько скриншотов:

Vnstat

Vnstat

Ваша оценка: Нет Средняя: 4.2 (5 голосов)

В данных везде 0

В чем может быть подвох... захожу в web-интерфейс, а там все по 0. В пути все прописано, dump базы есть, а статистики нет .

Если в config.php:

$vnstat_bin = '/usr/local/bin/vnstat';
$data_dir = './dumps';

то в web интерфейсе такая бяка

Вариант

Кажется у вас дамп все таки не собирается (данные то пустые)... Попробуйте выполнить следующие команды из консоли (исходя из того, что сетевая - vr0):

# vnstat -u -i vr0

# vnstat --dumpdb -i vr0 > /usr/local/www/vnstat/dumps/vnstat_dump_vr0

Web-а ругается потому, что в коллекторе нету данных. Что выводится при vnstat -h -i vr0  ?

Дамп, пишется и обновляется

Дамп, пишется и обновляется - проверено. Даже делал принудительно, командой vnstat --dumpdb -i vr0 > /usr/local/www/vnstat/dumps/vnstat_dump_vr0 , но все-равно пусто.

Вывод vnstat -h -i vr0

Вот дамп - http://upload.com.ua/link/901864853/

Да, в дампе все гуд... Значит

Да, в дампе все гуд... Значит проблема именно в парсилке.

Просьба предоставить конфиг виртуалхоста в Apache (или алиаса), а также полностью содержание config.php

Вот alias : Alias /vnstat

Вот alias :

Alias /vnstat "/usr/local/www/vnstat/"
    <Directory "/usr/local/www/vnstat/">
    Options none
    AllowOverride All
    Order allow,Deny
    Allow from all
    </Directory>

config.php - http://upload.com.ua/get/901865370/

С апачем вроде все good, отлично работает sams и aimsniff... через web-интерфейс.

Может это?

Убери из конфига

$iface_title['vr1'] = 'Internal';

В массиве он не описан, а в описании присутствует. Возможно в этом проблема?

Не, таже самая проблема... я

Не, таже самая проблема... я уже и vr1 пробовал, все-равно. Пошарил в нэте, такие ошибки бывают... но лекарства от них нет .

Спасибо за ваш сайт и статьи, очень полезная информация .

p.s. может там с правами на файл или папку есть нюанс?

РЕШЕНО

Решилась, проблема смены пары строк в config.php :

$vnstat_bin = '/usr/local/bin/vnstat';
$data_dir = './dumps';

на

$vnstat_bin = '';
$data_dir = './dumps';
Теперь берутся данные только с dump'ов. Вот так  .


Отлично

Видимо ОС не могла найти расположение исполняемого файла...  Возможно когда-то еще придется воспользоваться вашим опытом

День добрый. Подскажите

День добрый.

Подскажите пожалуйста, не отображается картинка с графиком.

 Данные присутствуют, php-gd установлен.

Система: freebsd 81, php5-5.3.3_2, apache-2.2.17_1

 

Как это не банально, но

Как это не банально, но попробуйте другой браузер.

Я помню, что у меня в каком-то из браузеров не хотели графики отображаться, а в другом - нормально.

У меня проблема приоткрытии

У меня проблема приоткрытии страницы выпадает это:

Parse error: syntax error, unexpected T_VARIABLE in /usr/local/www/vnstat/config.php on line 58

Это место где указывается

  $vnstat_bin = '/usr/local/bin/vnstat';

Проверьте, есть ли за этим

Проверьте, есть ли за этим адресом файл.
И... Вопрос переносите на форум, для дальнейшего разбирательства.

тут я писал аналогичную

тут я писал аналогичную статью www.ignix.ru/public/daemon/vnstat
а вот русский язык если кому надо www.ignix.ru/sites/default/files/ru.php_.tar.gz

Re: Vnstat - мониторим сетевой трафик

Приветствую.

Подскажите, что сделать , чтоб vnstat заработал !!!!!!!!!!!!

Ситуация такая..

 

Starting vnstat: 

eth0  /  daily

 

         day         rx      |     tx      |    total    |   avg. rate

     ------------------------+-------------+-------------+---------------

      10/04/13       660 KiB |    3.36 MiB |    4.01 MiB |    0.65 kbit/s

     ------------------------+-------------+-------------+---------------

     estimated        --     |      --     |      --     |

                                                           [  OK  ]

[root@vm12844 /]# vnstat

 

                      rx      /      tx      /     total    /   estimated

Error: Database load failed even when using backup. Aborting.

 

Что с этим делать ??????  Уже и пересоздавал базу и переустанавливал vnstat , всё приходит к 

Error: Database load failed even when using backup. Aborting.

Re: Vnstat - мониторим сетевой трафик

Note: This is written for a Debian system and pathing may vary on other systems so take note of that.

1) Your database file has become corrupt. You'll find it in /var/lib/vnstat/interfacename.
2) Remove or move this file: rm /var/lib/vnstat/interfacename.
3) Now that you've got a clean slate, run the initialization command for the interface again: vnstat -u -i interfacename
4) You should see something like this:
Error: Unable to read database "/var/lib/vnstat/eth0".
Info: -> A new database has been created.
5) Your new database is created and should start refreshing your vnstat data once again.

Re: Vnstat - мониторим сетевой трафик

 а какая утилита подойдет для отображения Rx/Tx конкретного IP? утилита nload очень хорошо показывает эти данные, но только о интерфейсам

Re: Vnstat - мониторим сетевой трафик

iftop с ключем -F ?

Re: Vnstat - мониторим сетевой трафик

iftop - почитаю о утилитке и попробую, спс за подсказку

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература