{{tag>monitoring supervision prometheus promql}} ====== PromQL ====== **PromQL** est l’abréviation de **Prom**etheus **Q**uery **L**anguage: 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 **DSL**((**D**omain-**S**pecific **L**anguage)) construit sur **Go**. C'est également un langage fonctionnel imbriqué **NFL**((**N**ested **F**unctionnal **L**anguage)) 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 4 types des métriques (counter, gauge, histogram et summaries); * Les types de données des expressions du langage PromQL. ==== 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: * **float** (décimaux) ===== Références ===== * https://opensource.com/article/18/12/introduction-prometheus * https://logz.io/blog/promql-examples-introduction/ * https://grafana.com/blog/2020/02/04/introduction-to-promql-the-prometheus-query-language/ * https://prometheus.io/docs/prometheus/latest/querying/basics/