gnu linux badge

Como monitorar o sistema com o tail

Arquivos de log existem para criar relatório que mostram como um sistema ou um aplicativo está se comportando.
Em sistemas UNIX ou GNU/Linux, arquivos de log são compostos de informações em texto puro e são continuamente acrescidos de novas informações.
Estas informações são fornecidas ou pelos processos em execução na máquina ou por daemons, que produzem informações de log.
Sistemas UNIX ou UNIX-like tem um daemon responsável por criar e manter o log do sistema — usualmente chamado syslogd ou, simplesmente, syslog (que manipula relatórios vindos de diferentes aplicações e servidores).
O Linux tem, ainda, um aplicativo chamado klogd — um daemon para monitorar especificamente as mensagens do kernel.

Como usar o tail

O tail é um dos comandos clássicos usados para monitorar alterações em arquivos no sistema, o que inclui arquivos de log.
Sua função é mostrar as últimas 10 linhas (um padrão que pode ser mudado) de um arquivo.
Sua sintaxe é tail nome_do_arquivo. A execução é finalizada logo após a exibição das 10 últimas linhas do arquivo.
Executado desta forma, o tail não é tão útil para realizar monitoramento algum.
Administradores de sistema – quando usam o tail –, o invocam com a opção -f — que mantém a exibição, continuamente, das últimas linhas do arquivo especificado na linha de comando.
O tail é útil para monitorar múltiplos arquivos de log simultaneamente.
Processos específicos do servidor, que você queira acompanhar, normalmente escrevem seus próprios arquivos de log, enquanto o syslog envia diferentes tipos de mensagens a diferentes tipos de arquivos de log — o que depende de como ele esteja configurado em /etc/
syslog.conf
.
Nos servidores Ubuntu, ele pode ser usado para acompanhar tanto o

  • /var/log/auth.log — onde são registradas as requisições para se autenticar no sistema,
  • quanto o

  • /var/log/kern.log — onde são registradas as mensagens do kernel.

Em servidores web Apache é interessante monitorar ambos os arquivos padrão de log do Apache — /var/log/apache2/access.log e /var/log/apache2/error.log.

tail montoramento do apache
Clique para ver detalhes

A figura acima, mostra duas telas do terminal abertas, cada qual monitora um arquivo de log do Apache.
Embora esta solução consuma uma boa parte da área da sua tela, isso não é problema para clientes com interfaces gráficas Linux, que podem jogar a atividade toda para um desktop virtual.

Exemplos de uso do tail

Se você está monitorando o log de um aplicativo que irá mostrar uma mensagem ao final, pode pedir para o tail só mostrar a mensagem indicadora de que a tarefa terminou. No exemplo, a seguir, o comando grep vai mostrar a frase Finished: SUCCESS”, mas você deve adequar esta linha de comando ao contexto que você tem aí:

tail -f meuarquivo.log | grep -qx "Finished: SUCCESS"

em que

  • -q pede para o grep para ficar em silêncio (quiet), até encontrar a string desejada
  • -x estabelece a condição de que a string buscada ocupe toda a linha

Se você prefere que o tail retorne um número diferente de 10 linhas, use a opção -n:

tail arquivo.txt -n 15

Para monitorar apenas uma determinada ocorrência use um pipe para o comando grep.
No exemplo abaixo, o tail monitorará o arquivo access.log.
Além disto, ele enviará as dez últimas linhas do arquivo e todas as novas que forem adicionadas ao utilitário grep.
O grep lê as informações que o tail envia e exibe apenas as que contiverem 192.168.1.5.

tail -f access.log | grep 192.168.1.5

Este exemplo demonstra como selecionar em tempo real o que exatamente você deseja monitorar dentro de um arquivo de log.

Alternativas ao tail

O tail é uma ferramenta clássica de monitoramento que, por padrão, inquire o arquivo a cada segundo — este comportamento pode ter um impacto significativo em equipamentos já sobrecarregados de trabalho.
Alguns administradores sugerem o uso de less, como alternativa rudimentar (mas eficaz) ao tail.
Monitoramento simultâneo de vários arquivos, pode ser feito com o multitail e com ganho de eficiência. Mas isto será alvo de um novo artigo.


Referẽncias:
http://unix.stackexchange.com/questions/45941/tail-f-until-text-is-seen.
http://www.computerhope.com/unix/utail.htm.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), desenvolvedor web e geek, nos mais diversos assuntos. Entusiasta de software livre e hacker de LEGO, acredito em repassar meu conhecimento e ajudar as pessoas sempre que for possível.

Um comentário sobre “Como monitorar o sistema com o tail”

  1. Olá,
    Como faço caso queria usar mais de um filtro no grep?
    ex:
    tail -f access.log | grep 192.168.1.5
    Se eu quiser monitorar a string 192.168.1.5 e 192.168.1.6 no mesmo comando?
    Obrigado

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *