Aller au contenu
Outils medium

Installation de Prometheus

11 min de lecture

Ce guide vous accompagne pour installer Prometheus sur différentes plateformes. À la fin, vous aurez un serveur Prometheus fonctionnel qui scrappe ses propres métriques et celles d’un node_exporter — votre premier “vrai” target.

PlateformePrérequis
LinuxUbuntu 22.04+ ou Rocky 9+, accès sudo
DockerDocker Engine 24+
KubernetesCluster K8s 1.28+, Helm 3

L’installation par binaire vous donne un contrôle total sur la configuration. C’est la méthode recommandée pour comprendre Prometheus en profondeur.

On utilise les chemins attendus par les ops :

CheminUsage
/usr/local/bin/Binaires prometheus, promtool
/etc/prometheus/Configuration
/var/lib/prometheus/Données TSDB

Prometheus doit tourner avec un utilisateur dédié sans privilèges.

Fenêtre de terminal
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
  1. Télécharger la dernière version

    Récupérez le binaire depuis prometheus.io/download. Exemple avec la version 3.9.1 :

    Fenêtre de terminal
    cd /tmp
    VERSION="3.9.1"
    wget https://github.com/prometheus/prometheus/releases/download/v${VERSION}/prometheus-${VERSION}.linux-amd64.tar.gz
    wget https://github.com/prometheus/prometheus/releases/download/v${VERSION}/sha256sums.txt
  2. Vérifier l’intégrité (obligatoire en prod)

    Fenêtre de terminal
    grep "prometheus-${VERSION}.linux-amd64.tar.gz" sha256sums.txt | sha256sum -c -
    # Attendu : prometheus-3.9.1.linux-amd64.tar.gz: OK
  3. Extraire et installer

    Fenêtre de terminal
    tar xvfz prometheus-${VERSION}.linux-amd64.tar.gz
    sudo cp prometheus-${VERSION}.linux-amd64/{prometheus,promtool} /usr/local/bin/
    sudo chown prometheus:prometheus /usr/local/bin/{prometheus,promtool}
  4. Créer les répertoires

    Fenêtre de terminal
    sudo mkdir -p /etc/prometheus /var/lib/prometheus
    sudo cp -r prometheus-${VERSION}.linux-amd64/{consoles,console_libraries} /etc/prometheus/
    sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

Créez une configuration minimale. Prometheus se scrappe lui-même + node_exporter.

/etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']

Ce fichier de service inclut les directives de sécurité recommandées.

/etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring
Documentation=https://prometheus.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
# Sécurité : bind local si lifecycle activé (pas d'accès externe non authentifié)
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 \
--web.listen-address=127.0.0.1:9090 \
--web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=10
# Hardening systemd
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/prometheus
[Install]
WantedBy=multi-user.target

Activez et démarrez le service :

Fenêtre de terminal
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus

Pour que Prometheus scrappe des métriques système, installez node_exporter :

Fenêtre de terminal
# Télécharger
cd /tmp
NODE_VERSION="1.9.0"
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_VERSION}/node_exporter-${NODE_VERSION}.linux-amd64.tar.gz
# Installer
tar xvfz node_exporter-${NODE_VERSION}.linux-amd64.tar.gz
sudo cp node_exporter-${NODE_VERSION}.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
/etc/systemd/system/node_exporter.service
[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
Restart=always
[Install]
WantedBy=multi-user.target
Fenêtre de terminal
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
  1. Vérifier les services

    Fenêtre de terminal
    sudo systemctl status prometheus node_exporter

    Les deux doivent être Active: active (running).

  2. Accéder à l’interface web

    Comme on bind sur 127.0.0.1, accédez localement ou via SSH tunnel :

    Fenêtre de terminal
    # Depuis une autre machine
    ssh -L 9090:127.0.0.1:9090 user@server

    Ouvrez http://localhost:9090 dans votre navigateur.

  3. Tester une requête PromQL

    Dans l’interface, tapez up et cliquez Execute. Vous devez voir 2 séries : up{job="prometheus"} 1 et up{job="node"} 1.

  4. Vérifier les targets

    Allez dans StatusTargets. Les deux targets doivent être UP.

FlagDescriptionValeur par défaut
--config.fileChemin du fichier de configprometheus.yml
--storage.tsdb.pathRépertoire de stockagedata/
--web.listen-addressAdresse d’écoute0.0.0.0:9090
--web.enable-lifecycleActive /-/reload et /-/quitfalse
--web.enable-admin-apiActive l’API admin (snapshots, delete)false

Prometheus peut recharger sa configuration sans redémarrage.

Nécessite --web.enable-lifecycle :

Fenêtre de terminal
curl -X POST http://localhost:9090/-/reload
Fenêtre de terminal
sudo kill -HUP $(pgrep prometheus)
Fenêtre de terminal
promtool check config /etc/prometheus/prometheus.yml
SymptômeCause probableSolution
Service ne démarre pasPermissions incorrecteschown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
Port 9090 déjà utiliséAutre service--web.listen-address=:9091
”permission denied” sur data/SELinuxchcon -Rt svirt_sandbox_file_t /var/lib/prometheus
Pas de donnéesConfig invalidepromtool check config prometheus.yml
Target node en DOWNnode_exporter non démarrésystemctl status node_exporter

Logs à consulter :

Fenêtre de terminal
# Linux
journalctl -u prometheus -f
# Docker
docker logs prometheus -f
# Kubernetes
kubectl logs -n monitoring -l app.kubernetes.io/name=prometheus
  • Versions : choisissez Latest (3.x) ou LTS selon votre stratégie
  • Vérifier l’intégrité : SHA256 obligatoire en production
  • Layout standard : /etc/prometheus/ (config), /var/lib/prometheus/ (data)
  • Hardening systemd : NoNewPrivileges, ProtectSystem=strict
  • Sécurité lifecycle : bind sur 127.0.0.1 ou mettre un reverse proxy
  • Premier target : node_exporter pour voir des métriques réelles
  • Docker : toujours pin la version (v3.9.1, pas latest)
  • K8s : kube-prometheus-stack inclut tout (Prometheus, Grafana, exporters)

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.