Sarg - парсер логов Squid

Аватар пользователя Raven2000

Сегодня будем разбирать логи Squid и присваивать тариф "Имеемый" человеку стоящему на первом месте в статусе "Загружено мегабайт".

Установка банальна и тривиальна.

# make search name=sarg
Port:   sarg-2.2.7.1_2
Path:   /usr/ports/www/sarg
Info:   Squid log analyzer and HTML report generator
Maint:  garga@FreeBSD.org
B-deps: expat-2.0.1_1 fontconfig-2.8.0,1 freetype2-2.4.2 gd-2.0.35_7,1
R-deps: expat-2.0.1_1 fontconfig-2.8.0,1 freetype2-2.4.2 gd-2.0.35_7,1
WWW:    _http://sarg.sourceforge.net/
 
# cd /usr/ports/www/sarg
# make config
 
Options for sarg 2.2.7.1_2
[X] GD  Enable GD support
 
# make install clean

Настроим по вкусу Sarg я укажу свои настройки вы можете поэкспериментировать:

# cd /usr/local/etc/sarg/
# cp sarg.conf.default sarg.conf
# cat sarg.conf
 
# Укажем нужный язык 
language Russian_koi8
 
# Указываем путь до логов Squid
access_log /var/log/squid/access.log
 
# Включаем построение графиков
graphs yes
graph_days_bytes_bar_color orange
 
title "Squid User Access Reports"
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 12px
header_font_size 12px
title_font_size 14px
text_bgcolor lavender
logo_text_color #000000
image_size 80 45
 
temporary_dir /tmp
 
# Куда складывать отчеты.
output_dir /usr/local/www/sarg/
 
# Преобразовывать IP в имя по DNS. При большом парке машин 
# или проблема с DNS рекомендую отключать эту опцию.
resolve_ip yes
 
# Сортировка юзеров в выводе по USER CONNECT BYTES TIME
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
 
date_format e
remove_temp_files yes
index yes
overwrite_report yes
topsites_num 100
index_sort_order D
max_elapsed 28800000
 
# Разнообразные типы отчетов, включим все.
report_type topusers topsites sites_users users_sites
date_time denied auth_failures site_user_time_date downloads
 
date_time_by elap
charset Koi8-r
 
show_sarg_info no
 
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,md
b,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

Добавляем задачу в Cron каждую пятницу в 23.00 парсим логи и каждый месяц прибираем Squid

# SARG
0       23      *       *       5       /usr/local/bin/sarg > /dev/null 2>&1
 
# Moved Old Squid Log
0       0       1       *       *       /root/scripts/squid_log_moved  > /dev/null 2>&1

В Cron можно и так записывать >>форум<<

Скрипт очисти логов Squid:

# cat /scripts/squid_log_moved
 
#!/bin/sh
#
current_year=`date '+%Y'`
current_month=`date '+%m'`
current_date=`date '+%d'`
## Создаем директорию для логов
log_dir="/var/squid/old_logs/${current_year}/${current_month}"
mkdir -p ${log_dir} 2>/dev/null
 
## Очищаем логи SQUID
cat /var/squid/logs/access.log > /tmp/log.tmp
cat /dev/null > /var/squid/logs/access.log
gzip -c /tmp/log.tmp  > ${log_dir}/squid.log.gz
#gzip -c ${log_dir}/squid.log  > ${log_dir}/squid.log.gz
#rm -R /usr/local/www/sarg/*

В вашей директории технического сайта сделайте символическую ссылку.

% cd /home/serv/www/data
# ln -s /usr/local/www/sarg/ sarg
# ll
total 4
lrwxr-xr-x  1 root  serv    20B  5 авг 11:32 glpi -> /usr/local/www/glpi/
lrwxr-xr-x  1 root  serv    26B  5 авг 11:17 phpMyAdmin -> /usr/local/www/phpMyAdmin/
-rw-r--r--  1 serv  serv    21B  5 авг 10:51 phpinfo.php
lrwxr-xr-x  1 root  serv    27B  5 авг 12:23 phpldapadmin -> /usr/local/www/phpldapadmin
lrwxr-xr-x  1 root  serv    20B 17 авг 13:16 sarg -> /usr/local/www/sarg/
drwxr-xr-x  3 serv  serv   512B 12 авг 13:19 sqstat

Анализируем логи, заходим на технический сайт и смотрим:

# sarg
SARG: Records in file: 8717, reading: 100.00%
SARG: Отчет успешно сгенерирован в: /usr/local/www/sarg//01Feb2011-01Feb2011

Общая история:

Кто тут интернет активный? 192.168.0.56 самый работящий!

Офис должен работать и заниматься делом! Вот как тут и надо бы выписать ему премию. =)

Дополнительные материалы
Ваша оценка: Нет Средняя: 5 (2 голоса)

Для ротации логов сквида

Для ротации логов сквида делается простой запрос вида squid -k rotate. Сквид сам все сделает - обрежет как надо.

RE:Для ротации логов сквида

Не дописал просто

20    0    1    *    *    /usr/local/sbin/squid -k rotate > /dev/null 2>&1
*/15    *    *    *    *    /usr/local/etc/sarg.cron m > /dev/null 2>&1
10    0    1    *    *    /usr/local/etc/sarg.cron lm > /dev/null 2>&1
 
