подсчет трафика. как можно проще ? нужен минимум

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Mr Alter Ego
сержант
Сообщения: 238
Зарегистрирован: 2007-07-12 13:06:02
Откуда: Украина
Контактная информация:

подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение Mr Alter Ego » 2007-11-04 20:42:19

вобщем почитал форум ...
почитал сайт. оч много информации о подсчете трафика .... связски с SQL .... ВЕБ интерфейсы ...

задача у меня проще:
есть сервер. на нём как ни странно есть rl0.

Задача проста. Мне нужно всеголишь посчитать ... месячный трафик. Чтобы ... знать, например ага ... в этом месяце у меня 200 ГБ )

Что посоветуете ? Сейчас у меня поднят
254 ?? Ss 0:29.71 /usr/local/bin/trafd -i rl0
трафд ... поднял его так как умел. ничего не настраивая. лишь включил его в рц.коф и указал интерфейс.

видел на форуме в шелл скриптинке скрипт ... от уважаемого Лисяры ... но почему то он у меня ... не считал ) так как должен. ошибок небыло ) но и считать и echo темболее делать не думал.

скажите, как же всетаки реализовать мою потребность - подсчет трафика и вывод результатов ?
вообще алгоритм скрипта в шеллскриптинге мне понравился. мол посчитал, сумировал. положил в архив и говорит - вот у нас так и так дела.

что скажите ? куда копать ? пробовать ли с тем скриптом ? может есть проще метод ? спасибо. жду ответа
Best Regards

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Mr Alter Ego
сержант
Сообщения: 238
Зарегистрирован: 2007-07-12 13:06:02
Откуда: Украина
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение Mr Alter Ego » 2007-11-04 21:02:14

#!/bin/sh

# Временный файл
tmp_file="/tmp/trafd.traffic.$$.tmp"
out_file="/usr/local/var/trafd/tmp_data.txt"
# внешний ip машины
#external_IP="`/sbin/ifconfig xl0 | grep inet | awk '{print $2}'`"
#internal_IP="`/sbin/ifconfig ep0 | grep inet | awk '{print $2}'`"
#wifi_IP="`/sbin/ifconfig ath0 | grep inet | awk '{print $2}'`"


# Сегодяшний день
day="`date +%Y-%m-%d`"
# Текущий год
year="`date +%Y`"
# Текущий месяц
month="`date +%m`"
# Текущее время (секунды специально сделаны 00 - иногда cron запускает скрипт не
# в 00 секунд а позже (максимум что я видел - в 13), если машина очень загружена -
# как итог в логах начинает фигурировать разное число секунд.
# Мне это непонравилось :)
curr_time="`date +%H:%M:00`"
# Директория в которой будут храниться текстовые файлы с логами trafd
NewDir="/var/traffic/${year}/${month}"
# Пытаемся создать эту самую директорию на случай если это первый запуск
# или произошла смена месяца (года)
mkdir -p ${NewDir}
# Ну и топаем туда
cd ${NewDir}

# Считываем все переменные из файла /etc/rc.conf с целью извлечь оттуда
# строчку с названиями интерфейсов по которым работает trafd
# (У меня три сетевых платы и lo0 - просто интереса ради)
. /etc/rc.conf

# Для всех интерфейсов выковырнутых из rc.conf (висят в ${trafd_ifaces})
# выполняем один и тот же набор действий по разбору логов и запихиванию
# их в базу данных
echo " Траффик за этот месяц:" > ${out_file}
echo " Интерфейс Входящий Исходящий" >> ${out_file}
for iface in ${trafd_ifaces}
do
IP="`/sbin/ifconfig ${iface} | grep inet | awk '{print $2}' | head -1`"
# Считаем траффик от нас. Считаем за весь месяц, кладём во временный
# файл - из него будет выводиться при логине - когда su делаешь
cat ${NewDir}/summary.${iface} | grep "^[0-9]" | grep "^${IP}"| awk '
BEGIN { d=0 }
{
# Суммируем 6-й столбец на вводе - траффик
d=$6+d
}
END {
print d/1048576
} ' > ${tmp_file}
read bytes_out < ${tmp_file}

