web-dev-qa-db-ja.com

Prometheusクエリでラベルをグループ化するにはどうすればよいですか?

次のラベルが付いたメトリックがある場合:

my_metric{group="group a"}  100
my_metric{group="group b"}  100
my_metric{group="group c"}  100
my_metric{group="misc group a"}  1
my_metric{group="misc group b"}  2
my_metric{group="misc group c"}  1
my_metric{group="misc group d"}  1

「misc」グループを結合するクエリまたはlabel_replaceを実行することは可能ですか?

(メトリックのカーディナリティを改善する必要があることを認識し、それを修正するためにアプリを更新しました。ただし、後でクエリを介してメトリックを修正するかどうかについてこの質問が残っています)

12
checketts

はい、ラベル置換を使用して、すべてのその他をグループ化できます。

sum by (new_group) (
  label_replace(
    label_replace(my_metric, "new_group", "$1", "group", ".+"),
    "new_group", "misc", "group", "misc group.+"
  )
)

内側のlabel_replaceはグループのすべての値をnew_groupにコピーし、外側は「misc group。+」に一致する値を「misc」で上書きし、「new_group」ラベルで合計します。新しいラベルを使用する理由は、「グループ」ラベルを上書きしただけではシリーズが一意ではなくなり、合計が機能しないためです。

19
tom.wilkie

正規表現クエリを使用できます。

my_metric{group=~"misc group.+"}

これにより、groupが "misc group"で始まるすべてのものが得られます。

5
Oliver