Bien débuter avec Grafana

culture générale informatique devops Oct 15, 2022

Hello,

Cette semaine on va parler de Grafana.

Grafana est une Web APP open source reconnue dans le monde de l'observabilité.

Son but principal est de rendre toutes les données visibles dans ton organisation

Pour y parvenir Grafana va chercher les données où elles sont et peu importe leur type de stockages (Logs, BDD, fichiers, serveurs clouds, saas ...)

Souvent dans ce genre d'outil, il est nécessaire d'avoir une base de données centrale où l’on agrège toutes les données. Là ce n'est plus nécessaire.

Ses autres forces sont la grande facilité d'utilisation :

  • Pouvoir créer et partager des dashboard simplement

  • Transformer les données à la volée pour les rendre compréhensibles

  • Envoyer des alertes en cas de besoin

  • Avoir une liste de plugins impressionnante

  • Comme il y a plusieurs sources de données, Grafana a à sa disposition des connecteurs qui permettent d'aller lire les données directement

    • Mysql, Postgre, Mongo, AWS ...

L'outil s'intègre donc dans la partie "Monitoring" du DevOPS.

Il y a plein de cas d'utilisations :

Côté OPS :

  • Suivre les performances des serveurs

  • Le taux d'utilisation des ressources

  • La disponibilité des différents services

  • Toutes les métrics AWS en un seul endroit

Côté Dev :

  • Suivre les performances de ton App

  • Les temps de réponse des différentes pages

  • Les erreurs remontées dans les logs

  • Le taux de 404, 500

  • Les requêtes SQL lentes

  • Les Hit rate en cache

  • Le bon déroulement des intégrations de données/fichiers (batch de nuits)

Côté Métier : (c'est-à-dire à destination de tes utilisateurs internes)

  • Suivre le chiffre d'affaires sur un site de e-commerce

  • Avoir le nombre de dossiers traités par un service client

  • Avoir la charge de travail pour les commandes à préparer à la logistique

  • Suivre les résultats des commerciaux

  • Le niveau des stocks marchandise

Plus les données sont visibles, plus il est facile pour les personnes concernées de prendre des décisions.

J'aime bien répéter ça : "ce qui se mesure s'améliore"

À l'inverse, mettre trop de données et de dashboards, s'il ne servent à rien (c'est-à-dire : ne permet pas de prendre une décision) peut rendre l'outil totalement "fouilli" et difficile à comprendre

Il suffit de trouver le juste milieu et pour ça, il suffit de demander aux premiers concernés ce dont ils ont besoin.

En tant que Dev, il y a 2 choses qui peuvent t'intéresser particulièrement

La 1ere c'est d'avoir des données et des graphes sur tes propres développements (comme listé plus haut).
Tu peux ainsi suivre ton code en production au cours du temps, de façon automatique

Tu peux alors décider des optimisations, améliorations à apporter pour aider ton utilisateur

La 2ème est que, bien souvent les données Métiers proviennent des APP que tu as codés

Tu dois alors penser, lors de l'écriture de ton code, aux données qu'il est pertinent de stocker, aux logs qu'il est pertinent de générer ... pour pouvoir les afficher dans Grafana

Le point d'attention qui va avec ça, c'est l'ajout de données supplémentaires peut impacter les performances de ton App.

Maintenant qu'on a vu ce que ça peut faire, concrètement on fait comment ?

Tu peux installer Grafana sur un de tes serveurs ou utiliser la version Cloud gratuite

Ensuite, tu prends un cas concret d'utilisation que tu veux tester.

Par exemple :

  • Je veux avoir le nombre d'utilisateurs inscrits total sur mon site

  • Je veux le CA du Jour

  • Je veux le CA par jour sur les 7 derniers jours

Tu ajoutes tes sources de données.

Bien souvent ça sera la connexion à une BDD existante qui contient déjà les infos dont tu as besoin.

Tu écris les 3 requêtes SQL qui te permettent d'avoir les données que l'on a listées plus haut.
(Un select count, un sum where date, un sum group by where date ...)

Tu ajoutes un Dashbaord et tu commences à créer les 3 widgets

Pour rappel un widget = un graphe à afficher sur ton dashbaord

Tu as donc besoin de 2 widgets qui affichent directement un nombre

Puis d'un widget qui affiche une courbe avec des dates en abscisse.

Une fois que tu as fait ça, tu as déjà une bonne vision de la puissance de l'outil.

Pour aller plus loin, tu peux faire plein de trucs :

  • Explorer tous les types de widgets qui existent

  • Explorer toutes les sources de données qu'il est possible d'ajouter

  • Prendre en compte la sécurité

    • C'est bien beau de connecter des BDD comme ça, mais est-ce que je n'expose rien de sensible ainsi ?

  • Te demander : quelles seraient les données dont j'ai besoin aujourd'hui qui pourraient m'aider à prendre de meilleures décisions (techniques ou pas d'ailleurs) ?

    • Et les mettre dans ton Grafana

  • Faire la même chose avec des utilisateurs, se mettre à leur place

  • Et bien entendu, parcourir le contenu des communautés pour s'inspirer

Voilà, j'espère que tu as maintenant une meilleure compréhension de l'outil et de son potentiel.

Imrane 🏖

La newsletter pour ne rien louper

Rejoins les 2500 lecteurs de  la newsletter pour obtenir des conseils, des stratégies et des ressources pour développer et monétiser tes compétences Tech.