Créer et gérer des tableaux de bord à l'aide d'API

Ce document explique comment créer et gérer des tableaux de bord personnalisés et leurs widgets à l'aide de la ressource Dashboard de l'API Cloud Monitoring. Les exemples présentés ici illustrent comment gérer vos tableaux de bord à l'aide de curl pour appeler l'API, et comment utiliser Google Cloud CLI. Vous pouvez également gérer vos tableaux de bord personnalisés dans laGoogle Cloud console, mais l'API vous permet de gérer plusieurs tableaux de bord en même temps et par programmation.

Le point de terminaison accepte les méthodes suivantes pour la gestion et la configuration des tableaux de bord :

Vous pouvez appeler l'API directement à l'aide de l'utilitaire curl ou de Google Cloud CLI.

Vous ne pouvez pas récupérer, modifier ni supprimer les tableaux de bord prédéfinis.

Cette fonctionnalité n'est disponible que pour les projets Google Cloud . Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

À propos des tableaux de bord

Lorsque vous créez un tableau de bord, vous devez spécifier les composants ou widgets que vous souhaitez afficher ainsi que leur disposition. Vous pouvez également ajouter des libellés et des filtres à votre tableau de bord. Les libellés peuvent vous aider à trouver un tableau de bord ou à indiquer le type de contenu qu'il contient.

Dispositions de tableaux de bord

La disposition ou mise en page d'un tableau de bord définit la façon dont ses composants sont organisés. L'API fournit les dispositions suivantes :

  • GridLayout (en grille) : partage l'espace disponible en colonnes verticales de même largeur et organise l'ensemble de widgets ligne par ligne.

  • MosaicLayout (en grille) : divise l'espace disponible en grille. Chaque widget peut occuper un ou plusieurs blocs de type grille.

  • RowLayout (en mosaïque) : partage l'espace disponible en lignes et organise l'ensemble de widgets horizontalement sur chaque ligne.

  • ColumnLayout (en colonne) : partage l'espace disponible en colonnes verticales et organise l'ensemble de widgets verticalement dans chaque colonne.

Par exemple, voici la représentation JSON d'un tableau de bord en disposition RowLayout avec trois widgets Text :

