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

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Neman
ефрейтор
Сообщения: 63
Зарегистрирован: 2008-12-03 11:21:07

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

Непрочитанное сообщение Neman » 2009-01-19 11:21:56

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

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

Непрочитанное сообщение InventoR » 2009-01-19 12:28:55

Вот такая вот хрень крутится у меня уже давно с год точно.
Надо конечно переделать. но суть поймете.
Работает каждый день в 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]#
ну вот и сказочке конец, кто слушал, тот молодец.

tetsio
рядовой
Сообщения: 19
Зарегистрирован: 2009-01-19 5:41:30

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

Непрочитанное сообщение tetsio » 2009-01-19 12:54:12

Универсальная ротация логов (может и не очень к месту, но может пригодиться):

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

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

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

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

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

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

Непрочитанное сообщение InventoR » 2009-01-19 13:13:53

лучше ротировать самим сквидом, потому что ротировать надо не один лог.
А человек в задании ставил на отдельную папку и все такое..
ну вот и сказочке конец, кто слушал, тот молодец.

tetsio
рядовой
Сообщения: 19
Зарегистрирован: 2009-01-19 5:41:30

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

Непрочитанное сообщение tetsio » 2009-01-19 14:19:56

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 - это еще и управление всеми логами из одного места

snorlov
подполковник
Сообщения: 3923
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

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

Непрочитанное сообщение snorlov » 2009-01-19 17:06:13

Может быть архивировать логи сквида это и хорошо, но по-моему лучше хранить обработку их... Правда в этом случае будут нюансы...

Neman
ефрейтор
Сообщения: 63
Зарегистрирован: 2008-12-03 11:21:07

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

Непрочитанное сообщение Neman » 2009-01-20 4:49:13

Спасибо за ответы и особенно за приведенный скрипт, про syslog я пока не такой спец :(, но зато есть над чем подумать.

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

Аватара пользователя
a1ds
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-04-19 14:41:44
Откуда: Отовсюда

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

Непрочитанное сообщение a1ds » 2009-10-02 16:59:41

Переписал Скрипт =)
Спасибо всем

Архивируем, а затем удаляем логи старше чем 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