Monitoramento automático de logs e alertas por e-mail – Fácil e explicado


Autor: Tiago duarte

Solução / Instalação

A solução

Esta solução funciona da seguinte forma, criaremos um arquivo chamado original, que irá conter apenas os registros do log que nos interessam.
Este será o arquivo base para a comparação. Depois, criaremos o script que irá:

  • Criar o segundo arquivo para comparação, chamando-o de atual.
  • Fazer a comparação entre os arquivos.
  • Executar o teste, enviando o e-mail apenas se houver os registros de nosso interesse.

Então, vamos lá. Para isto, precisaremos dos seguintes programas:

  • Cron (agendador de tarefas) – Já deve existir em seu sistema.
  • Diff (comparador de arquivos) – Já deve existir em seu sistema.
  • Grep (filtra tudo que você quiser) – Já deve existir em seu sistema.
  • Mailx (enviador de e-mail SMTP) – Vamos instalá-lo.

Instalação

Para este tutorial (muito provavelmente), você vai precisar instalar apenas o Mailx. O Mailx pode ser encontrado nos seguintes pacotes: heirloom-mailx ou mailutils.
Então, em sistemas baseados no Debian, basta executar:
# apt-get install mailutils
No meio do processo, irá aparece uma tela perguntando que tipo de configuração você deseja, escolha Sistema de internet e avance. Depois, confirme o nome do domínio que pode ser o nome do computador mesmo.
Faça o teste de envio de e-mail executando o comando:
$ mailx -s assunto fulano@gmail.com
Onde fulano@gmail.com é o destinatário.
Siga:

  • Quando aparecer “Cc:”, pressione: Enter
  • Digite algum texto para o corpo do e-mail e pressione: Enter
  • Depois, pressione Ctrl+d para finalizar e enviar o e-mail.

Verifique se o e-mail chegou na caixa de e-mail do fulano@gmail.com.
* Importante: verifique se em sua rede, existe algum bloqueio de proxy ou firewall. Caso ocorra, o administrador da rede deverá fazer a liberação para funcionar. Os comandos acima, são suficientes para conseguir enviar o e-mail numa rede livre de bloqueios. Ex.: na sua casa.

Configuração

Configuração 1

Neste tutorial, vou monitorar como exemplo o arquivo de log /var/log/auth.log. Mas, a mesma lógica e comandos podem ser usados para outros logs.
No auth.log estão todos os registros de autenticações realizadas no sistema. Vamos, então, configurar nosso script para recebermos alertas todas as vezes que o comando sudo ou su for usado no sistema. Ou seja, todas as vezes que alguém tentar se transformar em root ou tentar usar algum comando como root, nós receberemos um e-mail.
Primeiro, defina uma pasta para manter os arquivos que farão parte da configuração. No meu caso, irei usar a pasta /root/script/.
Criando a pasta:
# mkdir /root/script/
Após criar a pasta, vamos criar o arquivo base:
# grep su /var/log/auth.log > /root/script/original
Este comando diz o seguinte:

  • Encontre a palavra su em: /var/log/auth.log
  • E escreva o resultado em: /root/script/original

Configuração 2 – O script

Agora, vamos criar o script. Crie o arquivo de script com o comando:
# nano /root/script/atual.sh
Edite o arquivo com o conteúdo abaixo:

grep su /var/log/auth.log > atual
diff original atual
if [ $? -eq 0 ]; then
echo “nada mudou”
else
diff original atual | mailx -s assunto fulano@gmail.com
fi
grep su /var/log/auth.log > original

Saia do arquivo, salvando-o. O comando no nano para isso é: Ctrl+x
Entendendo o script:

  • A primeira linha cria o arquivo atual para comparação.
  • A segunda linha compara o arquivo original com o atual.
  • A terceira linha é o início do teste lógico, onde $? é a saída do comando anterior e -eq significa igual.
  • A quarta linha é a resposta do programa caso a condição da terceira linha seja atendida.
  • else = senão.
  • A sexta linha é a execução, caso a condição da terceira linha não seja atendida. O comando desta linha diz: compare original com atual, enviando o seu resultado para o e-mail fulano@gmail.com.
  • fi = fim.

Então, a leitura do algoritmo fica assim: Se saída igual a zero, então exiba “nada mudou”. Se não, faça: diff original atual | mailx …
O último comando atualiza o arquivo original.
Após sair do script, é preciso torná-lo executável, para isso, execute o seguinte comando:
# chmod +x /root/script/atual.sh
A criação do script foi terminada. Agora, só falta agendar o script para ser executado periodicamente.

Criando a rotina

A periodicidade de execução do script, vai depender do objetivo que você quer alcançar, de qual arquivo você está monitorando, com que frequência o log é alterado, e por aí vai…
No meu caso, vou agendar o script para ser executado de 30 em 30 minutos. Para isso, faça o seguinte:
1. Abra o arquivo de configuração do cron:
# nano /etc/crontab
2. Edite o arquivo, acrescentando a seguinte linha:

00,30 * * * *   root    /root/script/atual.sh

Onde:

  • 00,30 representam os minutos que o script será executado.
  • O segundo * representa a hora que será executado, neste caso, todas as horas.
  • root é o usuário que irá executar a tarefa.
  • /root/script/atual.sh é o nosso script.

3. Saia do arquivo, salvando-o.
Obs.: a última linha deste arquivo deve conter o caractere #. A aparência do arquivo crontab deve ser esta:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don’t have to run the `crontab’
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user  command
17 *    * * *   root cd / && run-parts –report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.monthly )
00,30 * * * *   root    /root/script/atual.sh
#


Fonte: http://www.vivaolinux.com.br/artigo/Monitoramento-automatico-de-logs-e-alertas-por-e-mail-Facil-e-explicado

avatar_wordpress_clean61

http://fabianoflorenitno.com

Anúncios

Publicado em 27 de fevereiro de 2014, em Vivaolinux e marcado como . Adicione o link aos favoritos. Deixe um comentário.

Um comentário começa grandes debates!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: