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

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

2 ответа

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

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

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

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

extension .log

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

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

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

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

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

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