log - obter informações do sistema, processos e hardware

Atualizado em: 04/06/2007



Sobre este documento

Original em formato texto com marcações para conversão em HTML, processo automatizado com scripts e txt2tags.

Dicas em geral sobre log, exemplos de linha de comando, script e indicações em geral.

o que é log?

O log é o diário de bordo do sistema.

São registros de atividades no computador, geralmente são gravados em arquivos no formato texto, de forma abreviada e algumas são até codificadas, de qualquer forma a informação está lá, são registros de ocorrência que podem facilmente serem interpretados por quem conhece e lida com o sistema, pode acessar diretamente, converter para outros formatos, utilizar ferramentas amigáveis e técnicas que variam de acordo com o conhecimento de cada um.

Esta informação é utilizada para diversos fins. O formato e detalhamento depende do programa e da configuração para gerar log, alguns programas não geram registros em arquivo enquanto outros permite configurar o detalhamento ou filtrar o que deseja salvar em arquivo, tudo depende de cada programa e configuração.

Quanto ao uso fica por conta do administrador, da empresa, do conhecimento técnico e outros fatores. Na minha opinião, todo administrador tem que saber lidar e manipular arquivos de log, além de monitorar o sistema. Deve usar como sendo a maior fonte de informação na solução de problemas.

Estas informações pode ser usadas para diversos fins; diagnostico do sistema, auditoria sobre o uso do computador, gerar relatorios com dados estatísticos, perícia, cobrança pelo uso do sistema e muitos outros fins...

Não confundir log com mensagens de erro, até parece que log é local de avisos ou mensagens de erro, sempre que alguém tem algum problema e pede ajuda, a resposta padrão é "procure nos logs", a razão é muito simples, a informação está lá, não importa se é boa ou ruim, se é mensagem de erro ou não. O que importa é saber interpretar estes registros, encontrar pistas que ajude encontrar a solução do problema. Considere que a falta de informação também é informação, pelo fato de algum programa não gravar o que devia no log já é indicio de que algo errado está acontecendo.

Na caixa de pesquisa do Google encontra diversas definições, faça um teste com:

define:log

Algumas dicas sobre log.

A falta de log por ser causada por várias situações tais como:
Aplicativo não está rodando.
Faltou configurar o aplicativo para gerar log
Faltou definir o nível de geração do log
Falta de espaço em disco
Permissão para gravação no arquivo ou diretiva de onde o aplicativo deve gravar o log.
Sempre consulte a documentação do pacote e procure pelas diretivas de configuração.

Cada programa gera os seus logs, identifique onde fica e analise, inicie pela documentação do pacote e pelo diretório /var/log...

Cada aplicativo tem seu arquivo de log, alguns tem diretorio próprio para gravar o log, procure na documentação do aplicativo para saber o nome do arquivo de log e onde é gravado, confira também as diretivas de configuração e nível de detalhamento do log, a documentação do aplicativo e o site do mantenedor do aplicativo é a melhor fonte de pesquisa para tirar melhor proveito do log.
copiado e adaptado a partir de:
http://focalinux.cipsga.org.br/download.html
Gleydson Mazioli da Silva <gleydson@cipsga.org.br>

Monitorando os logs

