RousselTMLEARNING

Observabilité

Prometheus : visualiser ses métriques (UI, Grafana et dashboards)

Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboards RED et USE, variables, import de dashboards et alertes Grafana.

1. L'interface native de Prometheus #

Un outil d'exploration.

Que permet l'UI Prometheus ? #

L'interface web de Prometheus (port 9090) est conçue pour explorer : tester une requête PromQL, vérifier l'état des cibles (Status > Targets), consulter les règles et les alertes. Elle n'est pas faite pour construire des tableaux de bord durables : pour cela on utilise Grafana.

# Vérifications rapides en ligne de commande
curl -s http://localhost:9090/-/healthy
curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[] | {job: .labels.job, health: .health}'
curl -s 'http://localhost:9090/api/v1/query?query=up' | jq '.data.result[] | {instance: .metric.instance, up: .value[1]}'
curl -s 'http://localhost:9090/api/v1/query_range?query=rate(node_cpu_seconds_total[5m])&start=2026-10-18T08:00:00Z&end=2026-10-18T09:00:00Z&step=60'

2. Connecter Grafana à Prometheus #

Une stack complète en 2 minutes.

Docker Compose et provisioning #

Prometheus et Grafana
Grafana ne stocke aucune métrique : il interroge la source de données.
# docker-compose.yml
services:
  prometheus:
    image: prom/prometheus:latest
    ports: ["9090:9090"]
    volumes: ["./prometheus.yml:/etc/prometheus/prometheus.yml"]
  node-exporter:
    image: prom/node-exporter:latest
    ports: ["9100:9100"]
  grafana:
    image: grafana/grafana:latest
    ports: ["3000:3000"]
    volumes: ["./provisioning:/etc/grafana/provisioning"]
# provisioning/datasources/prometheus.yml
apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    url: http://prometheus:9090
    isDefault: true
    jsonData: { timeInterval: 15s }
docker compose up -d
# Grafana : http://localhost:3000 (admin / admin)  ->  Explore -> Prometheus

3. Construire de bons tableaux de bord #

Les méthodes RED et USE.

La méthode USE pour les ressources #

Utilisation, Saturation, Erreurs : à appliquer à chaque ressource (CPU, mémoire, disque, réseau).

# Utilisation CPU (%)
100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[$__rate_interval])) * 100

# Saturation CPU (charge par cœur)
node_load1 / count by (instance) (node_cpu_seconds_total{mode="idle"})

# Mémoire utilisée (%)
(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

# Utilisation disque (%)
100 - (node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes * 100)

# Débit réseau (octets/s)
sum by (instance) (rate(node_network_receive_bytes_total{device!="lo"}[$__rate_interval]))

La méthode RED pour les services #

Rate (requêtes/s), Errors (taux d'erreur), Duration (latence) : à appliquer à chaque service.

# Rate
sum by (service) (rate(http_requests_total[$__rate_interval]))

# Errors (%)
100 * sum by (service) (rate(http_requests_total{status=~"5.."}[$__rate_interval]))
    / sum by (service) (rate(http_requests_total[$__rate_interval]))

# Duration p95
histogram_quantile(0.95, sum by (le, service) (rate(http_request_duration_seconds_bucket[$__rate_interval])))

Variables et import de dashboards #

# Variable "instance" (Dashboard settings > Variables > Query)
label_values(node_uname_info, nodename)
# Utilisation dans un panneau : node_load1{instance=~"$instance"}

# Importer le dashboard communautaire "Node Exporter Full" (ID 1860)
# Dashboards > New > Import > 1860 > choisir la source Prometheus
Bonne Pratique : Utilisez $__rate_interval plutôt qu'une fenêtre fixe comme [5m] : Grafana l'adapte à la résolution du graphe et à l'intervalle de scrape.
Erreur Courante : Éviter les panneaux qui agrègent des centaines de séries à haute cardinalité : le navigateur et Prometheus saturent. Filtrez par variable et utilisez topk(10, ...).

Articles liés

Recording rules Prometheus : accélérer ses requêtes et ses tableaux de bord

Comprendre et maîtriser les recording rules de Prometheus : évaluation, convention de nommage, pièges (ratios…

Monitoring de site web : disponibilité, surveillance HTTPS, certificats et performances

Mettre en place le monitoring d'un site web : surveillance de la disponibilité et du HTTPS, expiration des ce…

Prometheus sur Kubernetes et l'interface web de Prometheus

Déployer Prometheus sur Kubernetes avec kube-prometheus-stack (Prometheus Operator, ServiceMonitor, Alertmana…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !