Enviar os logs de um aplicativo Java para a pilha elástica (ELK)
*1. Visão geral *
Neste tutorial rápido, discutiremos, passo a passo, como enviar logs de aplicativos para o Elastic Stack (ELK).
Em um link:/tomcat-jmx-elastic-stack [artigo anterior], nos concentramos em configurar o Elastic Stack e enviar dados JMX para ele.
===* 2. Configurar Logback *
vamos começar configurando o Logback para gravar os logs do aplicativo em um arquivo usando FileAppender:
<appender name="STASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logback/redditApp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logback/redditApp.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="DEBUG">
<appender-ref ref="STASH"/>
</root>
Observe que:
-
Mantemos os registros de cada dia em um arquivo separado usando RollingFileAppender com TimeBasedRollingPolicy (mais sobre este link do appender:/java-logging-rolling-file-appenders [aqui]) *Manteremos registros antigos por apenas uma semana (7 dias) configurando maxHistory como 7
Além disso, observe como estamos usando o LogstashEncoder para fazer a codificação em um formato JSON - que é mais fácil de usar com o Logstash.
Para usar esse codificador, precisamos adicionar a seguinte dependência ao nosso pom.xml:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
Por fim, verifique se o aplicativo tem permissões para acessar o diretório de log:
sudo chmod a+rwx/var/lib/tomcat8/logback
===* 3. Configurar Logstash *
Agora, precisamos configurar o Logstash para ler dados dos arquivos de log criados por nosso aplicativo e enviá-los ao ElasticSearch.
Aqui está o nosso arquivo de configuração logback.conf:
input {
file {
path => "/var/lib/tomcat8/logback/*.log"
codec => "json"
type => "logback"
}
}
output {
if [type]=="logback" {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "logback-%{+YYYY.MM.dd}"
}
}
}
Observe que:
-
input_file_ é usado, pois o Logstash lerá os registros desta vez dos arquivos de registro
-
path está definido como nosso diretório de log e todos os arquivos com extensão .log serão processados *index está definido para o novo índice "logback -% \ {+ YYYY.MM.dd}" em vez do padrão "logstash -% \ {+ YYYY.MM.dd}"
Para executar o Logstash com nova configuração, usaremos:
bin/logstash -f logback.conf
===* 4. Visualize logs usando o Kibana *
Agora podemos ver nossos dados de logback no índice log _logback -* _ ‘.
Criaremos uma nova pesquisa 'Logback Logback' para separar os dados do Logback usando a seguinte consulta:
type:logback
Por fim, podemos criar uma visualização simples de nossos dados do Logback:
-
Navegue até a guia "Visualizar"
-
Escolha ‘Gráfico de barras verticais '
-
Escolha ‘Da pesquisa salva '
-
Escolha a pesquisa logs Logback logs 'que acabamos de criar
Para o eixo Y, escolha Agregação: Count
Para o eixo X, escolha:
-
Agregação: Termos *Campo: level
Depois de executar a visualização, você verá várias barras representando uma contagem de logs por nível (DEBUG, INFO, ERROR, …)
===* 5. Conclusão*
Neste artigo, aprendemos o básico da configuração do Logstash em nosso sistema para enviar os dados de log que ele gera para o Elasticsearch - e visualizamos esses dados com a ajuda do Kibana.