Envoyer les journaux d'une application Java à Elastic Stack (ELK)

1. Vue d'ensemble

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

Dans un article précédent, nous nous sommes concentrés sur la configuration de la pile Elastic et sur l'envoi de données JMX.

2. Configurer Logback

Commençons par configurer Logback pour écrire les journaux d'application dans un fichier à l'aide de FileAppender :

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

Notez que:

  • Nous conservons les journaux de chaque jour dans un fichier séparé en utilisant RollingFileAppender avec TimeBasedRollingPolicy (plus d'informations sur cet appender ici)
  • Nous ne conserverons les anciens journaux que pendant une semaine (7 jours) en définissant maxHistory sur 7

Notez également comment nous utilisons LogstashEncoder pour effectuer l'encodage au format JSON - ce qui est plus facile à utiliser avec Logstash.

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

 net.logstash.logback logstash-logback-encoder 4.11 

Enfin, assurons-nous que l'application dispose des autorisations nécessaires pour accéder au répertoire de journalisation:

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

3. Configurer Logstash

Maintenant, nous devons 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:

  • Le fichier d' entrée est utilisé car Logstash lira les journaux cette fois à partir des fichiers de journalisation
  • le chemin est défini dans notre répertoire de journalisation et tous les fichiers avec l'extension .log seront traités
  • index est défini sur le nouvel index «logback -% {+ YYYY.MM.dd}» au lieu de «logstash -% {+ YYYY.MM.dd}» par défaut

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

bin/logstash -f logback.conf

4. Visualisez les journaux à l'aide de Kibana

Nous pouvons maintenant voir nos données Logback dans l' index ' logback- * '.

Nous allons créer une nouvelle recherche 'Logback logs' pour nous assurer de séparer les données Logback à l'aide de la requête suivante:

type:logback

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

  • Accédez à l'onglet «Visualiser»
  • Choisissez «Graphique à barres verticales»
  • Choisissez "À partir de la recherche enregistrée"
  • Choisissez la recherche 'Logback logs' que nous venons de créer

Pour l'axe Y, assurez-vous de choisir Agrégation: Nombre

Pour l'axe X, choisissez:

  • Agrégation: termes
  • Champ: niveau

Après avoir exécuté la visualisation, vous devriez voir plusieurs barres représentant un nombre de logs 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 pousser les données de journal qu'il génère dans Elasticsearch - et visualiser ces données à l'aide de Kibana.