Aller au contenu
Outils medium

Prometheus : Collecte de métriques pour le cloud-native

9 min de lecture

Vous voulez surveiller vos applications et être alerté en cas de problème ? Prometheus collecte les métriques de vos services (CPU, mémoire, requêtes HTTP, erreurs…) et vous permet de créer des alertes quand quelque chose dysfonctionne.

En 5 minutes, vous aurez un PoC fonctionnel avec métriques collectées et première alerte. La production demande plus de travail (HA, sécurité, rétention) — ce guide vous donne les bases solides pour y arriver.

Ce quickstart prouve la valeur de Prometheus immédiatement. Vous aurez :

  • Prometheus qui collecte ses propres métriques + celles d’un node exporter
  • Une requête PromQL fonctionnelle
  • Une alerte qui se déclenche
  1. Créer le fichier de configuration

    prometheus.yml
    global:
    scrape_interval: 15s
    scrape_configs:
    - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
    - job_name: 'node'
    static_configs:
    - targets: ['node-exporter:9100']
    rule_files:
    - 'alerts.yml'
    alerting:
    alertmanagers:
    - static_configs:
    - targets: ['alertmanager:9093']
  2. Créer une règle d’alerte simple

    alerts.yml
    groups:
    - name: demo
    rules:
    - alert: TargetDown
    expr: up == 0
    for: 1m
    labels:
    severity: critical
    annotations:
    summary: "Target {{ $labels.instance }} is down"
  3. Lancer la stack

    docker-compose.yml
    services:
    prometheus:
    image: prom/prometheus:v2.53.1
    ports:
    - "9090:9090"
    volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml
    - ./alerts.yml:/etc/prometheus/alerts.yml
    command:
    - '--config.file=/etc/prometheus/prometheus.yml'
    - '--web.enable-lifecycle'
    node-exporter:
    image: prom/node-exporter:v1.8.0
    ports:
    - "9100:9100"
    alertmanager:
    image: prom/alertmanager:v0.27.0
    ports:
    - "9093:9093"
    Fenêtre de terminal
    docker compose up -d
  4. Vérifier que ça fonctionne

Modèle mental : comment les briques s’emboîtent

Section intitulée « Modèle mental : comment les briques s’emboîtent »

Prometheus fonctionne en 5 étapes. Comprendre ce flux évite 80% des confusions :

Modèle mental Prometheus : Targets → Scrape → TSDB → PromQL/Rules → Alertmanager

ÉtapeComposantCe qu’il fait
1TargetsExposent /metrics au format Prometheus/OpenMetrics
2ScraperPull HTTP toutes les 15s (configurable)
3TSDBStocke les séries temporelles sur disque local
4PromQLInterroge les données (dashboards, API)
4bRulesPré-calcule (recording) ou évalue les alertes
5AlertmanagerRoute et notifie (Slack, email, PagerDuty…)
TypeDescriptionQuand l’utiliser
CounterCompteur croissant uniquementRequêtes, erreurs, bytes envoyés
GaugeValeur qui monte et descendMémoire, température, connexions actives
HistogramDistribution avec bucketsLatences (recommandé), tailles de requêtes
SummaryQuantiles calculés côté clientLatences (moins agrégable que histogram)

Les labels sont des paires clé-valeur qui enrichissent vos métriques. C’est ce qui rend Prometheus si flexible :

# Sans labels : une seule série
http_requests_total
# Avec labels : filtrage et agrégation flexibles
http_requests_total{method="GET", status="200", handler="/api/users"}

Chaque combinaison unique de labels = une série temporelle en mémoire.

LabelValeurs possiblesImpact
methodGET, POST, PUT, DELETE4 séries → ✅ OK
status200, 201, 400, 404, 5005 séries → ✅ OK
user_id1M utilisateurs1M séries → ❌ OOM garanti
request_idUUID unique∞ séries → ❌ Catastrophe

Prometheus scrappe des endpoints /metrics. Pour exposer ces endpoints :

OutilRôleExemple
ExporterTransforme une source → /metricsnode_exporter, mysql_exporter
InstrumentationCode qui expose des métriquesMicrometer (Java), prometheus_client (Python)
OTel CollectorRouteur multi-signaux, peut exposer pour PrometheusAlternative moderne

Voir le guide Exporters pour les exporters courants.

PortEndpointUsage
9090/Interface web Prometheus
9090/metricsMétriques de Prometheus lui-même
9090/targetsÉtat des targets scrapées
9090/alertsAlertes actives
9090/api/v1/queryAPI PromQL
9093/Interface Alertmanager

Prometheus mono-instance a des limites. Voici les signaux d’alerte :

SymptômeSolution
OOM fréquents, compactions lentesRéduire cardinalité ou passer à VictoriaMetrics
Rétention > 30 jours requiseMimir ou VictoriaMetrics + object storage
Multi-cluster sans vue globaleMimir (multi-tenant) ou Thanos (fédération + query global)
Besoin de HA nativeMimir ou VictoriaMetrics cluster

Prometheus a été développé chez SoundCloud à partir de 2012 pour surveiller des architectures microservices dynamiques.

  • 2012 : Création interne chez SoundCloud
  • 2015 : Publication open source
  • 2016 : Accepté par la CNCF (2ème projet après Kubernetes)
  • 2018 : Statut “graduated” CNCF
  • Aujourd’hui : Standard de facto pour l’observabilité cloud-native
  • Pull model : Prometheus scrappe les /metrics (pas de push)
  • Labels : puissants mais attention à la cardinalité (pas de user_id)
  • Alertmanager : composant séparé pour le routage et les notifications
  • Rétention : 15 jours par défaut, disque local uniquement
  • Sécurité : pas d’auth native, toujours mettre derrière un proxy
  • Scaling : Mimir/VictoriaMetrics/Thanos pour multi-cluster ou long terme

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.