Guia do Linux/Avançado/Arquivos e daemons de Log/Daemons de log do sistema

Daemons de log do sistema

editar

Os daemons de log do sistema registram as mensagens de saída do kernel (klogd) e sistema (syslogd) nos arquivos em /var/log .

A classificação de qual arquivo em /var/log receberá qual tipo de mensagem é controlado pelo arquivo de configuração /etc/syslog.conf através de facilidades e níveis (veja [#s-log-syslogd-exemplo Arquivo de configuração syslog.conf, Seção 6.2.1.1] para detalhes).

syslogd

editar

Este daemon controla o registro de logs do sistema.

syslogd [opções]

opções
-f
Especifica um arquivo de configuração alternativo ao /etc/syslog.conf.
-h
Permite redirecionar mensagens recebidas a outros servidores de logs especificados.
-l [computadores]
Especifica um ou mais computadores (separados por ":") que deverão ser registrados somente com o nome de máquina ao invés do FQDN (nome completo, incluindo domínio).
-m [minutos]
Intervalo em minutos que o syslog mostrará a mensagem --MARK--. O valor padrão padrão é 20 minutos, 0 desativa.
-n
Evita que o processo caia automaticamente em background. Necessário principalmente se o syslogd for controlado pelo init.
-p [soquete]
Especifica um soquete UNIX alternativo ao invés de usar o padrão /dev/log.
-r
Permite o recebimento de mensagens através da rede através da porta UDP 514. Esta opção é útil para criar um servidor de logs centralizado na rede. Por padrão, o servidor syslog rejeitará conexões externas.
-s [domínios]
Especifica a lista de domínios (separados por ":") que deverão ser retirados antes de enviados ao log.
-a [soquetes]
Especifica soquetes adicionais que serão monitorados. Esta opção será necessária se estiver usando um ambiente chroot. É possível usar até 19 soquetes adicionais
-d
Ativa o modo de depuração do syslog. O syslog permanecerá operando em primeiro plano e mostrará as mensagens no terminal atual.

Na distribuição Debian, o daemon syslogd é iniciado através do script /etc/init.d/sysklogd.


Arquivo de configuração syslog.conf

editar

O arquivo de configuração /etc/syslog.conf possui o seguinte formato:


     facilidade.nível                    destino

A facilidade e nível são separadas por um "." e contém parâmetros que definem o que será registrado nos arquivos de log do sistema:

  • facilidade - É usada para especificar que tipo de programa está enviando a mensagem. Os seguintes níveis são permitidos (em ordem alfabética):
    • auth - Mensagens de segurança/autorização (é recomendável usar authpriv ao invés deste).
    • authpriv - Mensagens de segurança/autorização (privativas).
    • cron - Daemons de agendamento (cron e at).
    • daemon - Outros daemons do sistema que não possuem facilidades específicas.
    • ftp - Daemon de ftp do sistema.
    • kern - Mensagens do kernel.
    • lpr - Subsistema de impressão.
    • local0 a local7 - Reservados para uso local.
    • mail - Subsistema de e-mail.
    • news - Subsistema de notícias da USENET.
    • security - Sinônimo para a facilidade auth (evite usa-la).
    • syslog - Mensagens internas geradas pelo syslogd.
    • user - Mensagens genéricas de nível do usuário.
    • uucp - Subsistema de UUCP.
    • * - Confere com todas as facilidades.

Mais de uma facilidade pode ser especificada na mesma linha do syslog.conf separando-as com ",".

  • nível - Especifica a importância da mensagem. Os seguintes níveis são permitidos (em ordem de importância invertida; da mais para a menos importante):
    • emerg - O sistema está inutilizável.
    • alert - Uma ação deve ser tomada imediatamente para resolver o problema.
    • crit - Condições críticas.
    • err - Condições de erro.
    • warning - Condições de alerta.
    • notice - Condição normal, mas significante.
    • info - Mensagens informativas.
    • debug - Mensagens de depuração.
    • * - Confere com todos os níveis.
    • none - Nenhuma prioridade.

Além destes níveis os seguintes sinônimos estão disponíveis:

    • error - Sinônimo para o nível err.
    • panic - Sinônimo para o nível emerg.
    • warn - Sinônimo para o nível warning.
  • destino - O destino das mensagens pode ser um arquivo, um pipe (se iniciado por um "|"), um computador remoto (se iniciado por uma "@"), determinados usuários do sistema (especificando os logins separados por vírgula) ou para todos os usuários logados via wall (usando "*").

Todas as mensagens com o nível especificado e superiores a esta especificadas no syslog.conf serão registradas, de acordo com as opções usadas. Conjuntos de facilidades e níveis podem ser agrupadas separando-as por ";".

OBS1: Sempre use TABS ao invés de espaços para separar os parâmetros do syslog.conf.

OBS2: Algumas facilidades como security, emitem um beep de alerta no sistema e enviam uma mensagem para o console, como forma de alerta ao administrador e usuários logados no sistema.

Existem ainda 4 caracteres que garantes funções especiais: "*", "=", "!" e "-":

  • "*" - Todas as mensagens da facilidade especificada serão redirecionadas.
  • "=" - Somente o nível especificado será registrado.
  • "!" - Todos os níveis especificados e maiores NÃO serão registrados.
  • "-" - Pode ser usado para desativar o sync imediato do arquivo após sua gravação.

Os caracteres especiais "=" e "!" podem ser combinados em uma mesma regra.

Exemplo: Veja abaixo um exemplo de um arquivo /etc/syslog.conf padrão de sistemas Debian


     #
     # Primeiro alguns arquivos de log padrões. Registrados por facilidade
     #

     auth,authpriv.*                 /var/log/auth.log
     *.*;auth,authpriv.none          -/var/log/syslog
     cron.*                         /var/log/cron.log
     daemon.*                        -/var/log/daemon.log
     kern.*                          -/var/log/kern.log
     lpr.*                           -/var/log/lpr.log
     mail.*                          /var/log/mail.log
     user.*                          -/var/log/user.log
     uucp.*                          -/var/log/uucp.log

     #
     # Registro de logs do sistema de mensagens. Divididos para facilitar
     # a criação de scripts para manipular estes arquivos.
     #
     mail.info                       -/var/log/mail.info
     mail.warn                       -/var/log/mail.warn
     mail.err                        /var/log/mail.err

     # Registro para o sistema de news INN
     #
     news.crit                       /var/log/news/news.crit
     news.err                        /var/log/news/news.err
     news.notice                     -/var/log/news/news.notice

     #
     # Alguns arquivos de registro "pega-tudo".
     # São usadas "," para especificar mais de uma prioridade (por
     # exemplo, "auth,authpriv.none") e ";" para especificar mais de uma
     # facilidade.nível que será gravada naquele arquivo.
     # Isto permite deixar as regras consideravelmente menores e mais legíveis
     #
     *.=debug;\
             auth,authpriv.none;\
             news.none;mail.none     -/var/log/debug
     *.=info;*.=notice;*.=warn;\
             auth,authpriv.none;\
             cron,daemon.none;\
             mail,news.none          -/var/log/messages

     #
     # Emergências são enviadas para qualquer um que estiver logado no sistema. Isto
     # é feito através da especificação do "*" como destino das mensagens e são
     # enviadas através do comando wall.
     #
     *.emerg                         *

     #
     # Eu gosto de ter mensagens mostradas no console, mas somente em consoles que
     # não utilizo.
     #
     #daemon,mail.*;\
     #       news.=crit;news.=err;news.=notice;\
     #       *.=debug;*.=info;\
     #       *.=notice;*.=warn       /dev/tty8

     # O pipe /dev/xconsole é usado pelo utilitário "xconsole". Para usa-lo,
     # você deve executar o "xconsole" com a opção "-file":
     #
     #    $ xconsole -file /dev/xconsole [...]
     #
     # NOTA: ajuste as regras abaixo, ou ficará maluco se tiver um um site
     # muito movimentado...
     #
     daemon.*;mail.*;\
             news.crit;news.err;news.notice;\
             *.=debug;*.=info;\
             *.=notice;*.=warn       |/dev/xconsole

     # A linha baixo envia mensagens importantes para o console em que
     # estamos trabalhando logados (principalmente para quem gosta de ter
     # controle total sobre o que está acontecendo com seu sistema).
     *.err;kern.debug;auth.notice;mail.crit	/dev/console


Este daemon controla o registro de mensagens do kernel. Ele monitora as mensagens do kernel e as envia para o daemon de monitoramento syslogd, por padrão.

klogd [opções]

opções
-d
Ativa o modo de depuração do daemon
-f [arquivo]
Envia as mensagens do kernel para o arquivo especificado ao invés de enviar ao daemon do syslog
-i
Envia um sinal para o daemon recarregar os símbolos de módulos do kernel.
-I
Envia um sinal para o daemon recarregar os símbolos estáticos e de módulos do kernel.
-n
Evita a operação em segundo plano. Útil se iniciado pelo init
-k [arquivo]
Especifica o arquivo que contém os símbolos do kernel. Exemplos deste arquivo estão localizados em /boot/System.map-xx.xx.xx.
-o
Faz com que o daemon leia e registre todas as mensagens encontradas nos buffers do kernel, após isto o daemon é encerrado.
-p
Ativa o modo paranóia. Isto fará o klogd somente carregar detalhes sobre os módulos quando os caracteres Oops forem detectados nas mensagens do kernel. É recomendável ter sempre a última versão do klogd e evitar a utilização desta opção em ambientes críticos.
-s
Força a utilização da interface de chamadas do sistema para comunicação com o kernel.
-x
Esconde tradução EIP, assim ele não lê o arquivo /boot/System.map-xx-xx-xx.

A especificação de um arquivo com a opção -k é necessária se desejar que sejam mostradas a tabela de símbolos ao invés de endereços numéricos do kernel.