A rotação do log Nginx não parece estar funcionando corretamente

5

Eu descobri que minha partição montada como /var estava cheia. Ao rastrear o uso do disco, descobri que meu arquivo de log do Nginx é enorme e não parece estar gravando no arquivo correto.

ls -ltr em /var/log/nginx me dá isso:

total 17170060
-rw-r----- 1 nobody adm   112315467 Apr 28  2015 access.log.14.gz
-rw-r----- 1 nobody adm    70554720 Apr 29  2015 access.log.13.gz
-rw-r----- 1 nobody adm    68145066 Apr 30  2015 access.log.12.gz
-rw-r----- 1 nobody adm    77951766 Dec  7 06:25 access.log.10.gz
-rw-r----- 1 nobody adm    81764378 Dec  8 06:25 access.log.9.gz
-rw-r----- 1 nobody adm    75397419 Dec  9 06:25 access.log.8.gz
-rw-r----- 1 nobody adm    68738862 Dec 10 06:25 access.log.7.gz
-rw-r----- 1 nobody adm    73802613 Dec 11 06:25 access.log.6.gz
-rw-r----- 1 nobody adm    66144521 Dec 12 06:25 access.log.5.gz
-rw-r----- 1 nobody adm    65385900 Dec 13 06:25 access.log.4.gz
-rw-r----- 1 nobody adm    68117105 Dec 14 06:25 access.log.3.gz
-rw-r----- 1 nobody adm    69441057 Dec 15 06:25 access.log.2.gz
-rw-r----- 1 nobody adm           0 Jan 20 06:25 access.log
-rw-r----- 1 nobody adm     7762196 Feb  1 09:45 error.log
-rw-r----- 1 nobody adm 16676558550 Feb  1 10:24 access.log.1

Como você pode ver, access.log.1 é o arquivo que está sendo gravado.

Este é o meu script /etc/logrotate.d/nginx :

/var/log/nginx/*.log {
        daily
        size 1G
        missingok
        rotate 10
        compress
        delaycompress
        notifempty
        create 0640 nobody adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 'cat /var/run/nginx.pid'
        endscript
}

As linhas relevantes de /etc/nginx/nginx.conf :

pid /var/run/nginx.pid;
...snip...
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

UPDATE

Quando chequei esta manhã, o mesmo problema estava ocorrendo. Eu executei service nginx reload da linha de comando e ele liberou o arquivo antigo e começou a escrever para o novo. Com base em este post e minhas observações, substituí

[ ! -f /var/run/nginx.pid ] || kill -USR1 'cat /var/run/nginx.pid\'

com

service nginx reload >/dev/null 2>&1

no script /etc/logrotate.d/nginx .

Vou relatar se isso foi bem sucedido.

    
por Sonny 01.02.2016 / 16:31

1 resposta

5

DIA 1

Depois de fazer a alteração no meu script /etc/logrotate.d/nginx como mencionei no OP ...

/var/log/nginx/*.log {
        daily
        size 1G
        missingok
        rotate 10
        compress
        delaycompress
        notifempty
        create 0640 nobody adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                service nginx reload >/dev/null 2>&1
        endscript
}

... o access.log foi renomeado para access.log.1 , liberado e, em seguida, começou a gravar no novo access.log . Não, no entanto, gzip access.log.1 .

DIA DOIS

O arquivo access.log.1 tornou-se access.log.2 e foi compactado com gzip. Eu estou supondo que a diretiva delaycompress é o que deixa o arquivo de log descompactado até o dia seguinte. ls -ltr me dá essa saída:

total 3344744
-rw-r----- 1 nobody adm   68738862 Dec 10 06:25 access.log.10.gz
-rw-r----- 1 nobody adm   73802613 Dec 11 06:25 access.log.9.gz
-rw-r----- 1 nobody adm   66144521 Dec 12 06:25 access.log.8.gz
-rw-r----- 1 nobody adm   65385900 Dec 13 06:25 access.log.7.gz
-rw-r----- 1 nobody adm   68117105 Dec 14 06:25 access.log.6.gz
-rw-r----- 1 nobody adm   69441057 Dec 15 06:25 access.log.5.gz
-rw-r----- 1 nobody adm  748290175 Feb  1 10:50 access.log.4.gz
-rw-r----- 1 nobody adm   58575628 Feb  2 08:32 access.log.3.gz
-rw-r----- 1 nobody adm   85585414 Feb  3 06:25 access.log.2.gz
-rw-r----- 1 nobody adm    8779427 Feb  4 02:39 error.log
-rw-r----- 1 nobody adm 2023509844 Feb  4 06:25 access.log.1
-rw-r----- 1 nobody adm   88608092 Feb  4 09:17 access.log
    
por 03.02.2016 / 16:50