Business Intelligence : explorez vos données métiers avec Elastic Stack

Romain Bonnal
Romain Bonnal
29 avril 2021
Elastic Stack

 

Largement utilisée par les sociétés d'hébergement pour le monitoring des serveurs et services web, l'utilisation d'Elastic Stack (Elastichsearch, Logstah, Kibana) sur des données métiers est plus confidentielle. Dans cet article, nous testons et vous partageons notre retour sur la dernière version disponible de la stack, la 7.10, dans ce contexte.

L’objectif est d'explorer et de mettre en œuvre un tableau de bord de suivi d'activité. Aucune analyse et conception d'entrepôt de données préalable ne seront réalisées. L'objectif est de tirer pleinement parti de la puissance d’indexation d’Elasticsearch,

Nous apporterons une attention particulière sur les points suivants :

  • temps de mises en œuvre,
  • facilité d'implémentation et d'exploration des données.

Présentation d'Elastic Stack

Elasticsearch

“Elasticsearch est un moteur de recherche et d'analyse RESTful distribué et conçu pour répondre à une multitude de cas d'utilisation. Et leur liste ne cesse de s'enrichir. Véritable clé de voûte de la Suite Elastic, il centralise le stockage de vos données et vous permet d'élargir le champ des possibles. Vos données n'ont plus aucun secret pour vous.”

Logstah

“Logstash est un pipeline open source côté serveur, destiné au traitement des données. Sa mission ? Ingérer simultanément des données provenant d'une multitude de sources, puis les transformer et les envoyer vers votre système de stockage préféré. (Bon, nous, bien sûr, on préfère Elasticsearch.)”

Kibana

“Kibana vous permet de visualiser vos données Elasticsearch et de naviguer dans la Suite Elastic. Vous voulez comprendre pourquoi on vous appelle à 2 h du matin ou évaluer l'impact de la pluie sur votre chiffre d'affaires trimestriel ? Kibana vous permet de le faire.”

Réalisation d’un Prototype de tableau de bord sur le suivi d’activité

Objectif 

  • Extraction de données de notre ERP de suivi d’activité depuis une API Http REST.
  • Indexation des données dans Elasticsearch.
  • Découverte/exploration des données.
  • Réalisation d’un tableau de bord de suivi de l’activité.

Présentation des données sources

En interne, nous utilisons l’application Redmine pour effectuer la gestion de nos projets. Les principales fonctionnalité de cet outil sont :

  • La gestion des projets.
  • La gestion des demandes associées aux projets.
  • L’affectation des demandes aux collaborateurs.
  • La saisie du temps passé.
  • ...

Une API Http Rest est disponible pour manipuler les données de cet ERP : 

http://www.redmine.org/projects/redmine/wiki/Rest_api

Dans notre prototype, nous avons décidé d’explorer les données associées aux demandes. Voici un exemple de données exposées par la route suivante

Reponse API Redmine

 

Indexation des données sources

Avec l’API Elasticsearch

Elasticsearch met à disposition plusieurs API REST permettant la manipulation des données.

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html

L'API “bulk” permet d'indexer un lot de données par un seul appel d'API. Cette méthode permet d’augmenter considérablement la vitesse d'indexation.

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html

Nous devons fournir à cette méthode un fichier ndjson  contenant les enregistrements à indexer dans Elasticsearch.

ndjison

Le format attendu est assez simple :

  • Chaque enregistrement est écrit sur 2 lignes ;
  • la première ligne correspond à la clé d’indexation. Cette clé sera utilisée comme clé primaire dans Elasticsearch, ce qui évitera la génération de doublons par la suite ;
  • la deuxième ligne correspond à l’enregistrement à indexer ;
  • le fichier ndjson doit se terminer par une ligne vide.

Il est assez facile de construire ce fichier à partir d’un script bash. Quelques itérations sur l’API Rest Redmine ont suffi pour créer ce fichier :

download redmine issues

Une fois le fichier généré, il suffit de lancer la commande d'indexation :

Index elastic

L’indexation d’environ ~15000 enregistrements a duré quelques millisecondes seulement.

Depuis notre navigateur, nous pouvons vérifier l’indexation d’Elasticsearch. On retrouve bien les enregistrements fraîchement indexés.

check elastic index

 

Kibana : préparation des données

Dernière étape avant de pouvoir explorer les données dans Kibana, la création de l’index pattern.

kibana create index pattern

À cette étape, il est possible de modifier le mapping réalisé automatiquement par elasticsearch lors de l’indexation des données (format des champs, transformation…). Il suffit d’éditer les champs depuis l’interface suivante.

Edit Kibana mapping

