Instalação do LogAnalyzer
Para visualizar estes logs de uma maneira mais didática, iremos utilizar o
LogAnalyser.
O LogAnalyser é um front-end free para Syslog-Rsyslog de fácil compreensão e manuseio. É um aplicativo gratuito de fonte GLP aberto, que foi desenvolvido, em sua maioria, em PHP.
Sua integração com a fonte de dados tanto pode ser um banco quanto o próprio arquivo texto gerado pelo Rsyslog.
Para instalar o LogAnalyser você precisará ter instalado os seguintes módulos no servidor centralizado de logs, seja ele Windows ou
GNU/Linux:
- Apache ou IIS Webserver
- PHP5
Para iniciar precisaremos baixar LogAnalyzer. Escolha a versão mais recente através do site:
Será baixado um arquivo do tipo ".tar.gz". Copie toda a pasta "src" e os arquivos
configure.sh e
secure.sh da pasta "contrib", que estavam dentro do diretório recém descompactado, para o diretório padrão do Apache ou do IIS.
Neste caso tomaremos como padrão o Apache no servidor GNU/Linux, logo o arquivo deverá ser descompactado no diretório
/var/www/html.
Agora será necessário dar as permissões necessárias na pasta e nos arquivos contidos dentro dela. Defina o sinalizador de execução para eles:
# chmod + x configure.sh secure.sh
Execute:
# ./configure.sh
Que criará um
config.php em branco, e também irá definir o acesso de escrita a todos a ele. Poderá fazer isso manualmente, se quiser, configurando a permissão 777 neste arquivo.
Para iniciar a instalação LogAnalyzer, abra o seguinte link no browser que estará apontado para o script de instalação:
- http://localhost/install.php
O script de instalação irá solicitar configurações para a instalação do LogAnalyzer, basta seguir as instruções.
Iniciado a instalação do LogAnalyser, uma mensagem de boas-vindas será apresentada. Esta é a primeira página da instalação. Diz-lhe apenas, que antes de instalar, algumas diretivas de permissão de arquivos serão verificados.
Basta clicar em "Next" para iniciar o processo.
Verifique as permissões do arquivo. Aqui você vai ver, se o
config.php pode ser escrito ou não. Se não pode ser escrito, você terá que aplicar as permissões necessárias manualmente (
chmod 777 config.php) e clicar em "Next".
Algumas opções básicas deverão ser definidas aqui nesta tela:
- Number of syslog messages per page = 50 (default)
Este é o número de mensagens syslog indicadas em cada página. Você pode aumentar o valor ou diminuir o valor de acordo com a necessidade, vale lembrar que quanto maior o número, mais lento poderá ficar.
- Message character limit for the main view = 80 (default)
Defina o número de caracteres por mensagem, que será mostrado na última coluna da janela principal. Mensagens completas podem ser revistas ao passar o mouse sobre elas. Muitas pessoas preferem usar uma configuração de "0", para que toda a mensagem seja exibida.
- Character display limit for all string type fields = 30 (default)
Limite de caracteres para exibição. O default é pequeno, porém agiliza no tempo de retorno do sistema.
- Show message details popup (default yes) = yes (default)
Muitas pessoas acham que os pop-ups são intrusivos e preferem desativá-los. Use "no" neste caso.
- Automatically resolved IP Adrress (inline) = yes (default)
Resolve os IPs em nomes durante a visualização dos logs. Não é recomendado, pois poderá abaixar o rendimento da aplicação.
Na próxima tela teremos o passo mais importante, onde será configurada a fonte de dados, onde estão armazenados todos os dados do Rsyslog.
Primeiramente terá que ser escolhido um "Name of the Source" (Nome da Fonte) e um "Source Type" (Tipo de Origem).
O nome será escolhido por você e este será exibido no menu
drop-down com no qual você escolherá a sua fonte de dados Rsyslog ativa.
O "Source Type" (Tipo de Fonte) pode ser um arquivo, um banco de dados MySQL ou o PHP PDO que suporta tipos de dados diferentes como MS SQL, PostgreSQL, ODBC, Oracle ou IBM DB2 mesmo.
Neste caso utilizaremos a última opção, onde será configurado o banco PostgreSQL 9.1.
- Database Storage Engine = MySQL Server (default)
Escolha o tipo do banco de dados você está usando. Estes bancos são suportados:
- MySQL Server
- Microsoft SQL Server
- ODBC Conexão Banco de Dados
- PostgreSQL
- Oracle Call Interface
- IBM DB2
- Firebird / Interbase 6
- IBM Informix Dynamic Server
- SQLite 2
E a configuração do banco:
- Table Type = monitorware (default)
Este é o layout da tabela. Atualmente, você pode usar "monitorware" ou "syslogng"
- *Database Host = localhost (default)
Este é o nome da maquina ou IP de onde o banco de dados está localizado. Por padrão é localhost. Você pode especificar qualquer outro host, de acordo com o seu cenário.
- Database Name = loganalyzer (default)
O nome do banco de dados que você configurou no banco.
- Database Tablename = systemevents (default)
Este é o nome da tabela em que os dados são armazenados. O tablename padrão corresponde às tabelas criadas com a Linha "Table Type".
- Database User = user (default)
O nome de usuário do banco de dados.
- Database Password = não definido por padrão
A senha do usuário.
- Enable Row Counting = No (default)
Se configurado para "Yes", a quantidade de linhas na tabela serão contados com cada consulta, mostrando os registros totais para a sua pesquisa. Poderá ter um grande impacto em seu sistema ao utilizar um banco de dados muito grande.
Se configurado para "No", as linhas não serão contadas, proporcionando um desempenho melhor.
Se tudo ocorreu bem, você deve ver mensagens do Rsyslog já após a sua instalação LogAnalyzer. Por segurança você pode remover o script install.php.
Conforme figura acima, os dados que já foram inseridos no banco de dados podem ser visualizados pelo browser através do endereço do IP, ou localmente através do localhost.
Detalhando uma das mensagem acima, teremos a seguinte tela:
Acima, temos os seguintes campos:
- uiD - ID da mensagem conforme sua inserção no banco;
- Date - data e hora do evento;
- Host - nome da maquina onde o evento ocorreu;
- Severity - tipo de prioridade da mensagem;
- Syslogtag - tag que identifica qual o serviço que gerou o evento;
- Checksum - tag utilizada quando o rsyslog é utilizado com SSL/TLS;
- Message - conteúdo da mensagem com os dados do evento.
- Messagetype
- Facility
Neste evento, podemos perceber alguns dados interessantes: por ser um evento do tipo DHCPACK (onde o servidor confirma a alocação do endereço IP ao cliente), o endereço MAC da máquina que recebeu o IP e o endereço IP que foi atribuído. Isto pode permitir uma rastreabilidade na rede.
1.
2.
3.
4.
5. Instalação do LogAnalyzer
6.
Parabéns pelo artigo!
Estou utilizando o rsyslog em um servidor de testes, e ele não possui aplicação nenhuma em produção.
Porém ele fica inserindo logs de maneira intermitente, nunca para.. ele gera logs de si mesmo.. (mais de 100 registros por segundo).
Exemplo:
Sep 11 16:49:39 srvteste postgres[1469]: [15328557-1] 2013-09-11 16:49:39 BRT [1469]: [15328555-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268645-1] 2013-09-11 16:48:14 BRT [1469]: [15268643-l] user=sysloguser,db=syslog LOG: statement: begin', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328558-1] 2013-09-11 16:49:39 BRT [1469]: [15328556-l] user=sysloguser,db=syslog LOG: duration: 0.260 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328559-1] 2013-09-11 16:49:39 BRT [1469]: [15328557-l] user=sysloguser,db=syslog LOG: statement: commit;
Sep 11 16:49:39 srvteste postgres[1469]: [15328560-1] 2013-09-11 16:49:39 BRT [1469]: [15328558-l] user=sysloguser,db=syslog LOG: duration: 7.006 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328561-1] 2013-09-11 16:49:39 BRT [1469]: [15328559-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328562-1] 2013-09-11 16:49:39 BRT [1469]: [15328560-l] user=sysloguser,db=syslog LOG: duration: 0.051 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328563-1] 2013-09-11 16:49:39 BRT [1469]: [15328561-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268646-1] 2013-09-11 16:48:14 BRT [1469]: [15268644-l] user=sysloguser,db=syslog LOG: duration: 0.203 ms', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328564-1] 2013-09-11 16:49:39 BRT [1469]: [15328562-l] user=sysloguser,db=syslog LOG: duration: 0.443 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328565-1] 2013-09-11 16:49:39 BRT [1469]: [15328563-l] user=sysloguser,db=syslog LOG: statement: commit;
Sep 11 16:49:39 srvteste postgres[1469]: [15328566-1] 2013-09-11 16:49:39 BRT [1469]: [15328564-l] user=sysloguser,db=syslog LOG: duration: 6.991 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328567-1] 2013-09-11 16:49:39 BRT [1469]: [15328565-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328568-1] 2013-09-11 16:49:39 BRT [1469]: [15328566-l] user=sysloguser,db=syslog LOG: duration: 0.049 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328569-1] 2013-09-11 16:49:39 BRT [1469]: [15328567-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268647-1] 2013-09-11 16:48:14 BRT [1469]: [15268645-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('' [15208740-1] 2013-09-11 16:46:49 BRT [1469]: [15208738-l] user=sysloguser,db=syslog LOG: duration: 3.792 ms'', 16, ''srvteste'', 6, ''2013-09-11 16:46:49'', ''2013-09-11 16:46:49'', 1, ''postgres[1469]:'')', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328570-1] 2013-09-11 16:49:39 BRT [1469]: [15328568-l] user=sysloguser,db=syslog LOG: duration: 0.279 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328571-1] 2013-09-11 16:49:39 BRT [1469]: [15328569-l] user=sysloguser,db=syslog LOG: statement: commit;
Sep 11 16:49:39 srvteste postgres[1469]: [15328572-1] 2013-09-11 16:49:39 BRT [1469]: [15328570-l] user=sysloguser,db=syslog LOG: duration: 7.455 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328573-1] 2013-09-11 16:49:39 BRT [1469]: [15328571-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328574-1] 2013-09-11 16:49:39 BRT [1469]: [15328572-l] user=sysloguser,db=syslog LOG: duration: 0.051 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328735-1] 2013-09-11 16:49:39 BRT [1469]: [15328733-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328736-1] 2013-09-11 16:49:39 BRT [1469]: [15328734-l] user=sysloguser,db=syslog LOG: duration: 0.073 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328737-1] 2013-09-11 16:49:39 BRT [1469]: [15328735-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268835-1] 2013-09-11 16:48:14 BRT [1469]: [15268833-l] user=sysloguser,db=syslog LOG: statement: commit;', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328738-1] 2013-09-11 16:49:39 BRT [1469]: [15328736-l] user=sysloguser,db=syslog LOG: duration: 0.267 ms
Estou gravando em PostgreSQL 9.3
Isso é normal ? Ou é uma questão de configuração ?
Desde já agradeço a ajuda !