Skip to content

Installer Prometheus, Node Exporter et Grafana sur Debian ou Ubuntu

Guide pas à pas pour monter une pile de supervision sur un serveur Debian/Ubuntu. Les versions utilisées ci-dessous sont les dernières stables au moment de la rédaction (août 2026) : Prometheus 3.13.1, Node Exporter 1.12.1, Grafana 13.1.1. Consultez les pages de publication avant de lancer quoi que ce soit, au cas où de plus récentes seraient sorties.

Architecture

+----------------+   scrapes :9100   +----------------+
|  Node Exporter | <---------------- |   Prometheus   |
|   :9100        |                   |   :9090        |
+----------------+                   +--------+-------+
                                              |
                                              | PromQL queries :9090
                                              v
                                     +----------------+
                                     |    Grafana     |
                                     |   :3000        |
                                     +----------------+
                                              |
                                              v
                                        Browser / user

Prérequis

  • Un serveur Debian ou Ubuntu avec un accès sudo
  • curl et tar installés
  • Les ports 9090 (Prometheus), 9100 (Node Exporter) et 3000 (Grafana) ouverts sur votre pare-feu si vous y accédez à distance

Partie 1 : installer Prometheus

Étape 1 : créer l'utilisateur système prometheus

bash
sudo useradd --no-create-home --shell /bin/false prometheus

Étape 2 : créer les répertoires

bash
sudo mkdir -p /etc/prometheus /var/lib/prometheus

Étape 3 : télécharger Prometheus

bash
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v3.13.1/prometheus-3.13.1.linux-amd64.tar.gz
tar -xvf prometheus-3.13.1.linux-amd64.tar.gz

Étape 4 : installer les binaires

bash
sudo cp prometheus-3.13.1.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-3.13.1.linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool

Étape 5 : installer les modèles de console et définir le propriétaire

bash
sudo cp -r prometheus-3.13.1.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-3.13.1.linux-amd64/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

Étape 6 : créer le fichier de configuration

bash
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF

La tâche de collecte de Node Exporter est ajoutée en partie 3, une fois qu'il est installé.

Étape 7 : créer le service systemd

bash
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \\
  --config.file=/etc/prometheus/prometheus.yml \\
  --storage.tsdb.path=/var/lib/prometheus \\
  --web.console.templates=/etc/prometheus/consoles \\
  --web.console.libraries=/etc/prometheus/console_libraries \\
  --storage.tsdb.retention.time=365d
ExecReload=/bin/kill -HUP \$MAINPID

[Install]
WantedBy=multi-user.target
EOF

ExecReload est ce qui fait fonctionner systemctl reload prometheus en partie 3. Sans lui, systemd refuse le rechargement avec "Job type reload is not applicable", et il ne vous reste qu'un redémarrage complet. Notez la barre oblique inverse dans \$MAINPID : ce heredoc n'est pas entre guillemets, sinon le shell développerait la variable en rien au moment d'écrire le fichier.

Étape 8 : démarrer et activer Prometheus

bash
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

Étape 9 : vérifier

bash
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthy

Ouvrez http://<server-ip>:9090 dans un navigateur pour confirmer que l'interface se charge.

Nettoyer le téléchargement de Prometheus

bash
rm -rf /tmp/prometheus-3.13.1.linux-amd64*

Partie 2 : installer Node Exporter

Étape 1 : créer l'utilisateur système node_exporter

bash
sudo useradd --no-create-home --shell /bin/false node_exporter

Étape 2 : télécharger Node Exporter

bash
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.12.1/node_exporter-1.12.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.12.1.linux-amd64.tar.gz

Étape 3 : installer le binaire

bash
sudo cp node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Étape 4 : créer le service systemd

bash
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

Étape 5 : démarrer et activer Node Exporter

bash
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

Étape 6 : vérifier

bash
curl -s http://localhost:9100/metrics | head

Nettoyer le téléchargement de Node Exporter

bash
rm -rf /tmp/node_exporter-1.12.1.linux-amd64*

Partie 3 : pointer Prometheus vers Node Exporter

Étape 1 : ajouter la tâche de collecte

bash
sudo vim /etc/prometheus/prometheus.yml

Ajoutez sous scrape_configs :

yaml
  - job_name: "node_exporter"
    static_configs:
      - targets: ['localhost:9100']

