Prochaine révision | Révision précédente |
work_in_progress:promql [2022/01/22 17:44] – créée yoann | work_in_progress:promql [2022/12/15 23:31] (Version actuelle) – yoann |
---|
====== PromQL ====== | ====== PromQL ====== |
| |
Le serveur Prometheus propose une interface web par défaut écoutant sur le port 9090. Via cette interface on peut écrire et tester ses requêtes. | **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 | http://server.fqdn:9090/graph |
| |
Les données sont stockées par Prometheus sous forme de **séries temporelles** (time series). | <note> |
| Le temps utilisé par Prometheus est le temps UTC (pour l'enregistrement des métriques et dans l'interface web). |
| </note> |
| |
| 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 ===== | ===== Références ===== |
| |
* https://opensource.com/article/18/12/introduction-prometheus | * 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/ |