Table des matières

, , ,

Prometheus: Présentation du PromQL

PromQL est un langage de requête permettant de sélectionner et d’agréger les séries temporelles stockées par Prometheus.

Il existe des bonnes pratiques à propos de la nomenclature des métriques et des labels, consulter la documentation officielle à l'URL https://prometheus.io/docs/practices/naming/

application_variable_unités_type

filtrage par regex

Les expressions rationnelles (regex) peuvent s'utiliser pour filtrer les métriques:

# sur les labels:
up{job=~"prometheus|routing"}

# sur un nom de métrique:
{__name__=~"node_network_(receive|transmit)_bytes_total"}

La métrique a un type, par exemple counter. Une métrique de type counter (compteur) à la particularité de ne pouvoir que croître.

Dans le cas du compteur, plutôt que d'afficher directement sa valeur courante, il peut être plus pertinent de l'utiliser pour calculer son taux (ou sa fréquence d'apparition) qui peut être plus représentatif de sa vitesse d’accroissement.

La fonction rate() du PromQL permet de facilement répondre a ce type de besoin:

rate(traefik_entrypoint_requests_total{job="routing",entrypoint!="METRICS"}[5m])

Dans cet exemple:

PromQL permet de grouper les séries temporelles par labels grace à sa fonction sum():

sum( rate(traefik_entrypoint_requests_total{job="routing",entrypoint!="METRICS"}[5m])) by(entrypoint)

Manipulation des labels

La fonction label_join() permet de récupérer les valeurs de labels existants distincts et de les joindre pour former un nouveau label associé à la métrique.

# syntaxe
# label_join(metric, "newLabel", "separator", "label1", "label2", ...)
#
# Pour l'exemple on utilise la métrique up ayant les labels job et instance
# up{instance,job}

label_join(up, "newLabel", "separator", "job", "instance")

La fonction label_replace() permet de redéfinir un label existant

Références