URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 3142
[ Назад ]

Исходное сообщение
"Тематический каталог: Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"

Отправлено auto_topic , 20-Янв-04 04:04 
Обсуждение статьи тематического каталога: Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)

Ссылка на текст статьи: https://www.opennet.ru/base/net/squid_trafic.txt.html


Содержание

Сообщения в этом обсуждении
"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено karl , 20-Янв-04 04:04 
Идея чудесная -- только лог лучше парсить по мере поступления. Доходим до EOF, ждём несколько секуд, сбрасываем состояние ошибки и читаем снова.
Можно проверить иноду файла (вдруг он ротировался). Вот исходник:

int log_getc(void)
{
    int c, counter=0;
    
    for(;;) {
        c = fgetc(log);
        if(c == EOF) {
            if(counter > 60) {
                struct stat b;
                if(stat(log_file,&b) != 0) {
                    char errmsg[1024];
                    sprintf(errmsg, "stat %s: %s", log_file, strerror(errno));
                    fatal_error(errmsg);
                }
                else {
                    if(log_inode != b.st_ino)
                        fatal_error("Log rotated");
                }
                counter = 0;
            }
            else {
                sleep(30);
                counter++;
                clearerr(log);
            }
        }
        else return c;
    }
}

Полный текст утилитки (только для postgres'а) дарю попросившему почтой ;)


"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Осипов Станислав , 20-Янв-04 18:43 
>Идея чудесная -- только лог лучше парсить по мере поступления. Доходим до
>EOF, ждём несколько секуд, сбрасываем состояние ошибки и читаем снова.
>Можно проверить иноду файла (вдруг он ротировался). Вот исходник:

прощу прощения, я не программирую на C/C++. ваша утилитка для моего случая - рабочая? и как ей пользоваться?


"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено yarmol , 21-Янв-04 00:29 
А я для этих целей крутить на С не стал, и сделал
tail -n 1 -f /var/log/squid/access.log | gawk ........
а в gawk добавляю данные в mysql по мере поступления.

PS Кстати, кроме поля с url, я добавляю поле с именем сервера (выдергиваю из url). Сделал только недавно, еще не оценил насколько оно надо, но кажется что группировка по имени сервера дает красивые (наглядные) резуьтатаы.


"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено Vaker , 20-Янв-04 08:58 
Интересно!
Пришли утилитку почтой.
А то давно пытался под postgres трафик перевести

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено AndSerg , 20-Янв-04 09:02 
Только после того как отработает скрипт, мы начнем терять данные. В файле access.log будет тишина. IMXO надо так:
#!/bin/bash
squid -k rotate
sleep "несколько секунд"
cp /www/logs/squid/access.log.0 /tmp/squidforparse.log
awk '{print "INSERT INTO squid (ip,bytes,link,trans,time) VALUES(\""$3"\","$5",\""$7"\",\""$9"\",from_unixtime("$1"));"};' < /tmp/squidforparse.log | mysql -D traffics -u root --password=my_sql_passwd
rm -f /tmp/squidforparse.log
rm -f /tmp/access.log.0

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Осипов Станислав , 20-Янв-04 18:26 
почему терять данные?
идея с rotate достаточно хорошая, но меня не устраивает ситуация, когда я запрашиваю страничку с отчетом и мне надо сидеть эти самые sleep "несколько секунд"
фишка моей статьи в том, что я сделал обновление статистики по запросу страниц не считая регулярного cron'a

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Костя , 22-Янв-05 23:31 
>Только после того как отработает скрипт, мы начнем терять данные. В файле
>access.log будет тишина. IMXO надо так:
>#!/bin/bash
>squid -k rotate
>sleep "несколько секунд"
>cp /www/logs/squid/access.log.0 /tmp/squidforparse.log
>awk '{print "INSERT INTO squid (ip,bytes,link,trans,time) VALUES(\""$3"\","$5",\""$7"\",\""$9"\",from_unixtime("$1"));"};' < /tmp/squidforparse.log | mysql -D
>traffics -u root --password=my_sql_passwd
>rm -f /tmp/squidforparse.log
>rm -f /tmp/access.log.0

А зачем нужно cp /www/logs/squid/access.log.0 /tmp/squidforparse.log ?
Ведь после squid -k rotate - access.log.0 - не гзипованый, станд. лог, с ним можно работать. И что мы удаляем rm -f /tmp/access.log.0? Ведь файла там нет. И зачем нужно sleep "несколько секунд"? :)
И по-моему этот вариант кривоват, если данные нужно получать по запросу, а не в кроне.


"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено wapr , 20-Янв-04 10:48 
Замечательно. Я не настолько богат, что бы иметь суперкомпьютер, лопатящий базу, содержащую ВЕСЬ ЛОГ. Более 7 дней (60000000 записей. И > 2Гб) - слишком много, что бы любой отчет с помощью cgi построить, ибо занимает > 30 сек. Так что без промежуточных таблиц не обойтись. И товарищи правы - так с логом работать нельзя.

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Осипов Станислав , 20-Янв-04 18:35 
>Замечательно. Я не настолько богат, что бы иметь суперкомпьютер, лопатящий базу, содержащую ВЕСЬ ЛОГ. Более 7 дней (60000000 записей. И > 2Гб) - слишком много, что бы любой отчет с помощью cgi построить, ибо занимает > 30 сек. Так что без промежуточных таблиц не обойтись. И товарищи правы - так с логом работать нельзя.

Согласен, но если у вас в организации такое потребление трафика, то наверно, неспроста, и контора не бедная, чтоб купить себе для этих целей емкую дисковую систему на сервер. Соответственно, будьте добры не плевать в практически единственный материал по данной тематике. Я выложил _ПРОСТЕЙШИЙ_ пример как можно делать, ибо остальное, если вы не дураки, вы додумаете сами. Еще добавлю, что имея такие обьемы логов, можно одну таблицу держать для подробной статистики по паре последних месяцев, а другую пополнять по истечении каждого месяца на базе информации в первой таблице, попутно освобождая первую таблицу за устаревший месяц.


