Análise e visualização de arquivos de log
Por conta de alguns equipamentos remotos que gerencio comecei a fazer a coleta de logs em um único servidor Linux, o problema passou a ser como tratar e visualizar esses logs.
Algumas necessidades são cobertas por scripts que varrem os arquivos e enviam emails automáticos informando situações de maior severidade.
O que eu queria de verdade era poder analisar esses arquivos por meio de uma página onde eu pudesse fazer buscas por horário, equipamento, tipo de erro ou alguma combinação.
Para isso os arquivos deveriam ser consolidados em um banco de dados e uma interface web seria acrescentada.
A necessidade seria coberta com um conjunto de utilitários:
rsyslog – versão mais moderna do syslog original do Linux, com o recurso de acesso a um banco de dados SQL para consolidação dos dados.
MySQL – o banco de dados SQL escolhido. Poderia ser o PostgreSQL
LogAnalyzer – frontend em PHP para visualização e análise dos logs.
rsyslog – Instalação e configuração
A substituição do syslog pelo rsyslog é bem simples, basta instalar o pacote:
Comandos para CentOS e RedHat:
yum install rsyslog rsyslog-mysql
Comandos para Debian e Ubuntu:
apt-get install rsyslog rsyslog-mysql
Como e já tinha o MySQL configurado basta criar o banco de dados para o rsyslog. O rsyslog fornece um script pronto que cria um banco chamado Syslog:
# mysql < /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql
mysql> grant all on Syslog.* to syslogwriter@localhost identified by 'syslogwriter_password';
mysql> flush privileges ;
Como eu já usava o syslog para fazer a coleta copiei o arquivo /etc/syslog.conf para /etc/rsyslog.conf e adicionei adicionei as linhas necessárias para o rsyslog no início do arquivo:
# Use traditional timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514# provides MySQL database support
$ModLoad ommysql
e no final do arquivo as linhas para acesso ao banco de dados:
# Logging mysql database
*.* >localhost,Syslog,syslogwriter,syslogwriter_password
Baixei e instalei o LogAnalyser
tar zxvf loganalyzer-3.6.5.tar.gz
cd loganalyzer-3.6.5
mkdir /var/www/html/syslog
cp -a src/* /var/www/html/syslog
cd /var/www/html/syslog
touch config.php
chmod 666 config.php
Abra um browser e abra a configuração inicial do LogAnalyzer:
Informe o nome do banco de dados, usuário e senha.
O resultado é muito bom:
Podemos selecionar por evento (ssh):
Ter uma visão geral (observe que clicar sobre uma linha permite usar esse evento como filtro):
E a página de estatísticas:
Publicado em 10/01/2016, em Uncategorized. Adicione o link aos favoritos. 2 Comentários.
Meu camarada, obrigado por compartilhar teu conhecimento!
Com essa combinação seria possível fazer coleta de dados de conexões(ip de origem e destino) feitas por usuários de minha rede para posterior auditoria?
Essa solução foi para coleta SNMP especificamente, mas se você tiver um firewall na sua rede pode utilizar a mesma idéia para processar sua coleta e apresentá-la de modo a ter uma melhor visualização ou tratar as conexões de forma a obter dados de auditoria. Conhece o pfsense? É um firewall opensource extremamente versátil e a eficiente, deve fornecer os logs do jeito que você precisa.