Quantas vezes você já se deparou com uma mensagem No space left on device no Ubuntu ou outra versão do Linux? Nenhuma??
Então você fez muito bem o dever de casa, ou ainda não chegou nesse momento. Mas se você está aqui, provavelmente o dia fatídico chegou! :)
Neste artigo, vou demonstrar como os logs normalmente costumam ser os vilões desse problema e mostrar como resolver isso de forma bastante simples com o logrotate.
Encontrando arquivos de log
A grande maioria das aplicações web geram logs. Esses logs são gravados em arquivos texto, normalmente com a extensão *.log.
Então, se você não fizer de forma adequada um gerenciamento desses arquivos, inevitavelmente ele engolirá 100% do seu espaço em disco. Triste, não é?
Mas a grande questão é que, quando você se depara com esse erro, até uma simples navegação nos diretórios via SSH se demonstra uma tarefa árdua. Então você precisará logo encontrar o vilão e dar um jeito nele.
Para encontrar os maiores arquivos do sistema operacional e, por consequência, esses arquivos de log gigantescos, utilize o comando du.
$ du -a / | sort -n -r | head -n 5
Ele basicamente buscará os maiores arquivos, jogando no topo da lista os maiores, limitando-se a 5 resultados. Costuma ser o suficiente.
Configurando o logrotate
Encontrou o arquivo de log? Ótimo! Para este caso eu vou utilizar uma configuração de um arquivo de log fictício de uma aplicação web que gera o seguinte arquivo:
$ /var/log/foo/production.log
Então o passo 1 será ver se você tem o logrotate instalado em seu servidor. Descubra isso com:
$ logrotate --version
Deverá aparecer algo como o número da versão do aplicativo. Se você obtiver um erro, instale ele com o seu gerenciador de pacotes (apt, yum ou similar).
Agora iremos configurar nossas regras de gerenciamento de logs. Para este caso, eu quero gerar 1 arquivo de log por dia, deixando salvo no máximo 30 logs antigos.
Crie um arquivo com o nome da aplicação em /etc/logrotate.d/. Neste caso estou utilizando o vim como editor de textos:
$ vim /etc/logrotate.d/foo
Nesse arquivo, cole o seguinte conteúdo:
/var/log/foo/production.log { daily missingok rotate 30 compress notifempty }
E, para testar a configuração, rode o debugger do logrotate:
$ sudo logrotate /etc/logrotate.conf --debug
Dê uma olhadinha nas mensagens que ele gerou e avalie se algum erro foi encontrado.
Simples, não é? Esse tipo de configuração poderá salvar horas do seu precioso tempo tendo que lidar com servidores com espaço esgotado e com "comportamentos misteriosos"!
Este arquivo foi construído a partir da documentação da Digital Ocean.
Dica: A Orgânica é uma agência de Marketing Digital especializada. Saiba mais!