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ère | Histogram | Summary |
|---|---|---|
| Agrégation (ex: Kubernetes) | Oui, mathématiquement exact via histogram_quantile() | Non, impossible d'agréger des quantiles entre pods |
| Calcul des percentiles | Côté serveur (Prometheus, via PromQL) | Côté client (Code applicatif) |
| Configuration | Nécessite de définir les seuils des buckets à l'avance | Calcule les valeurs dynamiquement (plus simple à configurer) |
| Impact sur les ressources | Lé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.
