Invia i log di un'app Java a Elastic Stack (ELK)

1. Panoramica

In questo rapido tutorial, discuteremo, passo dopo passo, come inviare i log dell'applicazione all'Elastic Stack (ELK).

In un articolo precedente, ci siamo concentrati sulla configurazione dello stack elastico e sull'invio di dati JMX al suo interno.

2. Configurare Logback

iniziamo configurando Logback per scrivere i log delle app in un file utilizzando FileAppender :

 logback/redditApp.log  logback/redditApp.%d{yyyy-MM-dd}.log 7      

Nota che:

  • Conserviamo i registri di ogni giorno in un file separato utilizzando RollingFileAppender con TimeBasedRollingPolicy (maggiori informazioni su questo appender qui)
  • Manterremo i vecchi log solo per una settimana (7 giorni) impostando maxHistory su 7

Inoltre, nota come utilizziamo LogstashEncoder per eseguire la codifica in un formato JSON, che è più facile da usare con Logstash.

Per utilizzare questo codificatore, dobbiamo aggiungere la seguente dipendenza al nostro pom.xml :

 net.logstash.logback logstash-logback-encoder 4.11 

Infine, assicuriamoci che l'app disponga delle autorizzazioni per accedere alla directory di registrazione:

sudo chmod a+rwx /var/lib/tomcat8/logback

3. Configurare Logstash

Ora, dobbiamo configurare Logstash per leggere i dati dai file di registro creati dalla nostra app e inviarli a ElasticSearch.

Ecco il nostro file di configurazione 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}" } } }

Nota che:

  • il file di input viene utilizzato poiché Logstash leggerà i registri questa volta dai file di registrazione
  • path è impostato sulla nostra directory di registrazione e tutti i file con estensione .log verranno elaborati
  • index è impostato sul nuovo indice "logback -% {+ YYYY.MM.dd}" invece del valore predefinito "logstash -% {+ YYYY.MM.dd}"

Per eseguire Logstash con una nuova configurazione, useremo:

bin/logstash -f logback.conf

4. Visualizza i registri utilizzando Kibana

Ora possiamo vedere i nostri dati di logback nell'indice " logback- * ".

Creeremo una nuova ricerca "Log di logback" per assicurarci di separare i dati di Logback utilizzando la seguente query:

type:logback

Infine, possiamo creare una semplice visualizzazione dei nostri dati di Logback:

  • Vai alla scheda "Visualizza"
  • Scegli "Grafico a barre verticali"
  • Scegli "Dalla ricerca salvata"
  • Scegli la ricerca "Logback log" che abbiamo appena creato

Per l'asse Y, assicurati di scegliere Aggregazione: Conteggio

Per l'asse X, scegli:

  • Aggregazione: termini
  • Campo: livello

Dopo aver eseguito la visualizzazione, dovresti vedere più barre che rappresentano un conteggio di log per livello (DEBUG, INFO, ERROR, ...)

5. conclusione

In questo articolo, abbiamo appreso le basi della configurazione di Logstash nel nostro sistema per inviare i dati di registro che genera in Elasticsearch e visualizzare tali dati con l'aiuto di Kibana.