Назад | Перейти на главную страницу

Linux: как измерять дневной / ежемесячный сетевой трафик?

Мне нужно вести статистику ежедневного сетевого трафика для Linux-машины (CentOS 5).

Есть ли способ сделать это с помощью стандартных / собственных инструментов или утилит?
Или мне для этого нужно скачать специальный софт?

Спасибо.

Я также предлагаю использовать VnStat

vnStat 1.6 by Teemu Toivola <tst at iki dot fi>

     -q,  --query          query database
     -h,  --hours          show hours
     -d,  --days           show days
     -m,  --months         show months
     -w,  --weeks          show weeks
     -t,  --top10          show top10
     -s,  --short          use short output
     -u,  --update         update database
     -i,  --iface          select interface (default: eth0)
     -?,  --help           short help
     -v,  --version        show version
     -tr, --traffic        calculate traffic
     -l,  --live           show transfer rate in real time


 eth0  /  monthly

   month         rx      |      tx      |   total
-------------------------+--------------+--------------------------------------
  Oct '09     225.70 GB  |   798.52 GB  |     1.00 TB   %%%%:::::::::::::
  Nov '09     138.46 GB  |   616.54 GB  |   755.01 GB   %%::::::::::

 eth0  /  daily

day         rx      |     tx      |  total
------------------------+-------------+----------------------------------------
   31.12.      6.56 GB  |   34.39 GB  |   40.95 GB   %%%::::::::::::::::
   01.01.      1.13 GB  |  746.92 MB  |    1.86 GB

То, что Зайфер говорил о rrdtool (и обо всем, что использует его в качестве бэкэнда - MRTG, Cacti и т. Д.), Вероятно, правильно. RRDTool разработан как инструмент «усредненного» анализа исторических тенденций. Он усредняет и сохраняет показания счетчиков со все более неопределенными приращениями по мере продвижения назад во времени.

Однако это можно настроить, настроив RRA соответствующим образом. Я признаюсь, что совершенно ничего не знаю о настройке их, и мне никогда лично не удавалось получить их прямо за пределами моего стандартного набора (15 минут, 8 часов, 1 неделя, 1 месяц, 1 год). Я бы порекомендовал настроить RRA на ожидание ежедневного ввода и скормить ему счетчик пропускной способности из netstat. Вы получите очень хорошие исторические данные и понимание ваших шаблонов использования.

Чтобы ответить на вашу текущую проблему, убедитесь, что вы не превышаете дневной лимит пропускной способности; Я бы рекомендовал ежедневно получать счетчики netstat для рассматриваемого интерфейса. Вы можете сравнить вчерашний трафик в момент t со счетчиками сегодняшнего дня в момент t и узнать, сколько было передано. Вероятно, будет достаточно простого скрипта с обычным текстовым файлом для хранения предыдущего значения. Затем вы можете отключить интерфейс, если обнаружите превышение пропускной способности, или будете отслеживать его в течение дня и уведомить администратора, если вы приближаетесь к своему пределу.

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

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'

И наоборот, выход может быть получен с помощью:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'

Вы можете поместить соответствующие счетчики в плоский файл, который где-то хранится, и сравнить его с:

#!/bin/bash
set -e # exit if any error occurs

previous_days_bytes_xferred=`cat $flatfile_storage`
todays_bytes_xferred=`netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'`

if [ $((todays_bytes_xferred - previous_days_bytes_xferred)) -gt $threshold ]; then
   DO SOME STUFF
fi
echo $todays_bytes_xferred > $flatfile_storage

Просто настройте обработку netstat в соответствии с вашей системой (поскольку я знаю, что вы не используете OSX).

Внстат - отличный консольный ежедневный / еженедельный / ежемесячный монитор трафика. Он даже позволяет вам отслеживать трафик в реальном времени, что очень удобно.

Он также использует очень мало системных ресурсов;)

Пакет sysstat содержит утилиту sar. Sar - это чрезвычайно настраиваемый системный «профилировщик», за неимением лучшего термина, который собирает различную статистику через предопределенные интервалы (cron). Они хранятся в двоичных файлах, по одному на каждый день, которые обычно меняются еженедельно, но это можно настроить. Программа sar может использоваться для извлечения статистики из этих файлов, и эти результаты можно легко отобразить в виде графика с помощью любой офисной программы или gnuplot (мои личные предпочтения).

http://pagesperso-orange.fr/sebastien.godard/ <= Информация о Sar
http://www.gnuplot.info/ <= информация о gnuplot

Вы хотите MRTG который является инструментом мониторинга сети, это то, что создает все сетевые графики, которые вы видите в Интернете (с помощью rdtool, чтобы превратить числа в изображения)

Если вы не хотите его настраивать или вам просто нужно что-то попроще, вы можете использовать iptables для записи передачи данных.

Я использовал mrtg, это очень хорошее решение, и есть другой инструмент, который кажется интересным и который дает много информации о трафике с именем ntop a network probe, Вот найти ссылку об установке ntop на CentOS

Либо MRTG, либо Cacti. Cacti сложно настроить, но он дает очень красивые графики. MRTG легко создать базовый сюжет, но для чего-то красивого или сложного это довольно сложно.

Мунин - еще один замечательный инструмент на основе RRD, который очень легко настроить; статистика сети по умолчанию довольно проста, но легко добавить дополнительные плагины. Я приложил копию ежедневной и еженедельной статистики на одном из моих серверов; вы также получаете ежемесячную и годовую статистику на другой странице.

Сетевой граф Мунина