Header Ads

Como configurar o Logrotate no Linux (para evitar que seu servidor fique sem espaço)

A maioria dos serviços no Linux irá gerar arquivos de log, geralmente armazenados em / var / log /. Esses são apenas arquivos de texto simples, mas podem ficar muito, muito grandes — ao ponto em que você pode executar o servidor sem espaço.

O que o Logrotate faz?

Logrotate ajuda a gerenciar arquivos de log e evita que eles se acumulem. Ele irá arquivar automaticamente o arquivo de log atual, criar um novo vazio e excluir os arquivos realmente antigos depois de girar algumas vezes. O tempo padrão pode ser definido muito alto (o padrão do nginx é um ano de registros), então você pode ter problemas se não editar seus arquivos de configuração.

O tamanho dos seus arquivos varia de acordo com o serviço, e você deve configurar o logrotate de acordo. Se você quiser saber quanto espaço cada serviço está ocupando com os registros, você pode usar o comando du:

 du -h / var / log / | classificar -hr 

Quase todos os arquivos de registro estarão em / var / log /, então du totalizará todos os arquivos de registro e os exibirá em uma boa lista (cortesia de sort -hr para & # 8216; legível por humanos &’ ):

Isso mostra apenas os diretórios, então você precisará usar ls -sh para encontrar os tamanhos dos arquivos individuais.

Publicidade

Normalmente, coisas como servidores da web (apache2, nginx, etc.) e outros aplicativos que recebem muita interação irão gerar muitos arquivos de log, embora o tamanho exato dependerá de quantos dados eles realmente representam registro no disco.

Instalando o Logrotate (se você ainda não o tiver)

Por padrão, você provavelmente não precisará fazer nada para configurar o logrotate, já que ele é instalado por padrão em muitas distros e serviços que geram muitos arquivos de log (nginx, apache, etc) geralmente terá a configuração logrotate pré-configurada.

Você pode verificar se o logrotate está instalado com:

 que logrotam 

Ou instale-o a partir do gerenciador de pacotes da sua distro, se não for. Para sistemas baseados em Debian como o Ubuntu, isso seria:

 sudo apt-get install logrotate 

Logrotate irá instalar automaticamente sua configuração global padrão, mas se você instalou após instalar o seu servidor web, você pode ter que reinstalar o seu servidor web se a configuração padrão para esse serviço não é gerado.

Como funciona o Logrotate

Embora o logrotate seja pré-configurado para serviços populares como nginx e apache2, você pode querer definir a configuração manualmente ou editar a configuração padrão.

A configuração global para logrotate é armazenada em /etc/logrotate. conf, mas você substituirá grande parte dela por arquivos de configuração por aplicativo, armazenados em / etc /logrotate.d/ diretório. Vamos dar uma olhada na configuração padrão do nginx em /etc/logrotate.d/nginx, que você pode usar como modelo para adicionar novos aplicativos ao logrotate:

 / var / log / nginx / *. log {semanal missingok rotate 52 compactar delaycompress notifempty criar 0640 www-data adm sharedscripts prerotate if [-d /etc/logrotate.d/httpd-prerotate]; então \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate > / dev / null 2 ​​> & 1 endscript} 

Publicidade

A primeira linha inicia o bloco e diz ao logrotate quais arquivos procurar. O curinga * . log corresponderá a todos os arquivos que terminam com a extensão . log na pasta de log nginx. Você também pode especificar vários diretórios aqui para incluí-los com a mesma configuração.

semanalmente irá alternar os logs uma vez por semana. Se desejar girá-los com base no tamanho, você pode usar o tamanho 25M para girá-los quando atingirem um certo limite, 25 megabytes neste exemplo.

O missingok impedirá que o logrotate gere erros se um arquivo de registro for excluído por qualquer coisa que não seja o logrotate.

Girar 52 manterá 52 arquivos de log diferentes. Nesse caso, como ele girará uma vez por semana, o logrotate manterá um ano inteiro de arquivos de log antes de excluir os antigos. Você pode alterar isso para girar 4 para manter apenas um mês de arquivos de registro.

compactar irá compactar arquivos de log antigos para economizar espaço. Isso causa problemas com alguns aplicativos que continuam gravando no arquivo de log enquanto o logrotate ainda está fazendo seu trabalho, então você pode adicionar o sinalizador delaycompress para deixar um buffer de um arquivo de log antigo antes de compactar.

notifempty é outro sinalizador de verificação para certificar-se de que o logrotate está sendo executado apenas se novos arquivos de log estiverem sendo gravados. O sinalizador de criação cria esses novos arquivos de log, com permissões específicas. A sintaxe é criar [modo] [proprietário] [grupo].

Publicidade

Você vai querer ter certeza de que eles correspondem aos seus arquivos de registro atuais configurados, o que você pode fazer com ls -la:

Observe que você &’ precisará converter o modo para octal, então -rw-r ----- torna-se 0640. O proprietário do nginx aqui é www-data , e o grupo é adm.

sharedscripts especifica que os ganchos de pré-rotação e pós-rotação serão executados apenas uma vez por rotação, e não uma vez para cada arquivo de log girado. Esses ganchos são scripts que você pode chamar antes e depois da rotação. Por padrão, eles executarão alguns scripts para configurar o nginx para que os arquivos de log sejam trocados. Se o serviço que você está configurando não puder carregar novos arquivos de log, você desejará interrompê-lo e reiniciá-lo nesses ganchos. O gancho não precisa interagir com o serviço; por exemplo, você pode usar o gancho de pré-rotação para fazer backup de seus arquivos de log no AWS S3 com s3cmd antes de serem excluídos.

O Logrotate gerencia a execução em si, então você não precisa se preocupar em iniciar o serviço na inicialização ou configurar um cron job. Basta colocar os arquivos de configuração de cada aplicativo em /etc/logrotate.d/ e nunca mais se preocupar com os registros.

Nenhum comentário