Os arquivos de logs residem em `/var/log' e registram tudo o que acontecem com o kernel, com os daemons e utilitários do sistema. Eles são muito importantes tanto para monitorar o que acontece com o seu sistema como para ajudar na solução de problemas diversos.

Acostume-se a olhar constantemente os arquivos de log em seu sistema, isto pode ser importante para encontrar possíveis falhas de segurança, tentativa de acesso ao sistema e, principalmente, solucionar problemas (principalmente os mais complicados)

redirecionadores

Resultados na linha de comando e programas que exibem os resultados no console podem ser redirecionados para arquivo, muito útil em aplicativos que não geram logs mas geram mensagens no console, estas mensagens podem ser salvas em arquivo texto.

Para salvar os resultados de um comando em arquivo, acrescente no final da linha de comando o sinal de maior ">" e um nome de arquivo.

Ou utilize ">>" pra acrescentar as mensagens no final de um arquivo existente.

Tanto com ">" ou ">>" todas as mensagens da tela (console) são desviadas para o arquivo indicado, alguns aplicativos precisam incluir o modo verbose para gerar mensagens no console, por exemplo no comando tar é "-v" ou "v" manda as mensagens para o console que poderá serem redirecionadas para arquivo, o arquivo criado poderá posteriormente servir para análise, comparação e etc.. teste com estes exemplos:

    ls > logdols.txt
    tar zcvf backuplog.tar.gz  /var/log > logdotar.txt

a linha com o comando tar inclui a diretiva (v), modo verbose, exibir mensagens. Criará dois arquivos; backuplog.tar.gz com o conteúdo do diretório /var/log contendo os dados, o redirecionamento (> logdotar.txt) salva as mensagens do console no arquivo logdotar.txt que pode ser editado e pode ver as mensagens emitidas como nome dos arquivos, mensagens de erro e etc...

Quando o arquivo já existir e quiser manter as informações já existentes, acrescentar novas mensagens no final deste, use ">>" dois sinal de maior, acrescentar as novas mensagens no final do arquivo.

    ls >> logdols.txt
    tar zcvf varlog.tar.gz  /var/log >> logdotar.txt
  
  sobrepor >
  inserir  >>

Copias entre prompt e editores.

Copiar o resultando de um comando do prompt ou parte do texto que está no terminal para um arquivo, muito útil para guardar em arquivo ou enviar para quem estamos pedindo ajuda, enviar por e-mail ou guardar para futura analise.

Passe o mouse com o botão acionador pressionado sobre o que quer copiar isto vai marcar a área como selecionada e não precisa de nenhum comando adicional, em em outro terminal ou no ambiente gráfico cole o texto, use o botão auxiliar do mouse ou CTRL+V para colar, em outro terminal ou no vi posicione o cursor onde deseja colar, clique com o botão auxiliar ou o botão do meio do mouse para colar onde está o cursor.

Usando um terminal aberto a partir do ambiente gráfico, após fazer a seleção com o mouse precisa dar um clique com botão auxilar pra copiar.

Sempre que colar um comando ou linha de comando no prompt da linha de comando precisa dar um enter pra executar.

Pode copiar e colar nos dois sentidos, muito útil pra executar longas linhas de comandos, fazer backup de comandos executados e também dos resultados de comandos, principalmente das mensagens de erro no console, quando falhar o botão auxiliar tente com o botão do meio.

pegar mensagens de erro de aplicativos

Aplicativos do ambiente gráfico travando ou com problemas que não consegue pegar a mensagem de erro.

Inicie (execute) o programa pelo terminal para acompanhar as mensagens de erro.

Quando iniciar algum programa e não retornar mensagem de erro, travar ou não acontecer nada, abra um terminal (konsole) e digite o nome do programa, exemplo pra iniciar o konqueror a partir da linha de comando, abra um terminal e na linha de comando digite:

konqueror

Acompanhe as mensagens que são exibidas no terminal, em muitos casos isto ajuda na solução de problemas. pode selecionar com mouse para copiar e colar.

Aproveitando a dica, quando precisar executar o konqueror como root, basta tornar root em um konsole e digitar konqueror, nesta sessão do konqueror e somente nela e suas abas você estará com os poderes de root.

Resumo de comandos - mais informações do sistema e usuários

last e lastlog - Informação sobre os últimos login

Last - informações sobre quem fez login no sistema

  lastlog
  last
  
  ultimos 20
  
   last -20
  
  Manual
  
  man last
  man lastlog

pidof - Numero do processo

pidof nome-do-pacote - retorna somente o numero do processo, ex: para ssh:

pidof sshd

851

para o apache:

pidof httpd

2674 2551 2550 2549 782

ps - o comando ps muito útil para ver o que está rodando.

ps ax

ou

ps aux

ps -A | more

mostra tudo que está rodando na maquina inclusive numero do processo.

ps -A | grep pacote, exibe numero do processo que está rodando, ex: pro ssh.

ps -A | grep ssh

835 ? 00:00:00 sshd

  ps -aux | grep evolution
  zago      1796  0.1  2.2 22980 10824 ?       S    00:55   0:05 evolution
  zago      1811  0.2  4.3 56880 20776 ?       S    00:55   0:11 evolution-mail --
  zago      1820  0.0  1.6 22328 8044 ?        S    00:55   0:00 evolution-address
  zago      1824  0.0  1.3 21864 6496 ?        S    00:55   0:00 evolution-calenda
  zago      1829  0.0  1.1 19396 5696 ?        S    00:55   0:00 evolution-alarm-n
  zago      1831  0.0  1.9 21980 9468 ?        S    00:55   0:00 evolution-executi
  zago      1841  0.0  4.3 56880 20776 ?       S    00:56   0:00 evolution-mail --

mostrar colunas selecionadas com awk.

ps aux | awk -F' ' '{print $1,$5,$11}'

filtro por usuário, mostrar usuário, PID e comando

ps aux | awk -F' ' '{print $1,$5,$11}' | grep root

-v -vv - modo verbose

-v -vv - modo verbose

Muitos aplicativos permitem o uso das opções -v ou -vv, modo verbose, faça um teste e compare os resultados destes comandos:

     lspci
     lspci -v
     lspci -vv

O resultado do primeiro comando é resumido, com (-v) já tem mais detalhes e com (-vv) tem muito mais detalhes no resultado.

Nem todos os pacotes tem este recurso, nem todos permite (-vv), como pode ter outro significado, exemplo no comando ls que tem a função de ordenar nomes de arquivos, procure (-v) no manual do ls.

Alguns exemplos do uso de (-v).

  Comando tar, (man tar) tem esta informação:
            -v, --verbose
                mostra a lista dos arquivos processados
  
  Comando rm, (man rm) tem esta informação:
         -v, --verbose
                Imprime o nome de cada arquivo antes de apagá-lo.
  
  Comando rpm, (man rpm) tem esta informação:
  	      -vv    Exibe um monte de informações bizarras de depuração.
  Exemplo de uso deste comando:  rpm -rebuilddb -vv

lsof - listar arquivos abertos

lsof lista todos os file descriptors abertos no sistema.

Lsof - (List Open Files) - listagem em tempo real de informações à respeito de arquivos abertos ou utilizados por processos em execução.

lsof -u nomedelogin

ver quais os arquivos em uso por um usuário, no comando abaixo estou procurando pelos arquivos em uso pelo usuário zago e depois pelo root

  # lsof -u zago
  COMMAND    PID USER   FD   TYPE     DEVICE    SIZE      NODE NAME
  kdeinit   1886 zago    6u  unix 0xcb8a3540            39710 socket
  kdeinit   1886 zago    7r  FIFO        0,6            39713 pipe
  kdeinit   1886 zago    8w  FIFO        0,6            39713 pipe
  kdeinit   1886 zago    9u  unix 0xc18f7560            39714 socket
  
  
  # lsof -u root
  COMMAND    PID USER   FD   TYPE     DEVICE    SIZE      NODE NAME
  init         1 root  cwd    DIR        3,2    4096         2 /
  init         1 root  rtd    DIR        3,2    4096         2 /
  init         1 root  txt    REG        3,2   27132    311403 /sbin/init
  init         1 root  mem    REG        3,2  100434    163842 /lib/ld-2.2.4.so
  init         1 root  mem    REG        3,2 1249256    163849 /lib/libc-2.2.4.so
  Copiei apenas algumas linhas para exemplo do resultado.

procurar processos, exemplo para o ssh que está rodando.

  lsof | grep ssh
  sshd       835   root  cwd    DIR        3,2    4096         2 /
  sshd       835   root  rtd    DIR        3,2    4096         2 /
  sshd       835   root  txt    REG        3,2  279644    360667 /usr/sbin/sshd
  Copiei apenas algumas linhas para exemplo do resultado.

Procurar por processos ouvindo nas portas.

  lsof -i
  lsof -i | grep LIS
  
  lsof -i | grep LIS
  portmap  888  bin    4u  IPv4   1176       TCP *:sunrpc (LISTEN)
  sshd    1070 root    3u  IPv4   1392       TCP *:ssh (LISTEN)

Procurar por usuário e arquivo especifico ou processos.

    lsof -u zago  -i | grep LIS
    lsof -u zago  -i | grep arq-que-procuro

lsof | grep /mnt/win ver se tem alguém com algum arquivo aberto em /mnt/win

fuser

fuser - semelhante ao lsof só que com outras características veja o resultado da pesquisa na porta 22 (ssh):

  fuser -v 22/tcp
  
                       USER        PID ACCESS COMMAND
  22/tcp               root       1070 f....  sshd

sobre usuários

conexões - quem está logado na maquina - man who

  who
  zago     pts/0    Mar 21 20:05
  zago     pts/1    Mar 22 00:56
  
  
  who -q
  root zago
  # users=2
  
  -q = listar usuários e contar

Usuário logado mais de uma vez, contar numero de login simultâneo.

  who | grep zago | wc -l
  
  nome de login em variável
  
  LOGNAME=zago
  who | grep $LOGNAME | wc -l
  
  ou
  who | grep -c $LOGNAME 

whoami - exibe o login do usuário - quem está logado no terminal.

Ultimos comandos digitados digite:

history

ou edite .bash_history dentro do seu home.

Para ver os últimos comandos usados por outro usuário precisa ao menos ter direito leitura no diretorio daquele user ou estar logado como root para editar o arquivo .bash_history no home do usuário, use seu editor preferido ou com "vi" ex.:

vi /home/diretoriodouser/.bash_history

use as setas e outras teclas de atalhos, veja dicas no FAQ.
http://www.zago.eti.br/bash.txt

veja também sobre ac # ac man ac

usuários com login na maquina, terminais abertos, veja o comando "w":

  w
   11:01pm  up  3:07,  3 users,  load average: 0.05, 0.01, 0.00
  USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
  zago     tty1     -                 7:55pm  3:05m  0.24s  0.03s  xinit /etc/X11/xinit/kdeinitrc -- /home
  zago     pts/0    -                 8:54pm  1.00s  0.05s  0.01s  w
  zago     pts/1    192.168.1.35     10:15pm 14:03   0.35s  0.30s  vi som-alsa.txt

Edite o arquivo passwd em /etc para saber quais os usuários cadastrados na maquina.

Dentro do home de cada user fica o cache de navegação da internet, também separados por navegador, por exemplo o mozzila tem seu cache em:

~/.mozilla/default/*/Cache

Sobre o sistema

alguns comandos e resultados.

uname -a diversas informações sobre o sistema.

uname -r versão do kernel

  #cat /etc/versão-conectiva
  Conectiva Linux 8
  exibe versão do Conectiva. 
  
  veja também:
  cat /etc/issue
  cat /etc/issue.net
  cat /proc/version
  cat /etc/*-release

procure no diretório /etc pelos arquivos com o nome *-realese ou versão-*, ou nomes semelhantes.

uptime ver media de uso nos últimos minutos

service --status-all mostra o que está rodando e o que está parado.

chkconfig --list listar todos os (daemon) serviços disponíveis

hostname --fqdn ver o nome da maquina local.

ifconfig -a dados da placa de rede

/sbin/ifconfig -a

cat /etc/hosts ver o conteúdo de hosts

netstat informa os estado das suas conexões de rede netstat -naut mostra as portas que estão abertas

netstat -ta

netstat -na exibe a lista de IP de quem está conectado na maquina.

netstat -nap exibe também o PID da conexão

netstat -nputa exibe somente as portas e PID

netstat --init -ac ou netstat -ac Exibe as conexões ativas em tempo real, não precisa dar o comando novamente para atualizar os resultados.

file - determina o tipo do arquivo

O comando file retorna o formato real do arquivo.

quando não souber qual o tipo de arquivo aplique o comando file para identificar qual é o tipo de arquivo, como no Linux não existe uma terminação para associação do nome do arquivo com a aplicação, estes podem ser renomeados dificultando identificar qual é o tipo de arquivo somente pelo nome, o comando file retorna esta identificação ex.:

file arquivotal

  $ file br.Ispell.tgz
  br.Ispell.tgz: gzip compressed data, deflated, original filename, `br.Ispell.tar', 
  last modified: Sat Sep 14 10:53:40 2002, os: MS-DOS

Pacotes RPM

--version, funciona para exibir a versão, funciona em alguns pacotes somente.

  /sbin/ifconfig --version
  net-tools 1.60
  ifconfig 1.42 (2001-04-13)

whereis saber onde esta instalado o pacote, ex:

  whereis ping
  whereis samba

RPM

rpm -qa | grep pacote retorna o nome do pacote se instalado

rpm -qla | grep pacote

echo $PATH exibe o caminho de pesquisa

ver o que está acontecendo na maquina.

  [root@zago /etc]# cat /proc/net/sockstat
  sockets: used 206
  TCP: inuse 2 orphan 0 tw 0 alloc 2 mem 0
  UDP: inuse 1
  RAW: inuse 0
  FRAG: inuse 0 memory 0

grep - filtro de palavras no log

Procurar palavra ou string especifica em arquivos ou diretórios.

grep - é interessante para localizar uma palavra dentro de um arquivo ou em todos os arquivos de um diretório.

Alguns exemplos de uso do grep, contar quantas ocorrências da palavra suse no log do Apache, (modifique estes exemplos para o termo e caminho do log que deseja consultar).

grep -wc suse /var/log/apache2/access_log

Mostrar somente os ultimos 20 registros que contenha "suse"

grep "suse" /var/log/apache2/access_log | tail

