Como configurar e gerenciar rotação de log usando Logrotate no Linux
- 885
- 230
- Leroy Lebsack
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 /logArquivos de log e diretórios sob o CentOS 7
Em Debian e Ubuntu
# ls /var /logArquivos 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.
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 LogrotateEm 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.
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 LogrotateAgora, 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 LinuxCaso 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.
- « O que é ext2, ext3 e ext4 e como criar e converter sistemas de arquivos Linux
- Como configurar o endereço IP estático da rede no RHEL/CENTOS 8/7 »