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.
Gardez trois références amont ouvertes à côté de ce guide : la référence de configuration de Prometheus, la liste des collecteurs de Node Exporter avec ce que coûte chacun d'eux, et la documentation d'installation de Grafana sur Debian.
Architecture
+----------------+ scrapes :9100 +----------------+
| Node Exporter | <---------------- | Prometheus |
| :9100 | | :9090 |
+----------------+ +--------+-------+
|
| PromQL queries :9090
v
+----------------+
| Grafana |
| :3000 |
+----------------+
|
v
Browser / userPrérequis
- Un serveur Debian ou Ubuntu avec un accès sudo
curlettarinstallés- Un accès SSH pour un tunnel. Gardez les ports 9090, 9100 et 3000 fermés sur internet ; les trois services écouteront uniquement sur la boucle locale.
Partie 1 : installer Prometheus
Étape 1 : créer l'utilisateur système prometheus
sudo useradd --no-create-home --shell /bin/false prometheusÉtape 2 : créer les répertoires
sudo mkdir -p /etc/prometheus /var/lib/prometheusÉtape 3 : télécharger Prometheus
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
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
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
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
scrape_interval: 10s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
EOFLa 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
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.listen-address=127.0.0.1:9090 \\
--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
EOFExecReload 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
sudo systemctl daemon-reload
sudo systemctl enable --now prometheusÉtape 9 : vérifier
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthyDepuis votre ordinateur, ouvrez un tunnel SSH et laissez-le fonctionner :
ssh -N -L 9090:127.0.0.1:9090 -L 3000:127.0.0.1:3000 user@serverRemplacez user@server par votre destination SSH, puis ouvrez http://localhost:9090 dans le navigateur de votre ordinateur.
Nettoyer le téléchargement de Prometheus
rm -rf /tmp/prometheus-3.13.1.linux-amd64*Partie 2 : installer Node Exporter
Étape 1 : créer l'utilisateur système node_exporter
sudo useradd --no-create-home --shell /bin/false node_exporterÉtape 2 : télécharger Node Exporter
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
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
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 --web.listen-address=127.0.0.1:9100
[Install]
WantedBy=multi-user.target
EOFÉtape 5 : démarrer et activer Node Exporter
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporterÉtape 6 : vérifier
curl -s http://localhost:9100/metrics | headNettoyer le téléchargement de Node Exporter
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
sudo vim /etc/prometheus/prometheus.ymlAjoutez sous scrape_configs :
- job_name: "node_exporter"
static_configs:
- targets: ['localhost:9100']Étape 2 : valider la configuration
promtool check config /etc/prometheus/prometheus.ymlÉtape 3 : recharger Prometheus
sudo systemctl reload prometheusÉtape 4 : vérifier que la cible répond
À travers le tunnel SSH, ouvrez http://localhost: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. apt-get update actualise les listes de paquets ; apt-get install --only-upgrade grafana installe une mise à jour disponible. Source : https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/
Étape 1 : installer les prérequis
sudo apt-get install -y apt-transport-https wget gnupgÉtape 2 : importer la clé GPG
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
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
sudo apt-get updateÉtape 5 : installer Grafana OSS
sudo apt-get install -y grafanaÉtape 6 : démarrer et activer Grafana
sudo mkdir -p /etc/systemd/system/grafana-server.service.d
printf '[Service]\nEnvironment=GF_SERVER_HTTP_ADDR=127.0.0.1\n' | sudo tee /etc/systemd/system/grafana-server.service.d/listen.conf
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl restart grafana-serverÉtape 7 : vérifier
sudo systemctl status grafana-serverÀ travers le tunnel SSH, ouvrez http://localhost: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)
Le tunnel SSH suffit pour un accès privé. Pour publier le tableau de bord, faites pointer grafana.example.com vers le serveur et terminez TLS dans nginx. Grafana reste en HTTP sur la boucle locale ; n'activez pas HTTPS sur son port interne.
Étape 1 : modifier grafana.ini
sudo vim /etc/grafana/grafana.ini[server]
http_addr = 127.0.0.1
http_port = 3000
domain = grafana.example.com
root_url = https://grafana.example.com/
enforce_domain = true
protocol = httpÉtape 2 : redémarrer Grafana
sudo systemctl restart grafana-serverÉtape 3 (optionnelle) : proxy inverse Nginx
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name grafana.example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1: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 $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
}Installez nginx et Certbot, puis enregistrez la configuration ci-dessus dans /etc/nginx/sites-available/grafana.example.com. Remplacez le domaine d'exemple partout :
sudo apt-get install -y nginx certbot python3-certbot-nginx
sudo ln -s /etc/nginx/sites-available/grafana.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d grafana.example.com
sudo certbot renew --dry-runOuvrez les ports 80 et 443 pour nginx, pas le 3000. Certbot configure TLS et le minuteur de renouvellement. Gardez l'authentification Grafana activée et changez le mot de passe initial via le tunnel SSH avant de publier le domaine.
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:9090Cliquez 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 :
1860Sé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-serverRecharger les configurations sans interruption :
sudo systemctl reload prometheus
sudo systemctl restart grafana-serverLa 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
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-reloadSupprimer Node Exporter
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-reloadSupprimer Grafana
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list