Назад | Перейти на главную страницу

ошибка logrotate с добавлением даты

У меня есть сервер Apache (2.2), работающий в RHEL 6.3, со следующей конфигурацией logrotate:

# Rule for Apache logs
/var/opt/apache/logs/*log {
    compress
    missingok
    notifempty
    daily
    rotate 15
    create 0640 www_adm apache
    olddir /var/opt/apache/logs/rotated
    sharedscripts
    postrotate
         /bin/kill -HUP `cat /var/opt/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

# Rule for Apache-Application logs
/var/opt/apache/logs/*/*log /var/opt/apache/logs/*/*/*log {
    daily
    copytruncate
    compress
    missingok
    dateext
    dateformat .%Y-%m-%d
    rotate 90
    create 0640 www_adm apache
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/opt/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

Задание cron выполняется ежедневно без проблем, но ротация файла работает не так, как ожидалось. Я получаю файлы с добавлением нескольких дат вместо одной в день:

mysite-ssl.2015-10-31.2015-11-02.2015-11-04.2015-11-06.2015-11-08.log
mysite-ssl.2015-10-31.2015-11-02.2015-11-04.2015-11-06.2015-11-08.2015-11-10.log
mysite-ssl.error.2015-10-21.2015-10-23.2015-10-25.2015-10-27.2015-10-29.2015-10-31.2015-11-02.2015-11-04.2015-11-06.2015-11-08.log
mysite-ssl.error.2015-10-21.2015-10-23.2015-10-25.2015-10-27.2015-10-29.2015-10-31.2015-11-02.2015-11-04.2015-11-06.2015-11-08.2015-11-10.log
mysite-ssl.2015-11-10.log.gz
mysite.2015-11-10.log.gz
mysite-ssl.2015-10-24.2015-10-26.2015-10-28.2015-10-30.2015-11-01.2015-11-03.2015-11-05.2015-11-07.2015-11-09.log
mysite-ssl.2015-10-24.2015-10-26.2015-10-28.2015-10-30.2015-11-01.2015-11-03.2015-11-05.2015-11-07.2015-11-09.2015-11-11.log
mysite-ssl.2015-11-11.log.gz
mysite.2015-11-11.log.gz

Также кажется, что logrotate больше ничего не делает в файлах журнала (см. Head / tail):

[user@host mysite]$ head mysite.log ; echo "----------------" ; tail mysite.log
145.245.114.238 - - [11/Nov/2015:03:25:30 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [11/Nov/2015:03:28:07 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [11/Nov/2015:03:30:03 +0100] "HEAD / HTTP/1.1" 301 -
145.245.114.237 - - [11/Nov/2015:03:31:15 +0100] "HEAD / HTTP/1.1" 301 -
145.245.114.237 - - [11/Nov/2015:03:31:15 +0100] "HEAD /mysite HTTP/1.1" 302 -
145.245.114.238 - - [11/Nov/2015:03:31:15 +0100] "HEAD /mysite/index.html HTTP/1.1" 200 -
145.245.114.238 - - [11/Nov/2015:03:31:36 +0100] "GET / HTTP/1.1" 301 306
145.245.114.237 - - [11/Nov/2015:03:31:48 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [11/Nov/2015:03:35:28 +0100] "GET / HTTP/1.1" 301 306
145.245.114.237 - - [11/Nov/2015:03:38:07 +0100] "GET / HTTP/1.1" 301 306
----------------
145.245.114.238 - - [07/Jan/2016:15:41:36 +0100] "GET / HTTP/1.1" 301 306
145.245.114.237 - - [07/Jan/2016:15:44:12 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [07/Jan/2016:15:47:41 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [07/Jan/2016:15:47:57 +0100] "GET / HTTP/1.1" 301 306
145.245.114.237 - - [07/Jan/2016:15:51:36 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [07/Jan/2016:15:54:12 +0100] "GET / HTTP/1.1" 301 306
145.245.114.238 - - [07/Jan/2016:15:55:04 +0100] "HEAD / HTTP/1.1" 301 -
145.245.114.237 - - [07/Jan/2016:15:57:41 +0100] "GET / HTTP/1.1" 301 306
145.245.114.237 - - [07/Jan/2016:15:57:57 +0100] "GET / HTTP/1.1" 301 306
145.245.114.237 - - [07/Jan/2016:16:01:36 +0100] "GET / HTTP/1.1" 301 306

Есть идеи, что могло быть причиной такого поведения? В моей конфигурации чего-то не хватает?

Первая строка второго блока в конфигурации logrotate соответствует файлам, заканчивающимся на "log".

/var/opt/apache/logs/*/*log /var/opt/apache/logs/*/*/*log {

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

Однако вы меняете расширение файла в строке:

extension .log

Это заставит ваши файлы снова повернуться. Вам необходимо удалить эту строку, чтобы предотвратить изменение расширения, или переместите повернутые файлы в другую папку, используя olddir как вы это делаете в первом блоке конфигурации.

Вы переносите старые файлы журналов в файлы с датой. и .log добавлен в конец.

Шаблон, соответствующий тому, какие файлы следует повернуть, следовательно, также соответствует старым файлам журнала, которые снова меняются (поэтому добавляется новая дата, и снова .log прилагается).

Вам необходимо убедиться, что старые уже повернутые файлы журналов больше не повернуты. Вы уже используете отдельный каталог для ротационных файлов журнала, но он соответствует /var/opt/apache/logs/*/*log узор во второй строфе.

Обычно ротационные файлы журналов имеют дату в самом конце, чтобы предотвратить такие проблемы.