Comandos intermediários do GNU/Linux
Com o tempo, os logs podem ocupar todo o espaço disponível na partição. Por isso, é preciso configurar corretamente a política de rotação dos logs, ou seja, durante quanto tempo os logs serão armazenados no sistema.
logrotate
Sintaxe do Comano
logrotate – [opção] / [arquivo de configuração]
Opções do comando logrotate
- -d – Debug. É apenas para listar na tela o resultado do comando e não altera os logs.
- -f – Force. Força o início da rotação mesmo se o sistema ache desnecessário.
- -m – Mail Diz qual comando usar para enviar um email com os logs.
- -s – State. Diz ao logrotate para usar um arquivo alternativo. The default arquivo de status é /var/lib/logrotate/status.
- -usage – Usabilidade. Imprime uma curta mensagem.
/etc/logrotate.conf
Rotação dos logs [rotate log files weekly]
Neste ítem deve decidir de quando em quando é feita a rotação. Pode ser diária(daily), semanal(weekly), mensal(monthly). Os arquivos de log que não tiveram indicação clara desta rotação seguirão o padrão indicado neste item.
Também pode definir diretamente a rotação desejada deste modo:
# rotate /var/log/wtmp
daily
create 0664 root utmp
rotate 1
}
Guardando os logs rotacionados para análise futura [keep 4 weeks wrth of backlogs]
Neste ítem você define quantos backups dos logs você manterá. Se um arquivo é rotacionado semanalmente, você pode definir que o sistema guarde as últimas semanas, no exemplo acima apenas a semana anterior será guardada em um arquivo chamado /var/log/wtmp.1. A sintaxe é:
rotate
Criando logs vazios [create new (empty) log files after rotating old ones]
É importante deixar esta opção, porque assim o logrotate criará um novo arquivo, com as mesmas permissões do anterior, para substituir o antigo, como no exemplo: create.
Comprimindo os logs rotacionados
Também pode salvar os logs rotacionados não eliminados em arquivos comprimidos, habilitando esta opção acima, a opção compress.
Abaixo as opções que pode ser utilizada no logrotate.conf.
- -compress – comprimir os logs.
- -compresscmd – comprimir os logs com especificação do comando a utilizar. O padrão é gzip.
- -uncompresscmd – definir o comando para descomprimir os logs. O padrão é gunzip.
- -compressext – especifica a extensão usada para o arquivo de log comprimido.
- -compressoptions – para possibilitar incluir opções aos comandos de compressão. Por exemplo: gzip -5. O padrão é a compressão máxima (-9).
- -copy – copia o log sem modificar o original.
- -copytruncate – copia o log e move o original para outro lugar.
- -create [mode owner group] – Este é o comando usado para a criação de um novo arquivo de log vazio após a rotação. Você pode alterar as permissões, o dono do arquivo e o grupo.
- -daily – rotacionar diariamente.
- -delaycompres – Atrasa a compressão do log para a próxima rotação.
- -extension [ext] – Inclui uma extensão para o arquivo de log. Se a compressão usada for a padrão a extensão será .gz.
- -ifempty – Rotaciona os logs mesmo quando vazios.
- -include [file or directory] – Indica outros arquivos de configuração ou diretórios que tenham arquivos de configuração para o logrotate.
- -mail – envia um email com logs extintos.
- -mailfirst – envia um email com os logs rotacionados.
- -maillast – envia um email com os logs que serão rotacionados, os logs originais.
- -missingok – não enviar mensagem de erro no caso de um arquivo de log não existir.
- -monthly – rotaciona os logs mensalmente.
- -nocompress/nocopy/nocopytruncate/nocreate/nodelaycompress/nomail – negativas aos comandos correspondentes.
- -nomissingok/noolddir/nosharedscripts/notifempty – negativas aos comandos correspondentes.
- -olddir [directory] – guardar as versões rotacionadas em outro diretório.
- -postrotate/endscript – comandos a serem executados após a rotação do log.
- -prerotate/endscript – comandos a serem executados antes da rotação do log, caso o log seja rotacionado.
- -firstaction/endscript – comandos a serem executados imediatamente antes dos prerotates comandos.
- -lastaction/endscript – comandos a serem executados depois daqueles invocados através do -postrotate.
- -rotate – comando para rotacionar os logs.
- -size – rotacionar os logs quando ultrapassarem o tamanho indicado.
- -sharedscripts – postrotate e prerotate serão executados para cada log que tenha a mesma identificação. Este comando faz com que sejam executados apenas uma vez.
- -start – inclui um número para a base dos logs rotacionados, por exemplo: start 0 – log.0.
- -tabooext [+] list – mudar a lista de extensões taboo.
- -weekly – rotacionar semanalmente.
#### Estas opções afetam globalmente o funcionamento do logrotate # roda os arquivos de log semanalmente weekly # mantém as últimas 4 cópias de logs anteriores rotate 4 # Erros de não existência dos logs são enviados para o usuário root mail root # Cria novos arquivos de log (vazios) após rodar os antigos create # Descomente isso se desejar seus arquivos de logs compactados. O parâmetro # delaycompress é usado para que o primeiro log rodado seja mantido # descompactado compress delaycompress # Executam os scripts em prerotate e postrotate a cada vez que os logs # forem rodados. nosharedscripts # Definimos um diretório que poderá conter definições individuais para # diversos serviços no sistema, eles podem ir neste arquivo mas # diversas configurações individuais podem deixar a interpretação # deste arquivo confusa. include /etc/logrotate.d # Define opções específicas para a rotação mensal de /var/log/wtmp, o novo arquivo # de log somente será rodados caso tenha mais de 5MB (size 5M), será criado # com a permissão 0664 e pertencerá ao usuário root grupo utmp # (create 0664 root utmp) e será mantida somente uma cópia do log anterior. # (rotate 1) /var/log/wtmp { monthly create 0664 root utmp size 5M rotate 1 } # Define opções específicas para a rotação mensal de /var/log/btmp, se o arquivo # não existir não será necessário gerar alertas (missinkok) que serão enviados # ao administrador. O novo arquivo criado deverá ter a permissão 0664 com o # dono root e grupo utmp (create 0664 root utmp) e será # mantida somente uma cópia do log anterior. /var/log/btmp { missingok monthly create 0664 root utmp rotate 1 } # Define opções específicas para a rotação mensal de /var/log/lastlog, o novo # arquivo será criado com a permissão 0664 com o dono root e grupo # utmp e será mantida somente uma cópia do arquivo de log anterior # (rotate 1). /var/log/lastlog { missingok monthly create 0664 root utmp rotate 1 } # Define opções específicas para a rotação diária de /var/log/messages, o # arquivo será rodado se atingir o tamanho de 1Mb, então o # novo arquivo será criado com as mesmas permissões do arquivo anterior. # O comando killall -1 syslogd será executado após a rotação # para que o daemon syslogd funcione corretamente mas somente uma vez # durante a rotação de vários arquivos de logs (sharedscripts). # Serão mantidas as 10 últimas cópias do arquivo /var/log/messages # compactadas (o parâmetro compress foi especificado na seção global deste # arquivo de configuração). /var/log/messages { daily size 1M sharedscripts postrotate /sbin/killall -1 syslogd endscript rotate 10 } # Define opções específicas para a rotação mensal dos arquivos em /var/log/mirror/*, # a falta desses arquivos não precisa ser notificada ao administrador (missingok), # mesmo assim o parâmetro "nomail" evitará isto de qualquer forma. Os logs # rodados não serão compactados (nocompress) e serão mantidas as últimas 7 cópias # dos logs. /var/log/mirror/* { montly nomail missingok nocompress rotate 7 } # logs específicos do sistema podem ser configurados aqui. As opções padrões e # definidas na seção global deste arquivo serão usadas para processar os # arquivos de logs restantes.
Hmm, I never thought about it that way. I do see your point but I think many will disagree