# Считаем траффик от нас. Считаем за весь месяц, кладём во временный
# файл - из него будет выводиться при логине - когда su делаешь
cat ${NewDir}/summary.${iface} | grep "^[0-9]" | grep -v "^${IP}"| awk '
BEGIN { d=0 }
{
# Суммируем 6-й столбец на вводе - траффик
d=$6+d
}
END {
print d/1048576
} ' > ${tmp_file}
read bytes_in < ${tmp_file}

# заносим траффик во временный файл - будет выводиться на экран при логоне
if [ "${bytes_in}" = "0" ]
then
# нету траффега
else
echo " ${iface} ${bytes_in} Mb ${bytes_out} Mb" >> ${out_file}
fi
# удаляем временный файл
rm ${tmp_file}
done

echo " Подсчитан `date +%Y-%m-%d` в `date +%H:%M:%S` MSK" >> ${out_file}
попробовал данный скрипт.

запустил его руками раз пять подряд ... потом додумался глянуть результат. вот что ... показал мне
[root@server ~]# more /usr/local/var/trafd/tmp_data.txt
<F4><D2><C1><C6><C6><C9><CB> <DA><C1> <DC><D4><CF><D4> <CD><C5><D3><D1><C3>:
<E9><CE><D4><C5><D2><C6><C5><CA><D3> <F7><C8><CF><C4><D1><DD><C9><CA>
<E9><D3><C8><CF><C4><D1><DD><C9><CA>
rl0 252.623 Mb 0 Mb
<F0><CF><C4><D3><DE><C9><D4><C1><CE> 2007-11-04 <D7> 19:54:05 MSK
[root@server ~]# sh trafd
[root@server ~]# more /usr/local/var/trafd/tmp_data.txt
<F4><D2><C1><C6><C6><C9><CB> <DA><C1> <DC><D4><CF><D4> <CD><C5><D3><D1><C3>:
<E9><CE><D4><C5><D2><C6><C5><CA><D3> <F7><C8><CF><C4><D1><DD><C9><CA>
<E9><D3><C8><CF><C4><D1><DD><C9><CA>
rl0 252.623 Mb 0 Mb
<F0><CF><C4><D3><DE><C9><D4><C1><CE> 2007-11-04 <D7> 19:54:32 MSK
[root@server ~]#
не знаю должны ли быть кракозябры ... ) и что за трафик он мне показал.
ведь на ... время того сколько включен ПК трафика гиг на 5 больше.
может проблема в том что у меня 4 алиаса ? на интерфейсе ? хотя ... меня ведь сумарный трафик интересует.

пмогите довести данный скрипт до состояния нормальной работы. так же подскажите как часто его дергать.

p.s. может где старые логи) трафд ...

вобщем покомандуйте
Best Regards

Аватара пользователя
toughcat
мл. сержант
Сообщения: 97
Зарегистрирован: 2007-06-28 2:23:48
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение toughcat » 2007-11-05 1:54:44

вот неплохая статейко об организации простого учета трафика на trafd с веб-интерфейсом, некоего Маликова М.С. - поскольку адрес я потерял - выкладываю как есть:
*** Учет трафика во FreeBSD ***
В этой статье я рассмотрю систему учета трафика в локальной сети. Моя схема: сервер с настроенным NAT'ом и двумя сетевыми интерфейсами, 6 компьютеров в сети. FreeBSD-5.4-STABLE, trafd-3.0.1_2. Так же понадобится перл.
Необходимо скомпилировать ядро с ``device bpf'' (Berkley Packet Filter). Этот псевдо-девайс позволяет видеть все пакеты, проходящие через сетевые интерфейсы. Затем устанавливаем порт /usr/ports/net-mgmt/trafd. В /usr/local/etc/rc.d или /etc/rc.d будет установлен стартовый скрипт. Далее в /etc/rc.conf пишем:

Код: Выделить всё

