Мониторинг сетевого трафика с vnstat

Добавить в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru memori.ru moemesto.ru


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

Vnstat использует статистику сетевых интерфейсов, предоставляемых ядром Linux. Так что непосредственно за трафиком Vnstat не следит и не является снифером трафика, а лишь аккумулирует имеющуюся статистику. Использование системных ресурсов ресурсов, в итоге, получается минимально.

Vnstat может использоваться без root-првилегий.

Установка Vnstat

Установка тривиальная для Debian систем:

$ sudo aptitude install vnstat

Настройка Vnstat

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

$ vnstat -u -i eth0
$ vnstat -u -i ppp0

Следствием того, что Vnstat использует статистику сетевых интерфейсов, предоставляемых ядром Linux, подсчет трафика ведется только тогда, когда интерфейс используется.

При установке создается cron-задание, выполняющееся каждые 5 минут и обновляющее статистику по каждому из выбранных интерфейсов:

$ ls -l /etc/cron.d | grep vnstat
-rw-r--r-- 1 root root 180 2008-02-08 13:56 vnstat

Просмотр сетевого трафика с Vnstat

Запуск Vnstat без параметров выводит трафик по всем активированным интерфейсам за сегодня и вчера:

$ vnstat

                     rx      /     tx      /    total    /  estimated
 eth0:
     yesterday    317.89 MB  /   52.82 MB  /  370.70 MB
         today     88.46 MB  /   10.17 MB  /   98.63 MB  /     170 MB

 ppp0:
     yesterday        41 kB  /      14 kB  /      55 kB
         today     10.08 MB  /    2.30 MB  /   12.38 MB  /      20 MB

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

$ vnstat -h -i eth0
 eth0                                                                     13:50
  ^                                                                    r
  |                                                                    r
  |                                                                    r
  |                                                                    r
  |                                                                    r
  |                                                        r           r  r
  |  r                                                     r           r  r
  |  r                                                     r           r  r
  |  r                                                  r  r        r  r  r
  |  r                                                  r  r  r     r  r  r
 -+--------------------------------------------------------------------------->
  |  14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 10 11 12 13

 h   rx (kB)    tx (kB)      h   rx (kB)    tx (kB)      h   rx (kB)    tx (kB)
14      15703       2344    22          0          0    06          0          0
15          0          0    23          0          0    07       8450       2247
16          0          0    00          0          0    08      18663       2935
17          0          0    01          0          0    09       4191        766
18          0          0    02          0          0    10       2305        337
19          0          0    03          0          0    11       8157       1209
20          0          0    04          0          0    12      32604       1729
21          0          0    05          0          0    13      16418       1213

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

$ vnstat -d -i eth0

 eth0  /  daily

    day         rx      |     tx      |  total
------------------------+-------------+----------------------------------------
   01.06.     27.46 MB  |    4.93 MB  |   32.39 MB   %%
   02.06.    117.74 MB  |   24.06 MB  |  141.80 MB   %%%%%%%::
   03.06.    317.89 MB  |   52.82 MB  |  370.70 MB   %%%%%%%%%%%%%%%%%%%%%::::
   04.06.     88.66 MB  |   10.19 MB  |   98.85 MB   %%%%%:
------------------------+-------------+----------------------------------------
 estimated      151 MB  |      17 MB  |     168 MB

Чтобы просмотреть сетевую статистику за месяц, необходимо запустить Vnstat следующим образом:

$ vnstat -m -i eth0

 eth0  /  monthly

   month         rx      |      tx      |   total
-------------------------+--------------+--------------------------------------
  Jun '09     551.88 MB  |    92.01 MB  |   643.88 MB   %%%%%%%%%%%%%%%%%%%:::
-------------------------+--------------+--------------------------------------
 estimated      1.53 GB  |      261 MB  |     1.79 GB

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

$ vnstat --top10 -i eth0

 eth0  /  top 10

   #       day         rx      |     tx      |  total
-------------------------------+-------------+---------------------------------
   1    03.06.09    317.89 MB  |   52.82 MB  |  370.70 MB   %%%%%%%%%%%%%%%:::
   2    02.06.09    117.74 MB  |   24.06 MB  |  141.80 MB   %%%%%:
   3    01.06.09     27.46 MB  |    4.93 MB  |   32.39 MB   %
-------------------------------+-------------+---------------------------------

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

$ vnstat -l -i eth0
Monitoring eth0...    (press CTRL-C to stop)

   rx:       0.46 kB/s     3 p/s            tx:       0.00 kB/s     0 p/s^C

 eth0  /  traffic statistics

                             rx       |       tx
--------------------------------------+----------------------------------------
  bytes                       298 kB  |         32 kB
--------------------------------------+----------------------------------------
          max             77.14 kB/s  |     5.59 kB/s
      average              8.29 kB/s  |     0.92 kB/s
          min              0.09 kB/s  |     0.00 kB/s
--------------------------------------+----------------------------------------
  packets                        394  |           232
--------------------------------------+----------------------------------------
          max                 59 p/s  |        42 p/s
      average                 10 p/s  |         6 p/s
          min                  2 p/s  |         0 p/s
--------------------------------------+----------------------------------------
  time                    36 seconds

Для того, чтобы получить сырые данные от Vnstat и использовать их по своему усмотрению (парсить и выводить на свой лад), необходимо запустить Vnstat следующим образом:

$ vnstat --dumpdb -i eth0
version;3                                                 
active;1                                                  
interface;eth0                                            
nick;eth0                                                 
created;1244453553                                        
updated;1244715001                                        
totalrx;552                                               
totaltx;92                                                
currx;94223619                                            
curtx;10895032                                            
totalrxk;927                                              
totaltxk;144                                              
btime;1244690023  

# следующие 30 линий будут следующего формата:
d;0;1244690401;89;10;835;351;1

# где: 
#  d = дни, 0 = номер дня в БД (0 - сегодня), 1244690401 дата в Unix time, 
#  89 = rx MB, 10 = tx MB, 835 = rx kB, 351 = tx kB       

# далее строки в формате
m;0;1078092000;48649;139704;527;252;1   #12 строк
t;0;1078351200;5979;47155;362;525;1     #10 строк
h;0;1078699800;118265;516545            #24 строк

# где: 
#  m = месяцы, t = top10, h = часы, все остальные поля аналогичны выше описанному для дней, 
#  кроме часов, где сетвертое и пятое значения в kB.

Чтобы остановить подсчет трафика и сбросить счетчик, необходимо выполнить:

$ vnstat -u -r --disable -i eth0

Вопросы по теме ...

    Вопросов пока не возникало ;)

Есть еще вопрос?