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":[]
}