Ou especifique quantos deseja, exemplo para listar os ultimos 50

grep "suse" /var/log/apache2/access_log | tail -50

Somente os 5 primeiros

grep "suse" /var/log/apache2/access_log | head -5

Criar um arquivo contendo somente registros que contenha "suse"

grep "suse" /var/log/apache2/access_log > /tmp/access_log.so_suse

Remover as ocorrências suse, inverter a seleção com -v, criar novo arquivo sem os registros que contenha "suse"

grep -v "suse" /var/log/apache2/access_log > /tmp/access_log.sem_suse

Outro formato de comando com o mesmo resultado acima.

cat /var/log/apache2/access_log | grep -v "suse" > /tmp/access_log.sem_suse

Procurar a palavra 3Com em todos os arquivos do meu diretório, devo informar o caminho ou entrar no diretorio e digitar grep 3Com *

cd /home/zago

grep 3Com *

ou

grep -r 3Com /home/zago

Este mesmo critério pode usar em /var/log e procurar nos arquivos de log por uma palavra especifica.

outro exemplo com o mesmo resultado:

find /home/zago -depth -type f -exec grep "3Com" {} \;

ou

find /home/zago -type f -exec grep 3Com {} /dev/null \;

Mais dicas e exemplos de uso do grep.
http://www.zago.eti.br/grep.txt

veja também o comando locate

logrotate - rotacionar arquivos de log

logrotate é extremamente configurável, permite rotacionar os arquivos de log e muito mais....

Na maioria das distro já vem configurado para rotacionar os logs, algumas rotacionam no domingo, mas isto não é regra, alguns pacotes podem ter a configuração padrão bem diferente, tem que observar nos arquivos de configuração e no seu sistema a periodicidade que os logs estão sendo zerados, criação novos arquivos compactados

Geralmente são mantidos os ultimos 4 arquivos compactados, mas isto também é configurável e depende do seu sistema. Os mais antigos são removidos, caso deseja manter os registros por mais tempo, crie script para fazer copia deles em outro local, pode incluir os logs na sua rotina de backup.

Como exemplo o log do Squid no CentOS 5 /var/log/squid/access.log, todo domingo as 4 horas da manhã o arquivo de log da semana é rotacionado, cria um um novo arquivo compactado no formato access.log.1.gz e zera o access.log, isto pode ser alterado para diario ou mensal, o mesmo acontece com logs de outros pacotes.

O local do arquivo de configuração pode mudar conforme a distro ou configuração do usuário.

O local do arquivo de log na maioria dos pacotes tem a indicação do local .conf do pacote.

Alguns permitem alterar o nível de detalhamento, como exemplo a opção debug no Samba.

Um ponto de partida é verificar as configurações do pacote desejado e também listar todos arquivos e diretórios que inciam com log dentro de /etc/

ls -la /etc/log*

Observe dentro /etc/logrotate.d script especifico de alguns pacotes.

Veja também o daemon que gera os logs é syslogd e seu arquivo de configuração fica em:

/etc/syslog.conf

Não esqueça do manual, status e configuração deste daemon.

man syslog.conf

A configuração do logrote fica em: /etc/logrotate.conf alguns serviços já vem configurado para rodar semanalmente (week), pode alterar o periodo de execução destes scripts veja no FAQ:

http://www.zago.eti.br/agenda.html

Limpar arquivos log

Alguns pacotes criam o arquivo de log quando não encontrado, mas isto deve ser evitado, pode até testar no seu sitema, mover para outro local ou apagar os arquivos de log para ver se o sistema cria novamente.

Prefira fazer backup em outro local e configurar a rotação pelo sistema.

Outras maneiras de limpar totalmente o arquivo de log, tanto em linha de comando ou script.

Pode editar para remover parte do log, o mais prático é fazer bakcup e zerar o arquivo.

Como existem vários arquivos de log, um para cada serviço, conforme a versão do pacote também muda o nome e local dos log

Tente adaptar os exemplos abaixo para sua instalação.

Simplesmente limpar o conteúdo do arquivo

echo "" > arquivo.txt

