web-dev-qa-db-fra.com

Filtrer les résultats prometheus par valeur métrique et non par valeur d'étiquette

Parce que Prometheus topk renvoie plus de résultats que prév , et parce que https://github.com/prometheus/prometheus/issues/586 nécessite un traitement côté client qui n'a pas encore été mis à disposition via https://github.com/grafana/grafana/issues/7664 , j'essaie de poursuivre une solution de rechange à court terme différente de mon problème similaire.

Dans mon cas particulier, la plupart des valeurs métriques que je veux représenter graphiquement seront nulles la plupart du temps. Ce n'est que lorsqu'ils sont supérieurs à zéro qu'ils sont intéressants.

Je peux trouver des moyens d'écrire des requêtes prometheus pour filtrer les points de données en fonction de la valeur d'une étiquette , mais je n'ai pas encore trouvé de moyen pour dire à prometheus de renvoyer des points de données de série temporelle uniquement si la valeur de la métrique remplit une certaine condition. Dans mon cas, je souhaite filtrer pour une valeur supérieure à zéro.

Puis-je ajouter une condition à une requête prometheus qui filtre les points de données en fonction de la valeur métrique? Si oui, où puis-je trouver un exemple de syntaxe pour le faire?

8
Steve Dwire

Le filtrage se fait avec les opérateurs de comparaison , par exemple x > 0.

8
brian-brazil

Si vous êtes confus par brianla réponse de : Le résultat du filtrage avec un opérateur de comparaison n'est pas un booléen, mais la série filtrée. Par exemple.

min(flink_rocksdb_actual_delayed_write_rate > 0)

Affiche la valeur minimale supérieure à 0.

Si vous voulez réellement un booléen (ou plutôt 0 ou 1), utilisez quelque chose comme

sum (flink_rocksdb_actual_delayed_write_rate >bool 0)

ce qui vous donnera le nombre non nul.

1
Caesar