可以在 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