From: Тараненко Сергей <skeljuve@ukr.net.>
Newsgroups: email
Date: Mon, 21 Dec 2008 17:02:14 +0000 (UTC)
Subject: Подсчет трафика на Freebsd используя trafd без mysql
Введение.
Решил написать свою статью по управлению трафика. Мне нужно было ещё
формировать статистику (отдельно 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 прописываем такое
Я добавил один интерфейс, но можно и несколько (через пробел)
Параметр -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
И ещё один скрипт, который статистику переводит в текстовый формат.
исключает их статистики внутренние подсети (локалка у меня имеет подсеть
10.0.9.0/24) (я считал только инет-трффик, внутрисеть не считал). Можете
поменять на свои :)