[Cloud Native Prometheus] Explication détaillée des instructions Prometheus PromQL 1.0

Introduction

1.1 Série chronologique Prometheus

Dans Prometheus, chaquesérie chronologique est déterminée parNom de la métrique . identification unique à étiquettes (Label) et

Format: <metric_name>{<label_name>=<label_value>, ...}

1.1.1 Nom de l'indicateur

Habituellement utilisé pour décrire une certaine caractéristique du système à mesurer.

Par exemple,prometheus_http_requests_total représente le nombre total de requêtes HTTP reçues.

1.1.2 Balises

Données clé-valeur, ajoutées au nom de l'indicateur, permettant à l'indicateur de prendre en charge des fonctionnalités multidimensionnelles ; facultatif.

Les balises doublement soulignées (par exemple, __address__) sont des balises par défaut du système Prometheus< a i =4>, il ne sera pas affiché dans la page /metrics ;

Étiquettes par défaut du système commun
__address__ L'adresse de socket de l'instance cible actuelle :
__scheme__ Le protocole utilisé lors de la collecte des données des indicateurs sur la cible actuelle (http ou https)
__metrics_path__ Utilisez le chemin URI lors de la collecte de données métriques sur la cible actuelle, la valeur par défaut est /metrics
__param_<name> La valeur du premier paramètre nommé dans les paramètres d'URL transmis
__name__ Cette étiquette est une étiquette réservée qui identifie le nom de l'indicateur. Vous pouvez utiliser le sélecteur d'étiquette pour filtrer le nom de l'indicateur.

1.1.3 Précautions d'emploi

1)Une combinaison spécifique de nom d'indicateur et d'étiquette représente une série chronologique

Différents noms d’indicateurs représentent naturellement différentes séries chronologiques ; et des combinaisons d’indicateurs portant le même nom mais des étiquettes différentes représentent également des séries chronologiques différentes.

2)Gardez l'étiquette aussi stable que possible