{
  "displayName": "Row-layout example",
  "rowLayout": {
    "rows": [
      {
        "widgets": [
          {
            "text": {
              "content": "Text Widget 1",
              "format": "RAW"
            }
          },
          {
            "text": {
              "content": "**Text Widget 2**",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "_Text Widget 3_",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

Widgets de tableau de bord

Un widget contient un unique composant de tableau de bord, ainsi que la configuration définissant comment présenter ce composant dans le tableau de bord. Un tableau de bord peut comporter plusieurs widgets. Il existe plusieurs types d'objets Widget :

  • Le widget XyChart affiche les données sur les axes X et Y.

    Ce widget affiche un ensemble de données qui peut être des données de série temporelle ou générées par une requête SQL. Ce widget vous permet d'associer les données représentées dans le graphique à l'axe Y de gauche ou de droite. Lorsque plusieurs types de métriques sont représentés graphiquement, vous pouvez utiliser les deux axes Y. Le widget XyChart est compatible avec les styles d'affichage suivants :

    • Graphiques en courbes
    • Graphique à barres
    • Graphiques en aires empilées
    • Cartes de densité
  • Widgets qui affichent les données d'une seule dimension, comme la dernière valeur :

    • PieChart (graphique à secteurs) : affiche les valeurs les plus récentes d'une collection de séries temporelles, où chaque série temporelle contribue à un secteur du graphique.

    • Scorecard (tableau de données) : affiche la valeur la plus récente d'une série temporelle et sa position par rapport à un ou plusieurs seuils.

    • TimeSeriesTable (tableau de données) : affiche la valeur la plus récente ou une valeur agrégée pour chaque série temporelle. Les tableaux peuvent être personnalisés. Par exemple, vous pouvez attribuer un code couleur aux cellules et configurer les noms de colonnes et l'alignement des données.

  • Widgets affichant des informations sur les règles d'alerte ou les incidents :

    • AlertChart (graphique d'alerte) : affiche un résumé d'une règle d'alerte à une seule condition. Ce widget affiche les données sous la forme d'un graphique en courbes, affiche le seuil et indique le nombre d'incidents ouverts.

    • IncidentList : affiche la liste des incidents. Vous pouvez configurer le widget pour qu'il affiche les incidents pour des règles d'alerte ou des types de ressources spécifiques.

  • Widgets affichant des entrées de journal et des erreurs :

  • Widgets de texte et d'organisation :

    • CollapsibleGroup : affiche une collection de widgets. Vous pouvez réduire la vue d'un groupe.

    • SingleViewGroup : affiche un widget dans une collection de widgets. Vous pouvez sélectionner le widget à afficher.

    • SectionHeader : crée un séparateur horizontal dans votre tableau de bord et une entrée dans la table des matières du tableau de bord.

    • Text (texte) : affiche du contenu textuel sous forme de texte brut ou de chaîne Markdown.

    Pour inclure les widgets de texte et d'organisation dans un tableau de bord, celui-ci doit disposer d'un MosaicLayout.

Outre ces objets, vous pouvez également ajouter à un tableau de bord un espace réservé vide.

Par exemple, voici la représentation JSON d'un widget XyChart dont l'axe Y droit est configuré:

{
  "displayName": "Demo dashboard",
  "gridLayout": {
    "widgets": [
      {
        "title": "Sample line chart",
        "xyChart": {
          "dataSets": [
            {
              "timeSeriesQuery": {
                "timeSeriesFilter": {
                  "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                  "aggregation": {
                    "perSeriesAligner": "ALIGN_MEAN",
                    "crossSeriesReducer": "REDUCE_MAX",
                    "groupByFields": [
                      "resource.label.zone"
                    ]
                  }
                },
                "unitOverride": "1"
              },
              "plotType": "LINE"
            }
          ],
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          },
          "chartOptions": {
            "mode": "COLOR"
          }
        }
      }
    ]
  }
}

Étiquettes du tableau de bord

Les libellés peuvent vous aider à gérer et organiser vos tableaux de bord. Par exemple, vous pouvez ajouter un libellé nommé prod pour indiquer que le tableau de bord affiche des données de série temporelle et des données de journaux pour vos ressources de production. Vous pouvez également ajouter le libellé playbook pour indiquer que le tableau de bord contient des informations qui vous aideront à résoudre les problèmes.

L'ajout de libellés à un tableau de bord est facultatif.

Par exemple, l'extrait suivant montre un objet Dashboard qui spécifie le libellé nommé playbook.

{
  "displayName": "Example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      ...
    ]
  },
  "dashboardFilters": [],
  "labels": {
    "playbook": ""
  }
}

Comme l'illustre l'exemple précédent, le champ labels est implémenté en tant que map, où les champs key et value sont tous deux des chaînes. Lorsque vous ajoutez un libellé à un tableau de bord, définissez key sur le nom du libellé et le champ value sur une chaîne vide.

Filtres et variables de tableau de bord

Lorsque vous concevez un tableau de bord, vous pouvez identifier plusieurs façons d'afficher les données qu'il contient. Par exemple, supposons qu'un tableau de bord affiche des données de série temporelle pour vos instances de machines virtuelles (VM). Vous pouvez afficher les données de séries temporelles pour toutes les VM ou uniquement celles d'une zone spécifique. Dans ce cas, nous vous recommandons de créer un filtre épinglé ou une variable, puis de définir la valeur par défaut de ce filtre sur la zone la plus consultée.

Les filtres épinglés s'appliquent à tous les widgets du tableau de bord qui sont compatibles avec le libellé spécifié dans le filtre, sauf si le widget contient un filtre avec la même clé de libellé. Par exemple, lorsqu'un graphique inclut le filtre zone = us-central1-a, il ignore un filtre épinglé dont la clé de libellé est zone. De même, ce filtre est ignoré par les graphiques qui ne comportent pas de libellé avec une clé zone.

Les variables sont semblables aux filtres épinglés, mais elles ne s'appliquent qu'à des widgets spécifiques. Les variables peuvent être basées sur des libellés, comme les filtres épinglés, ou elles peuvent n'avoir qu'une valeur. Les variables de type "Valeur uniquement" contiennent une ou plusieurs valeurs par défaut, ainsi qu'une liste de toutes les valeurs possibles. Si vous ne spécifiez pas de valeur par défaut, la valeur par défaut est définie sur l'opérateur générique (*). Pour définir l'ensemble de toutes les valeurs possibles, vous pouvez fournir un tableau de valeurs ou écrire une requête SQL.

Pour les widgets qui interrogent des données, vous pouvez inclure une variable dans la requête du widget et utiliser une variable pour contrôler la visibilité du widget. Lorsque la requête dépend d'une variable, les données demandées par le widget changent lorsque vous modifiez la valeur de la variable. Par conséquent, les données affichées changent également. Lorsque vous utilisez une variable pour contrôler la visibilité d'un widget, une icône Visible  s'affiche dans la barre d'outils. Pour connaître les restrictions liées à la visibilité, consultez Définir la visibilité d'un widget.

Pour les filtres et les variables épinglés, la barre d'outils du tableau de bord affiche chaque variable, ainsi qu'un menu qui vous permet de modifier temporairement la valeur de la variable. La même structure de données est utilisée pour représenter les filtres et les variables épinglés. Pour vous aider à distinguer les filtres des variables, le nom d'une variable est précédé d'un signe dollar $ dans la barre d'outils du tableau de bord. Pour en savoir plus, consultez DashboardFilter.

Pour obtenir un exemple montrant comment contrôler la visibilité d'un widget à l'aide d'une variable, consultez Tableau de bord avec la visibilité des widgets configurée.

Pour savoir comment mettre à jour la requête d'un widget avec une variable basée sur un libellé ou une variable avec une valeur uniquement, consultez les sections suivantes :

Créer des filtres et des variables

Console

Pour savoir comment utiliser la console Google Cloud afin de créer des filtres et des variables épinglés, consultez les documents suivants :

API

Pour définir des filtres et des variables épinglés, utilisez la structure de données dashboardFilters.

  • Pour créer une variable, définissez la valeur du champ templateVariable sur le nom de la variable. Omettez ce champ ou définissez la valeur sur une chaîne vide lorsque vous souhaitez créer un filtre épinglé.
  • Pour créer un filtre épinglé ou une variable basée sur un libellé, vous devez spécifier le champ labelKey. Omettez ce champ lorsque vous souhaitez une variable de valeur uniquement.
  • Définissez la valeur par défaut du filtre ou de la variable. La configuration de ce champ détermine si un utilisateur peut sélectionner exactement une option dans le menu de valeurs ou s'il peut sélectionner plusieurs valeurs.

    • Pour définir une seule valeur par défaut et limiter les utilisateurs à la sélection d'une seule option dans le menu des valeurs, définissez le champ valueType sur STRING et définissez également le champ stringValue :
    "valueType": "STRING",
    "stringValue": "my-default-value",
    
    • Pour définir au moins une valeur par défaut et permettre aux utilisateurs de sélectionner plusieurs options dans le menu des valeurs, définissez le champ valueType sur STRING_ARRAY et définissez également le champ stringArrayValue. Dans l'exemple suivant, il existe trois valeurs par défaut.
    "valueType": "STRING_ARRAY",
    "stringArrayValue": {
      "values": [ "a", "b", "c" ]
    },
    
  • Facultatif : Pour spécifier la liste de toutes les valeurs possibles pour une variable de type "valeur uniquement", définissez le champ stringArray ou le champ timeSeriesQuery. Si vous spécifiez une requête, il doit s'agir d'une requête d'analyse.

Par exemple, prenons l'objet dashboardFilters suivant :

{
  "dashboardFilters": [
      {
        "labelKey": "zone"
        "stringValue": "us-central1-c",
        "valueType": "STRING",
        "filterType": "RESOURCE_LABEL"
      },
      {
        "labelKey": "instance_id",
        "stringValue": "3133577226154888113",
        "valueType": "STRING",
        "filterType": "RESOURCE_LABEL",
        "templateVariable": "my_label_based_variable"
      },
      {
        "filterType": "VALUE_ONLY",
        "templateVariable": "my_value_only_variable",
        timeSeriesQuery: {
          opsAnalyticsQuery: {
            sql: "
              SELECT log_name
              FROM `MY_TABLE`
              GROUP BY log_name
            ",
          }
        }
      }
    ],
  "displayName": "Illustrate Variables",
  ...
}

Le code JSON précédent définit un filtre épinglé et deux variables :

  • Le filtre épinglé possède le libellé zone, qui s'affiche dans la barre d'outils. Les champs valueType et stringValue spécifient la valeur par défaut unique. Pour en savoir plus, consultez la page de documentation de référence de l'API pour la structure de données dashboardFilters.

  • La variable basée sur une étiquette porte le nom my_label_based_variable et sa clé d'étiquette est instance_id. La valeur par défaut de cette variable est définie sur un ID d'instance spécifique. Vous pouvez également configurer la valeur par défaut à l'aide d'un tableau. Dans la barre d'outils, le filtre s'affiche sous le nom my_label_based_variable.

  • La variable "valeur uniquement" est nommée my_value_only_variable. Cette entrée ne spécifie pas de valeur par défaut. L'opérateur générique (*) est donc automatiquement appliqué. De plus, cette variable utilise une requête SQL pour générer la liste des valeurs possibles.

Notez que l'objet dashboardFilters ne liste pas les widgets auxquels la variable s'applique. Au lieu de cela, vous mettez à jour la requête d'un widget pour qu'elle dépende d'une variable.

Syntaxe générale pour déréférencer une variable

Pour tous les widgets, à l'exception de ceux définis par SQL, utilisez la syntaxe suivante pour appliquer une variable à une requête :

  • Pour appliquer une variable basée sur un libellé et résoudre la clé et la valeur du libellé en une expression de filtre valide pour le langage de requête, utilisez ${my_label_based_variable}.

  • Pour n'appliquer que la valeur d'une variable basée sur un libellé, utilisez ${my_label_based_variable.value}. La comparaison doit utiliser une expression régulière.

  • Pour n'appliquer que la valeur d'une variable de valeur uniquement, utilisez ${my_value_only_variable}. Pour les variables de type "Valeur uniquement", n'incluez pas de clause .value. La comparaison doit utiliser une expression régulière.

Widgets du panneau des journaux

Pour appliquer une variable à un widget de panneau de journaux, mettez à jour le volet des requêtes. La syntaxe de ces widgets est celle spécifiée dans Syntaxe générale.

Console

Par exemple, la requête suivante utilise une expression régulière pour comparer la valeur du champ jsonPayload.message à une valeur de chaîne qui inclut la valeur d'une variable basée sur un libellé :

jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"

Prenons un autre exemple : considérons une variable de type "valeur uniquement", value_only_severity_variable, et supposons que trois valeurs sont sélectionnées dans le menu des valeurs : ERROR, INFO et NOTICE. Ensuite, ajoutez les éléments suivants au volet de requête du widget de panneau de journaux :

severity =~ "${value_only_severity_variable}"

Voici l'illustration de la forme rendue :

severity =~ "^(ERROR|INFO|NOTICE)$"

API

Par exemple, le code JSON suivant montre comment mettre à jour la requête d'un widget de panneau de journaux avec une variable basée sur un libellé :

"logsPanel": {
  "filter": "${my_label_based_variable}",
  "resourceNames": [
    "projects/1234512345"
  ]
},

Par exemple, la requête suivante utilise une expression régulière pour comparer la valeur du champ jsonPayload.message à une valeur de chaîne qui inclut la valeur d'une variable basée sur un libellé :

"logsPanel": {
  "filter": "resource.type=\"gce_instance\"\n
             resource.labels.project_id=~\"${my_label_based_variable.value}\"\n",
  "resourceNames": [
    "projects/012345"
  ]
}

Prenons un autre exemple : considérons une variable de type "valeur uniquement", value_only_severity_variable, et supposons que trois valeurs sont sélectionnées dans le menu : ERROR, INFO et NOTICE. Ensuite, ajoutez les éléments suivants au volet de requête du widget de panneau de journaux :

"logsPanel": {
  "filter": "severity =~ \"${value_only_severity_variable}\"\n",
  ...
}

L'exemple suivant illustre la requête telle qu'elle est exécutée par le widget du panneau des journaux :

severity =~ "^(ERROR|INFO|NOTICE)$"

Si vous avez configuré une requête pour le panneau des journaux, puis que vous sélectionnez le bouton pour ouvrir l'explorateur de journaux, les variables sont résolues avant l'ouverture de l'explorateur de journaux.

Le tableau suivant illustre la façon dont les variables d'exemple sont résolues par le panneau "Journaux". Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison :

Syntaxe Valeur sélectionnée
Expression résolue du panneau des journaux
${my_label_based_variable} 12345 resource.labels."instance_id"="12345"

L'exemple de variable est basé sur le libellé de ressource instance_id.

${my_label_based_variable} * ""
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .*

Graphiques avec des requêtes PromQL

Pour mettre à jour un graphique comportant une requête PromQL afin qu'il dépende d'une variable basée sur un libellé, suivez les instructions de la section Syntaxe générale.

Console

Par exemple, la requête suivante repose sur la résolution de la variable basée sur le libellé, my_label_based_variable, en une expression de filtre :

compute_googleapis_com:instance_cpu_utilization{
    monitored_resource="gce_instance", ${my_label_based_variable} }

Vous pouvez également modifier la requête pour résoudre uniquement la valeur d'une variable. L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id :

compute_googleapis_com:instance_cpu_utilization{
    instance_id=~"${my_label_based_variable.value}"
}

Si vous avez une variable de valeur uniquement, omettez la clause .value. Par exemple, pour filtrer par zone à l'aide d'une variable de valeur uniquement, la requête inclurait quelque chose comme ce qui suit :

zone=~"${my_value_only_variable}"

API

Par exemple, le code JSON suivant illustre une requête qui repose sur la variable basée sur un libellé, my_label_based_variable, qui est résolue en expression de filtre :

"timeSeriesQuery": {
  "prometheusQuery": "avg_over_time(
    compute_googleapis_com:instance_cpu_utilization{
      monitored_resource=\"gce_instance\",
      ${my_label_based_variable}
      }[${__interval}])",
  "unitOverride": "",
  "outputFullDuration": false
},

Vous pouvez également modifier la requête pour résoudre uniquement la valeur d'une variable. L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id :

"timeSeriesQuery": {
  "prometheusQuery": "avg_over_time(
    compute_googleapis_com:instance_cpu_utilization{
    monitored_resource=\"gce_instance\",
    instance_id=~\"${my_label_based_variable.value}\"
    }[${__interval}])",
  "unitOverride": "",
  "outputFullDuration": false
},

Si vous avez une variable de valeur uniquement, omettez la clause .value. Par exemple, pour filtrer par zone à l'aide d'une variable de valeur uniquement, la requête inclurait quelque chose comme ce qui suit :

zone=~\"${my_value_only_variable}\"

Le tableau suivant illustre la façon dont les variables d'exemple sont résolues par PromQL. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison :

Syntaxe Valeur sélectionnée
Expression PromQL résolue
${my_label_based_variable} 12345 instance_id == '12345'

L'exemple de variable est basé sur le libellé de ressource instance_id.

${my_label_based_variable} * noop_filter=~".*"
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .+

Graphiques avec requêtes SQL

Lorsque vous souhaitez mettre à jour un widget défini par SQL pour qu'il dépende d'une variable, mettez à jour la clause WHERE pour référencer la valeur de la variable. Pour toutes les variables, ajoutez le signe "at" en préfixe du nom de la variable, par exemple : @variable_name. Pour les variables basées sur des libellés, ajoutez .value au nom de la variable, @my_label_based_variabe.value.

Pour les requêtes SQL, la substitution de variables repose sur BigQuery et est protégée contre les injections SQL. Pour en savoir plus, consultez Exécuter des requêtes paramétrées.

Console

Étant donné que SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur", nous vous recommandons d'utiliser systématiquement une instruction IF lorsque vous utilisez des variables dans une requête SQL. L'exemple suivant illustre l'utilisation d'une variable de valeur uniquement dont le type de données est une chaîne :

WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)

Lorsque l'option de menu de la variable permet aux utilisateurs de sélectionner plusieurs valeurs, vous devez caster la valeur de la variable en type de données GoogleSQL à l'aide de la fonction CAST. La requête suivante illustre cette syntaxe :

IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE,
   severity IN UNNEST(@my_value_only_variable))

L'instruction IF présentée dans les exemples précédents est recommandée, car SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur". Par conséquent, si vous omettez l'instruction IF et que vous sélectionnez le caractère générique, le résultat de la requête est une table vide. Dans le deuxième exemple, la fonction UNNEST convertit le tableau en table.

Pour ajouter une clause WHERE correctement mise en forme :

  1. Modifiez le widget.
  2. Dans la barre d'outils, sélectionnez Insérer un filtre de variable, puis sélectionnez la variable dont vous souhaitez modifier la clause WHERE.
  3. Dans la boîte de dialogue qui s'ouvre, examinez le code généré, puis cliquez sur Copier et fermer.
  4. Collez le code copié dans le volet Requête et apportez les modifications nécessaires.

    Par exemple, supposons que vous créiez une variable nommée LogName qui génère une liste de noms de journaux et affiche le résultat dans un tableau avec une seule colonne nommée log_name. Ensuite, créez un graphique, sélectionnez Insérer un filtre de variable, puis sélectionnez la variable LogName. Le code suivant est généré :

    WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
    

    Dans cet exemple, vous devez modifier le code généré et remplacer LogName = par log_name = pour que la jointure de table puisse avoir lieu :

    WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
    
  5. Cliquez sur Exécuter, puis sur Appliquer.

  6. Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.

API

Étant donné que SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur", nous vous recommandons d'utiliser systématiquement une instruction IF lorsque vous utilisez des variables dans une requête SQL. L'exemple suivant illustre l'utilisation d'une variable de valeur uniquement dont le type de données est une chaîne :

WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)

Par exemple, voici une représentation JSON partielle d'un graphique qui affiche les résultats d'une requête SQL. Pour permettre de filtrer les résultats par nom de journal, une clause WHERE a été ajoutée, qui fait référence à la variable nommée LogName :

"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
  "opsAnalyticsQuery": {
    "queryExecutionRules": {},
    "queryHandle": "",
    "sql": "SELECT\n timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload\n
            FROM\n `my-project.global._Default._Default`\n
            WHERE \n IF (@LogName = \"*\", TRUE, log_name=@LogName)\nLIMIT 10000"
  }
}

La variable LogName émet également une requête pour déterminer la liste des noms de journaux possibles :

"dashboardFilters": [
  {
    "filterType": "VALUE_ONLY",
    "templateVariable": "LogName",
    "valueType": "STRING",
    "timeSeriesQuery": {
      "opsAnalyticsQuery": {
        "savedQueryId": "",
        "sql": "SELECT log_name FROM `my-project.global._Default._Default` GROUP BY log_name LIMIT 1000",
        "queryHandle": ""
      },
      "unitOverride": "",
      "outputFullDuration": false
    }
  }
],

