Logstash - coleta de logs

Logs de diferentes servidores ou fontes de dados são coletados usando remetentes. Um remetente é uma instância do Logstash instalada no servidor, que acessa os logs do servidor e envia para um local de saída específico.

Ele envia principalmente a saída para o Elasticsearch para armazenamento. O Logstash recebe informações das seguintes fontes -

  • STDIN
  • Syslog
  • Files
  • TCP/UDP
  • Logs de eventos do Microsoft Windows
  • Websocket
  • Zeromq
  • Extensões personalizadas

Coletando registros usando o servidor Apache Tomcat 7

Neste exemplo, estamos coletando logs do servidor Apache Tomcat 7 instalado no Windows usando o plugin de entrada de arquivo e enviando-os para o outro log.

logstash.conf

Aqui, o Logstash é configurado para acessar o log de acesso do Apache Tomcat 7 instalado localmente. Um padrão regex é usado na configuração do caminho do plugin de arquivo para obter os dados do arquivo de log. Este contém “acesso” em seu nome e adiciona um tipo apache, que ajuda a diferenciar os eventos apache de outros em uma fonte de destino centralizada. Finalmente, os eventos de saída serão mostrados no output.log.

input {
   file {
      path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
      type => "apache"
   }
} 
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

Executar Logstash

Podemos executar o Logstash usando o seguinte comando.

C:\logstash\bin> logstash –f  Logstash.conf

Log do Apache Tomcat

Acesse o Apache Tomcat Server e seus aplicativos da web (http://localhost:8080) para gerar logs. Os dados atualizados nos logs são lidos pelo Logstash em tempo real e armazenados em output.log conforme especificado no arquivo de configuração.

O Apache Tomcat gera um novo arquivo de log de acesso de acordo com a data e registra os eventos de acesso lá. No nosso caso, era localhost_access_log.2016-12-24.txt nologs diretório do Apache Tomcat.

0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
0:0:0:0:0:0:0:1 - munish [
   25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399

output.log

Você pode ver nos eventos de saída, um campo de tipo é adicionado e o evento está presente no campo de mensagem.

{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt",
   "@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
   HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
   manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
   HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
   introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
}

Coletando registros usando o plug-in STDIN

Nesta seção, discutiremos outro exemplo de coleta de logs usando o STDIN Plugin.

logstash.conf

É um exemplo muito simples, onde o Logstash está lendo os eventos inseridos pelo usuário em uma entrada padrão. No nosso caso, é o prompt de comando, que armazena os eventos no arquivo output.log.

input {
   stdin{}
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

Executar Logstash

Podemos executar o Logstash usando o seguinte comando.

C:\logstash\bin> logstash –f  Logstash.conf

Escreva o seguinte texto no prompt de comando -

O usuário inseriu as duas linhas a seguir. Logstash separa os eventos pela configuração do delimitador e seu valor por padrão é '\ n'. O usuário pode alterar alterando o valor do delimitador no plugin do arquivo.

Tutorialspoint.com welcomes you
Simply easy learning

output.log

O bloco de código a seguir mostra os dados do log de saída.

{
   "@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
   "message":"tutrialspoint.com welcomes you\r","tags":[]
}
{
   "@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
   "message":"simply easy learning\r","tags":[]
}