PromQL prend en charge le filtrage et l'agrégation en fonction de dimensions de métriques définies. La modification d'une valeur de balise (y compris l'ajout ou la suppression de balises) créera une nouvelle série temporelle.

Si l'étiquette est instable, elle est susceptible de créer une nouvelle série chronologique, voire de générer un environnement de données dynamique, ce qui rend difficile le suivi de la source de données surveillée, entraînant des modifications des graphiques, des alarmes et des règles d'enregistrement basées sur l'indicateur. Invalide.

1.2 Exemple de format de données

Chaqueéchantillon de données de . données au format float64 et horodatage de précision à la milliseconde Composé d'deux parties se compose dePrometheus

prometheus_http_requests_total{code="200", handler="/targets", instance="localhost:9090", job="prometheus"}  @1434317560885         28

prometheus_http_requests_total{code="200", handler="/targets", instance="localhost:9090", job="prometheus"}  @1434317561483         35
|                            ||                                                                           |  |            |          |
 ---------- 指标名称 --------  ------------------------ 标签 ---------------------------------------------    -- 时间戳 --        样本值

Le transfert de l’image du lien externe a échoué. Le site source peut avoir un mécanisme anti-sangsue. Il est recommandé de sauvegarder l’image et de la télécharger directement.

1.3 Fonctions d'agrégation de Prometheus

fonctions intégrées décrire Exemple de requête
somme() Additionner les exemples de valeurs somme (ma_métrique)
min() Trouver la valeur minimale parmi les exemples de valeurs min(ma_métrique)
maximum() Trouver la valeur maximale parmi les exemples de valeurs max(ma_métrique)
moyenne() valeurs moyennes des échantillons moyenne (ma_métrique)
compter() Effectuer des statistiques quantitatives sur des séries chronologiques au sein des groupes compte (my_metric)
stddev() Calculer l'écart type des valeurs de l'échantillon pour aider à comprendre la fluctuation des données stddev (my_metric)
varst() Le calcul de la variance des valeurs de l'échantillon est un état intermédiaire dans le processus de calcul de l'écart type. varstd (ma_métrique)
balle() Renvoie les k plus grandes valeurs d'échantillon et leur série chronologique topk(5, ma_métrique)
fond() Renvoie les k plus petites valeurs d'échantillon et leur série chronologique bottomk(5, ma_métrique)
quantile() Renvoie la valeur de l'échantillon au percentile spécifié quantile(0,90, ma_métrique)
nombre_valeurs() Compte les séries chronologiques dont les valeurs d'échantillon sont égales à une valeur spécifiée count_values(my_metric, “value_1”)
count_values(my_metric, “value_2”)

Quantitytopk() : renvoie les k premières séries temporelles et leurs valeurs avec les plus grandes valeurs d'échantillon du groupe dans l'ordre inverse, c'est-à-dire les k plus grandes valeurs d'échantillon
●bottomk() : Ordre Renvoie les k premières séries temporelles et leurs valeurs avec les plus petites valeurs d'échantillon du groupe, c'est-à-dire les k plus petites valeurs d'échantillon
●quantile( ) : quantile, utilisé pour évaluer l'état de distribution des données. Cette fonction renverra la valeur du quantile spécifié au sein du groupe, c'est-à-dire la proportion de valeurs tombant dans l'intervalle de quantile spécifié
●count_values() : échantillons de valeurs de la série chronologique au sein du groupe Effectuer des statistiques quantitatives, c'est-à-dire le nombre d'échantillons égal à une certaine valeur

2. Partie théorique PromQL

2.1 Introduction à PromQL

PromQL (Prometheus Query Language) estPrometheus intégréLangage de requête de données, aide les utilisateurs à effectuer des opérations de requête et d'agrégation de données en temps réel.

revue de concept
séquentiellement Abrégé en série chronologique, c'est-à-dire données d'indicateur de surveillance, qui font référence à l'expression d'un certain indicateur de surveillance dans des conditions d'étiquette multidimensionnelles.
valeur de l'échantillon <指标名称>{<标签key1>=<值1>, <标签key2>=<值2>, ....}
Format La valeur spécifique de l'indicateur de surveillance d'une certaine série temporelle à un certain horodatage

2.2 Types de données PromQL

type de données décrire
vecteur instantané Vecteur instantané Un ensemble d'échantillons de valeurs avec le même horodatage sur une collection de séries chronologiques spécifique ou complète
vecteur d'intervalle Vecteur de plage Tous les exemples de valeurs dans la même plage temporelle pour une collection de séries chronologiques spécifique ou pour toutes
données scalaires Scalaire une valeur de données à virgule flottante
chaîne Chaîne Une chaîne qui prend en charge les guillemets simples et doubles pour les guillemets

2.3 Sélecteur de séries chronologiques

L'expression PromQL peut être utiliséesélecteur de séries temporelles pour Filtrez les exemples de valeurs requis.

Les utilisateurs peuvent utiliser des expressions de sélection vectorielle pour sélectionner les valeurs d'échantillon immédiates ​​​​de toutes les séries temporelles ou d'une partie de la série temporelle sous le nom d'indicateur donné, ou les valeurs d'échantillon ​​​​dans une certaine plage temporelle. dans le passé, le premier s'appelait Sélecteur vectoriel instantané, le second s'appelait Sélecteur vectoriel à intervalle .

2.3.1 Sélecteurs de vecteurs instantanés

Définition de la partie 1

Le sélecteur de vecteur instantané peut renvoyer un échantillon de chacune de 0, 1 ou plusieurs séries temporelles à un horodatage donné (instantané).

Composition de la partie 2
constituer décrire
Nom de l'indicateur Facultatif Utilisé pour limiter la série chronologique sous un indicateur spécifique, c'est-à-dire responsable du filtrage des indicateurs
sélecteur de balises Facultatif Utilisé pour filtrer les étiquettes sur des séries temporelles ; défini dans {}

Le Sélecteur de vecteur instantané est obtenu par <指标名称>{<标签key1><匹配操作符><值1>, ....} expression, Le valeur échantillon de la série temporelle à l'horodatage actuel.

Opérateurs de correspondance pris en charge par les sélecteurs de balises décrire
= exactement égal
!= inégal
=~ expression régulièrecorrespondance
!~ expression régulièrene correspond pas
Partie 3 Comment définir le sélecteur vectoriel instantané ?

Lors de la définition d'un sélecteur vectoriel instantané, lesdeux partiesdevraientdonner au moins une a>, il y a donc les trois combinaisons suivantes.

Combinaison 1 : Seul le nom de l'indicateur est donné, ou une valeur vide est utilisée pour le nom de l'étiquette sélecteur de balises

Rendementspour l'indicateur donné, toutes les séries chronologiquesrespectivementÉchantillon instantané.

#举个例子
#都是用于返回这个指标下各时间序列的即时样本
prometheus_http_requests_total 和 prometheus_http_requests_total{
    
    }

Insérer la description de l'image ici

Combinaison 2 : Seulement un sélecteur de balise donné

Renvoie tous les échantillons instantanés sur toutes les séries temporelles qui correspondent au sélecteur d'étiquette donné,.

#举个例子
{
    
    code="200", job="prometheus"}

Insérer la description de l'image ici
Insérer la description de l'image ici

Combinaison 2 : Nom de l'indicateur et sélecteur d'étiquettecombinaison

Renvoie des échantillons instantanés sur toutes les séries chronologiques sous l'indicateur donné et correspondant au filtre d'étiquette donné

#举个例子
prometheus_http_requests_total{
    
    code="200", job="prometheus"}
用于返回这个指标 code 为 200, 并且 job 为 prometheus 的时间序列的即时样本

Insérer la description de l'image ici

Précautions Partie 4

1) Lors de la correspondance du sélecteur de balise avec une valeur de balise vide de, tous ne définissent pas la balise La série chronologique remplit également les conditions;

