VT2015 Kibana Logstash

From air
Jump to navigation Jump to search

Présentation

Enseignants : D. Donsez, GP. Bonneau

Sujet : Visualisation de Journaux : Démonstration de Logstash et Kibana

Auteur : Vivien Michel

Date : 09/10/15

Document

Slides de présentation

Abstract

Server applications generate operation logs. They can count on, per dayor even hourly thousands of reporting lines. In order to use them to monitor the system or make improvements, in order their existence provides information that man can handle, it is necessary to sort and edit visualization techniques. Indeed, a search information, to get the evolution of a given function of timecan not be done efficiently by reading raw logs, especially cause the large amount of it. So tools such as Logstash and Kibana have been developed. Thereof through the Elastic Search Database, provide a graphic display system of the information contained in the logs. With these tools, any user is able to analyze these logs and so debug / improve server application.

Résumé

Les applications serveurs génèrent des journaux de fonctionnement. Ceux-ci peuvent compter, par jour, voir par heure des milliers de lignes de compte rendu. Afin de les utiliser pour surveiller le système ou apporter des améliorations, afin que leur existence apporte des informations que l'homme peut traiter, il est nécessaire de les trier et de modifier les techniques de visualisation. En effet, chercher une information, avoir l'évolution d'une donnée en fonction du temps, ne peut être fait efficacement par la lecture des logs bruts, notamment par la grande quantité de celle-ci. Ainsi, des outils tels que Logstash et Kibana ont été développés. Ceux-ci, à travers la base de données Elastic Search, offrent un système de visualisation graphique des informations contenues dans les logs. Grâce à ces outils, tout utilisateur est en mesure d'analyser ces journaux et ainsi déboguer/améliorer l'application serveur.

Journaux Bruts

Exemple de "Raw Log". Journaux Apache sur une journée :

Log brut.png

Il est facile de voir sur l'image ci-dessus, que le trie et l'interprétation des données demandent un effort particulier au lecteur. Même avec un certain degré d'expertise, la durée des deux étapes préalablement citées n'est pas négligeables. Dès lors, il faut automatiser le traitement si l'on multiplie les logs et les applications serveurs. De plus, croiser des données entre différents serveurs devient impossible si l'on doit chercher dans de multiples types de journaux possédant une syntaxe différente.

Logstash : Formatage et Filtrage

D2si blog image logstash elasticsearch kibana-4.png

Définition des Input

Les points d’entrée (input) utilisés pour aller chercher l’information sont définis via un fichier de configuration. Plusieurs types de point d’entrée peuvent être choisis, et notamment les fichiers : dans ce cas, on indique à Logstash l’emplacement où aller lire les fichiers de log. A travers un langage propre aux fichiers conf de Logstash, il est aussi possible de définir un port d'écoute sur lequel le système va aller lire les informations. Ainsi il est possible de récupérer en temps réel les journaux générés par des serveurs. Logstash lit ensuite ces fichiers, ces entrées ligne par ligne.

Création de filtres

Il est possible d’appliquer certains “filtres” sur ces lignes : il ne s’agit pas seulement de sélectionner certains informations et d’en écarter d’autres, mais également de faire des opérations plus complexes, comme du mapping. Par exemple dans le cas d’un log avec UID, il est possible de résoudre l’ID en “Nom, Prénom” en faisant un appel externe. Il est également possible d’extraire des informations spécifiques et les stocker dans des champs spécifiques, ou encore d’exécuter du code Ruby. L'utilisation du parseur GROK permet d’extraire des informations à l’aide de RegEx (expressions régulières) pour matcher certains patterns, comme un numéro de version.

Les parseurs fournit avec le programme reconnaissent 120 modèles de logs différents.

Cependant, il est difficile de mettre en place des filtres multi-lignes (par exemple une stack Trace java). En effet, la lecture ligne par ligne demande de faire des modifications au niveau des filtres, de préciser le type de lecture ou encore de changer de parseur (Utilisation de Milestone au lieu de Grok). Ensuite, de façon technique et implémentale, le logiciel utilise un buffer de récupération. Hors il est possible que lors de la lecture d'un log, le buffer soit plein, envoyé à la sortie alors que le log multiligne ne soit pas complet. Dès lors, le système peut bloquer car ne pas reconnaître le type de log suivant qui n'est qu'une partie de log.

Définition des Output

Elastic Search

Elasticsearch.png

Ce programme est un outil de stockage où les données sont indexées pour être retrouvée facilement. Il utilise une base de données NoSQL. Le système est construit selon une architecture REST et permet d'obtenir des informations sur celui-ci suivant une API. Elle est particulièrement adaptée aux cloud et aux systèmes Big Data. En effet, cette base fonctionne selon un principe de cluster. Elle a la capacité de répartir les données indexés sur différents nœuds de façon totalement transparentes pour l'utilisateur. Chaque nœud possède une instance d'Elastic Search qui communique avec les autres et contient des fragments de données indexées. Ainsi, cela permet d'utiliser la puissance des différentes machines du cluster (stockage, mémoire vive ou processeur), et donc de répartir la charge (load balancing). Le système a la propriété d'être scalable. On peut donc ajouter des instances de façon dynamiques. La robustesse est assurée par un système de réplica. Chaque machine (noeuds) possède une image et l'état dans lequel se trouve le système mise à jour à chaque modification. Ainsi, si un nœud du cluster tombe et qu'il contient une partie de l'index, Elastic Search ira chercher dans le réplica. Lorsqu'un noeud est en charge, Elasticsearch fait automatiquement suivre les requêtes vers le nœud contenant le réplica correspondant . Elasticsearch intervient après Logstash, et stocke les données envoyées de la meilleure manière possible pour qu’elles soient exploitables.

Kibana

D2si blog image logstash elasticsearch kibana-6.png

Choix des index à traiter

Création de Visualisation

Insertion des Graphiques dans le tableau de bord

Kibana.png

Conclusion

La chaine de ces trois logiciels offre un outil de visualisation puissant et flexible. De part son aspect open source, un développeur peut modifier chacun des trois programmes selon ses besoins. La communauté autour de ce projet est conséquente, il est donc facile de trouver des tutoriels ou des plugins associés à chacun d'eux. Les systèmes originaux connaissent aussi un développement actif. En effet, les mises à jour du dépôt git sont journalières. Les logiciels Logstash et Elastic Search peuvent être temps réel, propriété que n'a pas (encore) le tableau de bord Kibana. Ainsi lorsque de grandes quantités de données sont à traiter, un système tel que Logstash/Elastic Search/Kibana devient essentiel pour le développement et l'amélioration du service.

Bibliographie