Настройка ротации логов Squid в Ubuntu 14.04 LTS

Развернутый мною Squid по данной статье, успешно работает. Но столкнулся с такой ситуацией что сразу не понял почему логи Squid хранятся крайне мало и для детального анализа трафика проходящего в компании не достаточно.

По умолчанию ротация логов в Squid выставлена всего на три дня, поэтому яразобрался как увеличить срок жизни логов и выставить ротацию логов в период одного месяца. В моем случае этого достаточно.

Осуществлять ротацию логов мы будем с помощью системной службы logrotate, входящей в состав Ubuntu Server 14.04.

Заметка: Ротация логов осуществляет периодическую замену старых логов новыми, помещая устаревшие данные в архив или просто удаляя их. В зависимости от настроек архив логов может храниться как в сжатом, так и в несжатом виде и иметь необходимую глубину.

Основные настройки logrotate хранятся в /etc/logrotate.conf, настройки отдельных сервисов (в нашем случае Squid) хранятся в /etc/logrotate.d/squid, и эти настройки имеют приоритет над logrotate.conf. Сама служба вызывается раз в сутки через планировщик cron.

Нас интересует ротация логов только двух файлов access.log и cache.log. Для файла access.log мы будем раз в месяц выполнять ротацию, а для файла cache.log раз в неделю. Откроем для редактирования файл конфигурации

sudo nano /etc/logrotate.d/squid

Приведем файл настройки ротации логов для Squid в вид который нам нужно.

# Ежемесячная ротация лог-файла accesss.log
 /var/log/squid/access.log {
# daily
# weekly
monthly
 compress
 delaycompress
 rotate 2
 missingok
 nocreate
 sharedscripts
 postrotate
 test ! -e /var/run/squid.pid || test ! -x /usr/sbin/squid || /usr/sbin/squid -$
 endscript
 }
 # Еженедельная ротация лог-файла cache.log
 /var/log/squid/cache.log {
# daily
weekly
# monthly
 compress
 delaycompress
 rotate 1
 missingok
 nocreate
 sharedscripts
 postrotate
 test ! -e /var/run/squid.pid || test ! -x /usr/sbin/squid || /usr/sbin/squid -$
 endscript
 }

Разберем структуру написанного выше подробнее. Первая строка указывает путь к обрабатываемым файлам логов. В данном случае обрабатываются файлы access.log и cache.log в соответствии с указанными ниже опциями:

daily - задает ежедневную ротацию
weekly - задает еженедельную ротацию
monthly - задает ежемесячную ротацию
compress - указывает сжимать архивные логи, обратная опция nocompress.
delaycompress - не сжимать текущий лог до следующей ротации, обычно используется в тех случаях, когда в лог происходит непрерывная запись.
rotate 2 - количество ротаций до удаления файла, в данном случае будут храниться два архива.
missingok - при отсутствии файла журнала указывает продолжить работу без вывода сообщения об ошибке.
nocreate - не создавать новый файл лога.

sharedscripts - используется для секций prerotate и postrotate, данная опция указывает исполнять скрипты из этих секций один раз перед и после ротации всех логов, в противном случае скрипты будут исполнены перед и после ротации каждого лога.

Секция postrotate проверяет, запущен ли <strong>squid</strong> и запускает ротацию логов самим прокси сервером.

Дополнение: Еще возможна секция prerotate, она добавляется автоматически при установке анализатора логов SARG и в случае если файл /usr/sbin/sarg-reports существует и является исполняемым, запускает его. В моем случае формирование отчетов в Sarg запускается по cron, поэтому я исключил его из конфигурации.

Т.к. мы ротацию будем осуществлять исключительно службой logrotate, то поправим конфигурацию squid

sudo nano /etc/squid/squid.conf

Находим строку logfile_rotate 6 (или добавляем ее в случае ее отсутствия). И приводим к виду

logfile_rotate 0

Подсказка: где 6 — число ротаций, Squid хранит несколько экземпляров логов, каждый файл лога будет обрабатываться logrotate. Число 0 указывает на отключение выполнении ротации файлов силами Squid

Сохраняем Ctrl+O и закрываем Ctrl+X файл.

Перезапускаем Squid, новые настройки вступят в силу. Вот так легко и просто настраивается ротация логов.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

3 + 6 =