Страница 1 из 1

SQUID, ротация логов и их архивирование

Добавлено: 2009-01-19 11:21:56
Neman
Здравствуйте. Подскажите, как можно реализовать резервное копирование логов, чтобы ротацией их не перезаписывать все? Хочется, чтобы ротация шла раз в сутки, а вот логи хранились за все время, в отдельной папке, мало ли что вылезет спустя некоторое время. Можно конечно в конфиге сквида поставить ротация например 1000 файлов, но как-то не очень это красиво будет :).

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-01-19 12:28:55
InventoR
Вот такая вот хрень крутится у меня уже давно с год точно.
Надо конечно переделать. но суть поймете.
Работает каждый день в 23.55

Код: Выделить всё


12:22 root@mx [squid]#cat squid_ro.sh
#!/bin/sh
###Переменые###
#Директория сквида
squid=/usr/local/sbin/squid
#Формат времени для создания папок
MY_DATE=$(/bin/date +%Y-%m-%d)
MY_DT=$(/bin/date +%Y-%m)
#Директория хранения логов
logs=/usr/local/squid/logs
#Директория в которую копируются логи
logback=/usr/local/squid/logbackup
#Где находится архиватор tar
tar=/usr/bin/tar
#Где находится архиватор gzip
gzip=/usr/bin/gzip

###Основная работа###
#Создать директории для хранения логов.
mkdir $logback
#Ротация логов
$squid -k rotate
#Задержка на ротацию логов squida из-за большого обьема
sleep 10

#Переносим и зажимаем логи доступа
mv $logs/access.log.0 $logback/$MY_DATE.ac.log
sleep 10
mkdir -p $logback/_$MY_DT
cat $logback/$MY_DATE.ac.log >> $logback/_$MY_DT/$MY_DT.txt &&
$gzip -9 $logback/$MY_DATE.ac.log
mkdir $logback/$MY_DATE
mv $logback/$MY_DATE.ac.log.gz $logback/$MY_DATE/$MY_DATE.ac.log.gz

#Переносим и зажимаем логи кэша
mv $logs/cache.log.0 $logback/$MY_DATE.ca.log
sleep 10
$gzip -9 $logback/$MY_DATE.ca.log
mkdir $logback/$MY_DATE
mv $logback/$MY_DATE.ca.log.gz $logback/$MY_DATE/$MY_DATE.ca.log.gz

#Переносим и зажимаем логи истории
mv $logs/store.log.0 $logback/$MY_DATE.st.log
sleep 10
$gzip -9 $logback/$MY_DATE.st.log
mkdir $logback/$MY_DATE
mv $logback/$MY_DATE.st.log.gz $logback/$MY_DATE/$MY_DATE.st.log.gz
12:22 root@mx [squid]#

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-01-19 12:54:12
tetsio
Универсальная ротация логов (может и не очень к месту, но может пригодиться):

в /etc/newsyslog.conf добавить строку

Код: Выделить всё

/var/log/squid.log 644 7 * @T00 C /var/run/squid.pid
и перезагрузить newsyslog. Сохраняет файлы логов там же, просто меняет имя. (пример /var/log/messages)

P.S. подправил пути файлов (может тоже неправильно, просто у меня сквида небыло)

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-01-19 13:13:53
InventoR
лучше ротировать самим сквидом, потому что ротировать надо не один лог.
А человек в задании ставил на отдельную папку и все такое..

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-01-19 14:19:56
tetsio
InventoR писал(а):лучше ротировать самим сквидом, потому что ротировать надо не один лог.
А человек в задании ставил на отдельную папку и все такое..
Я конечно понимаю Вам религия не позволяет использовать встроенные мощные средства для своих задач, но другие то тут причем?
советую почитать

Код: Выделить всё

man newsyslog
man newsyslog.conf
в итоге:

Код: Выделить всё

/var/log/access.log 644 7 * @T00 CJ /var/run/squid.pid 30
/var/log/cache.log 644 7 * @T00 CJ /var/run/squid.pid 30
/var/log/store.log 644 7 * @T00 CJ /var/run/squid.pid 30
30 - это сигнал USR1 (вроде 30)
J - это указывает на то что старые логи должны сжиматься с использованием bzip2 (для gzip - Z)

мой бэкапный демон берет логи (сжатые) по своему расписанию.

P.S. Использование newsyslog - это еще и управление всеми логами из одного места

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-01-19 17:06:13
snorlov
Может быть архивировать логи сквида это и хорошо, но по-моему лучше хранить обработку их... Правда в этом случае будут нюансы...

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-01-20 4:49:13
Neman
Спасибо за ответы и особенно за приведенный скрипт, про syslog я пока не такой спец :(, но зато есть над чем подумать.

Обработка логов хранится в lightsquid, но хочется и сами логи хранить.

Re: SQUID, ротация логов и их архивирование

Добавлено: 2009-10-02 16:59:41
a1ds
Переписал Скрипт =)
Спасибо всем

Архивируем, а затем удаляем логи старше чем 31 день

В squid.conf Выставить

logfile_rotate 1

На всякий случай =)

Запуск по расписанию

FreeBSD 7.0-RELEASE

Код: Выделить всё


#!/bin/sh

log_file=/var/log/local/squid_log_rotate.log

squid_log_mask=/usr/local/squid/logs/*.0
backup_path=/tmp/backup/squid
remove_age=31

echo "[START `date`]" > $log_file

echo "Rotate squid logs" >> $log_file
/usr/local/sbin/squid -k rotate
sleep 10

for squid_files in `ls -d $squid_log_mask`
    do

     dir_name=`basename -s .log.0 $squid_files`
     echo "Create dir's" >> $log_file
     mkdir -p $backup_path/$dir_name >> $log_file 2>&1
     echo "Archivate squid logs" >> $log_file
     /usr/bin/tar -cvjf $backup_path/$dir_name/`date "+%Y_%m_%d_%H_%M"`.tar.bz2 $squid_files >> $log_file 2>&1
     echo "Remove squid logs" >> $log_file
     rm -v $squid_files >> $log_file 2>&1

     for backup_files in `ls -d $backup_path/$dir_name/*`
        do

         cur_date=`date +%s`
         file_date=`/usr/bin/stat -f %m $backup_files`
         file_age=`echo "($cur_date-$file_date)/60/60/24" | /usr/bin/bc`

            if [ $file_age -gt $remove_age ]
                then

                echo "Remove old logs" >> $log_file
                rm -v $backup_files >> $log_file 2>&1

            fi

        done

    done

echo "[END `date`]" >> $log_file