#举个例子
prometheus_http_requests_total{
    
    x= ""}
#该指标名称上所有未使用该标签(x)的时间序列也符合条件

Insérer la description de l'image ici

2)expression régulièreexécuteramécanisme d'ancrage complet , il doit correspondre à la valeur entière de la balise spécifiée ;

3)Le sélecteur de vecteurdoitcontenir au moins un nom d'indicateur, ouau moins un sélecteur de balise qui ne correspondra pas à la chaîne vide;
Insérer la description de l'image ici

4) Utilisezname comme nom d'étiquette, et vous pouvez égalementfiltrer le nom de l'indicateur< /span> a>;

#举个例子
{
    
    __name__=~".*http_requests_total"}  能够匹配所有以 http_requests_total 为后缀的所有指标

Insérer la description de l'image ici

2.3.2 Sélecteurs de vecteurs de plage

Partie 1 Définition et principe de fonctionnement

Sélecteur de vecteur d'intervalle Grâce à l'<指标名称>{<标签key1>=<值1>, ....}[XX] expression, obtient la série chronologique basée sur l'heure actuelle. Valeurs d'échantillon< /span> à plusieurs horodatages dans la plage de temps spécifiée.

Le sélecteur de vecteur d'intervalle peut renvoyer un ensemble d'échantillons sur 0, 1 ou plusieurs séries temporelles qui se situent dans une valeur de plage temporelle donnée.

La différence entre le sélecteur de vecteur d'intervalle est qu'il doit être passé après l'expression du sélecteur de vecteur instantané, Ajoutez la durée contenue dans pour exprimer la position de l'échantillon qui doit être renvoyé dans la séquence temporelle . Plage horaire. [ ]

Plage de temps de la partie 2

Plage de temps : En prenant l'heure actuelle comme point temporel de base, en pointant vers ;Une période de temps spécifique dans le passé

Par exemple, [5m] fait référence aux 5 dernières minutes.

caractéristique

1) Les unités de temps disponibles sont ms (millisecondes), s (secondes), m (minutes), h (heures), d (jours), w (semaines) et y (années).

2)Doit utiliser un temps entier et être capable de combiner plusieurs unités de différents niveaux en série, de grande à petite en unités de temps est une séquence, par exemple 1h30, mais 1,5h ne peut pas être utilisée

Par exemple

Insérer la description de l'image ici

2.3.3 Sélecteur de vecteur de décalage

Le modificateur de décalage suit le sélecteur et utilise le mot-clé offset pour spécifier le montant à compenser.

Sélecteur de vecteur de décalage Grâce à <指标名称>{<标签key1>=<值1>, ....} offset XX l'expression, obtient la série chronologique dans< a i= 4>La valeur d'échantillon à l'horodatage avant l'heure spécifiée.

#举个例子
prometheus_http_requests_total offset 5m 

#表示获取以 prometheus_http_requests_total 为指标名称的所有时间序列在过去 5 分钟之时的即时样本;

Insérer la description de l'image ici

Le Sélecteur de vecteur de décalage peut également utiliser l'expression <指标名称>{<标签key1>=<值1>, ....}[XX] offset XX pour obtenir la série temporelle avant l' heure spécifiée. valeurs à plusieurs horodatages dans la plage de temps spécifiée.

#举个例子
prometheus_http_requests_total[5m] offset 1d
#表示获取距此刻 1 天时间之前的 5 分钟之内的所有样本

Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/q2524607033/article/details/134771022
conseillé
Classement