Envoyer les journaux d’une application Java à la pile élastique (ELK)

1. Vue d’ensemble

Dans ce rapide didacticiel, nous expliquerons, étape par étape, comment envoyer des journaux d’application à Elastic Stack (ELK).

Dans un lien:/tomcat-jmx-elastic-stack[article précédent], nous nous sommes concentrés sur la configuration de la pile Elastic et l’envoi de données JMX.

2. Configurer le logback

Commençons par configurer Logback pour écrire les journaux des applications dans un fichier en utilisant 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>

Notez que:

  • Nous gardons les journaux de chaque jour dans un fichier séparé en utilisant

RollingFileAppender avec TimeBasedRollingPolicy (plus à ce sujet lien appender:/java-logging-rolling-file-appenders[ici]) ** Nous ne garderons les anciens journaux que pendant une semaine (7 jours) en définissant maxHistory

à 7

Notez également que nous utilisons le LogstashEncoder pour effectuer l’encodage au format JSON - qui est plus facile à utiliser avec Logstash.

Pour utiliser cet encodeur, nous devons ajouter la dépendance suivante à notre pom.xml :

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>

Enfin, vérifions que l’application est autorisée à accéder au répertoire de journalisation

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

3. Configurer Logstash

Nous devons maintenant configurer Logstash pour lire les données des fichiers journaux créés par notre application et les envoyer à ElasticSearch.

Voici notre fichier de configuration 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}"
        }
    }
}

Notez que:

  • input file est utilisé car Logstash lira les journaux cette fois depuis la journalisation

des dossiers ** path est défini dans notre répertoire de journalisation et tous les fichiers avec .log

l’extension sera traitée ** index est défini sur le nouvel index "logback -% \ {AAAA.MM.dd}" au lieu de

«logstash par défaut -% \ {AAAA.MM.dd}»

Pour exécuter Logstash avec une nouvelle configuration, nous allons utiliser:

bin/logstash -f logback.conf

4. Visualiser les journaux avec Kibana

Nous pouvons maintenant voir nos données de logback dans l’index « logback - ** ».

Nous allons créer une nouvelle recherche ‘Logbacks’ pour nous assurer de séparer les données Logback en utilisant la requête suivante:

type:logback

Enfin, nous pouvons créer une simple visualisation de nos données Logback:

  • Naviguez vers l’onglet ‘Visualize’

  • Choisissez "Graphique à barres verticales"

  • Choisissez "De la recherche enregistrée"

  • Choisissez la recherche ‘Logback logs’ que nous venons de créer

Pour l’axe Y, veillez à choisir Agrégation: Count

Pour l’axe X, choisissez:

  • Agrégation: Termes

  • Champ: level

Après avoir exécuté la visualisation, vous devriez voir plusieurs barres représenter un nombre de journaux par niveau (DEBUG, INFO, ERROR, …​)

5. Conclusion

Dans cet article, nous avons appris les bases de la configuration de Logstash dans notre système pour transférer les données de journal générées dans Elasticsearch - et les visualiser à l’aide de Kibana.