可以在 MQL 中按包含破折号的用户元数据标签分组吗?
Possible to group by a user metadata label that includes dashes, in MQL?
我正在尝试使用 MQL 查询将数据从 Google Cloud Monitoring 导出到 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)]
您可以在单独的 map
调用中重命名您的行,或在 group_by
:
中内联
来自https://cloud.google.com/monitoring/mql/examples#qlx-groupby-aggr
The group_by
operation takes two arguments, separated by a comma ,
. These arguments determine the precise grouping behavior.
The first argument controls the grouping of time series. This is a map expression, [...] The map expression can do much more than list labels; for more information, see the map
reference page.
您可以在那里阅读完整的文档,但 TLDR 是:
map
的语法是map : [ modifier ] '[' [ maplet { ',' maplet } ] ']'
,你需要的“修饰符”是rename
,“maplet”应该是:
maplet : [ column_name ':' ] expr .
column_name : ID | QUOTED_COLUMN .
即:“column_name”可以引用!
所以,
| map rename ['metadata.user.wdl-call-alias': 'metadata.user.wdl_call_alias']
应该会给你想要的结果。
但我现在没有 GCP 帐户来测试它。
使用语法: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
我正在尝试使用 MQL 查询将数据从 Google Cloud Monitoring 导出到 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)]
您可以在单独的 map
调用中重命名您的行,或在 group_by
:
来自https://cloud.google.com/monitoring/mql/examples#qlx-groupby-aggr
The
group_by
operation takes two arguments, separated by a comma,
. These arguments determine the precise grouping behavior.The first argument controls the grouping of time series. This is a map expression, [...] The map expression can do much more than list labels; for more information, see the
map
reference page.
您可以在那里阅读完整的文档,但 TLDR 是:
map
的语法是map : [ modifier ] '[' [ maplet { ',' maplet } ] ']'
,你需要的“修饰符”是rename
,“maplet”应该是:
maplet : [ column_name ':' ] expr .
column_name : ID | QUOTED_COLUMN .
即:“column_name”可以引用!
所以,
| map rename ['metadata.user.wdl-call-alias': 'metadata.user.wdl_call_alias']
应该会给你想要的结果。
但我现在没有 GCP 帐户来测试它。
使用语法: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