Articles

Configuração do logrotate em Centos 7

Ontem, deparei-me com um problema de baixa capacidade /var/log/ partição. Alguns logs eram demasiado grandes e o logrotate é a ferramenta perfeita para lidar com este problema. É um software concebido para reduzir a quantidade de espaço para cada ficheiro de log que temos. E pode ser feito de algumas maneiras.
Logrotate Description: logrotate foi concebido para facilitar a administração de sistemas que geram grandes números de ficheiros de log. Permite rotação automática, compressão, remoção, e envio de ficheiros de registo. Cada ficheiro de log pode ser tratado diariamente, semanalmente, mensalmente, ou quando cresce demasiado.
Normalmente, o logrotate é executado como um trabalho cron diário. Não modificará um log várias vezes num dia. Assim, em poucas palavras, o logrotate está a reduzir a utilização de espaço em disco por ficheiros log.

Configuração do logrotate

Configuração do logrotate é feita num ficheiro principal: /etc/logrotate.conf e outros ficheiros de configuração específicos do serviço que são armazenados em /etc/logrotate.d/
Então a configuração da amostra principal é:

# see "man logrotate" for details# rotate log files weekly specified in /etc/logrotate.d/weekly# keep 4 weeks of all log filesrotate 4# create new (empty) log files after rotating old onescreate# use date as a suffix of the rotated filedateext# uncomment this if you want your log files compressed by gzipcompress# RPM packages drop log rotation information into this directory#there are all other configurations of services and their logs to rotateinclude /etc/logrotate.d

algumas amostras e configurações reais de ficheiros de log

Então, podemos adicionar um novo ficheiro de log em /var/log/ por esta via:

echo "this is a sample log file" > /var/log/vasil.log#this create a log file vasil1.log of size 5MBdd if=/dev/zero of=/var/log/vasil1.log bs=1M count=5

Next, criamos um novo ficheiro de configuração que é armazenado no destino explicado acima:

vim /etc/logrotate.d/vasil###/var/log/vasil.log { missingok notifempty compress minsize 1M daily create 0600 root root}
vim /etc/logrotate.d/vasil1###/var/log/vasil1.log { missingok notifempty compress minsize 1M daily create 0600 root root}

E uma explicação das variáveis:

  • missingok – não dar erro se faltar o ficheiro de log
  • notifempty – não rodar o ficheiro de log se este estiver vazio
  • compress – versões antigas de ficheiros de log são comprimidas com gzip por defeito
  • minsize – Log só é rodado se for maior que 1M
  • diariamente – assegura a rotação diária
  • criar – cria um novo ficheiro de registo com permissões 600 onde o proprietário e o grupo é utilizador root

se quiser mais opções e a sua explicação, consultar o manual:

man logrotare

Lista de /var/log para os nossos ficheiros de registo. Podemos ver, que temos um log vasil.log com tamanho 26b e vasil1.log com tamanho 5MB.

ls -lah /var/log/va*-rw-r--r--. 1 root root 5.0M Mar 3 13:21 /var/log/vasil1.log-rw-r--r--. 1 root root 26 Mar 3 13:21 /var/log/vasil.log

Agora, podemos depurar a nossa configuração através deste comando:

logrotate -d /etc/logrotate.d/vasil1orlogrotate -d /etc/logrotate.d/vasil

Então, se quisermos executar o logrotate manualy e ver, o que está a acontecer, executar o seguinte comando. Mas esteja atento porque faz rodar todos os seus logs, definidos em /etc/logrotate.d/

logrotate -f /etc/logrotate.conf

E podemos ver tanto os ficheiros de log comprimido como dois novos ficheiros de log vazio criados:

 ls -lah /var/log/va*-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil1.log-rw-r--r--. 1 root root 5.0K Mar 3 13:21 /var/log/vasil1.log-20170303.gz-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil.log-rw-r--r--. 1 root root 44 Mar 3 13:21 /var/log/vasil.log-20170303.gz

Podemos ver o nosso ficheiro de log comprimido através deste comando:

zcat /var/log/vasil.log-20170303.gzthis is a sample log file

Or podemos usar gunzip para os descomprimir através do comando gzip.
Quando usamos logrotate, por vezes precisamos de reiniciar uma aplicação ou serviço. O logrotate pode fazer isso através de um script chamado “postrotate”. Este script pode ser usado em ficheiro de configuração como httpd. Quando o log é rodado, o serviço de recarga de script para usar o novo ficheiro de log vazio.

cat /etc/logrotate.d/httpd/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript}

Então, espero, que isto ajude alguém 🙂 Tenha uma diversão.

Total Page Visits: 5196 – Visitas à Página de Hoje: 3

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *