Exemples de tableaux de bord et de dispositions

Cette page explique comment créer des tableaux de bord à l'aide de l'API Cloud Monitoring. Pour chaque exemple, la définition du tableau de bord au format JSON et le tableau de bord correspondant sont affichés.

Cloud Monitoring fournit également un ensemble organisé de définitions de tableau de bord sur GitHub. Vous pouvez installer ces définitions dans votre projet Google Cloud en tant que tableaux de bord personnalisés. Pour en savoir plus sur ce dépôt et découvrir comment installer ces tableaux de bord, consultez la page Installer des exemples de tableaux de bord.

Quand utiliser l'API ?

L'API Cloud Monitoring vous permet de gérer plusieurs tableaux de bord à la fois. Même si vous pouvez vous servir de Google Cloud Console pour gérer vos tableaux de bord, vous trouverez peut-être l'API plus simple pour gérer vos tableaux de bord personnalisés de façon groupée.

Vous devez également utiliser l'API lorsque vous souhaitez ajouter le widget d'espace réservé vide à votre tableau de bord.

Utiliser MQL avec l'API

Lorsque vous créez un tableau de bord, vous pouvez fournir une requête MQL à la spécification TimeSeriesQuery dans la méthode dashboards.create. Pour en savoir plus, consultez la page Créer des graphiques.

Dispositions de tableaux de bord

Tableau de bord dans GridLayout

Ce tableau de bord affiche une ressource GridLayout comportant trois widgets.

{
  "displayName": "Grid Layout Example",
  "gridLayout": {
    "columns": "2",
    "widgets": [
      {
        "title": "Widget 1",
        "xyChart": {
          "dataSets": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_RATE"
                }
              },
              "unitOverride": "1"
            },
            "plotType": "LINE"
          },
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          }
        }
      },
      {
        "text": {
          "content": "Widget 2"
        }
      },
      {
        "title": "Widget 3",
        "xyChart": {
          "dataSets": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_RATE"
                }
              },
              "unitOverride": "1"
            },
            "plotType": "STACKED_BAR"
          },
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          }
        }
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec une mise en page en grille.

Tableau de bord dans MosaicLayout

Ce tableau de bord affiche une ressource MosaicLayout comportant deux widgets.

