Установка и настройка системы мониторинга трафика VnStat под Mandriva: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Установка vnStat)
(Перевод web морды на русский язык)
 
(не показано 16 промежуточных версий этого же участника)
Строка 1: Строка 1:
Стятья взята [http://448dmg.ru/vnstat-ubuntu-293 отсюда] и немного изменена, с учетом использования в Mandriva.
+
Стятья взята [http://448dmg.ru/vnstat-ubuntu-293 отсюда] и [http://root.ua/materialy/stati/full/article/vnstat-prostoi-i-bystryi-podschjot-trafika/280.html отсюда] и немного изменена, с учетом использования в Mandriva.
  
 
В этот статье я познакомлю Вас с системой мониторинга трафика '''vnStat'''.
 
В этот статье я познакомлю Вас с системой мониторинга трафика '''vnStat'''.
  
VnStat — простая консольная утилита, но можно к ней прикрутить Web-интерфейс, и удобно смотреть сколько мегабайт было получено или отправлено на том или ином сетевом интерфейсе. Я аналогов этой утилиты не знаю но уверен они точно есть. Вот скриншот.  
+
'''VnStat''' — простая консольная утилита, но можно к ней прикрутить Web-интерфейс, и удобно смотреть, сколько мегабайт было получено или отправлено на том или ином сетевом интерфейсе. Я аналогов этой утилиты не знаю, но уверен они точно есть.
  
 
==Установка vnStat==
 
==Установка vnStat==
 
Ставится одной командой
 
Ставится одной командой
<pre>sudo urpmi vnstat</pre>
+
<pre># urpmi vnstat</pre>
После установки vnStat готов к работе, без всяких дополнительных настроек зайдите в терминал и выполните команду
 
<pre>man vnstat</pre>
 
Вы увидите мануал по vnStat, в принципе, там всё подробно написано. Но напишу пару подсказок как всё работает.</ br>
 
Для того чтобы сказать vnstat’у чтобы он отслеживал трафик через интерфейс eth0 надо выполнить команду
 
<pre>sudo vnstat -u -i eth0</pre>
 
Этой команды vnStat создаёт базу данных трафика для интерфейса eth0, лежать она будет в каталоге '''/var/lib/vnstat''' и называться просто '''eth0'''. Так же эта команда обновляет статистику по интерфейсу eth0 (-u значит update). Вообще статистика сама обновляется с какой-то периодичностью.
 
Для просмотра общей статистики трафика через интерфейс eth0 выполните команду
 
vnstat -i eth0
 
  
результат этой команды будет выглядеть следующим образом.
+
==Настройка==
 +
В Mandriva vnStat сделан демоном. И вся его настройка сведена в файл '''/etc/vnstat.conf'''. И так правим данный файл:
 +
<pre>#указываем интерфейс, на котором снимать статистику
 +
Interface "eth0"
 +
#включаем логгирование в файл /var/log/vnstat.log
 +
UseLogging 1
 +
LogFile "/var/log/vnstat.log"</pre>
 +
Остальные параметры меняем по своему вкусу.
  
 +
==Подготовка к первому запуску==
 +
Для того, что бы можно было снимать статистику, нужно создать БД. В противном случае при запуске будет появляться сообщение:
 +
<pre>Error: Unable to open database directory "/var/lib/vnstat".
 +
Make sure it exists and is at least read enabled for current user.
 +
Exiting...</pre>
 +
Создаём  БД для нужных интерфейсов интерфейсов. Их может быть несколько, например, eth0 и eth1:
 +
<pre># vnstat -u -i eth0
 +
Error: Unable to read database "/var/lib/vnstat/eth0".
 +
Info: -> A new database has been created.
 +
# vnstat -u -i eth1
 +
Error: Unable to read database "/var/lib/vnstat/eth1".
 +
Info: -> A new database has been created.</pre>
 +
Этими командами vnStat создаёт базы данных трафика для интерфейса eth0 и eth1, лежать они будет в каталоге '''/var/lib/vnstat''' и называться просто '''eth0''' и '''eth1'''.<br />
 +
Базы успешно созданы. Теперь можно запускать демон для сбора статистики:
 +
<pre>#service vnstat start</pre>
 +
После запуска в log файле видим следующие строки
 +
<pre>[2010.07.14 08:09:05] vnStat daemon 1.9 started.
 +
[2010.07.14 08:09:05] Daemon running with pid 1816.
 +
[2010.07.14 08:09:05] Monitoring: eth0 eth1 </pre>
  
 +
==Сбор статистики==
 +
После первого запуска нужно обновить БД, иначе будут появляться сообщения при просмотре статистики:
 +
<pre>#vnstat -i eth0
 +
eth0: Not enough data available yet.</pre>
 +
Обновляем:
 +
#vnstat -u -i eth0
 +
#vnstat -u -i eth1
 +
Теперь можно наблюдать статистику, например для eth1:
 +
<pre># vnstat -i eth1
 +
Database updated: Wed Jul 14 08:09:00 2010
  
rx — исходящий трафик
+
  eth1 since 07/13/10
tx — входящий трафик
 
estimated - ожидаемый
 
  
Команда
+
          rx:  770.77 MiB      tx:  7.21 GiB      total:  7.96 GiB
vnstat -h -i eth0
 
  
Выведет статистику по часам, выглядит это так
+
  monthly
 +
                    rx      |    tx      |    total    |  avg. rate
 +
    ------------------------+-------------+-------------+---------------
 +
      Jul '10    770.77 MiB |    7.21 GiB |    7.96 GiB |  57.93 kbit/s
 +
    ------------------------+-------------+-------------+---------------
 +
    estimated      1.75 GiB |  16.75 GiB |  18.49 GiB |
  
 +
  daily
 +
                    rx      |    tx      |    total    |  avg. rate
 +
    ------------------------+-------------+-------------+---------------
 +
    yesterday    545.15 MiB |    3.44 GiB |    3.98 GiB |  385.96 kbit/s
 +
        today    225.63 MiB |    3.76 GiB |    3.98 GiB |    1.14 Mbit/s
 +
    ------------------------+-------------+-------------+---------------
 +
    estimated      662 MiB |  11.08 GiB |  11.73 GiB |</pre>
 +
Так же vnstat позволяет наблюдать статистику в режиме реального времени. Для этого использутся ключ -l (--live).
 +
<pre># vnstat -i eth1 -l
 +
Monitoring eth1...    (press CTRL-C to stop)
  
 +
  rx:      92 kbit/s    73 p/s          tx:    1.64 Mbit/s  145 p/s</pre>
 +
После нажатия Ctrl+C увидим общую статистику за период real-time'a
 +
<pre>eth1  /  traffic statistics
  
Так же доступны параметры -d, -w, -m который выводят статистику по дням, неделям и месяцам соответственно. Ещё доступен параметр -l выводит трафик в настоящее время типа live. Можно состовлять свои запросы к базе данных об этом можно почитать в мануале. Всё это конечно хорошо но для удобного восприятия данных было бы не плохо иметь графический интерфейс, он есть, есть gui web-интерфейс от производителей, он написан на CGI-скриптах, а есть vnstat PHP frontend интерфейс разработанный каким-то добрым человеком на PHP. Я пользуюсь интерфейсом на PHP, про него я и расскажу.
+
                          rx        |      tx
 +
--------------------------------------+------------------------
 +
  bytes                      886 KiB  |      12.88 MiB
 +
--------------------------------------+------------------------
 +
          max            764 kbit/s  |    1.89 Mbit/s
 +
      average          110.75 kbit/s  |    1.65 Mbit/s
 +
          min              32 kbit/s  |    1.21 Mbit/s
 +
--------------------------------------+------------------------
 +
  packets                      5449  |            9772
 +
--------------------------------------+------------------------
 +
          max                128 p/s  |        195 p/s
 +
      average                85 p/s  |        152 p/s
 +
          min                61 p/s  |        111 p/s
 +
--------------------------------------+------------------------
 +
  time                  1.07 minutes</pre>
 +
==Просмотр статистики==
 +
Статистику можно просматривать прямо с консоли: <br />
 +
-за день:
 +
<pre># vnstat -i eth1 -d
  
Скачать его можно отсюда http://www.sqweek.com/sqweek/index.php?p=1. Вы скачаете архив из php файлов которые обеспечивают работу графического интерфейса. Создайте новый виртуальных хост в Apache или скопируйте эту папку в домашнюю папку уже существующего хоста и введите адрес в браузер, допустим http://site1.ru/nvStat вы попадёте на страницу статистики, но скорее всего вам будет показана нулевая статистика. Надо всё настроить, конфигурация интерфейса происходит через файл config.php, Вы его скачали вместе с другими файлами vnstat PHP frontend.
+
eth1  / daily
  
В этом файле надо обратить обратить внимание на эту часть
+
        day        rx      |    tx      |    total    |  avg. rate
    //  
+
    ------------------------+-------------+-------------+---------------
    // There are two possible sources for vnstat data. If the $vnstat_bin
+
      07/13/10    545.15 MiB |    3.44 GiB |    3.98 GiB |  385.96 kbit/s
     // variable is set then vnstat is called directly from the PHP script
+
      07/14/10    228.78 MiB |    3.77 GiB |    3.99 GiB |    1.13 Mbit/s
    // to get the interface data.  
+
    ------------------------+-------------+-------------+---------------
    //  
+
    estimated      664 MiB |  10.98 GiB |  11.63 GiB |</pre>
    // The other option is to periodically dump the vnstat interface data to
+
-за час:
    // a file (e.g. by a cronjob). In that case the $vnstat_bin variable
+
<pre># vnstat -i eth1 -h
    // must be cleared and set $data_dir to the location where the dumps
+
eth1                                                                    08:19
    // are stored. Dumps must be named 'vnstat_dump_$iface'.  
+
  ^                                                              t           
    //  
+
  |                                                            t  t           
    // You can generate vnstat dumps with the command:  
+
  |                                                            t  t           
    //   vnstat --dumpdb -i $iface > /path/to/data_dir/vnstat_dump_$iface
+
  |                                                            t  t           
    //  
+
  |                                                            t  t           
    $vnstat_bin = '';  
+
  |                              t                            t  t           
    $data_dir = './dumps';
+
  |                          t  t  t  t  t  t  t  t  t  t  t  t  t           
 +
  |                          t  t  t  t  t  t  t  t  t  t  t  t  t           
 +
  |                        t  t  t  t  t  t  t  t  t  t  t  t  t  t  t         
 +
  |                        t rt rt  t  t  t  t  t  t  t  t  t  t  t  t         
 +
-+--------------------------------------------------------------------------->
 +
  |  09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08   
 +
                                                                               
 +
h  rx (KiB)  tx (KiB)      h  rx (KiB)  tx (KiB)      h  rx (KiB)  tx (KiB)
 +
09          0          0    17    128822    420781    01      74023    423685
 +
10          0          0    18    129924    578792    02      14224    402120
 +
11          0          0    19      48498    497348    03      14984    439416
 +
12          0          0    20      52648    465780    04      42364    993196
 +
13          0          0    21      51215    432292    05      39131    998606
 +
14          0          0    22      50521    489028    06      9347    219620
 +
15          0          0    23      48089    456491    07      1651      17518
 +
16      48514     269577    00      18992    450503    08      23619      67793
 +
</pre>
 +
==Установка vnstat PHP frontend (web морда)==
 +
Но ввиде, который мы попробовали выше, не всегда удобно пользоваться, особенно если нужно ещё показывать её начальству. Для этих целей был написана php-обвёртка для визуального отображения. Называется она '''vnstat PHP frontend''' и скачать можно с сайта '''http://www.sqweek.com'''.  
 +
[[Изображение:Vnstat www.png|thumb|200px|Внешний вид web морды]]<br />
 +
После скачивания распаковываем архив в каталог с вашим web сервером (например, у меня в /var/www/html/vnstat)  и открываем там файл '''config.php''' и правим следующие параметры:
 +
<pre>
 +
$language = 'en';
 +
$iface_list = array('eth0', 'eth1',);
 +
$iface_title['eth1'] = 'Интернет';
 +
$iface_title['eth0'] = 'Локальный';
 +
$vnstat_bin = '/usr/bin/vnstat';</pre>
 +
и комментируем строчку
 +
<pre>// $data_dir = </pre>
 +
И теперь по адресу http://www.dns_name/vnstat можно зайти и насладится статистикой.
 +
===Перевод web морды на русский язык===
 +
Отправил файл перевода разработчику, так что если он там уже будет, то ничего кроме, как указать настройки языка в файле c'''onfig.php''', делать не нужно, а если нет, то:<br />
 +
Все очень просто копируем файл '''.../vnstat/lang/en.php''' в '''.../vnstat/lang/ru.php''' и редактируете последний, например:
 +
<pre>// main table headers
 +
$L['Summary'] = 'Итого';
 +
$L['Top 10 days'] = 'Топ 10 дней';
 +
$L['Last 24 hours'] = 'Последние 24 часа';
 +
$L['Last 30 days'] = 'Последние  30 дней';
 +
$L['Last 12 months'] = 'Последние 12 месяцев';</pre>
 +
и тд.<br />
 +
Потом в файле ../vnstat/config.php поправить
 +
<pre> //$locale = 'en_US.UTF-8';
 +
$locale = 'ru_RU.UTF-8';
 +
$language = 'ru';
  
Она гласит о том что есть два способа получения данных web-интерфесом: первый- какойто непонятный и второй через дамп базы данных по интерфейсу(имеются ввиду те базы данных которые вы создали при помощи команды sudo vnstat -u -i eth0, напомню они лежат в /var/lib/vnstat). Короче, для того чтобы интерфейс получал данные о трафике через итерфейс eth0 надо сделать дамп базы eth0, я делаю это командой sudo vnstat –dumpdb -i eth0 > /var/lib/vnstat/dumps/vnstat_dump_eth0 , и указать в конфигурационном файле в параметр $data_dir путь к директории с дампами базы данных в моём случае
 
    $data_dir = '/var/lib/vnstat/dumps/';
 
  
Но так как статистика всё время меняется, надо всё время обновлять этот дамп, с этим отлично справляется cron. Просто внесём эту команду в таблицу задач cron’а(как работать с крон написано тут).
+
$L['datefmt_hours'] = '%H%P';
*/15 * * * * sudo vnstat -u -i eth0
+
$L['datefmt_hours_img'] = '%H';</pre>
*/15 * * * * sudo vnstat --dumpdb -i eth0 > /var/lib/vnstat/dumps/vnstat_dump_eth0
+
Если Вам пригодится мой файл, его можно взять [ftp://volmed.org.ru/files/vnstat/ru.php тут].
  
У меня ещё через cron обновляется сама база статистики каждые 15 минут. Всё теперь зайдите на сайт вашей статистики, там уже будет вся статистика.
+
===Улучшение внешнего вида===
 +
Мне показалось, что сделав выравнивание по середине, таблички смотрятся лучше<br />
 +
И так правим файл стилей, например, .../vnstat/themes/light/style.css, который используется по умолчанию.
 +
<pre>#main td
 +
{
 +
    text-align: center;
 +
    font-family: 'Trebuchet MS', Verdana, sans-serif;
 +
    font-size: 0.8em;
 +
}
 +
 
 +
#main td.numeric_odd
 +
{
 +
    color: #000;
 +
    background-color: #eef;
 +
}
 +
 
 +
#main td.numeric_even
 +
{
 +
    color: #000;   
 +
    background-color: #fff;
 +
}</pre>
 +
Вообще там есть несколько стилей: '''dark''', '''espresso''', '''light''' и '''red''', которые можно установить в файле '''config.php''' в строке:
 +
<pre>// Default theme
 +
define('DEFAULT_COLORSCHEME', 'light');</pre>

Текущая версия на 10:05, 17 января 2011

Стятья взята отсюда и отсюда и немного изменена, с учетом использования в Mandriva.

В этот статье я познакомлю Вас с системой мониторинга трафика vnStat.

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

Установка vnStat

Ставится одной командой

# urpmi vnstat

Настройка

В Mandriva vnStat сделан демоном. И вся его настройка сведена в файл /etc/vnstat.conf. И так правим данный файл:

#указываем интерфейс, на котором снимать статистику
Interface "eth0"
#включаем логгирование в файл /var/log/vnstat.log
UseLogging 1
LogFile "/var/log/vnstat.log"

Остальные параметры меняем по своему вкусу.

Подготовка к первому запуску

Для того, что бы можно было снимать статистику, нужно создать БД. В противном случае при запуске будет появляться сообщение:

Error: Unable to open database directory "/var/lib/vnstat".
Make sure it exists and is at least read enabled for current user.
Exiting...

Создаём БД для нужных интерфейсов интерфейсов. Их может быть несколько, например, eth0 и eth1:

# vnstat -u -i eth0 
Error: Unable to read database "/var/lib/vnstat/eth0".
Info: -> A new database has been created.
# vnstat -u -i eth1 
Error: Unable to read database "/var/lib/vnstat/eth1".
Info: -> A new database has been created.

Этими командами vnStat создаёт базы данных трафика для интерфейса eth0 и eth1, лежать они будет в каталоге /var/lib/vnstat и называться просто eth0 и eth1.
Базы успешно созданы. Теперь можно запускать демон для сбора статистики:

#service vnstat start

После запуска в log файле видим следующие строки

[2010.07.14 08:09:05] vnStat daemon 1.9 started.
[2010.07.14 08:09:05] Daemon running with pid 1816.
[2010.07.14 08:09:05] Monitoring: eth0 eth1 

Сбор статистики

После первого запуска нужно обновить БД, иначе будут появляться сообщения при просмотре статистики:

#vnstat -i eth0
eth0: Not enough data available yet.

Обновляем:

#vnstat -u -i eth0
#vnstat -u -i eth1

Теперь можно наблюдать статистику, например для eth1:

# vnstat -i eth1
Database updated: Wed Jul 14 08:09:00 2010

   eth1 since 07/13/10

          rx:  770.77 MiB      tx:  7.21 GiB      total:  7.96 GiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Jul '10    770.77 MiB |    7.21 GiB |    7.96 GiB |   57.93 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated      1.75 GiB |   16.75 GiB |   18.49 GiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     yesterday    545.15 MiB |    3.44 GiB |    3.98 GiB |  385.96 kbit/s
         today    225.63 MiB |    3.76 GiB |    3.98 GiB |    1.14 Mbit/s
     ------------------------+-------------+-------------+---------------
     estimated       662 MiB |   11.08 GiB |   11.73 GiB |

Так же vnstat позволяет наблюдать статистику в режиме реального времени. Для этого использутся ключ -l (--live).

# vnstat -i eth1 -l
Monitoring eth1...    (press CTRL-C to stop)

   rx:       92 kbit/s    73 p/s          tx:     1.64 Mbit/s   145 p/s

После нажатия Ctrl+C увидим общую статистику за период real-time'a

eth1  /  traffic statistics

                           rx         |       tx
--------------------------------------+------------------------
  bytes                      886 KiB  |       12.88 MiB
--------------------------------------+------------------------
          max             764 kbit/s  |     1.89 Mbit/s
      average          110.75 kbit/s  |     1.65 Mbit/s
          min              32 kbit/s  |     1.21 Mbit/s
--------------------------------------+------------------------
  packets                       5449  |            9772
--------------------------------------+------------------------
          max                128 p/s  |         195 p/s
      average                 85 p/s  |         152 p/s
          min                 61 p/s  |         111 p/s
--------------------------------------+------------------------
  time                  1.07 minutes

Просмотр статистики

Статистику можно просматривать прямо с консоли:
-за день:

# vnstat -i eth1 -d

 eth1  /  daily

         day         rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
      07/13/10    545.15 MiB |    3.44 GiB |    3.98 GiB |  385.96 kbit/s
      07/14/10    228.78 MiB |    3.77 GiB |    3.99 GiB |    1.13 Mbit/s
     ------------------------+-------------+-------------+---------------
     estimated       664 MiB |   10.98 GiB |   11.63 GiB |

-за час:

# vnstat -i eth1 -h
 eth1                                                                     08:19 
  ^                                                               t             
  |                                                            t  t             
  |                                                            t  t             
  |                                                            t  t             
  |                                                            t  t             
  |                              t                             t  t             
  |                           t  t  t  t  t  t  t  t  t  t  t  t  t             
  |                           t  t  t  t  t  t  t  t  t  t  t  t  t             
  |                        t  t  t  t  t  t  t  t  t  t  t  t  t  t  t          
  |                        t rt rt  t  t  t  t  t  t  t  t  t  t  t  t          
 -+---------------------------------------------------------------------------> 
  |  09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08    
                                                                                
 h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB) 
09          0          0    17     128822     420781    01      74023     423685
10          0          0    18     129924     578792    02      14224     402120
11          0          0    19      48498     497348    03      14984     439416
12          0          0    20      52648     465780    04      42364     993196
13          0          0    21      51215     432292    05      39131     998606
14          0          0    22      50521     489028    06       9347     219620
15          0          0    23      48089     456491    07       1651      17518
16      48514     269577    00      18992     450503    08      23619      67793

Установка vnstat PHP frontend (web морда)

Но ввиде, который мы попробовали выше, не всегда удобно пользоваться, особенно если нужно ещё показывать её начальству. Для этих целей был написана php-обвёртка для визуального отображения. Называется она vnstat PHP frontend и скачать можно с сайта http://www.sqweek.com.

Внешний вид web морды


После скачивания распаковываем архив в каталог с вашим web сервером (например, у меня в /var/www/html/vnstat) и открываем там файл config.php и правим следующие параметры:

$language = 'en';
$iface_list = array('eth0', 'eth1',);
$iface_title['eth1'] = 'Интернет';
$iface_title['eth0'] = 'Локальный';
$vnstat_bin = '/usr/bin/vnstat';

и комментируем строчку

// $data_dir = 

И теперь по адресу http://www.dns_name/vnstat можно зайти и насладится статистикой.

Перевод web морды на русский язык

Отправил файл перевода разработчику, так что если он там уже будет, то ничего кроме, как указать настройки языка в файле config.php, делать не нужно, а если нет, то:
Все очень просто копируем файл .../vnstat/lang/en.php в .../vnstat/lang/ru.php и редактируете последний, например:

// main table headers
$L['Summary'] = 'Итого';
$L['Top 10 days'] = 'Топ 10 дней';
$L['Last 24 hours'] = 'Последние 24 часа';
$L['Last 30 days'] = 'Последние  30 дней';
$L['Last 12 months'] = 'Последние 12 месяцев';

и тд.
Потом в файле ../vnstat/config.php поправить

 //$locale = 'en_US.UTF-8';
$locale = 'ru_RU.UTF-8';
$language = 'ru';


$L['datefmt_hours'] = '%H%P';
$L['datefmt_hours_img'] = '%H';

Если Вам пригодится мой файл, его можно взять тут.

Улучшение внешнего вида

Мне показалось, что сделав выравнивание по середине, таблички смотрятся лучше
И так правим файл стилей, например, .../vnstat/themes/light/style.css, который используется по умолчанию.

#main td
{
    text-align: center;
    font-family: 'Trebuchet MS', Verdana, sans-serif;
    font-size: 0.8em;
}

#main td.numeric_odd
{
    color: #000;
    background-color: #eef;
}

#main td.numeric_even
{
    color: #000;    
    background-color: #fff;
}

Вообще там есть несколько стилей: dark, espresso, light и red, которые можно установить в файле config.php в строке:

// Default theme
define('DEFAULT_COLORSCHEME', 'light');