Cette étape peut également être réalisée en amont en définissant un template de mapping a l’aide de logstah (https://www.elastic.co/fr/blog/logstash_lesson_elasticsearch_mapping). 

Kibana : exploration des données

Le module “Découverte” de Kibana nous offre la possibilité d'explorer facilement nos données.
Les experts pourront lancer des requêtes DSL (Domain Specific Language) sur les données.  

kibana discover pixlr

Nous pouvons également cliquer sur les champs pour visualiser les 5 valeurs les plus utilisées pour le champ en question. 

kibana top 5

Enfin, nous pouvons construire une vue tabulaire en sélectionnant les champs qui nous intéressent.

Kibana table

Ce premier module d’exploration est très intéressant. Il nous permet d’affiner la compréhension des données disponibles. Nous pouvons distinguer facilement les dimensions et mesures.

Kibana : visualisation des données

Après une phase d’exploration libre. Nous pouvons nous lancer dans la réalisation de visualisation des données. Pour faire simple, une visualisation correspond à un graphique. Ces visualisations sont autonomes, elles nous permettront par la suite de construire notre tableau de bord.
La première étape consiste à choisir un type de visualisation dans la palette proposée par la plateforme. Cette palette est très complète, on y retrouve des visualisations classiques (tableau, histogramme, camembert, nuage de point, courbe de tendance…) et avancées (carte, carte de chaleur, nuage de mots…).

kibana create visualization

Une fois la visualisation sélectionnée il suffit de définir les mesures et dimensions de notre analyse. Dans l’exemple ci-dessous, nous avons choisi de représenter le temps passé par projet. En quelques clics, nous pouvons visualiser le résultat. Il ne reste plus qu'à enregistrer ce travail.  

kibana pie

À tout moment, nous pouvons consulter ou modifier les visualisations depuis la page d'accueil du module.

Visualizations list

Kibana : création d'un tableau de bord

Il est temps à présent de rassembler les différentes visualisations sous forme de tableau de bord. Encore une fois cette opération est très simple. Il suffit d’ajouter les visualisations réalisées à l’étape précédente. Par un simple glisser-déposer, nous pouvons déplacer et organiser notre tableau de bord

kibana dashboard

Une fois terminé, il suffit d'enregistrer votre travail. C’est terminé, le tableau de bord est prêt à être utilisé. Nous pouvons ainsi naviguer dans les données :

  • en effectuant des requêtes DSL libres ;
  • en cliquant sur les graphiques - toutes les visualisations sont interconnectées ;
  • en sélectionnant les filtres prédéfinis (paramétrables depuis le module des visualisations).
Dashboard result

Kibana : intégration dans une application métier

Dernière fonctionnalité, le partage. Kibana offre la possibilité de diffuser notre tableau de bord sous forme d’iframe. On peut ainsi intégrer notre tableau de bord depuis une autre application métier. Pour des raisons de sécurité, il est néanmoins préférable de mettre en place un serveur proxy pour éviter d’exposer directement Kibana.

Dashboard iframe

Enfin, il faut noter l’absence de module d’export sur la version gratuite. Ce module est disponible uniquement sur la version payante (export pdf et png).

 

Conclusion

Il est temps de faire un bilan de ce test. La prise en main de la stack elastic est plutôt aisée, même si elle demande quelques compétences techniques. La réalisation de ce prototype a durée 2 jours, installation comprise. Aucune phase d’analyse ou de conception des données n’a été nécessaire. La facilité d’analyse et la puissance de traitement offertes par Elasticsearch accélèrent grandement la mise à disposition d’un premier niveau d'information. Bien sûr, la mise en production de ce travail nécessiterai des travaux supplémentaires :

  • Mise en place de logstash pour indexer les données dans elasticsearch plus efficacement.
  • Contrôle et validation des données métiers en entrée.
  • ...

Ce que nous avons aimé :

  • La facilité de mise en œuvre de la stack.
  • La facilité d’exploration des données.
  • La facilité de création des visualisations et tableaux de bord.
  • Les performances.

Ce que nous n’avons pas aimé :

  • Le niveau de personnalisation des visualisations est limité (formatage des étiquettes, personnalisation des rendues légendes…).
  • L’absence de module d’export des visualisations et tableaux de bord sur la version gratuite.

En bref...

Cette solution largement utilisée pour le monitoring d’infrastructure et d’application est aussi adaptée à l’exploration et l’analyse de vos données métiers sans cout de licence.

Suivez-nous et améliorez les performances de votre site Je m'abonne
À la recherche d’une nouvelle opportunité ? Rejoignez-nous

A lire aussi

Quelles solutions techniques pour améliorer la performance de votre site web ?
Voir tous les articles