Как я могу сгруппировать метки в запросе Прометея?

Если у меня есть метрика со следующими метками:

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

Можно ли сделать запрос или даже label_replace что объединяет группы "разное" вместе?

(Я понимаю, что количество элементов метрики должно быть улучшено, и я обновил приложение, чтобы исправить это. Однако у меня остался этот вопрос, если я хочу исправить показатели через запрос позже)

2 ответа

Решение

Да, вы можете использовать метку замены, чтобы сгруппировать все разное:

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". Причиной использования нового ярлыка является то, что серия перестала бы быть уникальной, если бы мы просто переписали ярлык "группа", и сумма не сработала бы.

Еще проще

sum by (group) (my_metric)

Вы можете использовать запрос регулярного выражения:

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

Это даст вам все, где group начинается с "misc group".

Другие вопросы по тегам