Stuur de logboeken van een Java-app naar de Elastic Stack (ELK)

1. Overzicht

In deze korte zelfstudie bespreken we stap voor stap hoe toepassingslogboeken naar de Elastic Stack (ELK) kunnen worden verzonden.

In een eerder artikel hebben we ons gericht op het opzetten van de Elastic Stack en het verzenden van JMX-gegevens erin.

2. Configureer Logback

laten we beginnen met het configureren van Logback om app-logboeken naar een bestand te schrijven met FileAppender:

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

Let daar op:

  • We houden logboeken van elke dag bij in een apart bestand door gebruik te maken van RollingFileAppender met TimeBasedRollingPolicy (meer over deze appender hier)
  • We bewaren oude logboeken slechts een week (7 dagen) door in te stellen maxHistory tot 7

Merk ook op hoe we het LogstashEncoder om de codering in een JSON-formaat uit te voeren - wat gemakkelijker te gebruiken is met Logstash.

Om gebruik te maken van deze encoder, moeten we de volgende afhankelijkheid toevoegen aan onze pom.xml:

 net.logstash.logback logstash-logback-encoder 4.11 

Laten we er tot slot voor zorgen dat de app machtigingen heeft om toegang te krijgen tot de logboekmap:

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

3. Configureer Logstash

Nu moeten we Logstash configureren om gegevens uit logbestanden die door onze app zijn gemaakt, te lezen en naar ElasticSearch te verzenden.

Hier is ons configuratiebestand logback.conf:

input {file {path => "/var/lib/tomcat8/logback/*.log" codec => "json" type => "logback"}} output {if [type] == "logback" {elasticsearch {hosts => ["localhost: 9200"] index => "logback -% {+ JJJJ.MM.dd}"}}}

Let daar op:

  • invoer het dossier wordt gebruikt omdat Logstash deze keer logboeken uit logbestanden zal lezen
  • pad is ingesteld op onze logboekregistratiemap en alle bestanden met de extensie .log worden verwerkt
  • inhoudsopgave is ingesteld op de nieuwe index "logback -% {+ YYYY.MM.dd}" in plaats van de standaard "logstash -% {+ YYYY.MM.dd}"

Om Logstash met een nieuwe configuratie uit te voeren, gebruiken we:

bin / logstash -f logback.conf

4. Visualiseer logboeken met Kibana

We kunnen nu onze Logback-gegevens zien in de ‘inloggen- *' inhoudsopgave.

We maken een nieuwe zoekopdracht ‘Logback-logs 'om ervoor te zorgen dat de logback-gegevens worden gescheiden door de volgende zoekopdracht te gebruiken:

type: logback

Ten slotte kunnen we een eenvoudige visualisatie van onze Logback-gegevens maken:

  • Navigeer naar het tabblad ‘Visualiseren '
  • Kies 'Verticaal staafdiagram'
  • Kies ‘Van opgeslagen zoekopdracht '
  • Kies de zoekopdracht 'Logback logs' die we zojuist hebben gemaakt

Zorg ervoor dat u voor de Y-as Aggregation kiest: Tellen

Kies voor X-as:

  • Aggregatie: Voorwaarden
  • Veld: niveau

Nadat u de visualisatie heeft uitgevoerd, zou u meerdere balken moeten zien die het aantal logboeken per niveau vertegenwoordigen (DEBUG, INFO, ERROR, ...)

5. Conclusie

In dit artikel hebben we de basisprincipes geleerd van het instellen van Logstash in ons systeem om de loggegevens die het genereert naar Elasticsearch te pushen - en die gegevens te visualiseren met behulp van Kibana.