DEV Community

Richardson
Richardson

Posted on • Updated on

logs, malditos logs

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Vamos para o /log

:/var# cd log/
:/var/log# ls | xargs du -hs | grep G
:/var/log#
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

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...
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Certo...

:/var# cd lib/
:/var/lib# ls | xargs du -hs | grep G
4.5G    docker
1.3G    mysql
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Referências inúteis:

Top comments (0)