7.17. Suivre les performance d’ARender avec une stack ELK

7.17.1. Introduction

Étudiez et analysez les performances d’ARender dans une stack ELK est désormais possible.

ARender retourne des informations sur son utilisation, comme le temps de chargement du document ou encore le type de document ouvert. Ces informations sont stockées dans des fichiers de logs qui sont analysables par Logstash.

La ELK stack est composée de 4 applications : Elasticsearch, Logstash, Filebeat et Kibana :

  • Elasticsearch : qui stocke et indexe les données. C’est une base NoSQL permettant de gérer un grand nombre de données.
  • Logstash : qui extrait les données des fichiers de log, les filtres et les envoie dans Elasticsearch.
  • Filebeat : qui permet un transfert léger et centralisé des logs et fichiers.
  • Kibana : qui est une interface Web permettant de rechercher et visualiser graphiquement vos données.
../../_images/ELK_architecture.png

Via Kibana les données sont rendues de manière graphique. Leur création est très simple et les possibilités de configuration en fonction des besoins sont larges.

  • Temps moyen de chargement des documents :
../../_images/Kibana_Average_Loading_Time.png
  • Répartition des types MIME des documents visualisés dans ARender :
../../_images/Kibana_MimeTypes.png
  • Répartition des appels OK/KO en fonction du temps :
../../_images/Kibana_OK_KO_by_day.png

7.17.2. Prérequis

  • Kibana 5.x
  • Logstash 5.x
  • ElasticSearch 5.x
  • FileBeat 5.x

7.17.3. Configuration de ARender Rendition

Ouvrir le fichier log4j.properties situé dans le dossier conf de l’installation de ARender Rendition.

  • Modifier si besoin le dossier de stockage des logs applicatif.
    • Pour cela, modifier la valeur de la propriété log4j.appender.file.File. Ci-après le sigle ${RENDITION_LOGS_LOCATION} référencera le dossier contenant ces logs.
log4j.appender.file.File=${RENDITION_LOGS_LOCATION}/arender-rendition-server.log
  • Modifier si besoin le dossier de stockage des logs de performance.
    • Pour cela, modifier la valeur de la propriété log4j.appender.perf.File. Ci-après le sigle ${RENDITION_PERF_LOGS_LOCATION} référencera le dossier contenant ces logs
log4j.appender.perf.File=${RENDITION_PERF_LOGS_LOCATION}/arender-rendition-perf.log
  • Modifier si besoin le dossier de stockage des logs de météo.
    • Pour cela, modifier la valeur de la propriété log4j.appender.weather.File. Ci-après le sigle ${RENDITION_WEATHER_LOGS_LOCATION} référencera le dossier contenant ces logs
log4j.appender.weather.File=${RENDITION_WEATHER_LOGS_LOCATION}/arender-rendition-weather.log

7.17.4. Configuration de ARender HMI

7.17.4.1. Introduction

Les logs de performance côté HMI listent les mêmes informations que les logs de performance de Rendition avec en plus le temps réel d’affichage du document sur le poste client.

Ils sont donc plus proches de la réalité utilisateur.

7.17.4.2. Activation des logs de performance

Les logs de performances côté ARender HMI ne sont pas activés par défaut.

Ouvrir le fichier arender.xml situé dans le dossier WEB-INF/classes du WAR ARender, et décommenter les lignes suivantes :

<import resource="arender-hmi-logger-interceptor.xml" />

<bean id="loggerInterceptor" class="com.arondor.viewer.common.logger.LoggerInterceptor">
    <!--property name="username" value="true" /-->
</bean>

Note : si l’authentification est en place, il est possible de décommenter la propriété username ci-dessus pour afficher le nom d’utilisateur dans les logs de performance.

7.17.4.3. Configuration des logs de performance

Ouvrir le fichier log4j.properties situé dans le dossier WEB-INF\classes du WAR ARender.

  • Modifier le dossier de stockage des logs de performance.
    • Pour cela, modifier la valeur de la propriété log4j.appender.perf.File. Ci-après le sigle ${HMI_PERF_LOGS_LOCATION} référencera le dossier contenant ces logs.
log4j.appender.perf.File=${HMI_PERF_LOGS_LOCATION}/arender-hmi-perf.log

7.17.5. ElasticSearch

7.17.5.1. Installation

Installer ElasticSearch comme indiqué sur la documentation officielle : https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-8

Ci-après le sigle ${ELASTICSEARCH_HOME} référencera le dossier d’installation de ElasticSearch.

7.17.5.2. Démarrage

