GNU/Linux
 
 
Syslogd
(sistema de log do GNU/Linux)

Syslogd é o sistema de log do GNU/Linux.



Logger
(o comando nativo do syslogd)

O "logger" é um comando shell para o sistema de log do GNU/Linux. Ele faz entradas nesse sistema, provendo uma interface de comando e opções no ambiente shell através do syslogd. Com ele é possível especificar a prioridade, nível, nome identificando o processo, PID etc. Seu uso é muito útil em shell scripts e que contrapõe ao uso dos famosos redirecionamentos (em conjunto com filtros) na inserção de mensagens dentro dos arquivos de log. Sempre quando houver necessidade de registrar algo nos arquivos de log do sistema ou de usuário, procure usar o comando "logger", pois ele foi feito para isso, trabalhando diretamente com o daemon syslog. Agora chega de conversa e vamos ao que interessa:


O comando
# logger Seu sistema vai ser desligado (O comando na sua forma simples. Envia a mensagem "Seu sistema vai ser desligado” para o arquivo de log do syslog [/var/log/syslog])
# logger “Seu sistema vai ser desligado” (idem)
# logger –s “Seu sistema vai ser desligado” (Idem, só que exibe a mensagem na tela também)
# logger –f arq.txt (envia o conteúdo do arquivo "arq.txt" para o arquivo de log do syslog [/var/log/syslog])

Exemplo prático: shell script
# vi test.sh ()
#!/bin/bash ()
logger -i -t $0 -p mail.err "Testando script com o comando logger." (esse script cria dentro do arquivo "/var/log/mail.err" a mensagem "Jun 16 23:03:31 kaspersky bash[11340]: Testando script com o comando logger.")

A opção "-p" permite a definição de um arquivo específico do syslog que são conhecidos como "facility" e "priority". O facility e o priority é um conjunto de duas palavras separadas por um ponto final que juntos definem um arquivo. Um exemplo seria o "mail.err", onde “mail” é o facility e o “err” é o priority, sendo que tal log fica sendo registrado em "/var/log/mail.err".

O facility é uma palavra-chave que define qual recurso (subsistema) do syslog/rsyslog será usado para produzir a mensagem. Os recursos disponíveis do syslog são auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (o mesmo que auth), syslog, user, uucp e local0 até local7. Por exemplo, todos os programas relacionados a correio eletrônico deveriam usar o facility chamado "mail", isso se eles querem usar o syslog para registrar os seus eventos.

A priority é uma palavra-chave que define a severidade (nível de detalhamento) das mensagens que serão armazenadas nos logs que o syslog controla. Os níveis de detalhamento que podem ser usados em ordem ascendente são debug, info, notice, warning, warn (o mesmo que warning), err, error (o mesmo que err), crit, alert, emerg, panic (o mesmo que emerg) e none (exclui todas as mensagens de log). Por exemplo, todos os programas que querem armazenadas as mensagens de erro devem usar o priority chamado "err".

Por exemplo, para armazenar mensagens de erro de programas relacionados a correio eletrônico, deve-se usar o "mail.err" como facility e priority. Na verdade, o facility e priority são usados em conjunto, separados somente pelo sinal de ponto final, como já foi explicado, sendo que nunca devemos confundir o nome do facility e priority (ex: mail.err) com o caminho do arquivo no sistema (/var/log/mail.err), pois são totalmente diferentes e independente. Acesse o arquivo “/etc/syslog.conf” ou “/etc/rsyslog.conf” veja que temos linhas do tipo:

Veja que no primeiro campo temos facility e priority. No segundo o caminho do arquivo onde serão armazenados os logs. Então, ao usar a opção –p devemos especificar o nome da facility e priority que muitas vezes tem o mesmo nome do arquivo de log. Se não for especificada esta opção -p, o log será armazenado em “/var/log/user.log” e em “/var/log/syslog”.

Um exemplo que poderíamos fazer dentro do syslog.conf seria:

*.* /dev/tty15 (toda mensagem syslog (facility e priority) gerada pelo sistema vai para o console virtual 15)

Agora vamos incrementar um pouco o log do script:

# logger -p local0.notice -t [$$] $0 -- "Estou escrevendo no log do servidor" (nesse exemplo, será exibido o número do PID do processo ($$) e o nome do arquivo que está sendo executado ($0). Seguido de uma mensagem qualquer:)

Exemplo prático
# vi /etc/syslog.conf
*.err, kern.notice, auth.notice /dev/null

Klogd
(o sistema de log do kernel)

O "klogd" é um daemon (processo em background) que intercepta e registra as mensagens do kernel. As funcionalidades do "klogd" tem sido tipicamente incorporadas dentro do "syslogd" (/var/log/kern.log), mas essa incorporação ainda é pobre. Nos kernels modernos um número maior de mensagens tem aparecido e um daemon específico para coletar essas mensagens oferece uma forma rápida e fácil de resgistrá-las e customizá-las. Por padrão, o "klogd" monitora as mensagens do kernel e as envia para o "syslogd" (daemon de log do sistema).


Uma fonte para as mensagens do kernel
# cat /proc/kmsg (usa pelo "klogd" para obter a mensagem para depois customizá-las)





Referências Bibliográgicas
http://blog.krix.com.br/2009/02/12/redirecionando-saidas-e-o-uso-do-logger/
http://under-linux.org/blogs/zenun/usando-syslog-em-shell-script-com-logger-160/
 
 


ETI - Especialista em Tecnologia
da Informação