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 obtenir plus d'informations sur ce dépôt et savoir 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 si 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 disposition 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 mosa aque

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 widget XyChart.

Tableau de bord avec un widget XyChart et un seuil

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

{
  "category": "CUSTOM",
  "displayName": "New Dashboard - Jun 11, 2021 11:56 AM",
  "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 de gauche, car il contient une structure y2Axis. Dans le champ targetAxis, saisissez "Y1" pour l'axe Y à droite et "Y2" pour l'axe Y à gauche. Si vous omettez le champ targetAxis, l'axe Y à droite est utilisé.

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

Exemple de widget XyChart qui utilise l'axe Y de gauche et présente 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 widget 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 widget XyChart avec un graphique en 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. Il indique l'utilisation du processeur Compute Engine et comporte deux seuils, un qui utilise la couleur jaune pour indiquer que l'utilisation du processeur est supérieure à 70 % et l'autre qui utilise le rouge pour indiquer que l'utilisation du processeur est supérieure à 90 %.

Étant donné que l'utilisation actuelle du processeur est inférieure aux seuils spécifiés, elle est considérée comme une réussite.

{
  "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 widget Scorecard affiche des valeurs comprises entre 0 et 1, il s'agit de limites supérieures et inférieures 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 comportant une ressource 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 associé à SparkChartView.

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 Text.

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 de deux machines virtuelles différentes. Le seuil de condition, défini sur 50%, est indiqué par une ligne rouge en pointillés. 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 l'icône d'incidents, une boîte de dialogue s'ouvre et redirige 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. Notez que seul le paramètre displayName du tableau de bord 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.