Lorsque l'option de menu de la variable permet aux utilisateurs de sélectionner plusieurs valeurs, vous devez caster la valeur de la variable en type de données GoogleSQL à l'aide de la fonction CAST. La requête suivante illustre cette syntaxe :

IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE,
   severity IN UNNEST(@my_value_only_variable))

L'instruction IF présentée dans les exemples précédents est recommandée, car SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur". Par conséquent, si vous omettez l'instruction IF et que vous sélectionnez le caractère générique, le résultat de la requête est une table vide. Dans le deuxième exemple, la fonction UNNEST convertit le tableau en table.

Graphiques avec des requêtes MQL

Pour qu'un graphique comportant une requête MQL utilise une variable basée sur un libellé, ajoutez un canal ((|)), puis suivez les instructions de la section Syntaxe générale.

Lorsque vous utilisez l'interface pilotée par menu pour créer un graphique affichant des données de séries temporelles, vos sélections sont converties en filtre Monitoring.

Console

Par exemple, la requête suivante s'appuie sur une variable basée sur un libellé, my_label_based_variable, qui est résolue en expression de filtre :

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| every 1m
| ${my_label_based_variable}

Vous pouvez également modifier la requête pour résoudre uniquement la valeur d'une variable. L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id :

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| filter resource.instance_id=~'${my_label_based_variable.value}'
| group_by 1m, [value_utilization_mean: mean(value.utilization)]
| every 1m

Si vous avez une variable de valeur uniquement, omettez la clause .value. Par exemple, pour filtrer par zone à l'aide d'une variable de valeur uniquement, la requête inclurait quelque chose comme ce qui suit :

resource.zone=~'${my_value_only_variable}'

API

Par exemple, le code JSON suivant illustre une requête qui s'appuie sur une variable basée sur un libellé, my_label_based_variable, qui est résolue en expression de filtre :

"timeSeriesQuery": {
  "timeSeriesQueryLanguage": "fetch gce_instance\n
    | metric 'compute.googleapis.com/instance/cpu/utilization'\n
    | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n
    | every 1m\n
    | ${my_label_based_variable}",
  "unitOverride": "",
  "outputFullDuration": false
},

Vous pouvez également modifier la requête pour résoudre uniquement la valeur d'une variable. L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id :

"timeSeriesQuery": {
  "timeSeriesQueryLanguage": "fetch gce_instance\n
    | metric 'compute.googleapis.com/instance/cpu/utilization'\n
    | filter resource.instance_id=~'${my_label_based_variable.value}'\n
    | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n
    | every 1m\n",
  "unitOverride": "",
  "outputFullDuration": false
},

Si vous avez une variable de valeur uniquement, omettez la clause .value. Par exemple, pour filtrer par zone à l'aide d'une variable de valeur uniquement, la requête inclurait quelque chose comme ce qui suit :

