Анализатор логов squid - sarg
Создано: 02-06-2009 15:55:00 изменено: 02-06-2009 15:56:34  Метки: log sarg squid sysadmin
Начальство любит позакручивать гайки. Иногда ставят задачу посмотреть кто куда лазил - что качал, чем занимался на рабочем месте. Поскольку ручную работу никто не люблит - поставим sarg.


aptitude install sarg

Поскольку данная программа не умеет читать запакованные логи, да и просто ротированные, доведем напильником:

rm -f /etc/cron.*/sarg*
cat >/etc/cron.d/sarg <<EOF
#sarg                                                                                                                         
25 0    * * *   root    if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports daily ; fi                               
47 0    * * 7   root    if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports weekly ; fi                              
52 0    1 * *   root    if [ -x /usr/sbin/sarg-reports ]; then /usr/sbin/sarg-reports monthly ; fi 
EOF
sed -i 's|daily|montly|' /etc/logrotate.d/squid

Теперь отчеты будут генерироваться с полуночи до часу, до ротирования логов.
Правим в /etc/squid/sarg-reports.conf переменную HTMLOUT= она указывает куда складывать отчеты.
Если внутри сети есть днс-сервер, то имеет смысл в /etc/squid/sarg.conf проставить опцию resolve_ip yes
Еще надо настроить apache, например при HTMLOUT=/var/www/sarg там должно быть что-то вроде:

Alias /sarg /var/www/sarg

<DirectoryMatch /var/www/sarg/>
        Options -Indexes -FollowSymlinks
        DirectoryIndex index.html
        AllowOverride None
        Order deny,allow
        Allow from 192.168.0.13 # direktor
        Allow from 192.168.0.7 # me
</DirectoryMatch>

для проверки можно запустить:

sarg-reports today

При наличии сегодняшнего лога сквида в /var/www/sarg сгенерируется отчет, и будет доступен по адресу http://server_ip/sarg/

P.S. со временем отчеты начинают занимать довольно много места, особенно при большой сети и активности в данной сети, поэтому:

cat /etc/cron.montly/sarg-old-clean
#! /bin/bash
# вычистить дневные и недельные отчеты сарга за предпоследний месяц
if [ $UID -ne 0 ] ; then
    echo 'run this script whith SUDO'
    exit 1
fi

. /etc/squid/sarg-reports.conf

mnth=$(LANG=C date +%Y%b --date="2 month ago")
rm -fr $HTMLOUT/Daily/$mnth*
sed -i "/$mnth/d" $HTMLOUT/Daily/index.html
rm -fr $HTMLOUT/Weekly/$mnth*
sed -i "/$mnth/d" $HTMLOUT/Weekly/index.html
1705 просмотров комментировать