У меня есть метрика Prometheus, как показано ниже.
query_duration{query = "SELECT * FROM TABLE_NAME"}
Я пытаюсь извлечь из запроса метки только TABLE_NAME. Я пытаюсь использовать регулярное выражение для извлечения TABLE_NAME.
Как я могу извлечь имя таблицы из метки запроса в promql?


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