resource.zone=~'${my_value_only_variable}'

Le tableau suivant illustre la façon dont les variables d'exemple sont résolues par le MQL. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison :

Syntaxe Valeur sélectionnée
Expression MQL résolue
${my_label_based_variable} 12345 filter (resource.instance_id == '12345')

L'exemple de variable est basé sur le libellé de ressource instance_id.

${my_label_based_variable} * filter (true)
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .*

Graphiques avec des requêtes de filtre de surveillance

Pour mettre à jour un graphique dont la requête se présente sous la forme d'un filtre de surveillance afin qu'il dépende d'une variable basée sur un libellé, suivez les instructions de la section Syntaxe générale.

Console

Si vous utilisez la console Google Cloud pour créer vos graphiques et l'interface basée sur des menus, vous pouvez mettre à jour la requête du graphique à l'aide du champ Appliquer aux graphiques de la variable ou en modifiant le widget et en sélectionnant une variable basée sur un libellé dans le menu Filtrer. Le menu Filtrer liste toutes les variables basées sur des libellés et toutes les clés de libellé.

Pour mettre à jour la requête d'un graphique afin qu'elle dépende d'une variable basée sur une valeur, procédez comme suit :

  1. Modifier le graphique
  2. Dans le volet de requête, cliquez sur Ajouter un filtre et sélectionnez une clé de libellé. Par exemple, vous pouvez sélectionner zone.
  3. Dans le menu Valeur, sélectionnez votre variable de valeur uniquement.
  4. Cliquez sur Appliquer.
  5. Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.

Par exemple, le code JSON suivant illustre une requête qui s'appuie sur une variable basée sur un libellé, my_label_based_variable, qui est résolue en expression de filtre :

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance" ${my_label_based_variable}"

Les widgets qui utilisent une requête sous la forme d'un filtre de surveillance ne peuvent pas filtrer les séries temporelles par la valeur d'une variable basée sur un libellé. Toutefois, vous pouvez filtrer par des variables de type "Valeur uniquement". Par exemple, la requête suivante affiche la valeur du champ Filtres d'une requête qui filtre par zone, en fonction de la valeur d'une variable de valeur uniquement :

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance"
resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})

API

Par exemple, le code JSON suivant illustre une requête qui s'appuie sur une variable basée sur un libellé, my_label_based_variable, qui est résolue en expression de filtre :

"timeSeriesQuery": {
  "timeSeriesFilter": {
    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
               resource.type=\"gce_instance\"
               ${my_label_based_variable} ",
    "aggregation": {
      "alignmentPeriod": "60s",
      "perSeriesAligner": "ALIGN_MEAN",
      "groupByFields": []
    }
  },
  "unitOverride": "",
  "outputFullDuration": false
},

Les widgets qui utilisent une requête sous la forme d'un filtre de surveillance ne peuvent pas filtrer les séries temporelles par la valeur d'une variable basée sur un libellé. Toutefois, vous pouvez filtrer par des variables de type "Valeur uniquement". Par exemple, la requête suivante affiche le champ "filter" d'une requête qui filtre par zone, en fonction de la valeur d'une variable de valeur uniquement :

"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
          resource.type=\"gce_instance\"
          resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"

Le tableau suivant illustre la façon dont les variables d'exemple sont résolues par le filtre Monitoring. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison :

Syntaxe Valeur sélectionnée
Expression de filtre résolue
${my_label_based_variable} 12345 resource.instance_id == "12345"

L'exemple de variable est basé sur le libellé de ressource instance_id.

${my_label_based_variable} * Omission
${my_label_based_variable.value} 12345 Non compatible
${my_label_based_variable.value} * Non compatible
${my_value_based_variable} 12345 "12345"
${my_value_based_variable} * ".*"

Avant de commencer

Dans le projet Google Cloud où vous souhaitez créer ou gérer des tableaux de bord, procédez comme suit :

  • Select the tab for how you plan to use the samples on this page:

    gcloud

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      Terraform

      Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .

      REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Créer un tableau de bord

Pour créer un tableau de bord personnalisé, appelez la méthode dashboards.create en lui fournissant la disposition du tableau de bord et les widgets à y afficher.

Le champ name est facultatif. La valeur du champ "name" (nom) présente la structure suivante :

"name": "projects/PROJECT_ID_OR_NUMBER/dashboards/DASHBOARD_ID"

Lorsque vous créez un tableau de bord, l'API génère automatiquement le composant DASHBOARD_ID. Si vous souhaitez spécifier un DASHBOARD_ID personnalisé, vous pouvez spécifier le champ name de l'objet Dashboard.

gcloud

Pour créer un tableau de bord dans un projet, utilisez la commande gcloud monitoring dashboards create.

gcloud monitoring dashboards create --config-from-file=my-dashboard.json --project=PROJECT_ID

Avant d'exécuter la commande précédente, remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

Par exemple, si vous souhaitez dupliquer un tableau de bord :

  1. Suivez les étapes de la section Obtenir un tableau de bord pour télécharger la définition du tableau de bord d'origine.
  2. Modifiez le code JSON renvoyé pour supprimer les champs etag et name, et modifiez la valeur du champ displayName.
  3. Exécutez la commande pour créer le tableau de bord.

