Richardson
Posted on March 3, 2021
Qualquer um que mantenha aplicações rodando em servidores se depara com logs. Os logs podem, ao longo do tempo e devido à configurações inadequadas, tomar uma quantidade considerável de espaço no disco. E, em muitos casos, você precisa caçar os malditos logs. Então, vamos lá!
Breve contexto:
Temos uma VPS com aplicações web configuradas de forma desconhecida, com banco de dados, com alguns frameworks, container docker e várias outras coisas que você não faz ideia de como foram configuradas.
O primeiro comando inútil que podemos usar é o dh -kh. Esse comando pode exibir a quantidade de espaço livre em disco em cada sistema de arquivos montado no servidor.
:~# dh -kh
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 748M 75M 673M 10% /run
/dev/xvda1 12G 11G 837M 93% /
tmpfs 3.7G 4.0K 3.7G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/xvdc 30G 45M 28G 1% /mnt
/dev/mapper/vg_data-data_vol 50G 12G 35G 25% /data
Diretório raiz / com menos de 1g disponível. Provavelmente o /var/log
está ficando cheio. Vamos ver com calma. O próximo comando inútil é ls | xargs du -hs.
:~# cd /
:/# ls | xargs du -hs
0 proc
33M root
75M run
16M sbin
8.0K snap
8.0K srv
0 sys
18M tmp
2.4G usr
8.3G var
0 vmlinuz
0 vmlinuz.old
Muito bem, /var
com 8.3G e o /usr
com 2.4G. Maravilha!
Vamos ver o /var
.
:/# cd var/
:/var# ls | xargs du -hs
4.0K agentx
3.3M backups
244M cache
8.4M chef
4.0K crash
6.1G lib
4.0K local
0 lock
1.1G log
23M mail
912M opt
0 run
4.0K snap
1.8M spool
88K tmp
8.0K www
OK! Mas, vamos adicionar um | grep G
e filtrar um pouco isso.
:/var# ls | xargs du -hs | grep G
6.1G lib
1.1G log
Vamos para o /log
:/var# cd log/
:/var/log# ls | xargs du -hs | grep G
:/var/log#
Hummmm... sem arquivos com G (gigas). E com M (mega)?
:/var/log# ls | xargs du -hs | grep M
26M apache2
169M auth.log
9.9M auth.log_13052020.tar.gz
74M commvault
5.3M dist-upgrade
2.8M dpkg.log
14M dynatrace
293M kern.log
3.7M kern.log_13052020.tar.gz
16M mail.log
360M syslog
54M vsftpd.log
1.1M wtmp
Aí sim hein! Acho que aqui já dá pra "esvaziar" alguns logs. E, pra isso, vamos usar truncate -s 0 <arquivo de log>
. Onde a flag -s é usada para definir o tamanho do arquivo em bytes.
:/var/log# truncate -s 0 mail.log
:/var/log# ls | xargs du -hs | grep M
27M apache2
169M auth.log
9.9M auth.log_13052020.tar.gz
74M commvault
5.3M dist-upgrade
2.8M dpkg.log
14M dynatrace
293M kern.log
3.7M kern.log_13052020.tar.gz
360M syslog
54M vsftpd.log
1.1M wtmp
Como "zeramos" o mail.log
o arquivo não está mais com megas de tamanho. Vamos fazer o mesmo para o arquivo dkpg.log
.
:/var/log# truncate -s 0 dpkg.log
:/var/log# ls | xargs du -hs | grep M
27M apache2
169M auth.log
9.9M auth.log_13052020.tar.gz
74M commvault
5.3M dist-upgrade
14M dynatrace
293M kern.log
3.7M kern.log_13052020.tar.gz
360M syslog
54M vsftpd.log
1.1M wtmp
Vamos ver mais dois comandos inúteis o tail e head. Vamos usar para listar as três últimas e as três primeiras linhas do arquivo syslog
.
tail -3 syslog
:/var/log# tail -3 syslog
Mar 3 16:39:01 ip-000-00-00-00 CRON[32375]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
Mar 3 16:39:26 ip-000-00-00-00 systemd[1]: Starting Clean php session files...
Mar 3 16:39:27 ip-00-00-00-00 systemd[1]: Started Clean php session files.
head -3 syslog
:/var/log# head -3 syslog
Jan 30 11:51:40 ip-000-00-00-000 dhclient[871]: DHCPREQUEST of 000.00.00.000 on eth0 to 111.11.11.1 port 67 (xid=0x5d7713fa)
Jan 30 11:51:40 ip-000-00-00-000 dhclient[871]: DHCPACK of 000.00.00.000 from 111.11.11.1
Jan 30 11:51:40 ip-000-00-00-000 systemd[1]: Stopping Network Name Resolution...
E vamos "limpar" o arquivo syslog
.
:/var/log# truncate -s 0 syslog
:/var/log# ls | xargs du -hs | grep M
27M apache2
169M auth.log
9.9M auth.log_13052020.tar.gz
74M commvault
5.3M dist-upgrade
14M dynatrace
293M kern.log
3.7M kern.log_13052020.tar.gz
54M vsftpd.log
1.1M wtmp
Quanto ganhamos de espaço?
Vamos executar novamente o comando inútil df -kh
:/var/log# df -kh
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 748M 75M 673M 10% /run
/dev/xvda1 12G 10G 1.2G 90% /
tmpfs 3.7G 4.0K 3.7G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
Opa! 1.2G!
Aproveitar e "limpar" o arquivo kern.log
também.
Agora vamos voltar. Tinha algum maldito com mais de 6G. Eu lembro!
:/var/log# cd ..
:/var# ls | xargs du -hs | grep G
6.1G lib
Certo...
:/var# cd lib/
:/var/lib# ls | xargs du -hs | grep G
4.5G docker
1.3G mysql
Bem, aqui a gente já vai lidar com algumas aplicações específicas. Melhor fazer outro post inútil.
Até!
Outras variações de comandos:
:# du -h --max-depth=1
:# du -ahx /var/log | sort -rh | head -n 30
:# du -ahx /var/lib | sort -rh | head -n 30
:# ls -lhS
Referências inúteis:
- Linux Log Files Location And How Do I View Logs Files on Linux?
- Shell Scripting: Expert Recipes for Linux, Bash, and More by
- How to empty (truncate) Log files in Linux
- dh(1) — Linux manual page
- du(1) — Linux manual page
- tail(1) — Linux manual page
- head(1) — Linux manual page
- truncate(2) — Linux manual page
Posted on March 3, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.