cat /usr/local/etc/sarg.cron
#!/bin/sh
BIN=/usr/local/bin/sarg
LOGFILE=/var/log/squid/access.log
OUTDIR=/var/www/sarg
#CONF=/usr/local/etc/sarg/sarg.current
CONF=/usr/local/etc/sarg/sarg.conf
case "$1" in
m)
  $BIN -d `date -v1d +%d/%m/%Y`-`date +%d/%m/%Y` -f $CONF -l $LOGFILE.0
-l $LOGFILE -o $OUTDIR
 
  ;;
lm)
  $BIN -d `date -v1d -v-1m +%d/%m/%Y`-`date -v1d -v-1d +%d/%m/%Y` -l
$LOGFILE.0 -l $LOGFILE -o $OUTDIR/monthly
  ;;
*)
  echo "Usage: `basename $0` {dwm|lm}" >&2
  ;;
esac
 
exit 0
 
 
 
20    0    1    *    *    /usr/local/sbin/squid -k rotate > /dev/null 2>&1
50     *     *     *     *     /usr/local/etc/sarg-d.sh > /dev/null 2>&1
15    0    */1    *    *    /usr/local/etc/sarg-w.sh > /dev/null 2>&1
20     0     *     */1     *     /usr/local/etc/sarg-m.sh > /dev/null 2>&1
 
cat /usr/local/etc/sarg-d.sh
#!/bin/sh
/usr/local/bin/sarg -d `date "+%d/%m/%Y"`
 
cat /usr/local/etc/sarg-w.sh
#!/bin/sh
/usr/local/bin/sarg -d `date -v-7d "+%d/%m/%Y"`-`date "+%d/%m/%Y"`
 
cat /usr/local/etc/sarg-m.sh
#!/bin/sh
/usr/local/bin/sarg -d `date -v-1m "+%d/%m/%Y"`-`date "+%d/%m/%Y"`

Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

А еще советую посмотреть на

А еще советую посмотреть на SAMS - это намного удобней в плане мониторинга и лимитирования.

RE:А еще советую посмотреть на

ИМХО для любителей ГУИ да

Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

можно указать несколько -l и

можно указать несколько -l и передать несколько лог файлов, в том числе и сжатые, а ротацией пусть занимается что там есть уже

cat /etc/cron.daily/0sarg

#!/bin/sh
 
 
TODAY=$(date --date "1 day ago" +%d/%m/%Y)
 
 
LOG_FILES=
if [ -s /var/log/squid3/access.log.3.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.3.gz"
fi
if [ -s /var/log/squid3/access.log.2.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.2.gz"
fi
if [ -s /var/log/squid3/access.log.1.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.1.gz"
fi
if [ -s /var/log/squid3/access.log.3 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.3"
fi
if [ -s /var/log/squid3/access.log.2 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.2"
fi
if [ -s /var/log/squid3/access.log.1 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.1"
fi
if [ -s /var/log/squid3/access.log ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log"
fi
 
 
export LC_ALL=C
/usr/bin/sarg $LOG_FILES -f /etc/squid3/sarg.conf \
    -o /var/www/sarg/Daily -z -d $TODAY  >> /var/log/sarg/daily 2>&1

cat /etc/cron.weekly/0sarg

#!/bin/bash
 
TODAY=$(date +%d/%m/%Y)
 
LASTWEEK=$(date --date "1 week ago" +%d/%m/%Y)
 
LOG_FILES=
if [ -s /var/log/squid3/access.log.5.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.5.gz"
fi
if [ -s /var/log/squid3/access.log.4.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.4.gz"
fi
if [ -s /var/log/squid3/access.log.3.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.3.gz"
fi
if [ -s /var/log/squid3/access.log.2.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.2.gz"
fi
if [ -s /var/log/squid3/access.log.1.gz ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.1.gz"
fi
if [ -s /var/log/squid3/access.log.5 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.5"
fi
if [ -s /var/log/squid3/access.log.4 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.4"
fi
if [ -s /var/log/squid3/access.log.3 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.3"
fi
if [ -s /var/log/squid3/access.log.2 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.2"
fi
if [ -s /var/log/squid3/access.log.1 ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.1"
fi
if [ -s /var/log/squid3/access.log ]; then
        LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log"
fi
 
 
export LC_ALL=C
/usr/bin/sarg $LOG_FILES -f /etc/squid3/sarg.conf \
    -o /var/www/sarg/Weekly -z -d $LASTWEEK-$TODAY >> /var/log/sarg/weekly 2>&1

3-й в том же духе.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <em> <b> <u> <i> <strong> <font> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike> <caption>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <c>, <cpp>, <mysql>, <perl>, <php>, <python>, <text>. The supported tag styles are: <foo>, [foo].
  • Glossary terms will be automatically marked with links to their descriptions. If there are certain phrases or sections of text that should be excluded from glossary marking and linking, use the special markup, [no-glossary] ... [/no-glossary]. Additionally, these HTML elements will not be scanned: a, abbr, acronym, code, pre.

Подробнее о форматировании

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
12 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer