Aller au contenu principal

Raspberry PI

[NOC] Module 1/10 — Installer Prometheus et Node Exporter sur Raspberry Pi : guide complet

34 objets en collection 10 articles maj il y a 2 jours
f X in

Prometheus Raspberry Pi : Prométhée transmet les métriques CPU, mémoire, disque et réseau collectées par Node Exporter sur Linux

📖 Lecture : 10 min  |  🛠️ Réalisation : 20 à 30 minutes  |  🎯 Niveau : Débutant
Une question en cours de route ? Consultez la FAQ en fin d’article.

Ça y est, je me lance dans une nouvelle série d’articles : je vais vous montrer, étape par étape, comment j’ai construit mon propre NOC (Network Operation Center) maison, avec deux Raspberry Pi qui surveillent en permanence tout mon réseau. Pas de blabla théorique abstrait : chaque article de cette série est un vrai tutoriel, pensé pour être reproductible chez vous, que vous soyez débutant complet ou déjà à l’aise avec Linux. Ce premier guide Prometheus Raspberry Pi pose les fondations de toute la série NOC.

On commence par la brique la plus importante de tout le projet : Prometheus et Node Exporter, le duo qui va me permettre de récolter en continu les métriques (CPU, RAM, température, disque…) de toutes mes machines.

Prometheus et Node Exporter, c’est quoi exactement ?

Node Exporter est un petit programme qu’on installe sur chaque machine à surveiller (un Raspberry Pi, un PC, un serveur…). Son unique boulot : exposer, sous forme d’une simple page web, un tas de métriques système (utilisation CPU, mémoire, disque, réseau, température, etc.).

Prometheus, lui, est le collecteur central. Toutes les X secondes, il va interroger (on dit « scraper ») chaque Node Exporter, récupérer les métriques, et les stocker dans sa propre base de données temporelle. C’est cette architecture « pull » (Prometheus vient chercher les données, plutôt que les machines qui les envoient) qui rend le système simple et robuste : si une machine tombe, Prometheus le voit immédiatement, sans configuration compliquée côté client.

Dans mon projet NOC, Prometheus tourne sur mon Raspberry Pi dédié à la supervision, et Node Exporter est installé sur chaque machine que je veux surveiller : mes Raspberry Pi, mais aussi mes PC Windows (avec l’équivalent Windows Exporter, dont je reparlerai dans un prochain article).

Prometheus Raspberry Pi : schéma montrant Node Exporter qui envoie ses métriques à Prometheus, avant Grafana à venir
Node Exporter expose les métriques, Prometheus vient les récupérer (« scrape ») régulièrement. Grafana, qui affichera ces données, sera couvert dans un prochain article.

💬 Pour resituer : dans mon NOC actuel, Prometheus collecte déjà les métriques de mes deux Raspberry Pi et de mes PC Windows, pour alimenter mon futur dashboard maison (celui que je détaille dans une autre série d’articles). C’est cette même installation que je documente ici, pas à pas.

Ce que vous allez obtenir

À la fin de cet article, vous aurez Prometheus Raspberry Pi qui surveille en continu toutes vos machines : chacune apparaîtra avec un statut « UP » bien vert dans l’interface de Prometheus, comme sur cette capture d’écran de mon propre NOC.

Prometheus Raspberry Pi : page Status Targets avec les services surveillés, dont un statut DOWN détecté immédiatement
Page Status → Targets de mon Prometheus : chaque machine surveillée apparaît avec son statut (UP en vert, DOWN en rouge). J’ai remplacé mes vraies adresses IP par des adresses génériques (192.168.1.X) pour ne pas exposer mon réseau. (Cliquez sur l’image pour l’agrandir.)

Ce n’est qu’un écran brut pour l’instant — pas encore le joli dashboard qu’on construira plus tard dans cette série — mais c’est la fondation indispensable : sans cette collecte de métriques qui fonctionne, impossible d’afficher quoi que ce soit ensuite.

Prérequis

  • Un Raspberry Pi (ou n’importe quelle machine Linux) qui va héberger Prometheus — le combo Prometheus Raspberry Pi est celui utilisé dans ce guide. Un Raspberry Pi 3B+ suffit largement pour un réseau domestique.
  • Un accès SSH ou un clavier/écran sur ce Raspberry Pi.
  • Raspberry Pi OS (ou toute distribution basée sur Debian/Ubuntu) à jour.
  • Un peu de patience, mais aucune compétence particulière en administration système : je détaille chaque commande.

Vous ne savez pas comment vous connecter à votre Raspberry Pi ? Voici comment faire

Si c’est la première fois que vous vous connectez à distance à un Raspberry Pi, deux informations vous manquent probablement : son adresse IP, et comment ouvrir une connexion pour lui envoyer des commandes. Voici comment procéder :

  • Trouver l’adresse IP du Raspberry Pi : le plus simple est de se connecter à l’interface d’administration de votre routeur/box internet (souvent une adresse comme 192.168.1.1 tapée dans un navigateur) et de chercher la liste des appareils connectés — votre Raspberry Pi y apparaît généralement sous son nom (par défaut raspberrypi). Si vous avez un clavier et un écran branchés directement dessus, vous pouvez aussi taper la commande hostname -I dans un terminal, qui affiche directement son IP.
  • Se connecter en SSH : SSH est un protocole qui permet d’envoyer des commandes à une machine à distance, comme si vous tapiez directement dessus au clavier. Depuis un ordinateur Windows (10 ou 11), macOS ou Linux, ouvrez un terminal (PowerShell sur Windows, ou l’application Terminal sur Mac/Linux) et tapez :