Pour en savoir plus, consultez la référence gcloud monitoring dashboards create.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base. Pour en savoir plus, consultez la documentation de référence du fournisseur Terraform.

.

Pour créer un tableau de bord à l'aide de Terraform, procédez comme suit :

  1. Installez et configurez Terraform pour votre projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  2. Utilisez la ressource Terraform google_monitoring_dashboard.

    Dans la commande, définissez les champs suivants :

    • dashboard_json : représentation JSON du tableau de bord, au format Dashboards.

      Pour obtenir des exemples de ce format, vous pouvez lister vos tableaux de bord à l'aide de l'explorateur d'API ou ouvrir un tableau de bord dans la console Google Cloud et afficher les représentations JSON.

    • parent : nom complet de votre projet. Par exemple, vous pouvez définir ce champ sur "projects/PROJECT_ID", où PROJECT_ID est l'ID de votre projet Google Cloud . Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

REST

Pour créer un tableau de bord, envoyez une requête POST au point de terminaison Dashboard.

curl -d @my-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X POST https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards

Avant d'exécuter la commande précédente, configurez les éléments suivants :

  • ${PROJECT_ID} : variable d'environnement qui stocke l'ID du projet dans lequel créer le tableau de bord. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

Les exemples présentés ici créent un tableau de bord à l'aide du fichier my-dashboard.json. Vous pouvez gérer votre tableau de bord via la consoleGoogle Cloud .

Pour voir d'autres configurations de tableau de bord, consultez la page Exemples de tableaux de bord et de dispositions.

Supprimer des tableaux de bord

Pour supprimer un tableau de bord personnalisé, appelez la méthode dashboards.delete en spécifiant le tableau de bord à supprimer.

gcloud

Pour supprimer un tableau de bord personnalisé, utilisez gcloud monitoring dashboards delete et spécifiez l'ID complet du tableau de bord à supprimer :

gcloud monitoring dashboards delete DASHBOARD_ID --project=PROJECT_ID

Avant d'exécuter la commande précédente, remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  • DASHBOARD_ID : ID du tableau de bord.

Pour en savoir plus, consultez la référence gcloud monitoring dashboards delete.

Terraform

Vous pouvez supprimer des ressources à l'aide de Terraform. Pour en savoir plus sur la suppression de ressources, consultez la commande Terraform destroy.

REST

Pour supprimer un tableau de bord personnalisé, envoyez une requête DELETE au point de terminaison Dashboard incluant l'ID du tableau de bord à supprimer.

curl -H "Authorization: Bearer $ACCESS_TOKEN" -X DELETE https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

Avant d'exécuter la commande précédente, configurez les éléments suivants :

  • ${PROJECT_ID} : variable d'environnement qui stocke l'ID du projet dans lequel créer le tableau de bord. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  • ${DASHBOARD_ID} : variable d'environnement qui stocke l'ID du tableau de bord.

Si l'opération réussit, l'API renvoie une réponse vide. Sinon, l'appel renvoie une erreur.

Répertorier les tableaux de bord

Pour lister tous les tableaux de bord associés à un projet, appelez la méthode dashboards.list en spécifiant l'ID du projet.

gcloud

Pour répertorier tous les tableaux de bord personnalisés d'un projet, utilisez la commande gcloud monitoring dashboards list :

gcloud monitoring dashboards list --project=PROJECT_ID

Avant d'exécuter la commande précédente, remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

Pour en savoir plus, consultez la documentation de référence sur gcloud monitoring dashboards list.

Terraform

Vous ne pouvez pas utiliser Terraform pour envoyer une requête à votre projet et obtenir une liste de tableaux de bord en réponse. Toutefois, vous pouvez afficher ces tableaux de bord à l'aide de la console Google Cloud .

REST

Pour répertorier tous les tableaux de bord personnalisés d'un projet, envoyez l'ID du projet au point de terminaison Dashboard.

curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards

Avant d'exécuter la commande précédente, configurez les éléments suivants :

  • ${PROJECT_ID} : variable d'environnement qui stocke l'ID du projet dans lequel créer le tableau de bord. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

Les exemples renvoient les tableaux de bord personnalisés associés à votre projet.

Paginer la réponse de List

La méthode dashboards.list permet la pagination, ce qui vous permet d'afficher les résultats page par page et non en un seul bloc.

gcloud

Pour spécifier le nombre de ressources par page, transmettez l'option --page-size à l'aide de la commande. Exemple :

gcloud monitoring dashboards list --page-size=1 --project=PROJECT_ID

Avant d'exécuter la commande précédente, remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

Terraform

Vous ne pouvez pas utiliser Terraform pour envoyer une requête à votre projet et obtenir une liste paginée de tableaux de bord en réponse. Toutefois, vous pouvez afficher ces tableaux de bord à l'aide de la console Google Cloud .

REST

Pour la première page de la liste de résultats, spécifiez le paramètre pageSize (taille de page) dans la requête :

curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards?page_size=1

Avant d'exécuter la commande précédente, configurez les éléments suivants :

  • ${PROJECT_ID} : variable d'environnement qui stocke l'ID du projet dans lequel créer le tableau de bord. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

La méthode renvoie la première page de la liste ainsi que le jeton nextPageToken. Exemple :