echo "" > /caminho/arquivolog

echo "" > /var/log/arquivo.log

apagar

rm /var/log/messages?????

criar um novo arquivo vazio

touch /var/log/messages

ou

echo -n > /var/log/messages

cat > /var/log/messages

crtl+d

tail - Vendo o log na tela enquanto ele se forma

tail -f /var/caminho/arquivo.de.log

exibe os registros de log no momento que ocorrem, Just-in-time!.

tail -f exibe em tempo real os registros sendo gravado nos nos arquivos de log, faz somente uma copia do registro para o o console ao mesmo tempo que estão entrando no arquivo de log.

tail -f apresenta as últimas linhas de um arquivo qualquer, continua exibindo as novas entradas (registros) conforme as mesmas vão sendo geradas, usa-se normalmente para monitorar logs de sistema.

CTRL+C encerra e sai.

Acompanhe em tempo real o que é registrado em /var/log/messages

tail -f /var/log/messages

Acompanhar log do squid.

tail -f /var/log/squid/access.log

Arquivos de log podem ser acessados ou manipulados por outras ferramentas, são arquivos em formato texto, pode copiar para outro local ou maquina, editar com vi ou outro editor, manipular com script, filtrar o arquivo a procura de expressões ou palavras especificas.

Exemplos de linha de comando.

Exibir as ultimas 100 linhas do registro e sair do tail

  tail -100 /var/log/httpd/access_log
  

Rolar a tela (scroll) com more

  tail -100 /var/log/messages | more
  tail -100 /var/log/squid/access.log | more
  

acompanhar o log do apache

tail -f /var/log/httpd/access_log

Somente os primeiros registros do log

Mostrar as primeiras n linhas de um arquivo

# head -n nome do arquivo (default n=10)

Exemplo; somente as primeiras 20 linhas de log do squid.

head -n 20 /var/log/squid/access.log

Somente os ultimos registros do log

# tail -n /caminho/nome-do-arquivo (default n=10)

tail -n 1 arquivoquevcquerler

isso irá ler a última linha e cair imediatamente para a shel. Se vc acha importante ficar aguardando sempre a última linha...

tail -f -n 1 arquivoquevcquerler

tail -f -n 1 /var/log/httpd/access_log

acompanhar o log do servidor de e-mail # tail -f /var/log/maillog

Acompanhar mais de uma arquivo de log, exemplo para acompanhar as entradas em todos arquivos _log de /etc/apache

