Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  named 9.7.0
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> SARG

SARG - анализатор логов SQUID

Автор: lissyara.


    SARG (Squid Analysis Report Generator - анализатор логов SQUID и генератор отчётов по ним) - малюсенькая программа (чуть больше 300кб) которая анализирует логи прокси сервера SQUID и выдаёт отчёт - кто, куда лазил, сколько соединений, сколько мегов скачано. Строит достаточно красивые графики - по часам суток, дням месяца и другие. Также выдаёт и побочную инфу - процент попадания в кэш (т.е. сколько squid отдал из своего локального кэша, а не из инета). Программа простая до безобразия, но очень функциональная. Траффик ей особо не посчитаешь - т.к. даже если у вас только инет через squid всё равно SARG считает вместе с инфой отданной из кэша - т.е. всегда будет врать в большую сторону. Статистику выдаёт в html-виде, т.е. для человеческого просмотра нужен установленный WWW-сервер на машине (можно просто вытаскивать её к себе на комп, но это тоже не для слабонервных занятие - несколько тысяч мелких файлов, мегов под 300 размером).
   Собираем как обычно - из портов:
/root/>cd /usr/ports/
/usr/ports/>make search name='sarg'

Port:   sarg-2.0.9
Path:   /usr/ports/www/sarg
Info:   Squid log analyzer and HTML report generator
Maint:  mt@primats.org.ua
B-deps: freetype2-2.1.10_1 gd-2.0.33_1,1 jpeg-6b_3 pkgconfig-0.17.2 png-1.2.8_2
R-deps: freetype2-2.1.10_1 gd-2.0.33_1,1 jpeg-6b_3 pkgconfig-0.17.2 png-1.2.8_2
WWW:    http://sarg.sourceforge.net/

   После сборки (подразумевается что апач у Вас уже стоит - т.к. настройки я привожу для отчётов в html и выкладываемых на локальной машине) радактируем его конфиг до такого состояния: /usr/local/etc/sarg/sarg.conf
language Russian_koi8
graphs yes
title "Squid User Access Reports"
temporary_dir /tmp
output_dir /usr/local/www/data/statistic/http_stat
max_elapsed 28800000
charset Koi8-r

- конечно же никто Вам не запрещает поизгаляться над стилем отображения всего этого хозяйства - конфиг снабжён очень подробными комментариями. Запускаем командой
/usr/local/bin/sarg -l /путь_к_логам_сквида/squid.log