trafd_enable="YES"
trafd_ifaces="rl0"
trafd_flags="-r -p not port 22"
trafd_log="/var/log/traffic.log"
У меня интерфейс rl0 смотрит в локальную сеть. Параметр "-r" указывает trafd сохранять статистику в файле, чтобы после перезагрузки сервера она не обнулялась. "-p" означает не устанавливать на интерфейсе режим promiscuous (у самого trafd нет man'а в дистрибутиве, можно смотреть man tcpdump, т.к. trafd использует вывод этой программы). "not port 22" исключает из отчета все пакеты, которые уходят с / приходят на порт с таким номером. Можно писать очень сложные правила, примеров полно в сети, в man tcpdump, еще можно почитать документацию на bpft4.sourceforge.net
Запускаем trafd: /usr/local/etc/rc.d/trafd.sh start , проверяем ps -aux | grep trafd. Не запустился - читаем логи ;)
Теперь trafd собирает статистику и накапливает в оперативной памяти. Далее я использую такую схему: раз в 10 минут снимаю статистику, преобразую её в .html файл и пользователи сети смотрят ее на локальном www-сервере. Раз в месяц статистика обнуляется и кладется в архив. Здесь надо сделать уточнение. trafd может накапливать в памяти только определенное количество записей, обычно говорят о 1000 строк в таблице, хотя у меня было и 3000 и более (смотрится командой "trafstat rl0"). Т.к. у меня всего 6 пользователей и общий трафик не превышает 600 Мб в месяц, то я могу себе позволить сбрасывать статистику раз в месяц. Чем интенсивнее используется трафик, а точнее чем больше устанавливается соединений, тем чаще надо сбрасывать статистику чтобы ничего не потерялось. Еще в некоторых подобных статьях я читал что trafd не запоминает пакеты размером менее 2048 байт, в ходе экспериментов я такого не заметил, возможно это был недостаток старых версий программы.
Итак необходимый набор скриптов я расположил в /usr/local/var/trafd чтобы не раскидывать единую систему по разным директориям:

#--- /usr/local/var/trafd/trafwork.sh ---

Код: Выделить всё

#!/bin/sh
/usr/local/bin/trafdump rl0
/usr/local/bin/trafstat -ni rl0 > /usr/local/var/trafd/trafd.txt
rm /usr/local/www/traffic/index.html
/usr/local/var/trafd/text2html.pl
------------------------------
#--- /usr/local/var/trafd/text2html.pl

Код: Выделить всё

#!/usr/bin/perl
#
# Albert MW
#

$k = 1;
$total = 0;
$cur = "/usr/local/www/traffic/index.html";
$file = "/usr/local/var/trafd/trafd.txt";
%net = ("192.168.0.2",  "Вася",
	"192.168.0.3",  "Петя",
	"192.168.0.4",  "Коля",
	"192.168.0.5",  "Пупкин",
	"192.168.0.6",  "Жучкин",
	"192.168.0.7",	"Федя"
);
foreach $i (sort keys %net)
{
  $masin{$i} = 0;  
  $masout{$i} = 0;
}
open (FILE,"$file") || die "Can't update file $file, $!\n";
    while (<FILE>) 
    {
    tr/ / /s;
    ($from,$pfrom,$to,$pto,$proto,$data,$all) = split(/ /,$_);
         foreach $i (sort keys %net)
         {
           if ($from eq $i) {  $masout{$i}  += $all; }
           if ($to   eq $i) {  $masin{$i}  += $all; }
         }
    $total += $all;
    }
