RousselTMLEARNING

Observabilité

Les types de métriques dans Prometheus

Découvrez en détail les quatre types de métriques supportés par Prometheus (Counter, Gauge, Histogram, Summary) et leurs cas d'usage spécifiques.

Counter (Compteur) #

Une métrique cumulative qui ne fait qu'augmenter ou être remise à zéro.

Fonctionnement et cas d'usage #

Un compteur (Counter) est une métrique cumulative qui représente une valeur monotone croissante. Elle ne peut qu'augmenter ou être remise à zéro (par exemple lors du redémarrage d'un service).

Cas d'utilisation : Compter le nombre total de requêtes HTTP traitées, le nombre d'erreurs rencontrées, ou le volume de données transférées.

Astuce PromQL : N'utilisez jamais un Counter directement pour afficher une valeur brute, car les redémarrages de service fausseraient la courbe. Utilisez toujours les fonctions rate() ou increase() pour évaluer la vitesse d'évolution.

# Taux de requêtes par seconde sur les 5 dernières minutes
rate(http_requests_total{method="GET"}[5m])

Gauge (Jauge) #

Une valeur numérique instantanée pouvant augmenter ou diminuer arbitrairement.

Fonctionnement et cas d'usage #

Une jauge (Gauge) est une métrique qui capture une valeur à un instant T. Contrairement au compteur, sa valeur peut monter comme descendre.

Cas d'utilisation : Mesurer des états actuels comme l'utilisation de la mémoire, la température d'un CPU, le nombre d'utilisateurs connectés, ou la taille d'une file d'attente.

Astuce PromQL : Vous pouvez afficher une Gauge directement ou calculer des moyennes avec avg_over_time(). Des fonctions comme predict_linear() sont très utiles avec les Gauges pour anticiper la saturation d'un disque.

# Moyenne d'utilisation de la mémoire sur 5 minutes
avg_over_time(node_memory_Active_bytes[5m])

Histogram (Histogramme) #

Échantillonne des observations et les compte dans des seaux (buckets) configurables.

Fonctionnement et cas d'usage #

Un histogramme échantillonne des événements (généralement des durées ou des tailles) et les répartit dans des seaux (buckets) prédéfinis. Un histogramme génère 3 séries temporelles distinctes pour une même métrique :

  • _bucket{le="X"} : Un compteur cumulatif pour chaque seau (ex: requêtes de moins de 0.5s).
  • _sum : La somme totale des valeurs observées.
  • _count : Le nombre total d'événements observés.

Astuce PromQL : La grande force de l'histogramme est sa capacité à agréger les données de plusieurs instances pour calculer des percentiles (ex: le 95e percentile de la latence) directement côté serveur avec la fonction histogram_quantile().

# 95e percentile de la durée des requêtes agrégée sur tout le cluster
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

Summary (Résumé) #

Calcule dynamiquement des quantiles (percentiles) côté client.

Fonctionnement et cas d'usage #

Un résumé (Summary) échantillonne également des observations, mais calcule les quantiles (ex: 50e ou 99e percentile) directement dans le code de l'application (côté client) au lieu de le faire dans Prometheus. Comme l'histogramme, il expose également des séries _sum et _count.

Astuce PromQL : Les quantiles pré-calculés par un Summary ne peuvent pas être agrégés mathématiquement (la moyenne de deux 95e percentiles n'est pas un 95e percentile valide). Ils sont donc réservés à l'analyse d'instances isolées.

# Récupération directe du 99e percentile exposé par l'application
go_gc_duration_seconds{quantile="0.99"}

Quand choisir Histogram ou Summary ? #

Les critères clés pour choisir entre ces deux métriques de distribution.

Comparaison #

CritèreHistogramSummary
Agrégation (ex: Kubernetes)Oui, mathématiquement exact via histogram_quantile()Non, impossible d'agréger des quantiles entre pods
Calcul des percentilesCôté serveur (Prometheus, via PromQL)Côté client (Code applicatif)
ConfigurationNécessite de définir les seuils des buckets à l'avanceCalcule les valeurs dynamiquement (plus simple à configurer)
Impact sur les ressourcesLéger côté client, plus coûteux côté Prometheus (stockage des buckets)Lourd côté client (CPU/Mémoire pour le calcul)

Règle d'or : Dans les architectures distribuées (Microservices, Kubernetes), où vous avez besoin d'une vue d'ensemble du cluster, utilisez toujours l'Histogramme.

Pour aller plus loin