Обработка логов squid при помощи sarg во FreeBSD

squid + sarg или "у нас все ходы записаны!"

Оригинал статьи находится на http://ksimute.trancom.ru/squid-sarg.shtml

Исходная задача

Cделать обработчик логов сквида c web интерфейсом, поставить под крон и забыть о нем на пару лет :).

Обработчик - sarg

Хранить логи лучше всего на прокси, чтобы небыло проблем с переносом на удаленные файловые системы. Можно хранить где угодно smb,nfs,на ftp выкладывать, rsync через ssh тонель гонять, вариантов масса. Но чем сложнее решение, тем больше вероятность сбоя.

Лучше поднять web сервер на проксе без всяких mod-ов (т.к. логи хранятся в plain html), прикрыть фаерволом, access листами, и обновлять по мере

обнаружения уязвимостей.

Формат странички логов:

Подключений - кол-во обращений к сквиду с этого ip

Байт - кол-во переданных байт с прокси.

% Байт - процент от общего трафика сквида в байтах, приходящихся на этого абонента.

IN-CACHE-OUT IN - процент байт, которые клиент получил из кэша OUT-процент байт,

которые были стянуты снаружи. только чего-то результирующий процент

не сходится :). Буду думать. в доке нет. Возможно они просто берут

среднее арифметическое, а не считают сложный процент.

(не знаю, как алгоритм реализован).

Общее время - сколько пользователь в онлайне прообитал миллисек - Сколько всего миллисекунд потратил сквид на обработку его запросов.

Самое интересное поле это IN-CACHE-OUT поле IN это эффективность прокси.

Можно уменьшить его на пару процентов и получаем реальную эффективность.

P.S. Эффективность моей прокси выходит около 8%. По миру сейчас 4-10 %.

Задумайтесь, за сколько прокси себя окупит и есть ли смысл ее вообще устанавливать для экономии трафика.

Разумеется, для контроля контента, резки банеров и блокировки нежелательных сайтов прокси - идеальное решение.

Если Вы ISP, то прокси нужен только для экономии трафика (считаем эффективность, считаем деньги, считаем окупаемость...).

Приступим:

логи сквида хранятся в /var/log/squid/

sarg парсит access.log.x

Скрипт:

proxy ~ # cat /usr/local/bin/sarg_gen.sh

#!/bin/bash

#generate current month report

PATH=$PATH:/usr/sbin

#squid logs

LOG_DIR=/var/log/squid

#current month(jun,feb.jul....... etc) need for grep

CUR_MONTH=`date +%b`

#-- last day of month i.e. 28 30 31

function end_month {

typeset ym=$1 y m ld

(( y = ym / 100 ))

(( m = ym % 100 ))

for ld in $(cal $m $y); do :; done

echo $ld

}

DOM=`end_month `date +%Y%m``

#------

FROM=`date +01/\%m/\%Y`

TO=`date +$DOM/\%m/\%Y`

#files to parse all log files changed in current month

FILES=`ls -l $LOG_DIR/access.log* | grep $CUR_MONTH | awk {'print $9'}`

#generate string 4 sarg aka -l/var/log/squid/access.log

#-l/var/log/squid/access.log.0 -l/var/log/squid/access.log.x

for str in $FILES

do

res=" -l $str"$res

done

sarg $res -d $FROM-$TO

Конфиг sarg можно посмотреть здесь http://ksimute.trancom.ru/squid/sarg.conf

Важные таги в конфигурационном файле:

output_dir /var/www/localhost/htdocs/squid-reports

Без комментариев.

overwrite_report yes

Перезаписывать отчет, если отчет с указанной датой уже существует.

show_successful_message no

Выводит "Successful report generated on dir" at end of process.

Алогоритм работы:

1. Узнаем текущую дату (месяц и год) 1-е число дописываем.

proxy ~ # date +01/\%m/\%Y

01/08/2006

2. Узнаем кол-во дней в месяце (последнее число)

3. Ищем лог файлы, которые были изменены в текущем месяце.

4. передаем sarg-у список файлов с указанием генерировать логи с 1 по последнее число

Ставим скрипт исполняться под cron:

proxy ~ #crontab -l

10 1 * * * /usr/local/bin/sarg_gen.sh

в 1 10 логи парсить самое время :) т.к. загрузка во время парсинга на

model name : Intel(R) Pentium(R) 4 CPU 2.80GHz

bogomips : 5521.40

составляет

proxy ~ # uptime

17:36:00 up 105 days, 19:58, 2 users, load average: 2.38, 1.37, 0.62

Время парсинга логов прокси обрабатывающей 50 Гб трафика в месяц около 20 минут.

Пусть скрипт ночью шуршит, пока пользователи спят :).

Размер результата (за месяц.) - 800 Mb html файлов!

Логи дороже места и если работаете в сфере ISP, их желательно хранить года 2-3. Десятки раз логи трафика помогали в разрешении "патовых" ситуаций с абонентами.

Обновлено: 12.03.2015