ssh pi@192.168.1.X

en remplaçant pi par votre nom d’utilisateur et 192.168.1.X par l’IP trouvée à l’étape précédente. Lors de la toute première connexion, un message vous demande de confirmer l’identité de la machine : tapez yes, puis entrez votre mot de passe (les caractères ne s’affichent pas à l’écran pendant la saisie, c’est normal). Une fois connecté, vous vous retrouvez face à une invite de commande sur le Raspberry Pi lui-même : c’est là que vous allez taper toutes les commandes de cet article.

Petite précision importante : dans tout cet article, je remplace mes vraies adresses IP par des adresses génériques du type 192.168.1.X. Adaptez-les avec les adresses réelles de votre propre réseau.

Étape 1 : installer Node Exporter

On commence par installer Node Exporter sur la machine qu’on veut surveiller (répétez cette étape sur chaque machine à superviser, y compris le Raspberry Pi qui hébergera Prometheus lui-même : il peut très bien se surveiller lui-même).

sudo apt update
sudo apt install -y prometheus-node-exporter

Sur Raspberry Pi OS et Debian/Ubuntu, ce paquet installe et démarre automatiquement un service systemd. On vérifie que tout tourne bien :

sudo systemctl status prometheus-node-exporter

Vous devriez voir un statut active (running) en vert. Node Exporter écoute par défaut sur le port 9100. On peut tester tout de suite qu’il répond bien :

curl http://localhost:9100/metrics

Cette commande doit afficher une longue liste de métriques brutes, qui ressemble à ceci :

node_cpu_seconds_total{cpu="0",mode="idle"} 48291.32
node_memory_MemAvailable_bytes 1.845e+09
node_filesystem_avail_bytes{device="/dev/root",mountpoint="/"} 1.2e+10

Astuce température CPU : sur un Raspberry Pi, Node Exporter peut aussi remonter la température du processeur si le collecteur « thermal » est activé (c’est le cas par défaut sur la plupart des paquets récents). Cherchez la métrique node_hwmon_temp_celsius ou node_thermal_zone_temp dans la sortie de la commande ci-dessus : c’est elle qui me permet d’afficher la température de mes Pi sur mon dashboard, dans un prochain article de cette série.

Étape 2 : installer Prometheus Raspberry Pi

Direction maintenant le Raspberry Pi qui va centraliser toutes les métriques. On installe le paquet Prometheus :

sudo apt install -y prometheus

Là encore, un service systemd est créé et démarré automatiquement :

sudo systemctl status prometheus

Prometheus écoute par défaut sur le port 9090 et embarque sa propre interface web. Depuis un navigateur sur votre réseau local, rendez-vous sur :

http://192.168.1.X:9090

(en remplaçant 192.168.1.X par l’adresse IP réelle de votre Raspberry Pi). Vous devriez arriver sur l’interface Prometheus, encore vide de données pour l’instant : c’est normal, on n’a pas encore dit à Prometheus quelles machines surveiller.

Étape 3 : configurer le scraping

C’est ici que tout se joue : le fichier de configuration /etc/prometheus/prometheus.yml indique à Prometheus la liste des cibles (« targets ») à interroger. On l’édite :

sudo nano /etc/prometheus/prometheus.yml

Dans la section scrape_configs, on ajoute un job qui pointe vers chaque Node Exporter de notre réseau. Voici un exemple concret avec plusieurs machines (adresses généralisées, à adapter à votre réseau) :

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
        labels:
          alias: 'pi-noc'
      - targets: ['192.168.1.10:9100']
        labels:
          alias: 'pi-hub'
      - targets: ['192.168.1.11:9100']
        labels:
          alias: 'pc-bureau'

Le label alias n’est pas obligatoire, mais je le recommande vivement : il permet de donner un nom lisible à chaque machine (plutôt que son adresse IP brute) dans les graphiques Grafana qu’on construira plus tard dans cette série — et accessoirement, ça évite d’afficher de vraies adresses IP sur un dashboard qu’on pourrait un jour rendre public.

Avant de redémarrer Prometheus, on vérifie toujours que la syntaxe du fichier est correcte, avec l’outil fourni par le paquet :

promtool check config /etc/prometheus/prometheus.yml

Si tout est bon, l’outil affiche SUCCESS. On peut alors redémarrer Prometheus pour appliquer la nouvelle configuration :

sudo systemctl restart prometheus

Étape 4 : vérifier que tout fonctionne

