segunda-feira, 5 de maio de 2008

Registrando informação: Logs, Syslog, Syslogd, Logrotate, logger e dmesg

Uma das ferramentas mais importantes de um bom administrador de sistemas são os seus registros de eventos passados ocorridos no sistema: os logs, como são mais comumente chamados.

Os sistemas GNU/Linux armazenam seus logs principais em /var/log e são eles:

Messages: contém as mensagens do kernel.

Secure: contém todas as alterações relativas a usuários e segurança do sistema, incluindo avisos de logins mal sucedidos.

Mail: contém mensagens do serviço de e-mail.

Cron: contém mensagens relativas ao serviço do cron.

Apesar de esses quatro arquivos serem os mais comuns na maioria das distribuições, sua presença não é obrigatória já que sua existência depende de um programa: syslogd.

Syslogd é um programa de gerenciamento e armazenamento de logs. Sua configuração resite em /etc/syslog.conf, portanto a existência dos arquivos anteriormente mencionados depende de tal configuração existir nesse conf.

A estrutura de syslog.conf é simples, consistindo em basicamente de várias linhas no formato:

Origem.prioridade destino

Onde origem pode ser qualquer uma entre: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog, user, uucp, local0, local1, local2, local3, local4, local5, local6 e local7.

Algumas dessas origens são auto-explicativas, as demais são:


Auth, mensagens de segurança/autorização (nível de segurança: médio) authpriv, mensagens de segurança/autorização (nível de segurança: médio – mais indicado)
Cron, mensagens do cron, at, anacron e etc
Daemon, determinados daemons do sistema, otimiados para uso com o syslogd.
ftp, servidor de ftp.
Kern, Mensagens do kernel.
Lpr, sistema de impressão.
Local, Uso local.
Mail, serviço de e-mail.
News, serviço de newsSubsistema de notícias da USENET.
Security, Mensagens de segurança/autorização (nível de segurança: baixo – evite utilizar)
Syslog, Mensagens internas geradas do programa.
User, Mensagens genéricas de operações com usuários.
Uucp, Mensagens sobre troca de arquivos usando UUCP.

Com relação a prioridade, as mesmas podem ser: debug, info, notice, warning, err, crit, alert, emerg e none, onde:

Debug, Mensagens relativas a atividades de debug
Info, Mensagens Informativas
Notice, Mensagens observativas
Warning, Avisos
Err, Mensagens de erros
Crit, Mensagens críticas
Alert, Mensagens de alerta
Emerg, Mensagens de Emergência
None, Mensagens sem qualquer classificação

Por fim temos o campo destino, onde pode ser especificado um caminho de um arquivo de log, ou de um console, ou pode ser feito um pipe para outros programas.

Você pode utilizar alguns metacaracteres no arquivo de configuração do syslog, como por exemplo: * (asterisco) para indicar que a regra vale para todas origens e/ou prioridades pode usar , (vírgula) para separar mais de uma origem ou prioridade, = (igual) pode ser utilizado para definir uma prioridade para o evento e ! (exclamação) para excluir aquele evento de uma regra geral.

É preciso lembrar que após editar o arquivo de configuração do syslog é vital reiniciar o mesmo para que as alterações sejam efetuadas.

Você como administrador pode desejar incluir algumas linhas de informação no log do sistema, ou mesmo você pode querer que um determinado script escreva mensagens nesse log. Para isso você pode utilizar o programa logger, com a sintaxe logger mensagem. Anexando a opção –p você pode especificar um origem.prioridade para a mensagem que for ser adicionada.

Em servidores que trabalham com muitos acessos e operações em tempo real, o tamanho dos logs pode crescer para níveis astronômicos em pouco tempo. Para manter um controle e configurar a rotatividade dos logs, foi criado o programa logrotate, que se encarrega de gerenciar os logs dentro de regras estabelecidas em /etc/logrotate.conf. Esse gerenciamento pode variar do simples apagar, a criação de um arquivo comprimido, envio para outros servidores e várias outras opções.

Por fim, um programa que não está ligado diretamente a criação de logs, mas sim a sua exibição, é o dmesg, que retorna na tela todas as mensagens registradas no boot do sistema. Esse programa faz parte do apcote do syslog e não exige maiores configurações.