close (FILE) || "Couldn't close file $file, $!\n";
open (C,">$cur") || die "Can't update file $cur, $!\n";
   select (C);
   printf "<html>\n<head>\n<title>Statistics</title>\n<link href=stat.css type=text/css rel=STYLESHEET>\n";
   printf "</head>\n<body text=#00008b>\n";
   printf "<div align=center>\n  <font size=4>\n  ООО 'Молоко' обновляется раз в 10 минут\n  </font>\n</div>\n<br>\n";
   printf "<table align=center border=1 bordercolor=#00008b cellSpacing=0 cellPadding=3>\n";
   printf "  <tbody>\n  <tr bgColor=#f0f8ff>\n      <td width=30 align=center>\n      <b>N</b>\n";
   printf "      </td>\n      <td width=150 align=center>\n      <b>ip-адрес<b>\n      </td>\n";
   printf "      <td width=100 align=center>\n      <b>Имя</b>\n      </td>\n";
   printf "      <td width=100 align=center>\n      <b>Входящий</b> (Mb)\n      </td>\n";
   printf "      <td width=100 align=center>\n      <b>Исходящий</b> (Mb)\n      </td>\n  </tr>";
   foreach $i (sort keys %net)
   {
      printf "<tr><td>$k</td>\n";
      printf "<td>$i</td>\n";
      printf "<td>$net{$i}</td>\n";
      printf "<td>%.2f",$masin{$i}/1048576,"</td>\n";
      printf "<td>%.2f",$masout{$i}/1048576,"</td></tr>\n";
      ++$k;
   }
   printf "\n  </tbody>\n</table>\n<p>\n";
   printf "<div align=center>\n  <font size=5>\n  Общий трафик:  ";
   printf "%10.2f",$total/1048576," Mb\n";
   printf "</font>\n</div>\n";
   printf "</body>\n</html>";
close (C) || "Couldn't close file $cur, $!\n";
foreach $i (sort keys %net)
{
   $ip ="/usr/local/web/data/ip/".$i.".html";
   open (IP,">$ip");
   select (IP);
   printf "<html>\n<head>\n<title>Personal daily statistics</title>\n<link href=../stat.css type=text/css rel=STYLESHEET>\n";
   printf "</head>\n<body text=#00008b>\n";
   printf "<table border=1 bordercolor=#00008b cellSpacing=0 cellPadding=1>\n";
   printf "  <tbody>\n  <tr bgColor=#f0f8ff>\n    <td colspan=2 align=center><b>Personal stat</b></td>\n  </tr>\n";
   printf "  <tr bgColor=#f0f8ff>\n    <td colspan=2 align=center><b>$i:$net{$i}</b></td>\n  \n</tr>\n";
   printf "  <tr>\n    <td>IN</td>\n    <td>%.2f",$masin{$i}/1048576,"</td>\n  </tr>\n";
   printf "  <tr>\n    <td>OUT</td>\n    <td>%.2f",$masout{$i}/1048576,"</td>\n  </tr>\n";
   printf "</tbody>\n</table>\n";
   close (IP);
}
------------------------------
#--- /usr/local/var/trafd/mounth.rotate.sh

Код: Выделить всё

#!/bin/sh
mounth=`date "+%m"`
mv /usr/local/www/traffic/index.html /usr/local/www/traffic/old/`echo $mounth -1 | bc`.`date "+%Y"`.html
touch /usr/local/www/traffic/index.html
/usr/local/bin/trafsave rl0
------------------------------
Первый скрипт сбрасывает сырую статистику в текстовый файл /usr/local/var/trafd/trafd.txt и запускает второй скрипт на перле, который создает .html файл /usr/local/www/traffic/index.html (этот скрипт не мой, я его нарыл где-то в Сети, написал его Albert MW). Ну и третий скрипт перекидывает файл со статистикой в архив и обнуляет статистику trafd (команда trafsave).
В /etc/crontab делаем следующие записи:

Код: Выделить всё

*/10	*	*	*	*	root	/usr/local/var/trafd/trafwork.sh
5	0	1	*	*	root	/usr/local/var/trafd/mounth.rotate.sh
Собственно на этом все, можно сформировать первый отчет, запустив /usr/local/var/trafd/trafwork.sh . Сама система сбора статистики должна работать без проблем, но необходимо выбрать нужный интервал сброса таблицы trafd, чтобы избежать неучтенного трафика. Некоторые ее сбрасывают в каждом цикле создания нового отчета, но тогда, конечно же, необходимо переделать систему хранения. Вобщем есть большое поле для деятельности и полета фантазии, я дал основные принципы и идею. Если появятся какие-нибудь вопросы вы всегда можете задать их на нашем форуме bouncer.ru.pc4all а так же на bsdekaterinburg.ru
(C) Маликов М.С. aka dmq 2005

