
Сегодня будем разбирать логи 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
Скрипт очисти логов 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 самый работящий!

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

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
Для ротации логов сквида
Для ротации логов сквида делается простой запрос вида 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>&1cat /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>&13-й в том же духе.