logrotate не удаляет старые файлы - глобальный сбой

Я озадачен этим. Любая помощь высоко ценится...!

Журналы в /var/log/HOSTS/cacheflow_access_log/ настроены для архивирования в /var/log/HOSTS/archived/cacheflow_access_log/ и сжатия. Это довольно большие файлы, поэтому их следует хранить только в течение 1 дня, чтобы Splunk или Sawmill могли суммировать их содержимое.

Журналы вращаются и сжимаются без проблем, но старые сжатые журналы не удаляются. Подробный вывод logrotate предполагает, что это проблема с glob. Он ищет в директории live, а не в директории архива? Если так, как я могу это исправить? Если нет, то WTF продолжается?!

Logrotate conf:

# logrotate configuration for syslog files

# global options
   rotate 1
   missingok
   daily
   compress
   ifempty
   dateformat -%Y%m%d
   dateext

---SNIP---

/var/log/HOSTS/cacheflow_access_log/* {
   daily
   # only keep 1 day of cacheflow as they're massive files
   maxage 1
   rotate 1
   olddir /var/log/HOSTS/archived/cacheflow_access_log
   postrotate
      invoke-rc.d proftpd restart 2>/dev/null >/dev/null || true
   endscript
}

Logrotate подробный вывод:

considering log /var/log/HOSTS/cacheflow_access_log/CF_5000_20120803_092129.log
log needs rotating
rotating log /var/log/HOSTS/cacheflow_access_log/CF_5000_20120802_120326.log, log >rotateCount is 1
Converted ' -%Y%m%d' -> '-%Y%m%d'
dateext suffix '-20120803'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/log/HOSTS/cacheflow_access_log/CF_5000_20120802_120326.log to /var/log/HOSTS/archived/cacheflow_access_log/CF_5000_20120802_120326.log-20120803
running postrotate script

Запуск Debian Squeeze 2.6.32-5-686-bigmem

Я знаю, что в этой конфигурации есть ненужные дубликаты (например, вращение 1 не нужно повторять) - это было просто для того, чтобы убедиться, что проблема не была причиной этой проблемы.

Спасибо!

1 ответ

Возможно, это происходит сбой, потому что файл журнала уже содержит дату в имени, и поэтому это новое имя каждый день. Обычно я вижу файлы журналов со статическим именем, и logrotate добавляет расширение, чтобы сделать их уникальными. logrotate может искать старые файлы в каталоге архива с именем CF_5000_20120802_120326.log, чтобы удалить их. Он не находит ничего, потому что базовое имя каждого файла уникально.

Для будущих читателей эта строка находится в logrotate.conf(5) документы:

Пожалуйста, используйте подстановочные знаки с осторожностью. Если вы укажете *, logrotateповернет все файлы, включая ранее повернутые. Способ обойти это - использовать olddir директива или более точный подстановочный знак (например, *.log)

Другие вопросы по тегам