***

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение kmb » 2007-11-05 9:55:08

[root@server ~]# more /usr/local/var/trafd/tmp_data.txt
русские буквы не отображает видимо...
truth is out there...

Аватара пользователя
Mr Alter Ego
сержант
Сообщения: 238
Зарегистрирован: 2007-07-12 13:06:02
Откуда: Украина
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение Mr Alter Ego » 2007-11-05 14:14:34

toughcat писал(а):вот неплохая статейко об организации простого учета трафика на trafd с веб-интерфейсом, некоего Маликова М.С. - поскольку адрес я потерял - выкладываю как есть:
*** Учет трафика во FreeBSD ***
В этой статье я рассмотрю систему учета трафика в локальной сети. Моя схема: сервер с настроенным NAT'ом и двумя сетевыми интерфейсами, 6 компьютеров в сети. FreeBSD-5.4-STABLE, trafd-3.0.1_2. Так же понадобится перл.
Необходимо скомпилировать ядро с ``device bpf'' (Berkley Packet Filter). Этот псевдо-девайс позволяет видеть все пакеты, проходящие через сетевые интерфейсы. Затем устанавливаем порт /usr/ports/net-mgmt/trafd. В /usr/local/etc/rc.d или /etc/rc.d будет установлен стартовый скрипт. Далее в /etc/rc.conf пишем:

Код: Выделить всё

trafd_enable="YES"
trafd_ifaces="rl0"
trafd_flags="-r -p not port 22"
trafd_log="/var/log/traffic.log"
У меня интерфейс rl0 смотрит в локальную сеть. Параметр "-r" указывает trafd сохранять статистику в файле, чтобы после перезагрузки сервера она не обнулялась. "-p" означает не устанавливать на интерфейсе режим promiscuous (у самого trafd нет man'а в дистрибутиве, можно смотреть man tcpdump, т.к. trafd использует вывод этой программы). "not port 22" исключает из отчета все пакеты, которые уходят с / приходят на порт с таким номером. Можно писать очень сложные правила, примеров полно в сети, в man tcpdump, еще можно почитать документацию на bpft4.sourceforge.net
Запускаем trafd: /usr/local/etc/rc.d/trafd.sh start , проверяем ps -aux | grep trafd. Не запустился - читаем логи ;)
Теперь trafd собирает статистику и накапливает в оперативной памяти. Далее я использую такую схему: раз в 10 минут снимаю статистику, преобразую её в .html файл и пользователи сети смотрят ее на локальном www-сервере. Раз в месяц статистика обнуляется и кладется в архив. Здесь надо сделать уточнение. trafd может накапливать в памяти только определенное количество записей, обычно говорят о 1000 строк в таблице, хотя у меня было и 3000 и более (смотрится командой "trafstat rl0"). Т.к. у меня всего 6 пользователей и общий трафик не превышает 600 Мб в месяц, то я могу себе позволить сбрасывать статистику раз в месяц. Чем интенсивнее используется трафик, а точнее чем больше устанавливается соединений, тем чаще надо сбрасывать статистику чтобы ничего не потерялось. Еще в некоторых подобных статьях я читал что trafd не запоминает пакеты размером менее 2048 байт, в ходе экспериментов я такого не заметил, возможно это был недостаток старых версий программы.
Итак необходимый набор скриптов я расположил в /usr/local/var/trafd чтобы не раскидывать единую систему по разным директориям:

#--- /usr/local/var/trafd/trafwork.sh ---

Код: Выделить всё

#!/bin/sh
/usr/local/bin/trafdump rl0
/usr/local/bin/trafstat -ni rl0 > /usr/local/var/trafd/trafd.txt
rm /usr/local/www/traffic/index.html
/usr/local/var/trafd/text2html.pl
------------------------------
#--- /usr/local/var/trafd/text2html.pl