Démarrer ElasticSearch.

7.17.6. Logstash

7.17.6.1. Installation

Installer Logstash comme indiqué sur la documentation officielle : https://www.elastic.co/downloads/past-releases/logstash-5-6-8

Ci-après le sigle ${LOGSTASH_HOME} référencera le dossier d’installation de Logstash.

7.17.6.2. Configuration

  • Créer un dossier qui contiendra la configuration Logstash sur le serveur ELK. Dans la suite du tutoriel, ce dossier sera référencé par le sigle ${LOGSTASH_CONF_FOLDER}.
  • Dans le dossier ${LOGSTASH_CONF_FOLDER}, créer un dossier patterns et y ajouter le fichier pattern.conf.
  • Récupérer le fichier logstash.conf et ajouter le dans le dossier ${LOGSTASH_CONF_FOLDER}.
....
output {
    elasticsearch {
        action => "index"
        index => "arender-rendition-%{type}"
        hosts => "localhost:9200"
    }
    stdout {
        codec => rubydebug
    }
}

Note : ci-dessus la fin du fichier logstash.conf :

  • hosts => “localhost:9200” référence le host ElasticSearch.. à modifier si besoin.

  • index => “arender-rendition-%{type}”: le sigle %{type} référence le document_type configuré dans Filebeat ci-dessous. Cela va créer 4 index différents :
    • arender-rendition-server : log applicatif de ARender Rendition
    • arender-rendition-weather : log de météo de ARender Rendition
    • arender-rendition-perf : log de performance de ARender Rendition
    • arender-rendition-hmi_perf : log de performance de ARender HMI.

7.17.6.3. Démarrage

Démarrer Logstash avec le paramètre suivant : -f ${LOGSTASH_CONF_FOLDER}\logstash.conf

7.17.7. Filebeat

7.17.7.1. Installation

Installer Filebeat comme indiqué sur la documentation officielle : https://www.elastic.co/downloads/past-releases/filebeat-5-6-8

Ci-après le sigle ${FILEBEAT_HOME} référencera le dossier d’installation de Filebeat.

7.17.7.2. Configuration

Ouvrir le fichier ${FILEBEAT_HOME}/filebeat.yml et remplacer le contenu par ce qui suit (remplacer les valeurs entre crochets par les valeurs de l’environnement) :

#=========================== Filebeat prospectors =============================
filebeat.prospectors:

- input_type: log
  paths:
    - ${RENDITION_LOGS_LOCATION}\*rendition-server.log*
  document_type: server

- input_type: log
  paths:
    - ${RENDITION_PERF_LOGS_LOCATION}\*rendition-weather.log*
  document_type: weather

- input_type: log
  paths:
    - ${RENDITION_WEATHER_LOGS_LOCATION}\*arender-rendition-perf.log*
  document_type: perf

- input_type: log
  paths:
    - ${HMI_PERF_LOGS_LOCATION}\*hmi-perf.log*
  document_type: hmi_perf

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash host
  hosts: ["localhost:5044"]

Note : le host localhost:5044 ci-dessus correspond à l’URL sur laquelle logstash est exposé.. A modifier si besoin.

7.17.7.3. Démarrage

Démarrer Filebeat. Cela va déclencher le parsing des logs et leur indexation dans ElasticSearch par index.

7.17.8. Kibana

7.17.8.1. Installation

Installer Kibana comme indiqué sur la documentation officielle : https://www.elastic.co/downloads/past-releases/kibana-5-6-8

Ci-après le sigle ${KIBANA_HOME} référencera le dossier d’installation de Kibana.

7.17.8.2. Démarrage

Démarrer Kibana.

7.17.8.3. Configuration

../../_images/Kibana_home.png
  • Se rendre dans la configuration :
../../_images/Kibana_Management.png
  • Se rendre dans la gestion des pattern d’index :
../../_images/Kibana_Index_Pattern_empty.png
  • Ajouter les 4 index créés précédemment (Veillez à ne pas utiliser le Time Filter) :

    • arender-rendition-server
    • arender-rendition-weather
    • arender-rendition-perf
    • arender-rendition-hmi_perf
../../_images/Kibana_Index_Pattern_add.png
  • Se rendre dans les objets sauvegardés:
    • Cliquer sur Management puis Saved Objects
../../_images/Kibana_saved_objects.png ../../_images/Kibana_visualisations_imported.png ../../_images/Kibana_dashboard_imported.png
  • Ouvrir le dashboard :
../../_images/Kibana_dashboard_view.png