{
  "displayName": "Mosaic Layout Example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "xPos": 2,
        "yPos": 2,
        "width": 7,
        "height": 2,
        "widget": {
          "title": "CPU utilization in us-central1-a",
          "scorecard": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.label.zone=\"us-central1-a\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_MEAN",
                  "crossSeriesReducer": "REDUCE_MAX"
                }
              },
              "unitOverride": "1"
            },
            "gaugeView": {
              "upperBound": 1.5
            },
            "thresholds": [
              {
                "value": 0.8,
                "color": "YELLOW",
                "direction": "ABOVE"
              },
              {
                "value": 1,
                "color": "RED",
                "direction": "ABOVE"
              }
            ]
          }
        }
      },
      {
        "xPos": 1,
        "yPos": 5,
        "width": 4,
        "height": 4,
        "widget": {
          "title": "My 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",
                "minAlignmentPeriod": "60s"
              }
            ],
            "yAxis": {
              "label": "y1Axis",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec une disposition en mosaicque

Tableau de bord dans RowLayout

Ce tableau de bord affiche une ressource RowLayout comportant trois widgets.

{
  "displayName": "Row Layout Example",
  "rowLayout": {
    "rows": [
      {
        "weight": "1",
        "widgets": [
          {
            "text": {
              "content": "Widget 1",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 2",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 3",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec une disposition en lignes.

Tableau de bord dans ColumnLayout

Ce tableau de bord affiche une ressource ColumnLayout comportant trois widgets.

{
  "displayName": "Column Layout Example",
  "columnLayout": {
    "columns": [
      {
        "weight": "1",
        "widgets": [
          {
            "text": {
              "content": "Widget 1",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 2",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 3",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec une disposition en colonnes

Tableaux de bord avec Widgets

Tableau de bord avec un widget XyChart

Ce tableau de bord affiche un tableau de bord comportant un widget XyChart de base. Si vous avez déjà utilisé Google Cloud Console pour créer des graphiques sur des tableaux de bord, ces graphiques sont des instances du widget XyChart.

À l'instar de la fonctionnalité fournie dans Cloud Console, l'API propose des options permettant de modifier la ressource PlotType ou de configurer les modes d'affichage du graphique.

{
  "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"
          }
        }
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de XyChart.

Tableau de bord avec une valeur XyChart et un seuil

Ce tableau de bord affiche un tableau de bord avec un XyChart de base, un seuil et l'axe des ordonnées à gauche configuré.

{
  "category": "CUSTOM",
  "displayName": "Dashboard with xyChart",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y2",
                "timeSeriesQuery": {
                  "apiSource": "DEFAULT_CLOUD",
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_NONE"
                    }
                  }
                }
              }
            ],
            "thresholds": [
              {
                "label": "",
                "targetAxis": "Y2",
                "value": 0.45
              }
            ],
            "timeshiftDuration": "0s",
            "y2Axis": {
              "label": "y2Axis",
              "scale": "LINEAR"
            }
          }
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

Dans l'exemple précédent, le fichier JSON spécifie l'utilisation de l'axe Y gauche, car il contient une structure y2Axis. Dans le champ targetAxis, utilisez "Y1" pour l'axe Y à droite et "Y2" pour l'axe Y à gauche. Si vous omettez le champ targetAxis, l'axe Y droit est utilisé.

Le graphique de ce tableau de bord ressemble à l'exemple suivant:

Exemple de XyChart qui utilise l'axe Y de gauche et comporte un seuil

Tableau de bord avec un widget XyChart comportant une ressource STACKED_AREA PlotType

Ce tableau de bord affiche un widget XyChart comportant une ressource STACKED_AREA PlotType.

{
  "displayName": "Demo dashboard",
  "gridLayout": {
    "widgets": [
      {
        "title": "Sample stacked-area 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": "STACKED_AREA"
            }
          ],
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          },
          "chartOptions": {
            "mode": "COLOR"
          }
        }
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de graphique XyChart avec un graphique en aires empilées.

Tableau de bord avec un widget XyChart comportant une ressource STACKED_BAR PlotType

Ce tableau de bord affiche un widget XyChart comportant une ressource STACKED_BAR PlotType.

{
  "displayName": "Demo Dashboard",
  "gridLayout": {
    "widgets": [
      {
        "title": "My First 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": "STACKED_BAR"
            }
          ],
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          },
          "chartOptions": {
            "mode": "COLOR"
          }
        }
      },
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de XyChart avec un graphique à barres empilées.

Tableau de bord avec un widget Scorecard de base

Ce tableau de bord affiche un widget Scorecard sans jauge ni graphique sparkline. L'exemple montre l'utilisation du processeur Compute Engine et le tableau de données présente deux seuils. Un seuil de couleur jaune indique que l'utilisation du processeur est supérieure à 70%, l'autre seuil de couleur indique que l'utilisation du processeur est supérieure à 90%.

Comme l'utilisation actuelle du processeur est inférieure aux seuils spécifiés, la couleur est verte.

{
  "displayName": "Unadorned scorecard",
  "gridLayout": {
    "widgets": [
      {
        "title": "Compute Engine CPU utilization",
        "scorecard": {
          "timeSeriesQuery": {
            "timeSeriesFilter": {
              "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
              "aggregation": {
                "perSeriesAligner": "ALIGN_MEAN",
                "crossSeriesReducer": "REDUCE_MAX",
              }
            },
            "unitOverride": "1"
          },
          "thresholds": [
            {
              "color": "RED",
              "direction": "ABOVE",
              "label": "Danger",
              "value": 0.9,
            },
            {
              "color": "YELLOW",
              "direction": "ABOVE",
              "label": "Warning",
              "value": 0.7,
            }
          ]
        }
      },
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec un widget Scorecard.

Tableau de bord avec un widget Scorecard comportant une ressource GaugeView

Ce tableau de bord ajoute une jauge au widget Scorecard de base de l'exemple précédent. L'objet GaugeView peut spécifier une limite supérieure et une limite inférieure, afin d'indiquer la plage de valeurs à afficher sur la jauge. Étant donné que le tableau de données affiche des valeurs comprises entre 0 et 1, ces limites supérieure et inférieure sont raisonnables. Pour ajouter la jauge, ajoutez ce qui suit au fichier JSON du widget Scorecard de base :

          "gaugeView": {
            "lowerBound": 0,
            "upperBound": 1,
          },

Vous trouverez ci-dessous la spécification complète du tableau de bord modifié. La valeur actuelle est inférieure aux seuils, qui sont colorés de manière appropriée sur la jauge.

{
  "displayName": "Gauge scorecard",
  "gridLayout": {
    "widgets": [
      {
        "title": "Compute Engine CPU utilization",
        "scorecard": {
          "timeSeriesQuery": {
            "timeSeriesFilter": {
              "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
              "aggregation": {
                "perSeriesAligner": "ALIGN_MEAN",
                "crossSeriesReducer": "REDUCE_MAX",
              }
            },
            "unitOverride": "1"
          },
          "gaugeView": {
            "lowerBound": 0,
            "upperBound": 1,
          },
          "thresholds": [
            {
              "color": "RED",
              "direction": "ABOVE",
              "label": "Danger",
              "value": 0.9,
            },
            {
              "color": "YELLOW",
              "direction": "ABOVE",
              "label": "Warning",
              "value": 0.7,
            }
          ]
        }
      },
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec un widget Scorecard avec GaugeView.

Tableau de bord avec un widget Scorecard comportant une ressource SparkChartView

Ce tableau de bord remplace la jauge de l'exemple précédent par un graphique sparkline. L'objet SparkChartView peut créer des graphiques en courbes ou à barres dans un widget Scorecard. Cet exemple utilise une courbe. Tant que la valeur n'enfreint pas un seuil, elle est verte. Pour ajouter le graphique sparkline, remplacez l'objet JSON gaugeView dans le graphique précédent par ce qui suit :

          "sparkChartView": {
            "sparkChartType": "SPARK_LINE"
          },

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec un widget Scorecard avec SparkChartView.

Tableau de bord avec un widget TimeSeriesTable

Cet exemple présente un tableau de bord avec un widget TimeSeriesTable.

{
  "category": "CUSTOM",
  "displayName": "Pams Table - Sep 7, 2021 1:35 PM",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 5,
        "widget": {
          "timeSeriesTable": {
            "dataSets": [
              {
                "minAlignmentPeriod": "0s",
                "tableDisplayOptions": {},
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ]
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 7,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

Comme le montre la capture d'écran suivante, le widget de table affiche un titre, contient une barre de filtre et affiche les données sous forme de tableau:

Exemple de tableau de bord avec un widget de table

Les colonnes du tableau correspondent aux libellés. Chaque ligne correspond à une série temporelle.

Tableau de bord avec un widget Text

Cet exemple montre un tableau de bord simple avec un widget Text.

{
  "displayName": "Demo Dashboard"
  "gridLayout": {
    "widgets": [
      {
        "text" {
          "content": "Hello World"
        }
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec un widget de texte.

Tableau de bord avec un widget AlertChart

Ce tableau de bord affiche un tableau de bord avec un widget AlertChart:

{
  "category": "CUSTOM",
  "displayName": "Alert chart example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "alertChart": {
            "name": "projects/my-project/alertPolicies/14205854094151528373"
          }
        },
        "width": 9,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

Contrairement aux autres widgets du tableau de bord, vous ne spécifiez pas de titre ni de filtre de métriques pour ces widgets. À la place, vous spécifiez le nom de la ressource pour une règle d'alerte. La dernière entrée du champ name correspond à l'identifiant de la règle d'alerte.

Le tableau de bord ressemble à l'exemple suivant :

Exemple de graphique d'alerte

Dans cet exemple, la règle d'alerte surveille l'utilisation du processeur par deux machines virtuelles différentes. La ligne en pointillés indique le seuil de la condition, qui est défini sur 50%. La puce verte portant l'étiquette No incidents indique qu'aucun incident n'est ouvert pour la règle d'alerte. Si vous placez votre pointeur sur le chip des incidents, une boîte de dialogue s'ouvre et renvoie vers la règle d'alerte sous-jacente.

Tableau de bord avec un widget vide

Cet exemple montre un tableau de bord simple avec un widget à espace réservé et vide. La valeur du champ displayName apparaît dans le widget.

{
  "displayName": "Demo Dashboard",
  "gridLayout": {
    "widgets": [
      {
        "blank": {}
      }
    ]
  }
}

Le tableau de bord ressemble à l'exemple suivant :

Exemple de tableau de bord avec un widget vide.