tail -f /var/log/apache/*_log

tail -F /var/log/apache/*_log

tail -f /var/log/apache/*_log | grep 192.168.1.53

Abrir também o /var/log/messages, observe que tem um espaço separando os dois endereços.

tail -f /var/log/apache/*_log /var/log/messages

Simultaneamente todos os logs do Samba.

tail -F /var/log/samba/*.log

+X Pegar tudo de determinada linha em diante, desde linha informada até o fim

tail +X /caminho/arquivo

Exemplo para pegar tudo a partir da linha 200 para baixo.

tail +200 /var/log/maillog

Listar o arquivo de log (arquivo inteiro) e continuar exibindo o que vai entrando.

tail -n+1 -f /var/log/apache2/access_log

Filtrar a palavra samba nos ultimos 100 registros e continuar exibir o que vai entrando no log..

tail -n100 -f /var/log/apache2/access_log | grep samba

Com -n+1 aplica o filtro no arquivo de log e continua monitorando.

tail -n+1 -f /var/log/apache2/access_log | grep samba

tail -n+1 equivale um cat no arquivo, os dois comandos abaixo tem o mesmo resultado.

tail -n+1 /var/log/apache2/access_log

cat /var/log/apache2/access_log

Veja também as opções pra visualizar relatorios em ambiente gráfico, por exemplo o sarg pra gerar relatorios do Squid em HTML pra visualizar via web no seu navegador, rico em detalhes e bem organizado, webalizer pro apache e muitos.

Veja também algumas opções via webmin.
http://www.zago.eti.br/webmin.txt

awk + tail

Exemplo de uso do tail com awk.

Listar IP e site sendo registrados nos log do Squid.

  tail -f /var/log/squid/access.log |awk '{print "IP: "$3" site: "$7}'

O log pode ser diferente conforme a versão do Squid, o exemplo acima funciona no SUSE 10.1, ajuste as colunas "$3" "$7 conforme os logs no seu sistema, altere para usuários ou outra coluna que deseja exibir.

Listar determinada coluna (campo) de todo arquivo, altere ($7) neste exemplo

awk '{print $7}' access.log

awk '{print $7}' access.log >> /tmp/colunalog.txt

Listar mais de uma coluna

awk '{print $8" "$5" "$7}' access.log

Listar colunas com determinada condição, como exemplo, listar somente endereços acessados pelo IP 192.168.1.53

awk '{if ($3 == "192.168.1.53") print $7}' access.log

Onde $3 pega o terceiro campo do registro de log, no caso do squid é o IP e compara com o IP informado entre aspas, quando coincidir lista o conteúdo do campo 7 (coluna $7).

watch - executa programa periodicamente

watch - execute a program periodically, showing output fullscreen

Executa periodicamente um programas, script ou comando, ideal pra ficar repetindo o resultado de um comando.

CTRL+C - Encerrar e sair.

man watch página do manual:

Alguns exemplos:

mostra o que o usuário linux está fazendo

watch "ps aux | grep nome_do_usuário"

Pode substituir nome_do_usuario por qualquer opção disponível no resultado de ps aux, exemplo para ssh

watch -n1 "ps aux | grep ssh"

Mostrar arquivos criados por determinado usuário:

watch -d 'ls -l | fgrep joe'

Mostrar arquivos sendo criado em um diretório:

watch -d 'ls -l /tmp'

O tempo de atualização é 2 segundos, pode usar a opção -n 1 para atualizar a cada 1 segundo, exemplo:

watch -n1 "ps aux | grep zago"

Com netstat, exibir as conexões por porta, exemplo com a porta 80 (Apache2 SUSE 10.1)

watch -n1 "netstat -na | grep ':80 ' | egrep -i 'ESTABLISHED'"

Monitorar outras portas, troque ':80 ' pela porta desejada; 22 ssh, 3128 Squid e assim por diante. Troque também a última condição 'ESTABLISHED' pela correspondente na porta de pesquisa.

Exemplo para Squid no CL10

watch -n1 "netstat -na | grep ':3128 ' | egrep -i 'ESTAB|ESPERANDO'"

watch vem no pacote procps (rpm -qi procps)

  rpm -qf /usr/bin/watch
  procps-3.1.15-55011cl

Veja também sobre tmpwatch

tmpwatch - removes files which haven't been accessed for a period of time

Veja mais no manual: man tmpwatch

Ele vem no pacote tmpwatch

  rpm -qa | grep watch
  tmpwatch-2.8.4-44077cl

sleep

Por default conta o tempo informado em segundos.

sleep 90

provoca uma espera de 90 segundos.

sleep 300

O comando acima espera por 300 segundos, tem o mesmo tempo de 5 minutos igual o comando abaixo.

sleep 5m

Faça testes; use o tempo mais uma destas opções, s=segundos, m=minutos, h=horas e d=dias

esperar 5 minutos ou 5 horas.

  sleep 5m
  sleep 5h

Exemplo de um script com espera 3 segundos para executar novamente o comando smbstatus.

  #!/bin/sh
  while true;
  do
    clear
    smbstatus -S
    sleep 3
  done

tee

man tee

tee - read from standard input and write to standard output and files

Ideal para redirecionar a saida para arquivo.

Saída na tela e no arquivo de log ao mesmo tempo, salva no arquivo indicado.

ls | tee arquivo.log

ls -la | tee arquivo.log

tee vem no pacote coreutils

  rpm -qif /usr/bin/tee
  Name        : coreutils

Depuração de script

Insira linhas para salvar o conteúdo de variáveis em arquivo, use o echo para salvar comentarios e anotações. Alguns exemplos.

echo " executou a linha tal " >> arquivo.log

echo "conteúdo da variável" >> arquivo.log

echo $VARIAVEL" >> arquivo.log

Verifique e salve o retorno de $?, faça testes com $?, use o if para conferir se executou o comando com sucesso e salve mensagem correspondente

echo $? >> arquivo.log

echo "comando executado com sucesso!" >> arquivo.log

Direcionar toda a saída de um script para arquivo, mensagem de erro ou padrão ( stdout e stderr).

Pode aplicar a um comando, linha de comando ou script, algumas formas de uso.

Redirecionar stdout e stderr para arquivo:

Redirecionar toda saida para um único arquivo

comando > arqsaida.log 2>&1

Redirecionar saída para arquivos distintos

comando 1> arqstdout.log 2> arqstderr.log

Descartar tudo, jogar no buraco negro /dev/null

comando > /dev/null 2>&1

Execute o script com a opção -xv para exibir as linhas de comando do seu script.

bash -xv seu-script.sh

Redirecione a saída para arquivo.

bash -xv seu-script.sh 2> /tmp/logscript.txt

script depurando script

script <arquivo_script> faz copia do conteúdo da tela em arquivo_script até que você digite o comando exit.

Útil para depuração.

Não confundir o nome do comando com arquivo de comandos que também recebe o nome de script, aqui o nome do comando é script mesmo.

No CL10 ele vem no pacote util-linux, veja copia de parte do man no CL10

         script - gera um arquivo texto da sessão atual
  
  SINOPSE
         script [-a] [arquivo]
  
  DESCRIÇÃO
         script  gera  um  arquivo  texto de tudo que é impresso na tela. É útil
         para estudantes que precisam de uma cópia impressa de uma sessão inter-
         ativa, já que o script pode ser impresso mais tarde com lpr(1).
  
         Se  o  parâmetro arquivo é fornecido, script grava todos os diálogos em
         arquivo.  Se nenhum nome de arquivo é fornecido, o script é gravado  no
         arquivo typescript.
  
  OPÇÃO
         -a     Adiciona saída a arquivo ou typescript, mantendo o conteúdo ini-
                cial.
  
         O script termina quando se encerra o  shell  (control-D  para  sair  do
         Bourne SHell sh(1)), e exit, logout ou control-d (se ignoreeof não está
         definido) para C-shell, csh(1)).

exec - redirecionar para arquivo

Direcionar toda a saída de um script para arquivo, mensagem de erro ou padrão ( stdout e stderr).

Faça testes com (exec), acrescente como no exemplo abaixo, na segunda linha do script ou a partir do ponto que deseja registrar.

Redireciona automaticamente todas as saídas do script para arquivo.log

Use seu editor para ver o que tem em arquivo.log

  #!/bin/bash
  exec 1>> arquivo.log 2>&1
  #seus comandos a partir daqui..

exec 2 - com resultado no console e arquivo.

  exec 2>> arquivo.log 2>&1

Outros exemplos....

  #!/bin/sh
  exec 2>> arqlog.txt
  #seus comandos a partir daqui..
  exit

trafego - interface gráfica

sobre tráfego.

iptraf - análise do tráfeco de dados em redes

mrtg

ntop - SUSE 10.1

ntop - display top network users

Instale o pacote ntop, linha de comando para instalar via smart

smart install ntop

Precisa definir uma senha, execute.

ntop -A -u wwwrun

forneça uma senha e depois inicie o serviço

rcntop start

Por default vem configurado para aceitar conexão somente de localhost:3000, para alterar e permitir acesso via rede local, edite o arquivo de configuração

/etc/sysconfig/ntop

Acrescente a opção NTOPD_PORT="192.168.1.2:3000", exemplo.

  NTOPD_PORT="127.0.0.1:3000"
  NTOPD_PORT="192.168.1.2:3000"

Reinicie o serviço rcntop restart

Depois desta alteração aceita conexão remota, indique na URL IP:3000

ou via konqueror

http://localhost:3000/

acessar maquina remota, quando falhar o acesso via IP na URL. Faça conexão via ssh -X e execute konqueror, depois informe na URL

http://localhost:3000/

Caso tenha problema de acesso ou mensagens de erro, pare o serviço e reinicie novamente.

  rcnotp stop
  ntop -A -u wwwrun
  rcntop start

manual (ajuda)

  man ntop
  ntop --help 

ntop - CL10

apt-get install ntop

  ls -l /usr/share/
  [root@faqcl10 root]# ls -l /usr/share/ntop
  total 32
  drwxr-xr-x  3 root root  4096 2007-06-01 05:34 html
  -rw-r--r--  1 ntop ntop 12309 2007-06-01 05:50 ntop_pw.db
  -rw-r--r--  1 ntop ntop 12288 2007-06-01 05:48 prefsCache.db

ntop -P /usr/share/ntop -u ntop -A

ntop -A

or

ntop --set-admin-password

service ntop start

chown ntop.ntop /var/lib/ntop/prefsCache.db

service ntop start

chown ntop.ntop /var/lib/ntop/ntop_pw.db

  [root@faqcl10 init.d]# service ntop start
  Iniciando Network traffic monitor (ntop):                                          [  OK  ]

strace

strace - Mostra as chamadas de sistema de um processo rodando

Instale o pacote strace

Consulte o manual ``man strace ``

strace - trace system calls and signals

strace ls -la

Aplicativos do ambiente grafico, execute a partir da linha de comando, algo neste formato.

strace firefox http://www.zago.eti.br

site do projeto
http://freshmeat.net/projects/strace/

log especifico de alguns pacotes (servidores)

Apache - servidor de páginas web

Gerar gráficos estatísticos e consultar os logs do Apache em ambiente gráfico via browser, weblizer é um excelente pacote pra analisar e gerar gráficos de acesso no servidor Apache, dicas e indicações sobre apache.
http://www.zago.eti.br/apache.html

awstats - estatísticas em modo gráfico - servidores WEB, FTP, E-MAIL e etc...
AWStats official web site
Free real-time logfile analyzer to get advanced statistics (GNU GPL).
Gera estatísticas em modo gráfico, trabalha com diversos logs, web, ftp, servidor de e-mail e etc.., documentação e download.
http://www.awstats.org/
http://awstats.sourceforge.net/
Como funciona o awstats
http://webmail.vbcargas.com.br/mailstats/

Conforme a versão do apache o log pode ser diferente, exemplo de uma linha de log no SUSE 10.1

  200.204.198.164 - - [28/May/2006:19:58:05 -0300] "GET /zago/A-menu-samba.html HTTP/1.1" 200 24028 "http://www.google.com.br/search?q=samba+modelo+smb.conf&hl=pt-BR&lr=lang_pt&start=40&sa=N" "Mozilla/5.0 (X11; U; Linux i686 (x86_64); pt-BR; rv:1.8.0.2) Gecko/20060415 SUSE/1.5.0.2-0.1 Firefox/1.5.0.2"

Registro muitos detalhes, tem varios meios de acesso a esta informação nos logs, pode gerar relatórios, estatisticas ou consultar em tempo real com tail, o local e nome do arquivo pode mudar conforme a distro e versão, alguns exemplos de linha de comando no SUSE 10.1.

  tail -f /var/log/apache2/access_log
  tail -100 /var/log/apache2/access_log
  tail -f /var/log/apache2/access_log | grep samba
  tail -1000 /var/log/apache2/access_log | grep samba | wc -l

Samba - Servidor de arquivos

Especifico sobre Samba:
http://www.zago.eti.br/samba/A-menu-samba.html
http://www.zago.eti.br/samba/dicas.txt
http://www.zago.eti.br/samba/controle-acessos.txt

smbstatus retorna usuários e processos, PID, arquivos acessados e outros detalhes.

o smbstatus gera uma parte no formato:

Service uid gid pid machine

e logo em seguida relata o PID e os arquivos em uso

Usuários cadastrados no samba veja:

/etc/smbusers

/etc/smbpasswd

log do Samba, o local é definido no smb.conf, algo assim:

log file = /var/log/samba/log.%m

Indicando onde será gravado o log.

# Log level (0=none, 1=normal, 2 and above not recommended for production box)

debug level = 1

para depuração de erros pode ser interessante usar um valor acima de 2, não deixe permanente porque pode gerar arquivos grandes e degradar o desempenho.

Squid - proxy - logs e relatórios

Gerar graficos estatísticos e consultar os logs do Squid em ambiente gráfico via browser
http://www.zago.eti.br/squid/sarg.html
http://www.zago.eti.br/squid/A-menu-squid.html
http://www.zago.eti.br/squid/log.txt
http://www.zago.eti.br/squid/sarg.txt
http://www.zago.eti.br/squid/dicas-e-truques.html

e-mail - servidores

http://www.zago.eti.br/email/A-menu-email.html

Firewall - iptables e segurança

http://www.zago.eti.br/firewall/A-menu-firewall.html
FAM - File Alteration Monitor - Summary
Notificar alterações em arquivos ou diretórios
http://savannah.nongnu.org/projects/fam/

MSN - im-sniff - capturar conversa no MSN

http://www.zago.eti.br/msn.html

hardware e perifericos em geral

Página deste FAQ especifica sobre hardware.
http://www.zago.eti.br/script/A-menu-hard.html
visualiza em modo gráfico o uso do hardware e SO
http://visualos.sourceforge.net/

Registro do hardware detectado no boot, ver as mensagens da inicialização.

  dmesg | less
  dmesg | grep hd
  dmesg | grep CDROM
  dmesg | less
  dmesg | more
  
  fdisk -l
  
  more /proc/partitions
  
  Informações dos dispositivos pci
  
  /sbin/lspci -v
  lspci -v
  lspci -vv
  
  interrupções (IRQ) usadas
  
  cat /proc/interrupts
  
  Informação sobre a CPU
  
  cat /proc/cpuinfo

temperatura e outras informações de hardware, instale o pacote

lmsensors, ou lm_sensors, ou ksensors.

lmsensors - monitorar temperatura da CPU.

Espaço em disco, veja du e df, veja o FAQ:
http://www.zago.eti.br/du.txt

processos e modulos

FAQ sobre processos
http://www.zago.eti.br/processos.txt
Sobre uso da CPU, memória e processos, use o top q minusculo para sair:
http://www.zago.eti.br/top.txt

Ferramentas e outros documentos relacionados a log.

http://logreport.org/

http://www.astro.uiuc.edu/~r-dass/logcheck/

Logsurfer
The program "logsurfer" was designed to monitor any text-based logfiles on your system in realtime.
http://www.cert.dfn.de/eng/logsurf/
Logwatch - analise de logs do sistema, download e documentação.
Logwatch is a customizable log analysis system. Logwatch parses through your system's logs for a given period of time and creates a report analyzing areas that you specify, in as much detail as you require.
Logwatch is easy to use and will work right out of the package on most systems.
http://www.logwatch.org

ACID
Analysis Console for Intrusion Databases (ACID)
programa para analizar logs do SNORT.
http://acidlab.sourceforge.net/
http://freshmeat.net/projects/acid/?topic_id=43%2C152

SNORT
The Open Source Network Intrusion Detection System Programa para detectar invasão
http://www.snort.org/
http://www.zago.eti.br/firewall/snort.txt

monitorar temperatura de CPU e outros itens de hardware
http://denis.corbin.free.fr/software.html
webmin - Permite acessar a maquina pelo browser, tanto da rede local como internet, tem opção pra visualizar os logs em ambiente gráfico, além de ser um excelente configurador do sistema.
acesse webmin - na aba "sistema" procure pelos modulos relacionados a log.
http://www.zago.eti.br/webmin.txt

Outras indicações

Administração de Sistemas - execelente documentação em português.
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-isa-pt_br-4/index.html

Monitoramento de Recursos.
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-isa-pt_br-4/s1-resource-rhlspec.html

Páginas do manual - man

use o man seguido do nome do aplicativo, o man é sua maior fonte de informação, veja o resultado dos comandos abaixo:

  man syslog
  man syslogd
  man logrotate
  man lsof
  man tail
  man fuser
  man dmesg
  man lspci

Não esqueça do Google, para refinar a pesquisa, inclua também expressões howto, tutorial, ~linux Re., faça combinação entre eles, exemplo:

  howto logrotate ~linux
  tutorial syslog
  comando tail log squid Re: ~linux

FAQ e dicas sobre uso do Google.
http://www.zago.eti.br/google.txt

FAQ e indicações de documentos auxiliares

Procure mais informações no FAQ especifico do pacote ou serviço. O nome do arquivo ou diretório está associado ao comando, pacote ou serviço no Linux, sobre o texto use CTRL+F pra refinar a pesquisa.

Dicas para depurar script e log de comandos.
http://www.zago.eti.br/script/log-de-comandos.html

FAQ com mensagens que circulou na lista linux-br, respostas esclarecedoras sobre log.
http://www.zago.eti.br/log.txt
http://www.zago.eti.br/log-continua1.txt

Log do Squid, FAQ com mensagens que circulou na lista linux-br sobre log do Squid
http://www.zago.eti.br/squid/log.txt

Analise e gráficos de trafego na rede.
http://www.zago.eti.br/trafego.txt

Trafego na rede veja no sub-diretório firewall os FAQ
http://www.zago.eti.br/firewall/port-scanner.txt
http://www.zago.eti.br/firewall/sniffer.txt
Trafego em geral.
http://www.zago.eti.br/trafego.txt
http://www.zago.eti.br/mrtg.txt

Use o ssh para acessar maquinas remotas (servidores) e acompanhe as entradas nos arquivos de log com tail -f arquivo-de-log, sobre ssh veja em:
http://www.zago.eti.br/ssh/ssh.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html