"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Осипов Станислав , 20-Янв-04 21:12 
да, и еще... БД на то и БД, чтоб не лопатить ВЕСЬ ЛОГ, а только запрошенную вами часть. За сим се ля ви. Не к месту высказались вы.

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено oleg , 21-Янв-04 15:32 
люди, зачем все это?
веть есть же squid2mysql (http://evc.fromru.com/squid2mysql/index.html) и custom_log patch from squid-cache.org CVS.
зачем изобретать велосипед с квадратными колесами ? :-)

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено yarmol , 21-Янв-04 17:51 
>зачем изобретать велосипед с квадратными колесами ? :-)
Ну так это все вещи достаточно несложные, что-бы время потраченное на установку и изучение готового софта, было сравнимо с временем потраченным на написание своего. Тот случай когда дешевле изобрести и собрать велосипед, чем заработать на него денег и купить.
Я поставил себе squid2mysql, увидел что у него квадратные колеса :-), например он подменяет собой /etc/init.d/squid, а это как-то некрасиво, да и создать базу мне пришлось руками, его скрипт на разных этапах отваливался. Вот из-за квадратных колес прибил его, и _за_такое-же_время_ нарисовал свои скрипты, которые (я писал чуть выше, снимают tail`ом) абсолютно не трогают никаких системных компонентов (включая файлы логов).



"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено juDge , 22-Янв-04 09:29 
кто нить получил утилику которую обещал выслать Карл?)

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено Skif , 05-Мрт-04 18:20 
У меня нечто подобное работает у самого(мене функционально в том плане, что не показывает сколько из кеша было вытянуто, а скока нет) месяцев пять - просто использование сарга запарило, да и надо что-то а-ля риал-тайм для юзверов, но я бы не сказл, что совсем не затрагивает файлов - полностью не читал статью - она мне не столь интересна, раз моя софтина работает - но ты же тоже должен очищать /_чего_то_там_/squid/logs/access.log после того как кинул очередную порцию в топку ;))) базы
Кстати, мой совет(впрочем может ты уже сам так же реализовал) - наваять клиенты на сях/делфе, который бы коннектился к базе  раз 20-30 минут и получал данные по статистике пользоваеля, что бы он знал когда пробьет его час и пора готовиться к отключению трафика ;)))
Оч полезная штука. ;)))

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено jack , 01-Июн-04 15:21 
Самая простая и прекрасная программа для подсчета и ограничения лимита трафика у пользователя squserlim
И ничего изобретать не надо. Пишите сами

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено raen , 06-Июл-04 12:37 
От себя добавлю, что не помешало бы заменить в insert'е в поле link символы " на \" ;)

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp nilling linux)"
Отправлено Dmitry , 14-Июл-04 11:34 
А как на счет function `from_unixtime' not defined? Стоит FreBSD 4.10-STABLE.

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Осипов Станислав , 09-Дек-04 16:26 
>А как на счет function `from_unixtime' not defined? Стоит FreBSD 4.10-STABLE.

это ж, батенька, функция mysql v4.xx
попробуйте написать ее ПРОПИСНЫМИ БУКВАМИ


"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Butsyk A. , 20-Окт-04 17:23 
Написал программку, которая складывает логи сквида в базу PostgreSQL. Буду рад, если кому поможет. http://gkm.sumy.ua/~butsyk/s2pg.tar.bz2

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Butsyk A. , 18-Ноя-04 10:16 
прорамма складывает логи сквида в базу MySQL, PostgreSQL, используя родные API этих баз, очень маленькая и шустренькая. Есть также скрипты на перле для анализа логов. Буду рад, если кому поможет.
http://abutsyk.sumy.ua/src/s2pg.tar.bz2


"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Butsyk A. , 24-Ноя-04 17:02 
Проект перемещен. http://squid2db.sourceforge.net/

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Vladimir Dyakov , 05-Ноя-04 15:43 
http://linux.alhimia.ru/projects/misc/squid-traffic/

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено ilya , 10-Ноя-04 15:15 
Мой вопрос немного оффтоп для данной ветки, но тема, безусловно, смежная.
Во многих предложенных системах анализа трафика Squid используется basic аутентификация для ведения статистики по пользователям. По сути имена и пароли передаются в открытом виде. В случае, если еще вводятся лимиты для пользователей, то этот становится опасно - передавать в открыто виде.
Есть идеи создания безопасной аутентификации на прокси?

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено cathul , 25-Ноя-04 17:10 
При запуске скрипта squid-to-mysql выдает следующее, как это победить, подскажите плиззз, горю.............!!!!!!!!!

awk: cmd. line:1: {print "INSERT INTO squid (ip,bytes,link,trans,time) VALUES(\""$3"\","$5",\""$7"\",\""$9"\",from_unixtime("$1"));};
awk: cmd. line:1:                                                                                                              ^ unterminated string


"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено cathul , 25-Ноя-04 17:32 
А сейчас так :(
proxy:/srv/www/htdocs/reports # ./squid-to-mysql
ERROR at line 1: Unknown command '\%'.

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Megavolt , 01-Дек-04 09:01 
Я вообще для этой цели патч на сквид писал ... конечно не очень хороший, но считает ... кому надо могу кинуть


"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено cathul , 07-Дек-04 17:12 
>Я вообще для этой цели патч на сквид писал ... конечно не
>очень хороший, но считает ... кому надо могу кинуть

Скинь плиззз.......
cathul@ukr.net



"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено sergey , 16-Янв-05 00:12 
Привет. Нужна помощь, при попытке доступа к странице статистики выдается:

Fatal error: Call to undefined function: mysql_connect() in /var/www/html/reports/index.php on line 4

скрипт автора взят из статьи и не подвергался изменениям, единственное разница в том, что у меня пути разные к корню Апача, то есть  /var/www/html, ну да это мелочь.....


"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено vlad11 , 23-Янв-05 20:18 
проверь пароль на коннект к базе

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено Serjio22 , 28-Янв-05 01:35 
Скорее всего у тебя не установлен phpmysql

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Dimmus , 12-Окт-05 09:03 
Скрипт не очень актуален, ибо БД забивается ненужным хламом, допустим один и тот же IP дублируется, меняя разве что размер байтов. Можно ли как-нибудь суммировать эти значения? Иначе с такими темпами за неделю пару Гб будет весить.

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено yarmol , 12-Окт-05 12:10 
>Иначе с такими темпами за неделю пару
>Гб будет весить.
Так и есть :), и даже не пару гиг, а много больше.
Но я считаю трафик совсем по другому, а результаты этого скрипта использую для решения "спорных" вопросов "да я вощще в интернете не был!", а в таких случаях, очень полезны полные урлы с размером файлов.
Данные больше месяца не хранятся, прибиваются. Спорные вопросы длинной в месяц бывают ОЧЕНЬ редко.

Кстати, то что ты сделал в своем скрипте, ИМХО, значительно проще, быстрее, и правильней сделать в том же mysqlе. Из подробной базы, в твою, агрегированную, потом из подробной удалить.



"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Dimmus , 12-Окт-05 10:26 
Лично я сделал так:
--------------------------------------------------
write:
--------------------------------------------------
#! /bin/sh

#
#write log
#

#copy squid log

cp /var/log/squid/access.log /tmp/squid.log
>/var/log/squid/access.log

#count ip,bytes
cat /tmp/squid.log | awk '{print $3}'| sort -u > /tmp/ips
for i in `cat /tmp/ips` ; do
echo -n "$i "
grep -w $i /tmp/squid.log > /tmp/t1
cat /tmp/t1 | awk 'BEGIN {a=0} {a=a+$2} END{print a}'
done

#clear
>/tmp/squid.log
rm -f /tmp/ips
rm -f /tmp/t1
--------------------------------------------------
run
--------------------------------------------------
#! /bin/sh

#
#run log > mysql
#

#run write
/root/.sh/sq-my/write > /tmp/run.log
#insert time
awk '{print $1,$2,strftime("%s")}' /tmp/run.log > /tmp/squid.log
rm -f /tmp/run.log
#into mysql
awk '{print "INSERT INTO squid (ip,bytes,time) VALUES(\""$1"\","$2",from_unixtime("$3"));"};' < /tmp/squid.log |  mysql -h host -D squid -u squid --password=pass >/dev/null 2>&1
rm -f /tmp/squid.log


"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Dimmus , 16-Окт-05 20:39 
были и такие идеи, но быстрее было накатать скриптик, чем еще с крондом возиться :)

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено dualp2 , 24-Апр-06 14:43 
Ссылка дохлая! Ищите тут! http://ftp.citkit.ru/pub/sourceforge/s/sq/
Была взята squid2db-1.1
Демон регулярно падал из за неэкранированных апострофов и неправильной размерности переменной blob.
Устранено...Пока стоит...Могу выслать, кому надо...

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Иван , 10-Май-06 11:12 
а MYSAR уже не рулит?

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено rook , 27-Окт-06 15:00 
Я может что-то не догоняю, но как вы считаете траффик фтп,... Я в логах сквида этого не нашел

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено yarmol , 28-Окт-06 11:58 
>Я может что-то не догоняю, но как вы считаете траффик фтп,... Я
>в логах сквида этого не нашел

Никак :)
Точнее, не "никак", а весь трафик, я например, считаю совсем другими способами, а логи сквида занесенные в мускул очень помогают при общении с клиентами.
Ну или, если понадобился какой-то анализ http трафика - сколько туда, да сколько сюда...


"Подсчет трафика проходящего через Squid используя MySQL (squid traffic"
Отправлено Александр , 29-Дек-06 12:27 
А SAMS использовать совместно с контролером домена нельзя ? 8) отличный тарификатор  + ACL + правила для юзеров

"Подсчет трафика проходящего через Squid используя MySQL (squ..."
Отправлено DoBeRmAn8482 , 10-Янв-08 17:05 
Почитал статью, понравилось, притом что от меня как раз попросили такую вещь, только у меня возникла одна загвоздка у меня отдельно действующий сервер Mysql, как ему передать данный из сквидовского access.log'a???



"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Dimarik , 28-Мрт-08 06:37 
A как из url еще и имя сервера вырвать?

"Подсчет трафика проходящего через Squid используя MySQL (squid traffic mysql isp billing linux)"
Отправлено Eternal , 23-Май-08 07:34 
MySAR + + подробная статистика за месяц
http://kb.etarea.com/2008/05/21/mysar-подробная-статистика-за-месяц/