Conselhos sobre arquivos de log do apache

1

Eu tenho um pequeno VPS que um amigo e eu usamos para hospedar alguns sites. Somos relativamente inexperientes no gerenciamento de servidores e não temos certeza de uma maneira eficaz de lidar com os logs gerados pelo Apache.

Cada site gera seu próprio arquivo de log em uma estrutura de diretórios semelhante à abaixo:

/var/www/{user]/{sitename}/logs

O problema é que alguns deles estão ficando bem grandes (300mb). Estou pensando em instalar logrotate para ajudar a lidar com esse problema de tamanho. No entanto, não tenho certeza de uma maneira eficaz de lidar com os registros, pois esses sites não são críticos e, portanto, os registros, na minha opinião, não são tão importantes.

Quais são as práticas recomendadas para trabalhar com registros? e quais são seus conselhos / opiniões sobre tais assuntos?

    
por Malachi 21.04.2012 / 21:21

2 respostas

2

Logrotate é definitivamente o caminho a percorrer. Como os logs estão crescendo em tamanho, você pode usar o logrotate para compactar significativamente os logs. Assumindo que você esteja usando o apache, modifique o seguinte

vi /etc/logrotate.d/httpd

Você quer que ele seja parecido com isto:

"/var/log/httpd/site1/*.log" "/var/log/httpd/site2/*.log" {
weekly
rotate 7
compress
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
  • Semanalmente : os arquivos de log são girados se o dia da semana atual for menor que o dia da última rotação ou se tiver passado mais de uma semana desde a última rotação.
  • Rotate 7 : Os arquivos de log são girados 52 vezes antes de serem removidos ou enviados para o endereço especificado em uma diretiva de email. Se a contagem for 0, as versões antigas serão removidas, em vez de rotacionadas.
  • Compactar : Versões antigas de arquivos de log são compactadas com gzip para economizar espaço em disco.
  • Missingok : Se o arquivo de log estiver faltando, vá para o próximo sem emitir uma mensagem de erro.
  • Notifempty : não gira o log se estiver vazio
  • Sharedscripts : Normalmente, os scripts prerotate e postrotate são executados para cada log que é rotacionado, o que significa que um único script pode ser executado várias vezes para entradas de arquivos de log que correspondem a vários arquivos. Se sharedscript for especificado, os scripts serão executados apenas uma vez, independentemente de quantos logs correspondam ao padrão curinga. No entanto, se nenhum dos logs no padrão exigir a rotação, os scripts não serão executados.
  • Postrotate / sbin / service httpd reload > / dev / null 2 > / dev / null || verdadeiro
  • Endscript : As linhas entre postrotate e endscript (ambas devem aparecer nas linhas por si mesmas) são executadas depois que o arquivo de log é rotacionado. Essas diretivas só podem aparecer dentro de uma definição de arquivo de log.

EDIT: Como Lucas mencionou: Outra coisa que você pode querer verificar é por que seus logs estão sendo preenchidos . Isso pode indicar algum código ruim, ou talvez alguém tentando fazer algo malicioso, por meio de formulários, etc.

Se precisar de mais informações sobre as opções, use

man logrotate

    
por 21.04.2012 / 21:59
1

Eu realmente uso o logrotate, seus 300 MB irão se transformar em apenas 8 MB após a compactação. Você também pode criar scripts para que possa fazer backup dos logs compactados para um servidor remoto (ou alguma outra unidade de backup) de vez em quando e, em seguida, excluir esses logs.

Se os sites não são críticos, você pode descartar os logs depois de um tempo (cabe a você decidir quando acha que eles não são mais úteis).

Outra coisa que você pode querer verificar é por que seus logs estão sendo preenchidos. Pode haver alguns avisos em seu código que podem ser corrigidos facilmente ou são apenas informações de depuração desnecessárias.

    
por 21.04.2012 / 21:47