Linux - Serviço logrotate e Rotação de Logs
Se o sistema grava muitos arquivos de logs, encontrar a informação necessária pode se tornar bastante problemático. Para resolver este problema, é possível configurar o serviço logrotate. O serviço logrotate é executado como uma tarefa cron uma vez por dia e verifica os arquivos de configuração para determinar se é necessário realizar a rotação. Nestes arquivos de configuração, você pode definir quando um novo arquivo de log deve ser aberto e o que deve acontecer com o arquivo antigo: por exemplo, se ele deve ser compactado ou simplesmente deletado e, se for compactado, quantas versões do arquivo antigo devem ser mantidas.
O serviço logrotate trabalha com dois tipos diferentes de arquivos de configuração. O arquivo principal de configuração é /etc/logrotate.conf. Este arquivo define as configurações gerais de como o logrotate deve executar suas tarefas:
programicio@Programicio:~$ cat /etc/logrotate.conf # veja "man logrotate" para mais detalhes # opções globais não afetam diretivas de inclusão precedentes # rotaciona arquivos de log semanalmente weekly # usa o grupo adm por padrão, já que este é o grupo proprietário # de /var/log/. su root adm # mantém 4 semanas de logs antigos rotate 4 # cria novos arquivos de log (vazios) após rotacionar os antigos create # usa a data como sufixo do arquivo rotacionado #dateext # descomente esta linha se quiser que seus arquivos de log sejam compactados #compress # pacotes colocam informações de rotação de logs neste diretório include /etc/logrotate.d # logs específicos do sistema também podem ser configurados aqui.
- weekly: indica que os arquivos de log devem ser criados semanalmente.
- rotate 4: garante a manutenção de quatro versões antigas do arquivo. Se esta opção não for usada, os arquivos antigos são deletados.
- create: o arquivo antigo é salvo com um novo nome e um novo arquivo é criado.
- compress: compacta os arquivos de logs antigos.
- include: adiciona ao arquivo de configuração a configuração de arquivos e pastas especificados. Por padrão, inclui o conteúdo do diretório- /etc/logrotate.d. Neste diretório existem arquivos que definem como tratar alguns arquivos de logs específicos.
O diretório /etc/logrotate.d contém configurações de gerenciamento de logs específicas para vários serviços. Por exemplo:
programicio@Programicio:~$ ls -l /etc/logrotate.d total 68 -rw-r--r-- 1 root root 120 Jul 7 2023 alternatives -rw-r--r-- 1 root root 397 Jul 21 2023 apache2 -rw-r--r-- 1 root root 126 Oct 9 16:45 apport -rw-r--r-- 1 root root 173 Aug 2 2023 apt -rw-r--r-- 1 root root 91 Mar 24 2023 bootlog -rw-r--r-- 1 root root 130 Oct 14 2019 btmp -rw-r--r-- 1 root root 181 Mar 26 2023 cups-daemon -rw-r--r-- 1 root root 112 Jul 7 2023 dpkg -rw-r--r-- 1 root root 94 Aug 18 2022 ppp -rw-r--r-- 1 root root 248 Sep 4 2023 rsyslog -rw-r--r-- 1 root root 132 Sep 10 2020 sane-utils -rw-r--r-- 1 root root 174 May 18 2022 sssd-common -rw-r--r-- 1 root root 209 May 16 2023 ufw -rw-r--r-- 1 root root 145 Oct 14 2019 wtmp
Por exemplo, vejamos o arquivo /etc/logrotate.d/rsyslog, que define a configuração para os logs do serviço rsyslog:
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}Aqui vemos que as regras de rotação de logs são definidas para um conjunto de arquivos. As opções utilizadas incluem weekly e rotate 4, além de outras específicas:
- notifempty: não rotaciona o arquivo de log se estiver vazio.
- missingok: se o arquivo de log não existir, passa para o próximo sem gerar mensagem de erro.
- postrotate: define comandos que devem ser executados após o- logrotateprocessar o arquivo.
- endscript: define o fim do bloco de comandos.
É importante notar que é possível criar arquivos logrotate para arquivos que não são arquivos de log e configurá-los da mesma forma para rotação.