SEC - Simple Event Correlator

Para aqueles que não tem tempo, ou tem tempo mas preferem resposta mais rapida quando um evento acontece vai uma dica: O SEC (Simple Event Correlator). O SEC (não confundam, não é OSSEC) é um script em Perl que é capaz de monitorar logs, multiplos logs, gerar eventos, fazer correlacionamento entre outras atividades. Ele não vai abrir logs e procurar por eventos como um script convencional faria (apesar de possuir opção para isso), uma vez que você pedir para ele monitorar eventos em um determinado log ele irá captar os novos eventos, fazendo a leitura e trabalhar correlacionando eles como por exemplo, fazendo a contagem de quantidade de eventos em um determinada quantidade de tempo.

Imagine que possuo um servidor Web Apache provendo acesso de varios sites, porém mesmo que eu tivesse tempo de chegar de manha e começar a procurar por erros, em muitos casos essa vai ser uma resposta tardia, o melhor seria que eu rebesse uma notificação por sms me dizendo que o Apache gerou determinado números de eventos anômalos pedindo que eu verifique antes que seja tarde.

Exemplo de mensagem do Apache:
[Tue Feb 17 23:01:44 2009] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/htdocs/pagina.html

Para começar, vamos fazer o download do SEC.
#wget http://prdownloads.sourceforge.net/simple-evcorr/sec-2.5.0.tar.gz

Para instalar, não é necessária compilar, basta que você o copie para um lugar adequado do seu sistema, um bom exemplo seria algum lugar do PATH
#tar -zxf sec-2.5.0.tar.gz
#cp sec-2.5.0/sec.pl /usr/local/sbin

Copie o man se quiser
#cp sec-2.0.5/sec.pl.man /usr/local/man/man1/sec.pl.1

Bom, agora vamos criar um arquivo de configuração simples, ele irá fazer o seguinte.
- Irá monitorar o error_log do Apache do meu Linux, e irá fazer match para alertas do tipo: warn, error, crit, alert e emerg.
- Como não quero receber multiplos avisos me falando a mesma coisa, a janela da quantidade de eventos sera de 3 minutos.
- Em um intervalo de 3 minutos, caso exista mais de 5 eventos ele irá disparar uma ação.
- A ação será a execução de um script em bash que faz o envio de SMS. (Não publicarei aqui o script porque isso precisa ser adequado ao seu gateway SMS)

Para criar o arquivo de configuração é necessário um pouco de conhecimento em Expressões Regulares, o exemplo de REGEX abaixo é simples e talvez voce queira melhorar ou quem sabe separar as ações do SEC conforme o evento do Apache com um recado para cada tipo de erro. Mas de qualquer forma a regra ficaria assim:

Arquivo apacheverify.cfg

type=SingleWithThreshold
ptype=RegExp
pattern=\s+\W+(warn|error|crit|alert|emerg)+\W+\s+.
action=shellcmd /usr/local/sbin/apachenotify.sh
desc=Apache Event
window=60
thresh=3

type = Tipo de regra usada no arquivo de configuração, no caso eu quero uma regra que use threshold.
ptype = Tipo de pattern que usarei, no caso quero usar expressão regular.
pattern = Expressão que deve ser usada para fazer match de eventos
action= Caso o evento seja encontrado o que o sec deve fazer, no caso executar um shell script.
desc = Descricão do tipo de evento sendo monitorado.
window = Tempo da janela em segundos que a soma de eventos deverá ser contado.
thresh = Quantidade de eventos na janela para que o sec possa disparar uma ação.

Após o escrevermos o arquivo de configuração basta que você execute o SEC.

# sec.pl -conf=/etc/sec/apacheverify.cfg -input=/var/log/httpd/error_log -pid=/var/run/sec.pl -detach
SEC (Simple Event Correlator) 2.5.0
Changing working directory to /
Reading configuration from /etc/sec/apacheverify.cfg
1 rules loaded from /etc/sec/apacheverify.cfg

Os parametros:
-conf = Qual o arquivo de configuração que contém as regras.
-input = Qual o arquivo que o sec irá monitorar.
-pid = Grava a pid, isso é de ajuda se você possuir algum sistema de monitoramento de processos, como Nagios.
-detach = Por padrão quando o sec é iniciado ele fica preso ao terminal que o executou, passando esta opção dizemos a ele para liberar o terminal.

Bom, é isso. O SEC como o nome ja diz é simples, porém você pode fazer com que essa ferramenta simples auxilie você no seu trabalho não simples, fazendo com que quando ao chegar no trabalho além de tomar um café, lhe sobre tempo para quem sabe um Clube Social também, e agora vou indo pois acabei de receber um SMS.

[]s
Marcos

Deixe uma resposta.