Concepts clés de monitoring que vous devez connaître

Découvrez les concepts clés de monitoring que vous devez connaître lorsque vous travaillez avec des outils de monitoring et de visualisation de time series comme Prometheus, Victoria Metrics ou Grafana

Concepts clés de monitoring que vous devez connaître
Photo par Luc Chesser / Unsplash

Métrique

Qu'est-ce qu'une métrique

Une mesure numérique ou une observation de quelque chose. Voici des exemples de métriques relatives aux requêtes sur une application web. Le nom des métriques doit préciser ce qui est réellement mesuré :

  • requests_total
  • requests_success_total
  • request_errors_total

Time serie

Qu'est-ce qu'une time serie

Une combinaison d’une métrique et de ses étiquettes.

requests_total{path="/", code="200"}

path="/" et code="200" sont deux labels associés à la métrique requests_total .

Les labels des time series sont des paires clé/valeur. Les labels des time series ayant des clés identiques mais des valeurs différentes constituent des time series différentes. Voici un exemple :

# Two different time series
requests_total{path="/", code="200"}
requests_total{path="/contact", code="200"}

La time serie requests_total{path="/", code="200"} pourrait également s'écrire comme ça :

# __name__ is a special label that can be used to indicate the metric name
{__name__="requests_total", path="/", code="200"} 

# __name__ can also be ommitted
{"requests_total", path="/", code="200"}

Cardinalité

Qu'est-ce que la cardinalité

Pour le système de surveillance, la cardinalité correspond au nombre de time series uniques. D'un point de vue métrique, la cardinalité correspond au nombre de time series uniques produites pour une métrique donnée.

Une Cardinalité élevée peut augmenter l'utilisation de la mémoire.

Taux de churn

La vitesse à laquelle les anciennes time series sont remplacées par de nouvelles. Un taux de churn élevé est principalement associé aux labels dont les valeurs changent fréquemment (timestamp, queryid, hash, etc.).

Un taux de churn élevé augmente le nombre total de time series dans la base de données du système de surveillance et peut ralentir les requêtes sur plusieurs jours.

Échantillon brut (raw sample ou data point)

Qu'est-ce qu'un échantillon brut ou point de données

La paire (valeur, horodatage) associée à une time serie. Un échantillon brut (raw sample) est également appelé point de données (data point).

# Raw sample in Prometheus text exposition format
requests_total{path="/", code="200"} 123 4567890

L'échantillon brut ou point de données associé à la time serie requests_total{path="/", code="200"} est représentée par 123 (valeur d'échantillon) et 4567890 (horodatage d'échantillon).

L'horodatage de l'échantillon est ajouté par le programme qui collecte la métrique dans
Modèle de traction systèmes de surveillance.

In Modèle push systèmes de surveillance, l'horodatage est ajouté directement par l'application ou le client qui envoie la métrique.

Résolution des time series (ou pas)

Qu'est-ce que la résolution des time series

L'intervalle minimum entre les échantillons bruts (ou points de données) d'une time serie. Une time serie dont la valeur est mise à jour toutes les 30 secondes a une résolution de 30 secondes.

In Modèle de traction systèmes de surveillance, la résolution est contrôlée par les clients qui collectent (scraping) les métriques et correspond à la intervalle de grattage (intervalle de temps séparant deux grattages).

In Modèle push systèmes de surveillance, la résolution est un intervalle entre les horodatages des échantillons bruts de séries chronologiques reçus par le système de surveillance.

Requête instantanée et requête sur plage

Déduplication

Garantit que seul le dernier échantillon brut de la time serie est conservé pour chaque unité de temps discrète X. Si plusieurs scrapers utilisés sur les mêmes cibles, envoient des métriques au système de monitoring toutes les 15 secondes, configurer la déduplication peut être utile pour nettoyer les données dupliquées reçues et éviter le gaspillage d'espace de stockage.

Sous-échantillonnage

Pour chaque intervalle spécifique (5 minutes par exemple), conserver uniquement le dernier échantillon parmi les échantillons datant de plus de X jours. Certains outils de monitoring, comme Victoria Metrics, permettent également de configurer le sous-échantillonnage pour différents ensembles de time series. Consultez Sous-échantillonnage de Victoria Metrics pour plus d'informations.

Relabeling

Consiste à modifier les labels des time series avant leur stockage. Consultez
Réétiquetage compatible avec Prometheus pour des exemples de réétiquetage compatibles avec Prometheus/Victoria Metrics.

Types de métriques

Quels sont les différents types de métriques

Counter (Compteur)

Qu'est-ce qu'une métrique de type conter

  • Compte certains événements (nombre de requêtes, journaux, etc.)
  • Augmente ou la même au fil du temps
  • Diminue uniquement lorsque la métrique est réinitialisée à zéro (redémarrage du service exposant la métrique)

Les métriques de type counter bien nommées auront généralement les suffixes suivants :

  • _total
  • _sum
  • _count

Les fonctions de langage de requête de métriques les plus courantes utilisées avec les métriques de type counter sont rate et increase

Gauge (Jauge)

Qu'est-ce qu'une métrique de type gauge

Histogram (Histogramme)

Qu'est-ce qu'une métrique de type histogram

Summary (Résumé)

Qu'est-ce qu'une métrique de type summary

Fonctions de langages de requête de métriques couramment utilisées

Rate et increase

rate | increase

Principalement utilisées pour les métriques de type counter (compteurs). Voici l'exemple de données que nous allons utiliser pour clarifier le rôle de ces fonctions :

nginx_http_requests_total  133  1740144001  # 2025-02-22T14:20:01Z
nginx_http_requests_total  133  1740144016  # 2025-02-22T14:20:16Z
nginx_http_requests_total  854  1740144031  # 2025-02-22T14:20:31Z
nginx_http_requests_total  854  1740144046  # 2025-02-22T14:20:46Z
nginx_http_requests_total  1671 1740144061  # 2025-02-22T14:21:01Z

Ce sont les données renvoyées par le nginx_http_requests_total requête sur l'heure
ranging from 2025-02-22T14:20:01Z to 2025-02-22T14:21:01Z (1 minute).

Si nous exécutons la fonction increase(nginx_http_requests_total[1m]), nous allons calculer le nombre de nouvelles requêtes au cours de la dernière minute, entre b=2025-02-22T14:21:01Z et a=2025-02-22T14:20:01Z :

  • (valeur en b) - (valeur en a) = 1671 - 133 = 1538 nouvelles requêtes

Si nous exécutons la fonction rate(nginx_http_requests_total[1m]) sur cette même plage horaire, nous allons calculer la vitesse moyenne à laquelle les requêtes augmentent dans cette plage horaire, au cours de la dernière minute (requêtes/seconde) :

  • [(valeur en b) - (valeur en a)] / (plage de temps de calcul entre parenthèses)
  • [1671 - 133] / 60 = 1538 / 60 = 25.63 requêtes / seconde

Fonctions d'agrégation et de rollup