У меня логи cron`ом убираются в отдельные файлы - по месяцам, поэтому при запуске этой команды из скрипта путь подставляется автоматом. На слабых машинах работать будет относительно долго (минуты 4 лохматит месячные логи на 300 мегабайт, машина - P-IV 2GHz, причём много времени уходит на запись самих логов - генерится очень много мелких файлов)
   Вот и всё :) Пользуйтесь.



размещено: 2005-09-20,
последнее обновление: 2005-09-20,
автор: lissyara

оценить статью:

Romik, 2005-11-28 в 13:30:21

Еще бы подробнее рассказал о том, как логи cron убирает, цены бы не было =)

lissyara, 2005-11-28 в 14:16:59

Нашёл проблему, прям :)))

#!/bin/sh
#
#
#
current_year=`date '+%Y'`
current_month=`date '+%m'`
current_date=`date '+%d'`
## Sozdayem direktoiyu pod logi
log_dir="/var/old_log/${current_year}/${current_month}"
mkdir -p ${log_dir} 2>/dev/null

## ubiraem logi SQUID
cat /var/log/squid/access.log > /tmp/log.tmp
cat /dev/null > /var/log/squid/access.log
cat /tmp/log.tmp >> ${log_dir}/squid.log


ну и в crontab это хозяйство, раз в 10 минут, скажем.

ALex_hha, 2005-12-28 в 12:02:22

вот скрипты для sarg с линуха

# cat /etc/cron.daily/sarg
#!/bin/bash
exec /usr/bin/sarg \
         -o /var/www/sarg/daily \
         -d "$(date --date "1 day ago" +%d/%m/%Y)"  > /dev/null 2>&1

exit 0

# cat /etc/cron.weekly/sarg
#!/bin/bash
LOG_FILES=
if [[ -s /var/log/squid/access.log.1.gz ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.1.gz"
fi
if [[ -s /var/log/squid/access.log ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log"
fi

# Get yesterday's date
YESTERDAY=$(date --date "1 days ago" +%d/%m/%Y)

# Get one week ago date
WEEKAGO=$(date --date "7 days ago" +%d/%m/%Y)

exec /usr/bin/sarg \
       $LOG_FILES \
       -o /var/www/sarg/weekly \
       -d $WEEKAGO-$YESTERDAY > /dev/null 2>&1

exit 0

# cat /etc/cron.monthly/sarg
#!/bin/bash
LOG_FILES=
if [[ -s /var/log/squid/access.log.4.gz ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.4.gz"
fi
if [[ -s /var/log/squid/access.log.3.gz ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.3.gz"
fi
if [[ -s /var/log/squid/access.log.2.gz ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.2.gz"
fi
if [[ -s /var/log/squid/access.log.1.gz ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.1.gz"
fi
if [[ -s /var/log/squid/access.log ]]; then
   LOG_FILES="$LOG_FILES -l /var/log/squid/access.log"
fi


# Get yesterday's date
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)

# Get 1 month ago date
MONTHAGO=$(date --date "1 month ago" +%d/%m/%Y)

exec /usr/bin/sarg \
       $LOG_FILES \
       -o /var/www/sarg/monthly \
       -d $MONTHAGO-$YESTERDAY  > /dev/null 2>&1

exit 0

Думаю понятно, что daily, weekly, monthly будут выполняться каждый день, раз в неделю и раз в месяц соответственно.

Единственное что, для freebsd надо поменять пути к access.log и sarg.

lissyara, 2006-01-12 в 19:17:07

Ага, а ещё неплохо бы было на shell писать - bash в FreeBSD по-дефолту отсутствует.
Вообще стандарт - shell, остальное - от лукавого.

Владимир, 2006-05-12 в 12:06:04

А во FreeBSD как сделать, чтобы bash работал?

Dilmas, 2006-05-28 в 12:11:40

Я насчёт
"несколько тысяч мелких файлов, мегов под 300 размером)." - это можно исправить, если в файле sarg.conf добавить строчку
"overwrite_report yes"
и файли будут переписываться "друг на друга", тум самым можно реально уменьшить размер генерируемых отчетов.

BAV_Lug, 2006-06-02 в 14:54:43

У меня запускается SARG два раз в день (С перезаписью отчетов). Когда мне надоело удалять вручную отчеты которые он создает, я написал вот такой простенький скриптик

#!/bin/sh

TodayDate='01'`date '+%b%Y'`-`date '+%d%b%Y'`
rm -R /var/www/html/squid-reports/${TodayDate}

и засунул его в cron
Теперь у меня только актуальные на сегодняшний день данные.
Да, вот еще, первого числа каждого месяца, я запускаю ротацию логов squid-а. Sarg запускается последний раз в месяц уже после запуска приведенного выше скрипта. Как следствие у меня остаются отчеты за предыдущий месяц.

BAV_Lug, 2006-06-02 в 14:59:54

Совсем забыл. У приведенного мною скрипта есть один бок. Если, в первый день месяца (например было воскресенье), никто не лазил в инет, то SARG генерит отчет с того дня как была первая запись в логе сквида :( Как с этим боротся (кроме как правкой начальной даты в скрипте) я еще не придумал.

chinga, 2006-09-19 в 9:01:49

Насчет "...траффик ею особо не посчитаешь...": считать можно, надо просто вычесть  
из результата процент попадания в кеш. А прога кульная, особенно для тех, кто сам не хочет писать скрипты для обработки логов.

tormozok, 2007-03-12 в 10:10:32

написал скриптик, чтобы отчеты разбивались по месецам и при смене месяца проходила ротация логов squid
# cat sarg-a.sh
#!/bin/sh
monday=$(date -v-0m +%m)
fname=/usr/local/etc/sarg-a.cash
if [ -f $fname ]
   then
#----------читаем содержимое файла--------
       exec < $fname
       while read ldate
           do
               zmonday=$ldate
           done
#--------сравниваю сегодняшний месяц с месяцем в файле
       if [  $monday -ne $zmonday ]
           then
#               echo 'Даты не совпадают'
#-------------делаем последний отче за прошлый месяц-------
               ddate=$(date -v-1m  +01/%m/%Y)-$(date -v1d -v-0m  -v-1d  +%d/%m/                                              %Y)
               /usr/local/bin/sarg -l /usr/local/squid/logs/access.log -d sarg                                               -d $ddate
                /usr/local/sbin/squid -k rotate
               echo $monday > $fname

           else
               ddate=$(date  +01/%m/%Y)-$(date -v1d -v+1m  -v-1d  +%d/%m/%Y)
               /usr/local/bin/sarg -l /usr/local/squid/logs/access.log -d sarg                                               -d $ddate
#               echo 'Даты  совпадают'
       fi

   else
#--------если файла нет то создадим
       echo $monday > $fname
#       echo "Файл создан"
fi

KaMa-CyTpA, 2007-03-31 в 18:09:29

Настроил - красиво всё и шокоЛАДНО.
Только одна проблема - меня интересуют только домены 2 уровня
images.ucomic.com
poncho.ucomic.com

Они по разным строчкам. А объединять домены никак нельзя?

KsI, 2007-08-22 в 12:55:21

а я тоже писал статью на тему.
Чуть по подробнее, чем у Вас сделал.
лежит здесь.
Если интересно, разместите у себя.
http://ksimute.by.ru/squid-sarg.shtml

ewgen, 2007-10-15 в 14:35:01

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

ewgen, 2007-10-15 в 14:36:50

мелочь конечно все равно а неприятно :)

ewgen, 2007-10-15 в 14:36:58

мелочь конечно все равно а неприятно :)

ewgen, 2007-10-15 в 14:37:33

мелочь конечно все равно а неприятно :)

ewgen, 2007-10-15 в 14:37:40

мелочь конечно все равно а неприятно :)

storm, 2007-11-16 в 4:42:03

давно есть прога лучше - LightSquid

drurus, 2007-12-12 в 3:01:43

to storm
благодарю за наводку, а то так бы и мучался с корой и вебалайзером :)

drurus, 2007-12-12 в 3:25:22

/usr/ports/www/free-sa

List, 2007-12-20 в 16:27:16

Да, сколько мона воровать статьи с других сайтов, менять заголовки, переставлять запятые?

lissyara, 2007-12-20 в 16:31:27

Не балуюсь таким.
И вам не советую.

saper, 2008-01-28 в 0:50:40

Не хотите посмотреть российскую разработку, именуемую Free-SA? Должна быть раз в 7 быстрее SARG-а, ну и некоторые интересные функции там добавлены.

Страница проекта: http://free-sa.sourceforge.net

mak_v_, 2011-08-12 в 11:17:05

Вот обновился, теперь постоянно лезут опшипки
SARG: IP to name resolution (getnameinfo) on IP address 192.168.0.23 failed with error 4 - Non-recoverable failure in name resolution
Хотя все резолвиться
FreeBSD 8.2-RELEASE i386
sarg-2.3.1

pavel_l, 2011-08-24 в 11:13:52

тоже обновился до 2,3,1 и лезет ошибка эта.
добавил в resolv_ip no в sarg.conf до времени устранения бага.
Кстати в этой версии заметил появилась возможность интеграции в AD!

pavel_l, 2011-08-25 в 9:45:02

http://sourceforge.net/tracker/?func=detail&aid=3384496&group_id=68910&atid=522791

по этой ссылке в коментах решение

pavel_l, 2011-08-25 в 9:46:23

For reference I managed to get it compiled using the following steps:
svn co https://sarg.svn.sourceforge.net/svnroot/sarg/branches/v2.3
autoreconf (it produced no output - so I assumed it was fine)
cd /usr/ports/www/sarg
make extract
cd /usr/ports/www/sarg/work/sarg-2.3.1
I deleted everything in here and copied the files I checked out in its
place
I manually applied the diff from /usr/ports/www/sarg/files/Makefile.in to
what is the sarg-2.3.1 dir and then delete it (otherwise it tries to apply
it and fails)
cd /usr/ports/www/sarg/
make
make install

SergeySL, 2011-09-05 в 22:31:52

Выложил статью про интеграцию SARG и AD.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 26 чел.
За последние 30 мин было: 82 человек
За сегодня было
5977 показов,
1151 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1469 секунд
Из них PHP: 40%; SQL: 60%; Число SQL-запросов: 86 шт.
Исходный размер: 149587; Сжатая: 23907