VT2018 Performance Monitoring

=Auteur=
 * Sujet : Performance Monitoring


 * Enseignants : Georges-Pierre Bonneau, Didier Donsez


 * Rédigé par : Bastien TERRIER


 * Contexte : Veille Technologique - Informatiques 5ème année - Polytech Grenoble


 * Date de dernière modification : 11/11/2018


 * Contact : Bastien.Terrier@etu.univ-grenoble-alpes.fr

=Résumé=

Dans notre contexte industriel et technologique, les données ont pris une place centrale. Les systèmes informatiques produisent une énorme quantité d'informations. Il est devenu crucial de pouvoir les visualiser et les traiter pour prendre les bonnes décisions. Le performance monitoring (Contrôle des performances) est une collaboration entre plusieurs outils permettant de récupérer des données, de les stocker afin de permettre le monitoring et la création d'alertes.

Je vais dans cet article vous présenter en ensemble de technologies de contrôle de performances. Un paragraphe sera destiné à la comparaison de ces outils. Veuillez noter la présence des références utilisées pour la rédaction de cet article en bas de page.

=Abstract= In our industrial and technological context, data have taken a central place. Computer systems produce a huge amount of information. It has become crucial to be able to visualize and process them to make the right decisions. Performance monitoring is a collaboration between several tools to retrieve data, store them and allow monitoring and alerting.

In this article I will introduce you to a set of performance monitoring technologies. A paragraph will be devoted to the comparison of these tools. Please note the references used to write this article are located in the bottom of the page.

=Introduction= Le monitoring des performances permet de visualiser et surveiller les performances à tous les niveaux d'un système informatique. Cette surveillance permet aux utilisateurs et administrateurs de vérifier (via des dashboards) les taux d'utilisations des ressources. Des alertes peuvent être levées si un seuil est atteint. Ces alertes peuvent être sous la forme de mails, sms, appels téléphoniques... Comme le montre le schéma ci-dessous il y a différents niveaux de surveillance :
 * Utilisateur
 * Applications
 * Sites web
 * Réseaux
 * Serveurs

Certains outils sont spécifiques pour des cas d'utilisations. Je vais vous présenter des combinaisons d'outils permettant de faire de la surveillance à différents niveaux.

=Des exemples de procédures de surveillance=

Telegraf
Telegraf est un agent serveur qui est piloté par un plug-in. Son rôle est de récupérer des métriques depuis depuis dans des machines virtuelles. Un agent est présent par VM est il peut récupérer des métriques via un processus de pull and push. Les données récoltées sont ensuite transmises à un autre module pour le stockage.

InfluxDB
Influxdb est une TSDB (Time Series Data Base - série temporelle). La principale majeur avec les bases de type SQL est l'identification des enregistrements. L'identifiant unique est ici un Timestamp avec une grande précision. Pour avoir de grandes performances (jusqu'à 100 fois plus rapide que elasticsearch en lecture) il faut que les données soient des séries temporelles.

Influxdb possède aussi un langage de réquête proche du SQL.

Grafana
Enfin, au bout de la chaîne, on retrouve Grafana la plateforme de monitoring. Cet outils open source va récolter périodiquement des données dans des bases de données pour les afficher en temps réel. La présentation des résultats peut prendre différentes formes comme : Il existe une multitude de plug-in permettant d'importer de nouvelles fonctionnalités.
 * courbes
 * histogrammes
 * idicateurs
 * diagrammes circulaires

Logstash
Logstash fonctionne comme un pipeline permettant la récupération et le traitement de données de toutes sortes. Ces données peuvent provenir d'une multitude de sources. Les données sont par la suite envoyé à un système de stockage.

ElasticSearch
ElastisSearch est un outil rapide et puissant de recherche et de stockage de données. Utilisant une interface Rest, cet outil indexe ses données et utilise une architecture distribuée.

Kibana
Kibana est l'outil de visualisation de données issues d'elasticsearch. Cet outil open source permet la visualisation sous forme de dashboards.

= Comparaison de plateformes de monitoring= Nous allons comparer ici les 3 outils de visualisation les plus utilisés.



Bien entendu, il existe de nombreuses alternatives comme :
 * Nagios
 * Prometheus
 * StatsD
 * Zabbix

=Conclusion=

Il existe une multitude d'outils intercompatibles permettant de faire de la surveillance de performances. Il faut trouver une combinaison qui corresponde à vos besoins et à vos exigences non fonctionnelles.

Vous pouvez trouver sur ce lien VT2018_Performance_Monitoring_Demo une démonstration de l'outil Netflix Vector pour visualiser les performances d'une machine.

=Sources=


 * https://hackernoon.com/list-of-performance-monitoring-tools-88897493cb12
 * https://grafana.com/
 * https://air.imag.fr/index.php/Grafana
 * https://play.grafana.org/
 * https://www.supinfo.com/articles/single/5747-telegraf-influxdb-grafana
 * https://myvmworld.fr/centraliser-metriques-dun-serveur-windows-grace-a-telegraf-influxdb-grafana/
 * https://github.com/grafana/grafana
 * https://blog.d2si.io/2015/05/20/analyse-des-logs-applicatifs-avec-logstash-kibana-et-elasticsearch/
 * https://stackshare.io/stackups/grafana-vs-graphite-vs-kibana
 * https://www.elastic.co/fr/
 * https://www.elastic.co/fr/products/logstash
 * https://www.elastic.co/fr/products/kibana