Como configurar e gerenciar rotação de log usando Logrotate no Linux

Como configurar e gerenciar rotação de log usando Logrotate no Linux

Um dos diretórios mais interessantes (e talvez um dos mais importantes também) em um sistema Linux é /var/log. De acordo com o padrão de hierarquia do sistema de arquivos, a atividade da maioria dos serviços em execução no sistema é gravada em um arquivo dentro deste diretório ou um de seus subdiretos.

Esses arquivos são conhecidos como Histórico e são a chave para examinar como o sistema está operando (e como ele se comportou no passado). Histórico também são a primeira fonte de informação em que administradores e engenheiros parecem enquanto solucionam problemas.

Se olharmos para o conteúdo de /var/log com um CENTOS/RHEL/FEDORA e Debian/Ubuntu (para variedade) Veremos os seguintes arquivos de log e subdiretos.

Observe que o resultado pode ser um pouco diferente no seu caso, dependendo dos serviços em execução em seu (s) sistema (s) e do tempo em que eles estão executando.

Em Rhel/Centos e Fedora

# ls /var /log 
Arquivos de log e diretórios sob o CentOS 7

Em Debian e Ubuntu

# ls /var /log 
Arquivos de log e diretórios no Debian 8

Nos dois casos, podemos observar que alguns dos nomes de toras terminam como esperado em "registro", enquanto outros são renomeados usando uma data (por exemplo, Maillog-20160822 sobre CENTOS) ou comprimido (considere Auth.registro.2.gz e mysql.registro.1.gz sobre Debian).

Este não é um comportamento padrão com base na distribuição escolhida, mas pode ser alterada à vontade usando as diretrizes nos arquivos de configuração, como veremos neste artigo.

Se os logs fossem mantidos para sempre, acabariam enchendo o sistema de arquivos onde /var/log reside. Para evitar isso, o administrador do sistema pode usar um bom utilitário chamado Logrotate Para limpar os troncos de forma periódica.

Em poucas palavras, Logrotate irá renomear ou comprimir o registro principal quando uma condição for atendida (mais sobre isso em um minuto) para que o próximo evento seja gravado em um arquivo vazio.

Além disso, ele removerá "velho" arquivos de log e manterá os mais recentes. Claro, decidimos o que "velho" significa e com que frequência queremos que o Logrotate limpe os troncos para nós.

Instalando o Logrotato no Linux

Para instalar Logrotate, Basta usar seu gerenciador de pacotes:

---------- Em Debian e Ubuntu ---------- # Aptitude Update && Aptitude Instale Logrotate ---------- No CentOS, Rhel e Fedora ---------- # yum update && yum instalar Logrotate 

Vale a pena observar que o arquivo de configuração (/etc/Logrotate.conf) pode indicar que outras configurações mais específicas podem ser colocadas no indivíduo .conf arquivos dentro /etc/Logrotate.d.

Leia sugerido: Gerenciar logs do sistema (configurar, girar e importar para o banco de dados) usando Logrotate

Este será o caso se e somente se houver a seguinte linha e não for comentada:

Incluir /etc /Logrotate.d 

Vamos continuar com essa abordagem, pois ela nos ajudará a manter as coisas em ordem e usar o DebiaN Caixa para os seguintes exemplos.

Configurar Logrotato no Linux

Sendo uma ferramenta muito versátil, o Logrotate fornece muitas diretivas para nos ajudar a configurar quando e como os logs serão girados e o que deve acontecer logo depois.

Vamos inserir o seguinte conteúdo em /etc/Logrotate.D/Apache2.conf (Observe que provavelmente você terá que criar esse arquivo) e examinar cada linha para indicar seu objetivo:

