Rotação de Log NginX

9

Estou atendendo a alguns domínios diferentes através do NginX no mesmo servidor e cada um deles registra em seu próprio arquivo. Preciso configurar um script para girar, compactar esses arquivos e adicioná-lo ao cron.

Sei que tenho que fazer algo para que o NginX abra um novo arquivo de log depois de mover o antigo. Alguém pode me dar o procedimento para rotacionar com segurança os arquivos de log do nginx? Acho que preciso usar o logrotate, como faço para configurá-lo?

Sistema:

  • Servidor Ubuntu 9.04 ed.
  • nginx / 0.7.61
John F. Miller
fonte

Respostas:

18

Tornou-se uma espécie de semi-padrão informal entre os daemons Unix, que liberam e / ou rotacionam seus arquivos de log, quando você envia um sinal de interrupção ( SIGHUP). O Nginx não segue esta convenção à risca, mas responde ao USR1sinal da mesma maneira, conforme documentado no site do Nginx, sob o título Log Rotation .

Então, você pode tentar algo como

kill -s USR1 `pidof nginx`
Jörg W Mittag
fonte
1
de outra maneira, "pkill -USR1 -n -x nginx"
Palani
11

logrotating logs nginx:

# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
 endscript 
}

/opt/nginx/logs/error.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate  
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}

log de produção de trilhos de rotação:

/home/app_user/apps/railsapp/log/production.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}

fonte
Em qual arquivo devo colocar isso?
Emil Stenström
se estiver usando o Ubuntu, você deve colocar estas linhas de código para este arquivo: /etc/logrotate.d/nginx. e entrará em vigor.
Siwei Shen 申思维
3

Se você usar logrotate, adicione o seguinte (com localização correta) na seção nginx do logrotate.conf:

postrotate
  kill -s USR1 `cat /location/of/nginx.pid`
endscript

De acordo com a página do manual logrotate (8)

Lamnk
fonte