Код: Выделить всё

#!/usr/bin/perl
#
# Albert MW
#

$k = 1;
$total = 0;
$cur = "/usr/local/www/traffic/index.html";
$file = "/usr/local/var/trafd/trafd.txt";
%net = ("192.168.0.2",  "Вася",
	"192.168.0.3",  "Петя",
	"192.168.0.4",  "Коля",
	"192.168.0.5",  "Пупкин",
	"192.168.0.6",  "Жучкин",
	"192.168.0.7",	"Федя"
);
foreach $i (sort keys %net)
{
  $masin{$i} = 0;  
  $masout{$i} = 0;
}
open (FILE,"$file") || die "Can't update file $file, $!\n";
    while (<FILE>) 
    {
    tr/ / /s;
    ($from,$pfrom,$to,$pto,$proto,$data,$all) = split(/ /,$_);
         foreach $i (sort keys %net)
         {
           if ($from eq $i) {  $masout{$i}  += $all; }
           if ($to   eq $i) {  $masin{$i}  += $all; }
         }
    $total += $all;
    }
close (FILE) || "Couldn't close file $file, $!\n";
open (C,">$cur") || die "Can't update file $cur, $!\n";
   select (C);
   printf "<html>\n<head>\n<title>Statistics</title>\n<link href=stat.css type=text/css rel=STYLESHEET>\n";
   printf "</head>\n<body text=#00008b>\n";
   printf "<div align=center>\n  <font size=4>\n  ООО 'Молоко' обновляется раз в 10 минут\n  </font>\n</div>\n<br>\n";
   printf "<table align=center border=1 bordercolor=#00008b cellSpacing=0 cellPadding=3>\n";
   printf "  <tbody>\n  <tr bgColor=#f0f8ff>\n      <td width=30 align=center>\n      <b>N</b>\n";
   printf "      </td>\n      <td width=150 align=center>\n      <b>ip-адрес<b>\n      </td>\n";
   printf "      <td width=100 align=center>\n      <b>Имя</b>\n      </td>\n";
   printf "      <td width=100 align=center>\n      <b>Входящий</b> (Mb)\n      </td>\n";
   printf "      <td width=100 align=center>\n      <b>Исходящий</b> (Mb)\n      </td>\n  </tr>";
   foreach $i (sort keys %net)
   {
      printf "<tr><td>$k</td>\n";
      printf "<td>$i</td>\n";
      printf "<td>$net{$i}</td>\n";
      printf "<td>%.2f",$masin{$i}/1048576,"</td>\n";
      printf "<td>%.2f",$masout{$i}/1048576,"</td></tr>\n";
      ++$k;
   }
   printf "\n  </tbody>\n</table>\n<p>\n";
   printf "<div align=center>\n  <font size=5>\n  Общий трафик:  ";
   printf "%10.2f",$total/1048576," Mb\n";
   printf "</font>\n</div>\n";
   printf "</body>\n</html>";
close (C) || "Couldn't close file $cur, $!\n";
foreach $i (sort keys %net)
{
   $ip ="/usr/local/web/data/ip/".$i.".html";
   open (IP,">$ip");
   select (IP);
   printf "<html>\n<head>\n<title>Personal daily statistics</title>\n<link href=../stat.css type=text/css rel=STYLESHEET>\n";
   printf "</head>\n<body text=#00008b>\n";
   printf "<table border=1 bordercolor=#00008b cellSpacing=0 cellPadding=1>\n";
   printf "  <tbody>\n  <tr bgColor=#f0f8ff>\n    <td colspan=2 align=center><b>Personal stat</b></td>\n  </tr>\n";
   printf "  <tr bgColor=#f0f8ff>\n    <td colspan=2 align=center><b>$i:$net{$i}</b></td>\n  \n</tr>\n";
   printf "  <tr>\n    <td>IN</td>\n    <td>%.2f",$masin{$i}/1048576,"</td>\n  </tr>\n";
   printf "  <tr>\n    <td>OUT</td>\n    <td>%.2f",$masout{$i}/1048576,"</td>\n  </tr>\n";
   printf "</tbody>\n</table>\n";
   close (IP);
}
------------------------------
#--- /usr/local/var/trafd/mounth.rotate.sh

