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.