Retournez sur l’interface web de Prometheus (http://192.168.1.X:9090), puis allez dans le menu Status → Targets. Toutes les machines que vous avez déclarées doivent apparaître avec un état UP en vert. Si une cible affiche DOWN, direction la section Dépannage juste en dessous.

Vous pouvez aussi tester une requête PromQL directement dans l’onglet « Graph ». Par exemple, pour vérifier que toutes vos machines répondent bien :

up{job="node_exporter"}

Un résultat de 1 pour chaque machine signifie que tout va bien.

Prometheus Raspberry Pi : page Status Targets confirmant que toutes les machines sont détectées
Et voilà : si votre page Status → Targets ressemble à ça (au moins un statut UP), c’est gagné, Prometheus collecte bien vos métriques. (Cliquez sur l’image pour l’agrandir.)

Dépannage Prometheus Raspberry Pi

Une cible reste en « DOWN » dans Prometheus : vérifiez d’abord que Node Exporter tourne bien sur la machine concernée (sudo systemctl status prometheus-node-exporter), puis que rien ne bloque le port 9100 (pare-feu, règles iptables/ufw). Un simple curl http://IP-DE-LA-MACHINE:9100/metrics depuis le Raspberry Pi Prometheus doit répondre.

« Address already in use » au démarrage de Node Exporter : un autre programme occupe déjà le port 9100. Identifiez-le avec sudo ss -tlnp | grep 9100 et arrêtez-le, ou changez le port d’écoute de Node Exporter dans sa configuration systemd.

« Permission denied » en éditant prometheus.yml : pensez à toujours préfixer vos commandes d’édition et de redémarrage par sudo, le fichier appartenant à l’utilisateur système prometheus.

Petit glossaire

  • Scraping : l’action, pour Prometheus, d’aller interroger périodiquement une cible pour récupérer ses métriques.
  • Target (cible) : une machine ou un service que Prometheus surveille, identifié par une adresse IP/port.
  • Metric (métrique) : une valeur mesurée à un instant donné (utilisation CPU, quantité de RAM libre, température…).
  • PromQL : le langage de requête propre à Prometheus, qui permet d’interroger et de manipuler les métriques stockées.

Questions fréquentes

Est-ce que ça fonctionne sur un vieux Raspberry Pi (2 ou Zero) ?
Oui, mais avec des limites. Node Exporter est très léger et tourne sans problème sur n’importe quel modèle. Prometheus (le collecteur central) est plus gourmand : je le fais tourner sur un Raspberry Pi 3B+ sans souci pour un réseau domestique, mais je ne le recommande pas sur un Pi Zero ou un Pi 1/2 si vous surveillez beaucoup de machines.

Est-ce que Prometheus consomme beaucoup de ressources ?
Non, c’est justement l’un de ses points forts pour un usage domestique. Sur mon Raspberry Pi 3B+, avec une dizaine de machines surveillées, Prometheus utilise une part modeste du CPU et de la RAM disponibles. La consommation augmente surtout avec le nombre de machines et la durée de rétention des données (combien de temps l’historique est conservé).

Dois-je installer Prometheus sur chaque machine à surveiller ?
Non. Prometheus s’installe une seule fois, sur la machine qui centralise la supervision. C’est Node Exporter qui s’installe sur chaque machine à surveiller (y compris, si vous le souhaitez, sur la machine qui héberge Prometheus elle-même).

Est-ce que je perds mes données si je redémarre le Raspberry Pi ?
Non, Prometheus stocke ses métriques sur le disque (dans sa base de données temporelle), pas seulement en mémoire. Un redémarrage n’efface pas l’historique déjà collecté.

Puis-je surveiller des machines Windows avec cette méthode ?
Oui, via l’équivalent Windows de Node Exporter (Windows Exporter), que j’aborderai dans un prochain article de cette série.

Et maintenant ?

Prometheus Raspberry Pi tourne, il collecte les métriques de tout mon réseau : la base de mon NOC est posée. Mais pour l’instant, tout ça reste invisible sans aller fouiller dans l’interface brute de Prometheus. Dans le prochain article de cette série, on va s’attaquer à Uptime Kuma, l’outil qui me permet de surveiller la disponibilité de mes services en un coup d’œil, avec de belles pages de statut publiques. Rendez-vous très vite !

Partager : fFacebook XX WhatsApp inLinkedIn

← Retour aux actualités

3 commentaires

  1. Uptime Kuma Raspberry Pi : surveiller vos services facilement

    […] qui va me permettre de savoir en un coup d’œil si mes services sont en ligne. Dans le premier article de cette série, on a posé la brique de collecte : Prometheus et Node Exporter récoltent en continu les […]

  2. Grafana Raspberry Pi : Guide Essentiel en 5 Étapes

    […] articles, deux briques posées : Prometheus collecte les métriques (article 1), Uptime Kuma surveille la disponibilité (article 2). Il ne manque plus qu’une chose : un […]

  3. Dashy Raspberry Pi : Portail Essentiel en 3 Étapes

    […] réseau domestique dispose déjà de tout ce qu’il faut pour être surveillé sérieusement : Prometheus collecte, Uptime Kuma vérifie la disponibilité, Grafana visualise. Mais il me manquait encore une chose […]

Laisser un commentaire