Práticas recomendadas para arquivamento de log do servidor da Web (Linux + Nginx)

2

Eu quero preservar / arquivar todos os meus logs do servidor web, e não ter nenhum deles sendo deletado pelo logrotate. O que seria uma abordagem recomendada para isso? Esta é uma caixa do Linux, rodando o Nginx. Agradecemos antecipadamente.

(Eu preferiria usar o cronolog, mas parece que não vai bem com o Nginx por causa da maneira como o Nginx lida com o registro.)

    
por lackey 03.07.2009 / 02:03

1 resposta

8

Faça isso com logrotate, apenas diga o que você quer ...

/var/log/nginx/*.log {
    daily
    dateext
    missingok
    rotate 7305 # 2 decades
    olddir /var/log/nginx/old
    compress
    delaycompress
    notifempty
    create 644 nginx root
    sharedscripts
    postrotate
      if [ -f /var/run/nginx.pid ]; then
        kill -USR1 'cat /var/run/nginx.pid'
      fi
    endscript
}

Eu não uso o nginx, então usei um exemplo que encontrei para o postrotate ... Se você já tem um script logrotate, comece modificando isso.

Partes principais:

  • "diariamente" significa todos os dias. Você poderia fazer semanalmente ou baseado em tamanho, mas isso não interage tão bem com "dateext".
  • "dateext" significa que dará aos arquivos de log rotacionados um nome baseado na data em vez de um número simples; Dessa forma, não é necessário renomear cada arquivo de log todos os dias e você pode informar a data de um arquivo de log a partir do nome do arquivo
  • "girar 7305" - isso é duas décadas. Mantenha mais ou menos ... logrotate realmente prefere ter algum tipo de aposentadoria, mas você pode configurá-lo ridiculamente alto.
  • "olddir" precisa estar no mesmo sistema de arquivos, mas isso manterá os registros em um diretório separado para que você possa descobrir o que está acontecendo
  • "delaycompress" e "create" ajudam a garantir que ele funcione com softwares que não querem trabalhar com ele
por 03.07.2009 / 03:26