Функция PromtQL "считать по (аргумент1, аргумент2)" - PullRequest
1 голос
/ 22 мая 2019

Я пишу несколько запросов в Prometheus (PromQL) и просто хочу понять, как работает функция "count by (arguments1, arguments2)"? Если у нас есть один аргумент - это легко, но я не смог найти информацию о count для многих аргументов.

Может кто-нибудь объяснить, пожалуйста?

1 Ответ

0 голосов
/ 23 мая 2019

Операторы агрегации в PromQL накапливают значения метрик по измерению.В Prometheus размеры представлены именами и значениями меток;Все метрики с одинаковым значением на одной и той же метке имеют общее измерение.

Если вы не сохраните измерения, агрегирование будет выполнено по всем значениям без какой-либо метки.

Например, с учетом следующих метрик (содержимое моего холодильника):

fruit_number{name="apple",color="red",size="small"}             2
fruit_number{name="apple",color="green",size="big"}             1
fruit_number{name="banana",color="green",size="small"}          1
vegetable_number{name="salad",color="green",size="big"}         1
vegetable_number{name="mushroom",color="red",size="small"}      3

Сумма всех фруктов и овощей sum(fruit_number OR vegetable_number) даст произведение одного скаляра:

{}     8

Но если вы хотите применить оператор только к некоторым измерениям, вы можете использовать предложение by, чтобы указать, какие метки должны быть сохранены.

Повторение тех же метрик, если я хочу знатьколичество скоропортящихся пищевых продуктов на color и size, я буду запрашивать sum(fruit_number OR vegetable_number) by (color,size):

{color="red",size="small"}      5
{color="green",size="big"}      2
{color="green",size="small"}    1

. Агрегирует значения, для которых набор меток одинаков, и применяет оператор (sum в данном случае):

  • {color="red",size="small"} -> red apple + mushroom
  • {color="green",size="big"} -> green apple + salad
  • {color="green",size="small"} -> banana
...