Tutoriais

Como monitorar logs no Linux com journalctl e tail

Como monitorar logs no Linux com journalctl e tail

Quando algo dá errado no servidor, os logs são o primeiro lugar para procurar respostas. Veja onde eles ficam e como lê-los de forma eficiente.

Onde ficam os logs

Log Caminho comum
Sistema (Debian/Ubuntu) /var/log/syslog
Sistema (AlmaLinux/Rocky) /var/log/messages
Autenticação/SSH /var/log/auth.log ou /var/log/secure
Nginx /var/log/nginx/access.log e error.log
Apache /var/log/apache2/ ou /var/log/httpd/
MySQL/MariaDB /var/log/mysql/
PHP-FPM /var/log/php*-fpm.log
Journal do systemd acessado via journalctl

journalctl: os logs do systemd

journalctl                         # todos os logs
journalctl -f                      # em tempo real
journalctl -u nginx                # de um serviço
journalctl -u nginx -f             # serviço em tempo real
journalctl --since "1 hour ago"    # última hora
journalctl --since "2026-09-24 10:00" --until "2026-09-24 12:00"
journalctl -p err                  # apenas erros ou mais graves
journalctl -b                      # desde o último boot
journalctl -b -1                   # boot anterior (útil após travamentos)
journalctl -k                      # mensagens do kernel

Controlando o espaço do journal

journalctl --disk-usage
sudo journalctl --vacuum-time=14d     # mantém só 14 dias
sudo journalctl --vacuum-size=500M    # limita a 500 MB

tail, less e grep: os clássicos

sudo tail -n 100 /var/log/nginx/error.log   # últimas 100 linhas
sudo tail -f /var/log/nginx/error.log       # acompanha em tempo real
sudo less /var/log/syslog                   # navega (/ para buscar, q para sair)
sudo grep "error" /var/log/syslog           # filtra
sudo grep -i "out of memory" /var/log/syslog

Acompanhar vários arquivos de uma vez:

sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log

Investigações comuns

Quem está tentando acessar o SSH?

sudo grep "Failed password" /var/log/auth.log | tail
sudo journalctl -u ssh --since today | grep -i failed   # o serviço pode se chamar sshd

Processos encerrados por falta de memória

sudo journalctl -k | grep -i "killed process"

IPs que mais acessam o site

sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

Páginas que mais geram erro 500

sudo awk '$9 == 500 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

logrotate: evitando que os logs lotem o disco

O logrotate compacta e remove logs antigos automaticamente. As regras ficam em /etc/logrotate.d/. Exemplo para uma aplicação:

/var/log/meuapp/*.log {
    daily
    rotate 14
    compress
    missingok
    notifempty
    copytruncate
}

Teste com:

sudo logrotate -d /etc/logrotate.d/meuapp

Indo além

Para vários servidores ou análise avançada, considere centralizar logs com ferramentas como Grafana Loki, Graylog ou a stack ELK.

Conclusão

Saber ler logs transforma horas de tentativa e erro em minutos de diagnóstico. E com armazenamento NVMe, até a busca em arquivos de log grandes fica mais rápida.Conheça os planos VPS-NVME-BR da VittHost e use o cupom SP-VITT20 para ganhar 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS