Установка и настройка системы мониторинга трафика VnStat под Mandriva

Материал из Wiki МИАЦ ВО
Версия от 08:33, 14 июля 2010; Misha (обсуждение | вклад) (Перевод web морды на русский язык)
Перейти к навигации Перейти к поиску

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

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

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

Установка vnStat

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

sudo 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, лежать она будет в каталоге /var/lib/vnstat и называться просто eth0.
База успешно создана. Теперь можно запускать демон для сбора статистики:

#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 сервером (например, у меня в /var/www/html/vnstat) и открываем там файл config.php и правим следующие параметры:

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

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

// $data_dir = 

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

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

Все очень просто копируем файл .../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';