Grafana, un autre outil de suivi technique de nos logiciels

Un autre article de la série Logicify Monitoring Tools parle de Grafana. Nous utilisons cet outil logiciel pour la visualisation et l'analyse des données des projets internes et externes. Cet article peut être utile aux directeurs techniques, développeurs, DevOps, administrateurs système, chefs de projet, ainsi qu'à toutes les parties intéressées.


image


Qu'est-ce que Grafana?


Grafana est une plate-forme open source pour visualiser, surveiller et analyser les données. Cet outil, combiné à Graylog, fait partie de notre système bidirectionnel de surveillance du comportement des utilisateurs et des performances du système . Grafana permet aux utilisateurs de créer des tableaux de bord avec des panneaux, chacun affichant certains indicateurs pour une période de temps définie. Chaque tableau de bord est universel, il peut donc être personnalisé pour un projet spécifique ou en tenant compte de tout développement et / ou besoin métier.


Notre équipe Logicify utilise principalement Grafana en conjonction avec Elasticsearch et InfluxDB, mais cet outil logiciel prend en charge de nombreuses autres sources de données (Prometheus, MySQL, Postgres, etc.). Pour chaque source de données, Grafana fournit un éditeur de requête personnalisé et une syntaxe spéciale.


Conditions de Grafana


  • Le panneau est l'élément de visualisation de base des indicateurs sélectionnés. Grafana prend en charge des panneaux avec des graphiques, des statuts uniques, des tableaux, des cartes thermiques de clic et du texte libre, ainsi que l'intégration avec des plugins officiels et créés par la communauté (comme une carte du monde ou une horloge) et des applications qui peuvent également être visualisées. Vous pouvez personnaliser le style et le format de chaque panneau; Tous les panneaux peuvent être déplacés vers un nouvel emplacement, réorganisés et redimensionnés.
  • Tableau de bord - un ensemble de panneaux séparés placés dans une grille avec un ensemble de variables (par exemple, le nom du serveur, l'application et le capteur). En modifiant les variables, vous pouvez changer les données affichées sur le tableau de bord (par exemple, les données de deux serveurs distincts). Tous les tableaux de bord peuvent être personnalisés, ainsi que sectionner et fragmenter les données qui y sont présentées en fonction des besoins de l'utilisateur. Le projet Grafana implique une grande communauté de développeurs de code et d'utilisateurs, il existe donc une large sélection de tableaux de bord prêts à l'emploi pour différents types de données et de sources.
  • Dans les tableaux de bord, vous pouvez utiliser des annotations pour afficher des événements spécifiques dans différents panneaux. Les annotations sont ajoutées par des requêtes personnalisées dans Elasticsearch; sur le graphique, l'annotation est affichée avec une ligne rouge verticale. Lorsque vous survolez l'annotation, vous pouvez obtenir une description de l'événement et des balises, par exemple, pour suivre la réponse du serveur avec le code d'erreur 5xx ou redémarrer le système. Grâce à cela, vous pouvez facilement comparer l'heure, un événement spécifique et ses conséquences dans l'application, et examiner le comportement du système.

Meilleures pratiques pour l'utilisation de l'outil Grafana avec l'équipe Logicify


Utiliser Grafana dans des projets internes


Pour notre projet interne, l'Internet des objets (solution de surveillance du climat des bureaux), nous avons connecté Grafana à InfluxDB , une base de données de séries chronologiques, pour visualiser les changements dans le climat des bureaux et réagir en conséquence. Un ensemble de capteurs mesure la température, l'humidité, la pression atmosphérique et le niveau de CO2 dans chaque zone de notre bureau à Kherson; ces paramètres sont collectés et visualisés sous forme de graphiques Grafana sur un grand moniteur de cuisine et en ligne.


image
Tableau de bord Grafana avec Logicify Office Areas


Nous surveillons donc en permanence les paramètres de qualité de l'air et notre chef de bureau réagit aux changements: ouvre les fenêtres, si le niveau de CO2 est trop élevé, allume et éteint le climatiseur et les humidificateurs.


image
Tableau de bord Grafana avec climat de bureau


Grâce aux graphiques et annotations de séries chronologiques affichés dans Grafana, nous avons analysé les tendances du microclimat dans les bureaux pendant plusieurs mois et saisons. Nous avons également utilisé cet outil pour visualiser des widgets et des informations utiles (prévisions météorologiques, taux de change, calendriers internes) sur un grand moniteur de cuisine.


Comment utiliser Grafana dans des applications Web personnalisées


Grafana + Graylog


Nous utilisons l'outil Graylog pour stocker les journaux des applications Web, les gérer et surveiller leurs performances à la fois au stade du développement et au stade de leur fonctionnement. Grafana est un outil qui convertit les magazines stockés dans Graylog en formes visuelles pour l'analyse et la surveillance du système. Pour l'un de nos projets en cours, l'outil Grafana peut être appelé l'interface utilisateur pour le chargement et la surveillance des performances des applications Web et du flux client. Les outils Graylog et Grafana existent indépendamment l'un de l'autre, nous n'avons créé aucun outil d'intégration complexe spécial pour les connecter les uns aux autres. Étant donné que Graylog stocke toutes les données de journal dans Elasticsearch, l'une des sources de données de Grafana, nous utilisons simplement l'index Elasticsearch spécifique où les journaux sont stockés pour connecter Grafana à Graylog.


Quelles métriques peuvent être visualisées dans Grafana pour une application Web?


Les journaux de texte simple ou les notifications d'erreur ne sont pas «intéressants» pour Grafana, car leur objectif principal est de visualiser les données sous forme de graphiques, de graphiques et de tableaux. Nous avons écrit un module personnalisé pour Django pour collecter les données que nous aimerions suivre pour chaque demande traitée et réponse de réseau / employé. Les données comprenaient non seulement l'état de réussite / d'échec, mais également un ensemble de champs structurés (à la fois généraux et liés au projet), tels que:


  • version de l'application
  • identifiant unique de chaque demande
  • temps de réponse et statut
  • code d'erreur (le cas échéant)
  • Adresse IP à partir de laquelle la demande a été envoyée
  • informations utilisateur (e-mail, nom d'utilisateur pour les utilisateurs enregistrés, rôle, autorisations)
  • appareil, etc.

Django place les enregistrements analytiques structurés par l'utilisateur dans Graylog, qui les enregistre dans un flux séparé. Bien que ces données puissent être visualisées à l'aide des tableaux de bord intégrés Graylog, elles ne sont pas aussi belles que les tableaux de bord Grafana. Par conséquent, nous forçons Grafana à lire ces données analytiques et à les visualiser. Ainsi, nous surveillons les performances des applications et téléchargeons les données en temps réel et rétrospectivement.


image


Grafana comme outil de débogage


Les tableaux de bord Grafana nous aident principalement dans le débogage des applications. Si le client final signale un problème, Grafana nous donne l'opportunité de distinguer les erreurs côté client / serveur des erreurs réelles ou des lacunes dans la logique d'application. Nous suivons toutes les demandes Web initiées par le client (en utilisant l'adresse e-mail), les administrateurs d'application et l'application elle-même pendant une période de temps spécifiée et par la méthode d'exclusion, nous trouvons la raison.


Nous déboguons et corrigeons également les erreurs si nous remarquons une anomalie sur le tableau de bord dans les graphiques de chargement et de performances des applications. L'exemple de graphique Grafana suivant montre le temps de réponse pour les requêtes Web sur une période de temps. Pour chaque demande Web, nous suivons les temps de réponse maximum, minimum et moyen. Si nous voyons une demande qui nous a pris trop de temps à traiter, nous mettons à l'échelle une certaine partie du graphique et enquêtons sur le problème.


image
Exemple de grafana montrant le temps de réponse Web


Un autre graphique montre la charge du système pour une période de temps définie et est utile pour suivre le trafic. Si nous constatons une explosion inhabituelle d'activité, par exemple après les heures de bureau ou le week-end, nous l'examinerons. Un tel pic peut être provoqué, par exemple, par des robots d'indexation de Google indexant le contenu du site Web, ou par des robots malveillants analysant notre système pour détecter des vulnérabilités. Encore une fois, chaque cas fait l'objet d'une enquête et est examiné en conséquence.


image
Exemple de grafana montrant le téléchargement de l'application


Grafana dispose d'un mécanisme de notification intégré (par exemple, par e-mail ou via des notifications via Slack) selon certaines règles. Nous n'utilisons pas cette fonctionnalité de l'outil Grafana, car nous avons toutes les notifications configurées dans Graylog . Cependant, certains problèmes de performances du système ne peuvent être vus qu'après l'exécution du programme, par exemple, un temps de réponse anormalement long à une demande Web. Nous ne recevrons pas de notification Graylog à ce sujet, mais l'anomalie sera clairement visible sur la carte Grafana. Ainsi, les deux outils se complètent lorsque nous découvrons un problème: à un niveau élevé, nous vérifions Grafana pour comprendre ce qui s'est passé et pourquoi, puis approfondissons avec Graylog en utilisant un identificateur de demande spécifique.


Contrairement à Graylog, qui est utilisé pour les applications développées et utilisées, Grafana est utilisé uniquement pour les applications utilisées. La seule exception lors de l'utilisation de Grafana pour une application qui est encore en phase de développement est le test de performances. Nous émulons le démarrage du système à l'aide de JMeter, puis vérifions les tableaux de bord Grafana pour voir comment il réagit.


Grafana comme outil de Business Intelligence


En plus des objectifs de suivi des performances et de débogage, les tableaux de bord Grafana sont un outil puissant pour prendre des décisions commerciales éclairées. Lorsqu'il est correctement configuré (de préférence en tandem avec le service Google Analytics), Grafana peut visualiser des analyses personnalisées du comportement des utilisateurs dans le système sous la forme de graphiques circulaires, d'histogrammes de temps et d'autres éléments graphiques. Sur la base de ces informations, les parties intéressées par le produit peuvent prendre des décisions concernant la poursuite de la mise à l'échelle de l'application, l'ajout ou la suppression de certaines fonctions et l'amélioration du cycle d'interaction avec les clients.


image
Un exemple de tableau de bord Grafana affichant le comportement des utilisateurs dans une application de commerce électronique


Étant donné que le tableau de bord ci-dessus est davantage axé sur les entreprises, les développeurs l'utilisent à des fins internes, plutôt comme un outil de sécurité pour suivre le flux de clients dans une application de commerce électronique: enregistrement, autorisation, commandes passées sur une période donnée.


Voici 2 projets du monde réel où Grafana a pu augmenter la convivialité d'une application Web.


  • Avec l'aide de Grafana, nous surveillons régulièrement l'état des commandes périodiques dans le système et filtrons les commandes échouées. Ces commandes sont basées sur un abonnement, c'est-à-dire qu'elles sont générées dans le système chaque mois et l'argent est automatiquement débité des comptes bancaires des clients. Parfois, les paiements échouent (argent insuffisant / refus d'une institution financière), puis les administrateurs système vérifient la situation et contactent les clients pour recréer la commande manuellement. Ainsi, pas un seul ordre ne tombe hors de vue; les clients et les fournisseurs sont satisfaits.
  • À l'aide de rapports créés à l'aide de Grafana pour une application de commerce électronique, nous avons constaté qu'un grand pourcentage de nouveaux clients quittent la page de paiement, bien qu'ils aient déjà des articles dans leurs paniers. Cette conclusion a été appuyée par les rapports du service Google Analytics, de sorte que la procédure de paiement a été analysée étape par étape et améliorée: les utilisateurs peuvent désormais passer une commande en 2 clics. En conséquence, le taux de conversion des visiteurs pour les clients a augmenté - le profit du fournisseur a également augmenté.

Grafana est un élément important du système de surveillance de l'équipe Logicify pour les projets internes et externes. Cet outil logiciel est open source, plus une communauté de développeurs importante et active. Mais surtout, nous aimons la flexibilité - il prend en charge de nombreuses sources de données et facilite la personnalisation des tableaux de bord et des panneaux.


Articles liés:


Source: https://habr.com/ru/post/fr431122/


All Articles