Как извлечь подстроку из значения метки в promql?

У меня есть метрика Prometheus, как показано ниже.

query_duration{query = "SELECT * FROM TABLE_NAME"}

Я пытаюсь извлечь из запроса метки только TABLE_NAME. Я пытаюсь использовать регулярное выражение для извлечения TABLE_NAME.

Как я могу извлечь имя таблицы из метки запроса в promql?

В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
0
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы добавить еще одну метку, которая будет содержать имя таблицы, вы можете использовать функцию label_replace.

label_replace(
 query_duration
 "table","$1",
 "query",".*FROM\\s+(\\S+).*"
)

Здесь содержимое метки query сопоставляется с регулярным выражением .*FROM\s+(\S+).* (с дублированием косой черты для Прометея), а содержимое группы №1 помещается в новую метку table. Демо этого запроса здесь.

Если ваши запросы могут содержать более одного предложения FROM или вообще более сложны, вам потребуется настроить регулярное выражение в соответствии с вашими потребностями.

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