Apache2.conf
/var/log/apache2/* girar semanalmente 3 tamanho 10m compressa atrasoCompress 

A primeira linha indica que as diretivas dentro do bloco se aplicam a todos os toras dentro /var/log/apache2:

  • semanalmente significa que a ferramenta tentará girar os troncos semanalmente. Outros valores possíveis são diários e mensais.
  • Gire 3 indica que apenas 3 troncos girados devem ser mantidos. Assim, o arquivo mais antigo será removido na quarta corrida subsequente.
  • tamanho = 10m Define o tamanho mínimo para a rotação ocorrer para 10m. Em outras palavras, cada log não será girado até atingir 10 MB.
  • comprimir e toutCompress são usados ​​para dizer que todos os troncos girados, com exceção do mais recente, devem ser comprimidos.

Vamos executar uma corrida a seco para ver o que o Logrotate faria se fosse realmente executado agora. Use o -d Opção seguida pelo arquivo de configuração (você pode realmente executar o Logrotate omitindo esta opção):

# logrotate -d /etc /logrotate.D/Apache2.conf 

Os resultados são mostrados abaixo:

Gire os logs do Apache com Logrotate

Em vez de comprimir os troncos, poderíamos renomeá -los após o data Quando eles foram girados. Para fazer isso, usaremos o DATEEXT diretivo. Se nosso formato de data for diferente do padrão AAA AYYYMMDD, Podemos especificar isso usando Formato de data.

Leia sugerido: Instalar 'On top' para monitorar a atividade de registro dos processos do sistema Linux

Observe que podemos até impedir que a rotação aconteça se o tronco estiver vazio com notifempty. Além disso, vamos dizer ao Logrotate para enviar o log rotacionado para o administrador do sistema ([Email protegido] Nesse caso) para sua referência (isso exigirá que um servidor de email seja configurado, que está fora do escopo deste artigo).

Se você deseja receber e -mails sobre Logrotate, pode configurar o servidor de correio postfix, como mostrado aqui: instale o servidor de correio postfix

Desta vez vamos usar /etc/Logrotate.d/lula.conf para girar apenas /var/log/squid/acesso.registro:

lula.conf
/var/log/squid/acesso.LOG Monthly Criar 0644 root root girar 5 tamanho = 1m dateext dataFormat -%d%m%y Notifempty Mail [email protegido] 

Como podemos ver na imagem abaixo, este tronco não precisou ser girado. No entanto, quando a condição de tamanho é atendida (tamanho = 1m), o tronco girado será renomeado acesso.Log-25082020 (Se o tronco foi girado 25 de agosto de 2020) e o log principal (acesso.registro) será recriado com permissões de acesso definidas para 0644 e com raiz Como proprietário e proprietário do grupo.

Finalmente, quando o número de troncos finalmente chega 6, o tronco mais antigo será enviado para [Email protegido].

Girar toras de lula com Logrotate

Agora, vamos supor que você queira executar um comando personalizado quando a rotação ocorrer. Para fazer isso, coloque a linha com esse comando entre as diretivas póstrotate e endcript.

Por exemplo, vamos supor que queremos enviar um email para root quando qualquer um dos troncos dentro /var/log/myService é girado. Vamos adicionar as linhas em vermelho a /etc/Logrotate.d/lula.conf:

lula.conf
/var/log/myService/* Monthly Crie 0644 root root girate 5 tamanho = 1m eco póstrotato "Uma rotação ocorreu."| Mail Root Endscript  

Por último, mas não menos importante, é importante observar que as opções presentes em /etc/Logrotate.d/*.conf Substitua os do arquivo de configuração principal em caso de conflitos.

Logrotate e Cron

Por padrão, a instalação do Logrotate cria um arquivo crontab dentro /etc/cron.diário nomeado Logrotate. Como é o caso dos outros arquivos Crontab dentro deste diretório, ele será executado diariamente a partir de 6:25 Se Anacron não estiver instalado.

Leia sugerido: 11 exemplos de tarefas de agendamento cron no Linux

Caso contrário, a execução começará por aí 7:35. Para verificar, observe a linha que contém Cron.diário em ambos /etc/crontab ou /etc/anacrontab.

Resumo

Em um sistema que gera vários logs, a administração de tais arquivos pode ser bastante simplificada usando Logrotate. Como explicamos neste artigo, ele girará automaticamente, compactará, removerá e envie logs de correio periodicamente ou quando o arquivo atingir um determinado tamanho.

Apenas certifique -se de que esteja definido para ser executado como um trabalho de Cron e o Logrotate tornará as coisas muito mais fáceis para você. Para mais detalhes, consulte a página do homem.

Você tem alguma dúvida ou sugestão sobre este artigo? Sinta -se à vontade para nos informar usando o formulário de comentário abaixo.