Visualiser les métriques dans Grafana : sources de données, panneaux et tableaux de bord communautaires
Connectez Grafana à Prometheus, construisez un panneau de zéro, puis importez un tableau de bord prêt à l'emploi au lieu de tout construire à la main.
Prometheus stocke et interroge les métriques ; il n’est pas conçu pour être l’endroit où vous les consultez au quotidien. Grafana est la couche de tableaux de bord le plus couramment associée à lui. Ce guide connecte les deux, construit un panneau à la main pour comprendre ce qui se passe en dessous, puis importe un tableau de bord communautaire au lieu de tout construire de zéro, ce qui correspond à la façon dont Grafana est réellement utilisé le plus souvent.
Ajouter Prometheus comme source de données
# docker-compose.yml (à ajouter à la stack du guide précédent)
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
Après docker compose up -d, ouvrez http://localhost:3000 et connectez-vous avec les identifiants par défaut admin / admin (il vous sera demandé de les changer). Ajoutez une source de données sous Connections → Data sources → Add new data source, choisissez Prometheus, et faites pointer son URL vers http://prometheus:9090, le nom de service Compose du guide précédent, puisque Grafana et Prometheus partagent le même réseau Docker. Enregistrez et testez ; une connexion réussie confirme que Grafana peut joindre Prometheus avant que vous ne construisiez quoi que ce soit dessus.
Construire un panneau à la main
Créez un nouveau tableau de bord, ajoutez une visualisation et sélectionnez la source de données Prometheus. Plutôt que de taper directement du PromQL, le constructeur de requêtes de Grafana vous permet de construire une requête champ par champ, ce qui est une façon raisonnable d’apprendre ce que fait réellement une requête :
- Métrique : sélectionnez
node_cpu_seconds_total. - Filtres de labels : ajoutez
mode != "idle", car le temps CPU en mode inactif n’est pas la partie que vous voulez visualiser. Si vous n’avez qu’une seule instance de node_exporter, les labelsjobetinstancene distingueront rien et peuvent être omis ; ils comptent dès que vous supervisez plus d’un hôte. - Grafana vous indiquera qu’un counter de ce type nécessite l’application d’une fonction de taux. Passez à
rate()(ouirate(), bien que, comme vu dans le guide PromQL,rate()soit la valeur par défaut la plus stable) sur une fenêtre comme1m. - Sous Options, changez la légende de Auto vers un format personnalisé,
{{mode}}, afin que les lignes obtenues soient étiquetéessystem,user,iowait, etc., au lieu de l’ensemble complet et répétitif de labels.
Enregistrez le panneau avec un nom et ajoutez-le à un tableau de bord. Sous le constructeur, une vue Code montre le PromQL réel que Grafana a construit ; il vaut la peine de la consulter une fois pour pouvoir, à terme, vous passer du constructeur et écrire directement les requêtes.
Un deuxième panneau : l’utilisation du disque à partir d’une expression
Tous les panneaux ne proviennent pas d’une seule métrique ; certains viennent de la combinaison de quelques-unes :
node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}
Cela calcule les octets réellement utilisés sur le système de fichiers racine en soustrayant les octets libres de la taille totale, filtré sur le point de montage racine pour que les systèmes de fichiers temporaires et virtuels n’encombrent pas le résultat. Collez ceci directement dans la vue Code du panneau plutôt que d’essayer de le construire champ par champ ; tout ce qui implique de l’arithmétique entre deux métriques est généralement plus rapide à écrire qu’à cliquer dans un constructeur.
Importer un tableau de bord communautaire au lieu de construire de zéro
Construire chaque panneau à la main ne passe pas à l’échelle dès que vous avez des dizaines de métriques à suivre, et pour les exporters courants, quelqu’un d’autre a presque certainement déjà construit et publié un tableau de bord complet. La bibliothèque de tableaux de bord de Grafana est consultable par nom d’exporter, et chaque tableau de bord possède un identifiant numérique :
- Cherchez dans la bibliothèque l’exporter que vous utilisez (
node exporter,cadvisor), et choisissez-en un bien noté et récemment mis à jour. - Copiez son identifiant de tableau de bord.
- Dans Grafana, allez dans Dashboards → New → Import, collez l’identifiant et chargez-le.
- Sélectionnez votre source de données Prometheus lorsque c’est demandé, puis importez.
Vous obtenez ainsi un ensemble complet de panneaux préconstruits, CPU, mémoire, swap, E/S disque, erreurs réseau, disponibilité, et plus, sans construire chacun à la main. C’est aussi une manière réellement utile d’apprendre PromQL : ouvrez l’éditeur d’un panneau importé et lisez les requêtes qu’il utilise pour une métrique que vous comprenez bien, ce qui est souvent plus clair que de lire la documentation isolément.
Personnaliser à partir de là
Un tableau de bord importé est un point de départ, pas une réponse définitive. Chaque panneau reste entièrement modifiable : ajustez les filtres de labels, changez les types de visualisation, retouchez les seuils et les couleurs, ou supprimez les panneaux dont vous n’avez pas besoin. Considérez l’import comme un échafaudage à partir duquel vous construisez, plutôt que comme quelque chose que vous utilisez sans modification ou que vous évitez complètement.
Guides populaires
-
Architecture de Prometheus et modèle pull Pourquoi Prometheus scrape au lieu de recevoir, et comment cibles, exporters et découverte de services s'articulent. -
Le modèle de données de Prometheus : métriques, labels et types de métriques Ce qu'est réellement une série temporelle dans Prometheus, et le format texte brut dans lequel les cibles les exposent. -
Débuter avec PromQL : sélectionner, calculer des taux et agréger Partez d'un simple sélecteur de métrique pour arriver à une vraie requête : le taux d'erreurs par chemin, calculé en direct. -
Superviser un hôte et ses conteneurs avec node_exporter et cAdvisor Exécutez ensemble Prometheus, node_exporter et cAdvisor, scrapez les deux, et confirmez que les cibles sont saines.