Настройка ротации логов logrotate squid в Linux

Настройка ротации логов logrotate squid в Linux

 

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

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

Cуществлять ротацию логов мы будем с помощью системной службы logrotate, входящей в состав Debian-like систем.

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

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

Нас интересует ротация логов только двух файлов access.log и cache.log. Для файла access.log мы будем раз в месяц выполнять ротацию, а для файла cache.log раз в неделю. Приведем файл конфигурации (/etc/logrotate.d/squid), к виду:

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

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

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

Так как ротацию будем осуществлять исключительно службой logrotate, то файле конфигурации (/etc/squid/squid.conf) squid, указываем:

Перезапускаем прокси-сервер Squid для применения изменений:

Прокрутить вверх