Подсчет трафика на Freebsd используя trafd без mysql
Published on Март 30, 2009 by Support · Комментариев нет
Введение.
Решил написать свою статью по управлению трафика. Мне нужно было ещё
формировать статистику (отдельно upload и download), и исключить из неё
внутрисетевой трафик, то есть считать только чисто интернет: кто
сколько накачал. В сети есть много примеров, но они почему-то используют
Mysql. Шлюз у меня немощный, да и лишний сервис подымать только что бы
хранить статистику — для моих целей не нужно было. Поэтому и решил:
статистика будет храниться в файлах, будет суммироваться трафик и
отправляться на e-mail.
Что имеем: FreeBSD 7.0, установлен squid, ядро собрано с поддержкой
divert, dummynet, ipfw.
Базу почерпнул из статьи http://www.tmeter.ru/misc/trafd/, поэтому
кое-что может пересекаться.
Установка и начальная подготовка trafd.
Trafd ставим из портов.
cd /usr/ports/net/trafd
make install clean
Вместе с ним ставятся
# trafd — демон сбора трафика
# trafdump/trafsave — программы для записи собранного трафика демоном trafd в бинарный формат
# traflog — программа для преобразования бинарных файлов трафика в тестовый формат
Для запуска демона при загрузке ОС, в /etc/rc.conf прописываем такое
trafd_enable="YES"
trafd_ifaces="sis0"
trafd_flags="-r -p"
trafd_log="/var/log/traffic.log"
Я добавил один интерфейс, но можно и несколько (через пробел)
Параметр -r означает попытку восстановления данных из существующего
бинарного файла при рестарте демона.
Параметр -p означает то, что переводить сетевой адаптер в promiscuous
mode не надо (по умолчанию, демон trafd переводит сетевой адаптер в
promiscuous mode)
ВНИМАНИЕ! trafd кладёт дамп трафика по адресу /usr/local/var/trafd.
Поменять это значение вроде бы нельзя, но можно создать симлинк.
Скрипты для сбора, обработки и отправки статистики.
И так, вот это скрипт (trafd_dump) будет запускаться раз в 15 минут, и
будет сливать так называемый «дамп» трафика.
#cat trafd_dump
#!/bin/sh
/usr/local/bin/trafdump sis0
Этот скрипт будет запускаться под конец суток и сохранять статистику за
сутки в бинарный файл.
#cat trafd_save
#!/bin/sh
/usr/local/bin/trafsave sis0
И ещё один скрипт, который статистику переводит в текстовый формат.
#cat trafd_daily
#!/bin/sh
date=`date -v-1d '+%Y%m%d'`
fp=/usr/local/var/trafd/$date
fn=/usr/local/var/trafd/plain/$date
cp /usr/local/var/trafd/trafd.sis0 $fp.sis0
rm /usr/local/var/trafd/trafd.sis0
<div style="display: none"><a href='http://bestessaywritingservicee.com/writing-essay/' title='thesis writing'>thesis writing</a></div>
/usr/local/bin/traflog -a -n -i $fp.sis0 >> $fn.sis0
/scripts/trafd_stat
который в конце вызывает скрипт обработки и отправки отчёта на e-mail.
Вот он.
#cat trafd_stat
#!/bin/sh
/bin/date=`date -v-1d '+%Y%m%d'`
path=/usr/local/var/trafd/plain
fn=$path/${date}.sis0
fstatup=$path/stat.${date}.upload.txt
fstatdown=$path/stat.${date}.download.txt
/bin/rm -f $fstatup
/bin/rm -f $fstatdown
/bin/echo `date -v-1d "+DATE: %Y-%m-%d"` >> $fstatup
/bin/echo "Upload Traffic" >> $fstatup
/bin/echo "Traffic (Mb) IP address" >> $fstatup
/bin/echo "" >> $fstatup
/bin/echo `date -v-1d "+DATE: %Y-%m-%d"` >> $fstatdown
/bin/echo "Download Traffic" >> $fstatdown
/bin/echo "Traffic (Mb) IP address" >> $fstatdown
/bin/echo "" >> $fstatdown
/bin/cat $fn | awk ' $1!~/10.0.3.|10.0.9.100|10.0.9.255|10.0.19.|10.0.59./ {print} ' \
| /usr/bin/awk ' $3!~/10.0.3.|10.0.9.100|10.0.9.255|10.0.19.|10.0.59./ {print} ' \
| /usr/bin/awk ' {OFS=" "} $1~/10.0.9./ {print $1,$7} ' | /usr/bin/sort -fn \
| /usr/bin/awk '{sum[$1]+=$2}END{for(i in sum) print i,sum[i]}' \
| /usr/bin/awk ' {OFS=" "} $2 = int($2/1048576) {print $2,$1}' | /usr/bin/sort -fnr >> $fstatup
/bin/cat $fstatup | /usr/bin/mail -s "Statistics for upload" skeletor@mydomain.com
/bin/cat $fn | /usr/bin/awk ' $1!~/10.0.3.|10.0.9.100|10.0.9.255|10.0.19.|10.0.59./ {print} ' \
| /usr/bin/awk ' $3!~/10.0.3.|10.0.9.100|10.0.9.255|10.0.19.|10.0.59./ {print} ' \
| /usr/bin/awk ' {OFS=" "} $3~/10.0.9./ {print $3,$7} ' | sort -fn \
| /usr/bin/awk '{sum[$1]+=$2}END{for(i in sum) print i,sum[i]}' \
| /usr/bin/awk ' {OFS=" "} $2 = int($2/1048576) {print $2,$1}' | /usr/bin/sort -fnr >> $fstatdown
/bin/cat $fstatdown | /usr/bin/mail -s "Statistics for download" skeletor@mydomain.com
/bin/rm -f $fstatup
/bin/rm -f $fstatdown
Немного поясню данный скрипт.
Вот эта строчка
$1!~/10.0.3.|10.0.9.100|10.0.9.255|10.0.19.|10.0.59./
исключает их статистики внутренние подсети (локалка у меня имеет подсеть
10.0.9.0/24) (я считал только инет-трффик, внутрисеть не считал). Можете
поменять на свои :)
Кстати, то же самое я делаю и для третьего поля.
$3!~/10.0.3.|10.0.9.100|10.0.9.255|10.0.19.|10.0.59./
ибо trafd пишет статистику в таком виде
$2 = int($2/1048576) — это я перевожу из байт в мегабайты.
Дальше по скрипты сортирую по максимальному значению и отправляю на e-mail.
То же самое делается и для статистики download.
Вот собственно и всё.
Отсчёт приходит в таком виде.
DATE: 2008-12-04
Upload Traffic
Traffic (Mb) IP address
16 10.0.9.55
11 10.0.9.58
9 10.0.9.63
6 10.0.9.61
4 10.0.9.64
4 10.0.9.59
4 10.0.9.54
3 10.0.9.62
3 10.0.9.60
2 10.0.9.66
2 10.0.9.57
1 10.0.9.56
zp8497586rq
Смотрите также:
Самая детальная информация
ауди ремонт и обслуживание на нашем сайте.
Exchange 2007
Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам:
Проведение мониторинга Exchange 2007 с помощью диспетчера System ...
[+]
Введение
В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ...
[+]
Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ...
[+]
Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ...
[+]
Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам:
Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1)
...
[+]
If you missed the previous parts in this article series please read:
Exchange 2007 Install and Configuration from the command line (Part ...
[+]
Инструмент ExRCA
Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями:
Тест подключения Outlook 2007 Autodiscover
Тест подключения Outlook 2003 RPC ...
[+]
Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам:
Развертывание сервера Exchange 2007 Edge Transport (часть 1)
Развертывание ...
[+]
Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ...
[+]
Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ...
[+]