30/05/2018
Introduction
Cet article vise à décrire la mise en place d’un dashboard Kibana pour exploiter les logs FlowerDocs, via la suite ELK.
La suite ELK est composée de 4 applications : Elasticsearch, Logstash, Filebeat et Kibana :
ELASTIC SEARCH
: stocke et indexe les données. C’est une base NoSQL permettant de gérer un grand nombre de données.LOGSTASH
: extrait les données des fichiers de log, les filtres et les envoie dans Elasticsearch.FILEBEAT
: permet un transfert léger et centralisé des logs et fichiers.KIBANA
: interface Web permettant de rechercher et visualiser graphiquement vos données.

Prérequis :
- Java 8 minimum
- Kibana 5.x minimum
- Logstash 5.x minimum
- Filebeat 5.x minimum
- Kibana 5.x minimum
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %c - %m%n" />
</layout>
Les filtres utilisés dans Kibana se basent sur des logs nommés selon la nomenclature suivante :
- GUI : flowerdocs.log
- Core : flowerdocs-core.log
- ARender HMI : flowerdocs-arender.log
Installation
ELASTIC SEARCH
- https://www.elastic.co/downloads/past-releases/elasticsearch-5-2-1
- https://www.elastic.co/guide/en/elasticsearch/reference/5.2/_installation.html
FILEBEAT
- https://www.elastic.co/downloads/past-releases/filebeat-5-2-1
- https://www.elastic.co/guide/en/beats/filebeat/5.2/filebeat-installation.html
LOGSTASH
- https://www.elastic.co/downloads/past-releases/logstash-5-2-1
- https://www.elastic.co/guide/en/logstash/5.2/installing-logstash.html
KIBANA
Ci-après les sigles ${ES_HOME}, ${FILEBEAT_HOME}, etc référenceront les dossiers d’installation.
Configuration de Filebeat
Variables ${FLOWER_LOG_FOLDER} et ${TOMCAT_HOME} à remplacer
Prospectors
Un prospector dans Filebeat correspond à une configuration pour injection des fichiers de logs :
- Nom et chemin des fichiers
- Eventuellement, gestion des multi-lignes (exemple : stacktrace d’une exception)
- Champs à ajouter pour chaque ligne
Plus de détails ici : https://www.elastic.co/guide/en/beats/filebeat/current/how-filebeat-works.html
Les prospectors sont définis dans le fichier filebeat.yml.
Exemples pour FlowerDocs :
FlowerDocs
- input_type: log
paths:
- C:\Tomcat\FlowerDocs\logs\flowerdocs.log
- C:\Tomcat\FlowerDocs\logs\flowerdocs-arender.log
- C:\Tomcat\FlowerDocs\logs\flowerdocs-core.log
document_type: flower
multiline.pattern: '^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3}'
multiline.negate: true
multiline.match: after
La partie “multiline” associe les lignes ne commençant pas par une date (au format YYYY-MM-dd HH:mm:ss,SSS) à la ligne au-dessus. Dans ES, l’évènement aura un type renseigné à “flower”. Ce champ sera également utilisé pour la configuration logstash.
Tomcat
- input_type: log
paths:
- C:\Tomcat\FlowerDocs\tomcat-8.5.24-GUI\logs\catalina.*.log
- C:\Tomcat\FlowerDocs\tomcat-8.5.24-GUI\logs\localhost.*.log
document_type: tomcat
fields:
host_type: gui
multiline.pattern: '^\d{2}-\w{3}-\d{4}\s\d{2}:\d{2}:\d{2}\.\d{3}'
multiline.negate: true
multiline.match: after
- input_type: log
paths:
- C:\Tomcat\FlowerDocs\tomcat-8.5.24-GUI\logs\localhost_access_log.*.txt
document_type: access
fields:
host_type: gui
Envoi vers ES
Ajouter les éléments suivants dans filebeat.yml
output.logstash:
hosts: ["localhost:5044"]
Configuration Logstash
Le fichier de configuration est à placer dans le répertoire ${LOGSTASH_HOME}/bin

Démarrage des services
- Si nécessaire, lancer FlowerDocs et effectuer quelques actions pour peupler les fichiers de logs
- Si non démarré, lancer
Elasticsearch
- Si la propriété
action.auto_create_index
est à false dans ES (${ES_HOME}/config/elasticsearch.yml), créer l’index “flower-filebeat” - Démarrer
Logstash
: ouvrir une invite de commande dans le répertoire ${LOGSTASH_HOME}/bin et entrer la commande suivante : logstash -f logstash-flower.conf –config.reload.automatic - Attendre le démarrage et vérifier qu’il n’y a pas d’erreur liées à la configuration
- Démarrer
Filebeat
: Ouvrir les services Windows et démarrer le service - Démarrer
Kibana
: dans une invite de commande, entrer ${KIBANA_HOME}/bin/kibana.bat
Filebeat
garde un “curseur” pour ne pas injecter plusieurs fois les mêmes logs. Par défaut, sur Windows, ces informations sont stockées dans “C:\ProgramData\filebeat\registry”
Pour réinjecter les logs (après suppression de l’index ES pour tester une autre configuration par exemple), supprimer les fichiers registry pour reprendre à 0 l’injection
Vérification de l’injection
Filebeat
Ouvrir les logs Filebeat (${FILEBEAT_HOME}/logs/filebeat) et vérifier que les fichiers ont bien été pris en compte avec la présence des lignes du type :
2018-05-31T16:28:10+02:00 INFO Starting prospector of type: log
2018-05-31T16:28:10+02:00 INFO Harvester started for file: C:\Tomcat\FlowerDocs\logs\flowerdocs.log
Sinon vérifier les chemins renseignés dans le fichier ${FILEBEAT_HOME}/Filebeat.yml
Elastic search
- Ouvrir
Kibana
(localhost:5601/app/kibana) - Aller dans la partie Management/Index Patterns et créer un nouvel index comme ci-dessous


- Cliquer sur l’onglet Discover et sélectionner l’index préalablement créé
- Ajuster la plage de temps si nécessaire et vérifier que les évènements sont bien présents.

Un évènement devrait ressembler à la capture écran suivante :

Visualisation dans Kibana
- Ouvrir
Kibana
(localhost:5601/app/kibana) - Aller dans la partie Management/Saved Objects et importer le fichier logs_flower.json
Aller dans l’onglet “Dashboard”. 3 dashboards sont disponibles :
- FlowerDocs GUI
- FlowerDocs Core
- Tomcat
Chaque dashboard ressemble à l’exemple ci-dessous :
