sexta-feira, 9 de novembro de 2012

Logwatch - Enviando relatórios via e-mail


Introdução e Preparação


Esse artigo foi escrito com o objetivo de apresentar o Logwatch em conjunto com Mutt, como uma forma muito eficaz de manter-se informado acerca das atividades do sistema, através do envio de relatórios por e-mail.

A princípio, precisamos apenas de um e-mail server básico e um cliente de e-mail básico rodando na máquina, para que possamos deixar tudo funcionando.

A noção da importância de se monitorar servidores e serviços, motivou o desenvolvimento deste artigo.

Espero que este texto ajude de alguma forma, toda a comunidade, seja estudante ou sysadmin.

Preparando o sistema

Antes de qualquer coisa, precisamos deixar o servidor de e-mail e o cliente de e-mail configurados de forma correta. Para isso, usei como referência o artigo do Raimundo Alves Portela, o rai3mb da comunidade VOL.

Em resumo, vamos instalar os cliente e o servidor de e-mail:

# apt-get install postfix mutt

Durante a configuração do pacote do Postfix, quando ele configura as opções gerais de funcionamento e tipo de servidor, escolha a opção "No configuration", ou "sem configuração". Isto é feito para que tenhamos apenas o serviço rodando, sem uma configuração específica e possamos usar um e-mail de terceiros, no meu caso, o GMail.

Apos a instalação do Postfix e do Mutt, é necessário criar um arquivo com as configurações de acesso ao servidor de e-mail, que usaremos para mandar as mensagens:

# nano ~/muttrc

Insira:

# Nome do Remetente
set realname="Servidor de intranet - Matriz Empresa do Mané"

# Email do Remetente
set from="emp.do.mane@gmail.com;"

# Usuario da conta de email
set my_user=emp.do.mane@gmail.com

# Senha da conta de email
set my_pass='SENHA_FACIL'

# Autenticacao no servidor smtp de email, nesse caso do gmail.com
set smtp_url=smtps://$my_user:$my_pass@smtp.gmail.com

# Camada de segurança, requerida pelo gmail.com
set ssl_force_tls = yes

# Referencia:
# http:// www.vivaolinux.com.br/artigo/Enviar-email-pelo-terminal-com-mutt/?pagina=1


Feito isso, teremos o nosso servidor pronto para o envio de e-mails. 

Logwatch, o agente gerador de log

Logwatch é um sistema de análise de logs customizável, que age acessando os logs do sistema criando um report das áreas especificadas no arquivo de configuração. 

O Logwatch é muito simples, de fácil instalação e configuração, rodando na maioria dos sistemas Unix-like. 

Site oficial:
Para instalá-lo, use: 

# apt-get install logwatch 

Teste seu funcionamento emitindo o comando logwatch no terminal: 

# logwatch 

Se tudo tiver certo, ele vai gerar um relatório extraindo informações dos logs do seu sistema. 

Enviando logs por e-mail

Analisar logs é uma tarefa que precisa ser vista e praticada pelos sysadmins como algo crucial, uma vez que através dela, podemos identificar ou corrigir problemas antes dos mesmos tomarem proporções que dificultem ou impossibilitem um reparo do erro. 

Muitas vezes, por falta de tempo ou a falta de experiência do sysadmin em analisar cada log, esta tarefa é colocada em último plano, um erro grave. 

Pensando nisso, escrevi o script a seguir para automatizar o envio por e-mail dos logs gerados pelo Logwatch, trazendo praticidade à tarefa de analise de logs. 

Segue abaixo, a ultima peça do nosso canivete suíço, o script que gera o log e o envia por e-mail: 

#!/bin/sh
# Script para envio dos logs do sistema de forma periódica e automática.
# Desenvolvido em Shell script.
# Autor: Alex Sandro Silva
# Twitter: @alexhctp
# Email: alexhctp[at]hotmail[dot]com - alexhctp[at]gmail[dot]com

# CONFIGURACOES LOCAIS

LOGGEN='/usr/sbin/logwatch'
MAIL='/usr/bin/mutt'
LOGDIR='/tmp/logs/'
MAIL='/usr/bin/mutt'
# DATE=`date +%y%m%d`
DATE=`date +%Y-%m-%d`
HOME='/root/'
# MENSAGEM=/root/mensagem.txt #aprendendo uma forma de dar um echo buscando o conteúdo de um arquivo de texto, se alguem souber, conta ae, rsrs

if [ -d $LOGDIR ]
     then
     rm -r $LOGDIR
exit 0
elif [ -d $HOME  ]
     then
     mkdir $LOGDIR

     $LOGGEN > $LOGDIR/log_$DATE.log
     echo 'Logs e estatisticas enviadas automaticamente ao sysadmin' | $MAIL -s 'Estatisticas e Logs diarios - NOME DA FILIAL'  -a $LOGDIR\log* -- ti@seuemail.com

     rm -R $LOGDIR

exit 0
fi


Sintam-se à vontade para mudar, sugerir melhorias ou correções no script. 

Automatizando o processo com o Cron

Para terminar, agendamos uma tarefa com o Cron para que todos os dias um log seja enviado ao sysadmin. Para isso, edite o Crontab adicionando a entrada a seguir: 

# nano /etc/crontab 

Insira: 

# Envio de automatico de logs do sistema por email
59  23    * * *    root    /root/sendMail.sh


Pronto... agora é só criar o vício de analisar os seus relatórios do sistema, uma vez que a falta de tempo, não mais será desculpa para deixar de fazê-lo. 

Espero ter ajudado. 

Comentários com criticas e sugestões são bem-vindos. 

Abraço a todos. ;) 

Referências

Artigo publicado anteriormente por mim no Viva o Linux
http://www.vivaolinux.com.br/artigo/Logwatch-Enviando-relatorios-via-email/?pagina=2