{
  "dashboards" : [
    {
       "displayName" : "Grid Layout Example",
       "gridLayout" : {
         "widgets" : [
            { ... },
            { ... },
            { ... },
          ]
       }
    }
  ]
},
"nextPageToken": "ChYqFDEyMzkzMzUwNzg0OTE1MDI4MjM3"

Pour chacune des pages restantes, vous devez inclure le jeton nextPageToken correspondant dans la requête.

Obtenir un tableau de bord

Pour obtenir un tableau de bord personnalisé spécifique pour un projet, appelez la méthode dashboards.get en spécifiant l'ID du tableau de bord.

gcloud

Pour obtenir un tableau de bord personnalisé spécifique, utilisez la commande gcloud monitoring dashboards describe et spécifiez l'ID du tableau de bord :

gcloud monitoring dashboards describe DASHBOARD_ID --format=json --project=PROJECT_ID

Avant d'exécuter la commande précédente, remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  • DASHBOARD_ID : ID du tableau de bord.

La commande renvoie le tableau de bord demandé :

{
  "columnLayout": {
    "columns": [
      {
        "widgets": [
          {
            "text": {
              "content": "Text Widget 1",
              "format": "RAW"
            }
          },
          {
            "text": {
              "content": "**Text Widget 2**",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "_Text Widget 3_",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  },
  "displayName": "Column-layout example",
  "etag": "cb3070baf15de7c79d78761baac3a386",
  "name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d"
}

Pour en savoir plus, consultez la documentation de référence sur gcloud monitoring dashboards describe.

Terraform

Vous ne pouvez pas utiliser Terraform pour envoyer une requête à votre projet avec une réponse sous la forme d'un tableau de bord individuel. Toutefois, vous pouvez afficher ces tableaux de bord à l'aide de la console Google Cloud .

REST

Pour récupérer un tableau de bord personnalisé spécifique, envoyez l'ID du tableau de bord au point de terminaison Dashboard.

curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

Avant d'exécuter la commande précédente, configurez les éléments suivants :

  • ${PROJECT_ID} : variable d'environnement qui stocke l'ID du projet dans lequel créer le tableau de bord. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  • ${DASHBOARD_ID} : variable d'environnement qui stocke l'ID du tableau de bord.

Dans l'expression précédente, ${DASHBOARD_ID} est une variable d'environnement qui stocke le nom complet du tableau de bord.

La méthode renvoie une réponse semblable à l'exemple ci-dessous :

{
  "columnLayout": {
    "columns": [
      {
        "widgets": [
          {
            "text": {
              "content": "Text Widget 1",
              "format": "RAW"
            }
          },
          {
            "text": {
              "content": "**Text Widget 2**",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "_Text Widget 3_",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  },
  "displayName": "Column-layout example",
  "etag": "cb3070baf15de7c79d78761baac3a386",
  "name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d"
}

Mettre à jour le tableau de bord

Pour mettre à jour un tableau de bord personnalisé existant, appelez la méthode dashboards.patch. Pour obtenir la valeur etag actuelle, vous pouvez appeler la méthode dashboards.get : la valeur figure dans la réponse.

gcloud

Pour mettre à jour un tableau de bord personnalisé, utilisez gcloud monitoring dashboards update, spécifiez l'ID du tableau de bord à mettre à jour et effectuez les modifications.

gcloud monitoring dashboards update DASHBOARD_ID --config-from-file=my-updated-dashboard.json --project=PROJECT_ID

Avant d'exécuter la commande précédente, remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  • DASHBOARD_ID : ID du tableau de bord.

Pour en savoir plus, consultez la documentation de référence sur gcloud monitoring dashboards update.

L'exemple précédent met à jour un tableau de bord personnalisé existant à l'aide du fichier my-updated-dashboard.json. La réponse, qui inclut une nouvelle valeur etag, est une copie de la liste de tableaux de bord mise à jour.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base. Pour en savoir plus, consultez la documentation de référence du fournisseur Terraform.

Pour mettre à jour un tableau de bord à l'aide de Terraform, procédez comme suit :

  1. Installez et configurez Terraform pour votre projet. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  2. Utilisez la ressource Terraform google_monitoring_dashboard.

    Dans la commande, définissez les champs suivants :

    • dashboard_json : représentation JSON du tableau de bord, au format Dashboards.

    • parent : nom complet de votre projet. Par exemple, vous pouvez définir ce champ sur "projects/PROJECT_ID", où PROJECT_ID est l'ID de votre projet Google Cloud . Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.

REST

Pour mettre à jour un tableau de bord personnalisé, envoyez une requête PATCH au point de terminaison Dashboard et fournissez l'objet Dashboard révisé et la valeur etag de la dernière réponse dashboards.get.

curl -d @my-updated-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X PATCH https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

Avant d'exécuter la commande précédente, configurez les éléments suivants :

  • ${PROJECT_ID} : variable d'environnement qui stocke l'ID du projet dans lequel créer le tableau de bord. Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion du dossier compatible avec les applications.
  • ${DASHBOARD_ID} : variable d'environnement qui stocke l'ID du tableau de bord.

L'exemple précédent met à jour un tableau de bord personnalisé existant à l'aide du fichier my-updated-dashboard.json. La réponse, qui inclut une nouvelle valeur etag, est une copie de la liste de tableaux de bord mise à jour.

Étapes suivantes