FreeBSD ротация логов squid

Как то тут на днях столкнулся с проблемой, SAMS как оказалось не отображает статистику за последнии 6 месяцев. Начав разбираться что с ним случилось выяснил что файл логов squid -а (access.log) был большого размера ~ 20 GB. Немного почитав и поизучав с чем это может быть связано, пришел к выводу что для SAMS файл лога слишком большой и записи из лога не переносяться в базу. Значит надо сделать так чтобы лог не разрастался до таких размеров т.е. настроить ротацию логов sqiud -а. Ну так приступим. Для начала я проверил есть ли в системе logrotate. Выполнив команду whereis logrotate получил в ответ /usr/ports/sysutils/logrotate что указывало на то что logrotate в системе нет. Значит придеться установить. Выполняем следующую последовательность команд:

[bsd][/root]# cd /usr/ports/sysutils/logrotate/
[bsd][/usr/ports/sysutils/logrotate]# make
[bsd][/usr/ports/sysutils/logrotate]# make install

После окончания установки logrotate перейдем к настройки программы. Файл настроек logrotate находиться в папке /usr/local/etc/. Файл настроек называется logroate.conf.sample. Переименуем файл путем копирования его в файл logrotate.conf:

[bsd][/usr/ports/sysutils/logrotate]# cd /usr/local/etc/
[bsd][/usr/local/etc]# ls
apache php.ini-dist slsh.rc
logrotate.conf.sample php.ini-recommended squid
pam.d rc.d supfile
php sams.conf xml2Conf.sh
php.conf sams.conf.sample xsltConf.sh
php.ini sams.core
[bsd][/usr/local/etc]# cp logrotate.conf.sample logrotate.conf
[bsd][/usr/local/etc]#

Приступим к настройке. Вид стандартного файла такой:

# see «man logrotate» for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
compress
# RPM packages drop log rotation information into this directory
include /usr/local/etc/logrotate.d
/var/log/lastlog {
monthly
rotate 1
}
# system-specific logs may be configured here

Основной лог squid -а это файл access.log который находиться в папке /usr/local/squid/logs. Соотвественно добавляем в файл конфигурации следующие строки:

/usr/local/squid/logs/access.log { #– ротацию какого лог файла будем выполнять
monthly #– как часто выполнять ротацию лога – раз в месяц
rotate 5 #– сколько предыдущих версий хранить
copytruncate
nocompress
notifempty
missingok
sharedscripts
postrotate #– команда которую необходимо выполнить после ротации
/usr/local/etc/rc.d/squid restart#– сама команда переконфигурирования squid -а
endscript
}
Ну вот вроде и все про ротацию логов.

P.S.: Еще надо настроить запуск logrotate по расписанию, для этого идем в папку /etc и редактируем файл crontab добавляя туда следующую запись:
# Run logrotate every first day of the month
0 0 1 * * root /usr/local/sbin/logrotate -f /usr/local/etc/logrotate.conf

Обновлено: 12.03.2015