Étape 2 : valider la configuration

bash
promtool check config /etc/prometheus/prometheus.yml

Étape 3 : recharger Prometheus

bash
sudo systemctl reload prometheus

Étape 4 : vérifier que la cible répond

Ouvrez http://<server-ip>:9090/targets : les tâches prometheus et node_exporter devraient toutes deux afficher State = UP.

Partie 4 : installer Grafana

Méthode officielle : dépôt APT, de sorte que apt-get update garde Grafana à jour. Source : https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/

Étape 1 : installer les prérequis

bash
sudo apt-get install -y apt-transport-https wget gnupg

Étape 2 : importer la clé GPG

bash
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc

Étape 3 : ajouter le dépôt stable

bash
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Étape 4 : mettre à jour la liste des paquets

bash
sudo apt-get update

Étape 5 : installer Grafana OSS

bash
sudo apt-get install -y grafana

Étape 6 : démarrer et activer Grafana

bash
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

Étape 7 : vérifier

bash
sudo systemctl status grafana-server

Ouvrez http://<server-ip>:3000. Les identifiants par défaut sont admin / admin, et il vous sera demandé de les changer à la première connexion.

Partie 5 : configuration Grafana optionnelle (domaine propre / HTTPS)

Utile uniquement si vous placez Grafana derrière un nom de domaine avec TLS.

Étape 1 : modifier grafana.ini

bash
sudo vim /etc/grafana/grafana.ini
ini
[server]
http_addr =
http_port = 3000
domain = mysite.com
root_url = https://subdomain.mysite.com:3000
cert_key = /etc/grafana/grafana.key
cert_file = /etc/grafana/grafana.crt
enforce_domain = False
protocol = https

Étape 2 : redémarrer Grafana

bash
sudo systemctl restart grafana-server

Étape 3 (optionnelle) : proxy inverse Nginx

nginx
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }

    location /api/live {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }
}

Partie 6 : connecter Grafana à Prometheus

Étape 1 : ajouter la source de données

Dans Grafana : Connections > Data sources > Add data source > Prometheus.

Renseignez l'URL :

http://localhost:9090

Cliquez sur Save & test, vous devriez voir "Successfully queried the Prometheus API."

Étape 2 : importer le tableau de bord Node Exporter

Dashboards > New > Import, puis saisissez l'ID du tableau de bord :

1860

Sélectionnez votre source de données Prometheus quand on vous le demande, puis cliquez sur Import. C'est le tableau de bord communautaire "Node Exporter Full", et il couvre le processeur, la mémoire, le disque et le réseau d'emblée.

Aide-mémoire de gestion des services

service          start                 status                enable
---------------  --------------------  --------------------  -------------------------------
prometheus       systemctl start       systemctl status       systemctl enable prometheus
node_exporter    systemctl start       systemctl status       systemctl enable node_exporter
grafana-server   systemctl start       systemctl status       systemctl enable grafana-server

Recharger les configurations sans interruption :

bash
sudo systemctl reload prometheus
sudo systemctl restart grafana-server

La suite

Un serveur, c'est le point de départ, pas l'arrivée. Les deux étapes suivantes sont généralement les alertes (Alertmanager, pour qu'un disque plein vous réveille à 3 h du matin au lieu de vous surprendre à 9 h) et un deuxième exporter pour ce que la machine fait réellement tourner. Si cette machine est un site web, auto-héberger WordPress avec Docker et Redis est l'autre moitié du même montage.

La supervision à plus grande échelle représente une bonne part de mon travail : observabilité avec Grafana et Prometheus, y compris un banc d'essai qui a envoyé dix millions de requêtes en quinze minutes. Volontiers pour en parler.

Désinstaller

Supprimer Prometheus

bash
sudo systemctl disable --now prometheus
sudo rm -f /usr/local/bin/prometheus /usr/local/bin/promtool
sudo rm -rf /etc/prometheus /var/lib/prometheus /etc/systemd/system/prometheus.service
sudo userdel prometheus
sudo systemctl daemon-reload

Supprimer Node Exporter

bash
sudo systemctl disable --now node_exporter
sudo rm -f /usr/local/bin/node_exporter /etc/systemd/system/node_exporter.service
sudo userdel node_exporter
sudo systemctl daemon-reload

Supprimer Grafana

bash
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list