Код: Выделить всё

#!/bin/sh
mounth=`date "+%m"`
mv /usr/local/www/traffic/index.html /usr/local/www/traffic/old/`echo $mounth -1 | bc`.`date "+%Y"`.html
touch /usr/local/www/traffic/index.html
/usr/local/bin/trafsave rl0
------------------------------
Первый скрипт сбрасывает сырую статистику в текстовый файл /usr/local/var/trafd/trafd.txt и запускает второй скрипт на перле, который создает .html файл /usr/local/www/traffic/index.html (этот скрипт не мой, я его нарыл где-то в Сети, написал его Albert MW). Ну и третий скрипт перекидывает файл со статистикой в архив и обнуляет статистику trafd (команда trafsave).
В /etc/crontab делаем следующие записи:

Код: Выделить всё

*/10	*	*	*	*	root	/usr/local/var/trafd/trafwork.sh
5	0	1	*	*	root	/usr/local/var/trafd/mounth.rotate.sh
Собственно на этом все, можно сформировать первый отчет, запустив /usr/local/var/trafd/trafwork.sh . Сама система сбора статистики должна работать без проблем, но необходимо выбрать нужный интервал сброса таблицы trafd, чтобы избежать неучтенного трафика. Некоторые ее сбрасывают в каждом цикле создания нового отчета, но тогда, конечно же, необходимо переделать систему хранения. Вобщем есть большое поле для деятельности и полета фантазии, я дал основные принципы и идею. Если появятся какие-нибудь вопросы вы всегда можете задать их на нашем форуме bouncer.ru.pc4all а так же на bsdekaterinburg.ru
(C) Маликов М.С. aka dmq 2005

***

спасибо. думаю стоит попробовать.
а ты не мог бы показать ... в каком виде он выкидывает результат ? у тебя
Best Regards

Аватара пользователя
toughcat
мл. сержант
Сообщения: 97
Зарегистрирован: 2007-06-28 2:23:48
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение toughcat » 2007-11-05 15:29:01

а ты не мог бы показать ...
могу :D
а скриптег я немного подредактировал под свои нужды (но недоделал ибо лень)

ЗЫ: ты ничего не слышал про оверквотинг?
Вложения
screen-traffic.jpg

Аватара пользователя
Mr Alter Ego
сержант
Сообщения: 238
Зарегистрирован: 2007-07-12 13:06:02
Откуда: Украина
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение Mr Alter Ego » 2007-11-05 15:59:52

почему же не слышал ? я активно работаю с оверквоттингом как дискового пространства, так и с .... трафиком.
правда ... с помощью swsoft


а что ?
Best Regards

Аватара пользователя
Mr Alter Ego
сержант
Сообщения: 238
Зарегистрирован: 2007-07-12 13:06:02
Откуда: Украина
Контактная информация:

Re: подсчет трафика. как можно проще ? нужен минимум

Непрочитанное сообщение Mr Alter Ego » 2007-11-05 21:25:26

уважаемый ... большое спасибо тебе. у меня два вопроса

1. обьясни мне, в чем смысл фразы

Код: Выделить всё

Сама система сбора статистики должна работать без проблем, но необходимо выбрать нужный интервал сброса таблицы trafd, чтобы избежать неучтенного трафика.
обьясни пожалуйста КАК МОЖНО ПОДРОБНЕЕ, как это работает ?
например ... в каком случае может быть ... неучтенный трафик а в каком нет

2. есть у тебя какие нибудь усовершенствования ? ... данных скриптов ? может есть какие то классные улучшения ?


спасибо большое тебе. огромная просьба ... обьясни мне по поводу первого вопроса.

удачи
Best Regards