Table des matières

, , ,

PromQL

PromQL est l’abréviation de Prometheus Query Language: c'est principalement via le PromQL que l'utilisateur peut récupérer/exploiter les métriques enregistrées dans Prometheus sous forme de séries temporelles (time series).

En général on affiche les valeurs retournées dans un graphique ou on les exporte en utilisant l'API HTTP.

Le serveur Prometheus propose une interface web écoutant par défaut sur le port 9090. Via cette interface on peut écrire et tester ses requêtes.

http://server.fqdn:9090/graph

Le temps utilisé par Prometheus est le temps UTC (pour l'enregistrement des métriques et dans l'interface web).

PromQL est un DSL1) construit sur Go. C'est également un langage fonctionnel imbriqué NFL2) dans lequel les données apparaissent comme des expressions contenues/imbriquées dans les expressions plus larges. L'expression la plus extérieure retourne la valeur finale. Chaque expression imbriquée fournit une valeur qui sert de variable pour l'expression supérieure.

PromQL permet de récupérer des métriques similaires par type, de les regrouper pour les afficher ensemble. Cela peut apporter une meilleure visibilité sur une situation sans avoir à basculer entre différents indicateurs. PromQL permet également de regrouper les métriques via leurs labels puis d'effectuer des tris sur ces regroupements.

Les types de métriques et les types de données

Dans Prometheus, il faut bien distinguer:

Les types de métriques

Le type counter permet d'enregistrer la valeur absolue d'une grandeur quelconque. Par exemple la métrique promhttp_metric_handler_requests_total conservant le nombre total de scrapes est de type counter. NB: Un compteur s'incrémente seulement, il ne peut que croître ou se réinitialiser.

Le type gauge peut varier, croître ou décroître. Les métriques de type gauge peuvent fournir des moyennes ou un intervalle de valeurs.

:TODO_DOCUPDATE: Le type histogram comprend _count _sum et _bucket

Les types de données de PromQL

Le PromQL en conséquence a 4 type de données:

Références

1)
Domain-Specific Language
2)
Nested Functionnal Language