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

Установка тривиальная для Debian систем:
PHP код:
sudo aptitude install vnstat 
Настройка Vnstat

Непосредственно сразу после установки, необходимо проинициализировать интерфейсы, для которых необходимо считать трафик:
PHP код:
vnstat --i eth0
vnstat --i ppp0 
Следствием того, что Vnstat использует статистику сетевых интерфейсов, предоставляемых ядром Linux, подсчет трафика ведется только тогда, когда интерфейс используется.При установке создается cron-задание, выполняющееся каждые 5 минут и обновляющее статистику по каждому из выбранных интерфейсов:
PHP код:
ls -/etc/cron.grep vnstat
-rw-r--r-- 1 root root 180 2008-02-08 13:56 vnstat 
Просмотр сетевого трафика с Vnstat

Запуск Vnstat без параметров выводит трафик по всем активированным интерфейсам за сегодня и вчера:
PHP код:
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 следующим образом:
PHP код:
vnstat --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 следующим образом:
PHP код:
vnstat --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 --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 следующим образом:
PHP код:
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 следующим образом:
PHP код:
vnstat --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 следующим образом:
PHP код:
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.Чтобы остановить подсчет трафика и сбросить счетчик, необходимо выполнить: 

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

PHP код:
vnstat ----disable -i eth0