J'essaie d'utiliser des requêtes MQL pour exporter des données de Google Cloud Monitoring vers BigQuery pour un archivage à long terme. J'ai constaté que les requêtes qui regroupaient les étiquettes de métadonnées générées par l'utilisateur, y compris un caractère tiret (par exemple "wdl-call-alias") ne semblent pas compatibles avec MQL. Je m'appuie sur un système tiers qui génère ces étiquettes et elles ne sont pas faciles à changer.

Existe-t-il un moyen d'utiliser MQL pour grouper par des étiquettes de métadonnées qui incluent des tirets? J'ai inclus deux cas ci-dessous, pour référence.

Requête de travail utilisant le libellé "exemple":

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)]

Requête interrompue à l'aide du libellé "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
Paul Billing-Ross 27 févr. 2021 à 02:26

2 réponses

Meilleure réponse

Utilisez la syntaxe: metadata.user_labels.c'wdl-call-alias'

Les métadonnées utilisent la même syntaxe que les étiquettes de colonne (c'est une sorte de pseudo-colonne), et les composants d'étiquette de colonne qui ne sont pas des identificateurs doivent être entre guillemets à l'aide de la syntaxe c'....' ou c"....".

Donc:

| group_by [metadata.user.wdl-call-alias: metadata.user_labels.c'wdl-call-alias'],
    [value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]

Ou de façon plus compacte:

| group_by [metadata.user_labels.c'wdl-call-alias'], .aggregate
3
c69 10 mars 2021 à 17:37

Vous pouvez renommer vos lignes lors d'un appel map distinct ou en ligne dans le group_by:

Depuis https://cloud.google.com/monitoring/mql/examples # qlx-groupby-aggr

L'opération group_by prend deux arguments, séparés par une virgule ,. Ces arguments déterminent le comportement de regroupement précis.

Le premier argument contrôle le regroupement des séries chronologiques. Ceci est une expression de carte , [...] L'expression de carte peut faire bien plus que des étiquettes de liste; pour plus d'informations, consultez la map page de référence.

Vous pouvez y lire la documentation complète, mais TLDR est:

La syntaxe de map est map : [ modifier ] '[' [ maplet { ',' maplet } ] ']', le "modificateur" dont vous avez besoin est rename et le "maplet" doit être:

maplet : [ column_name ':' ] expr .
column_name : ID | QUOTED_COLUMN .

C'est-à-dire: "nom_colonne" qui peut être cité!

Donc,

| map rename ['metadata.user.wdl-call-alias': 'metadata.user.wdl_call_alias'] devrait vous donner le résultat souhaité.

Mais je n'ai pas de compte GCP pour le moment pour le tester.

1
c69 2 mars 2021 à 06:00