web-dev-qa-db-fra.com

Comment écrire une requête Prometheus qui renvoie la valeur d'une étiquette?

Je crée un tableau de bord Grafana et je veux un panneau qui rapporte la dernière version de notre application. La version est signalée comme une étiquette dans le app_version (par exemple) métrique comme ceci:

app_version_updated{instance="eu99",version="1.5.0-abcdefg"}

J'ai essayé un certain nombre de requêtes Prometheus pour extraire l'étiquette de version sous forme de chaîne du dernier membre de cette série chronologique, sans aucun effet.

Par exemple, la requête

count(app_version_updated) by (version)

renvoie un {version="1.5.0-abcdefg"} élément avec une valeur de 1. Lorsqu'il est placé dans un tableau de bord Grafana dans un panneau de valeur unique, cela n'affiche pas la version chaîne mais plutôt la valeur de comptage (1).

Comment puis-je construire une requête Prometheus qui renvoie la chaîne de version?

17
kmoe

Nous avons récemment ajouté la prise en charge de l'affichage du nom de série en tant que valeur dans le panneau de statistiques unique ( https://github.com/grafana/grafana/issues/474 ). Vous devez donc exécuter notre version nocturne jusqu'à la version 4.0.

Assurez-vous simplement que la requête renvoie une série et vous pouvez utiliser la valeur "nom" dans le menu déroulant sous Options -> grande valeur. Ensuite, vous pouvez formater la chaîne à l'aide du formateur de légende. Ex {{job}} renverrait "node" comme nom de série.

J'espère que cela répond à votre question.

13
Carl Bergquist

Prometheus n'a pas de fonctions qui renvoient des chaînes, ce que vous cherchez, c'est qu'un singlestat Grafana puisse afficher une valeur d'étiquette - ce qu'il ne prend malheureusement pas encore en charge.

https://github.com/grafana/grafana/issues/5094 suit cela.

1
brian-brazil

Ma réponse essaie de développer la réponse de Carl. Je suppose que la disposition de l'interface graphique peut avoir changé un peu depuis 2016, il m'a donc fallu un certain temps pour trouver l'option "nom".

En supposant que vous ayez une métrique comme suit:

# HELP db2_prometheus_adapter_info Information on the state of the DB2-Prometheus-Adapter
# TYPE db2_prometheus_adapter_info gauge
db2_prometheus_adapter_info{app_state="UP") 1.0

et vous souhaitez afficher la valeur de l'étiquette app_state.

Suivez ces étapes:

  • Créez une visualisation "SingleStat".
  • Accédez à l'onglet "Requêtes":
    • Entrez le nom (ici db2_prometheus_adapter_info) de la métrique.
    • Saisissez le nom de l'étiquette comme légende à l'aide de {{[LABEL]}} notation (ici {{app_state}}).
    • Activez l'option "instantanée".

Settings in Queries Tab

  • Allez dans l'onglet "Visualisation":
    • Choisissez la valeur "Nom" sous "Valeur - Stat".

Setting in Visualization Tab

Remarque sur le paramètre "Instantané": ce paramètre passe d'une requête de plage à une requête simplifiée renvoyant uniquement la valeur la plus récente de la métrique (voir également Que fait la case à cocher "instantanée" dans les graphiques grafana basés sur prometheus? ). S'il n'est pas activé, le panneau affichera une erreur dès qu'il y aura plus d'une valeur distincte pour l'étiquette dans l'historique de la métrique. Pour une métrique "normale", vous pouvez remédier à cela en choisissant "courant" dans l'option "Valeur - Stat". Mais cela ne permet pas d'afficher la valeur de votre étiquette.

0
Marcus Rickert