#google-cloud-monitoring
#google-cloud-monitoring #мониторинг-язык запросов
Вопрос:
Я пытаюсь использовать запросы MQL для экспорта данных из облачного мониторинга Google в BigQuery для долгосрочного архивирования. Я обнаружил, что запросы, которые группируются по меткам метаданных, сгенерированным пользователем, включая символ тире (например, «wdl-call-alias»), похоже, не совместимы с MQL. Я полагаюсь на стороннюю систему, которая генерирует эти метки, и их нелегко изменить.
Есть ли способ использовать MQL для группирования по меткам метаданных, содержащим тире? Я включил два примера ниже для справки.
Рабочий запрос с использованием метки «образец»:
fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/reserved_cores'
| group_by 1m, [value_reserved_cores_mean: mean(value.reserved_cores)]
| every 1m
| group_by [metadata.user.sample: metadata.user_labels.sample],
[value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]
Неработающий запрос с использованием метки «wdl-call-alias»:
fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/reserved_cores'
| group_by 1m, [value_reserved_cores_mean: mean(value.reserved_cores)]
| every 1m
| group_by [metadata.user.wdl-call-alias: metadata.user_labels.wdl-call-alias],
[value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]
Комментарии:
1. вы можете попробовать переименовать свои строки с помощью
map
2. или просто попробуйте процитировать их, например:
| group_by ['metadata.user.wdl-call-alias': 'metadata.user_labels.wdl-call-alias'],
Ответ №1:
Используйте синтаксис: metadata.user_labels.c'wdl-call-alias'
Метаданные используют тот же синтаксис, что и метки столбцов (это своего рода псевдоколонок), а компоненты меток столбцов, которые не являются идентификаторами, должны заключаться в кавычки с использованием синтаксиса c'....'
или c"...."
.
Итак:
| group_by [metadata.user.wdl-call-alias: metadata.user_labels.c'wdl-call-alias'],
[value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]
Или более компактно:
| group_by [metadata.user_labels.c'wdl-call-alias'], .aggregate
Ответ №2:
Вы можете переименовать свои строки в отдельном map
вызове или встроить в group_by
:
Из https://cloud.google.com/monitoring/mql/examples#qlx-groupby-aggr
group_by
Операция принимает два аргумента, разделенных запятой,
. Эти аргументы определяют точное поведение группировки.Первый аргумент управляет группировкой временных рядов. Это выражение карты, […] Выражение карты может делать гораздо больше, чем метки списка; для получения дополнительной информации см.
map
Справочную страницу.
Вы можете прочитать полный документ там, но TLDR:
Синтаксис map
is map : [ modifier ] '[' [ maplet { ',' maplet } ] ']'
, «модификатор», который вам нужен rename
, и «maplet» должен быть:
maplet : [ column_name ':' ] expr .
column_name : ID | QUOTED_COLUMN .
ie: «column_name», который можно заключать в кавычки!
итак,
| map rename ['metadata.user.wdl-call-alias': 'metadata.user.wdl_call_alias']
должно дать вам желаемый результат.
Но у меня сейчас нет учетной записи GCP, чтобы протестировать ее.