Esempi di dashboard e layout

Questa pagina illustra come creare dashboard utilizzando l'API Cloud Monitoring. Per ogni esempio vengono mostrate la definizione della dashboard in JSON e la dashboard corrispondente.

Cloud Monitoring fornisce anche un set selezionato di definizioni di dashboard su GitHub. Puoi installare queste definizioni nel tuo progetto Google Cloud come dashboard personalizzate. Per informazioni su questo repository e su come installare le dashboard, consulta Installa dashboard di esempio.

Quando utilizzare l'API

L'API Cloud Monitoring consente di gestire molte dashboard contemporaneamente. Sebbene tu possa utilizzare la console Google Cloud per gestire le dashboard, potresti trovare più semplice utilizzare l'API per la gestione collettiva delle dashboard personalizzate.

Devi utilizzare l'API anche per aggiungere il widget segnaposto vuoto alla tua dashboard.

Utilizzo di MQL o PromQL con l'API

Puoi creare le dashboard utilizzando il metodo dashboards.create. Passi al metodo API un oggetto Dashboard, che contiene una voce per ogni widget visualizzato nella dashboard.

Quando un widget visualizza dati delle serie temporali, ad esempio un widget di un grafico, la voce nell'oggetto Dashboard contiene un oggetto TimeSeriesQuery. Questo oggetto descrive i dati delle serie temporali da rappresentare in un grafico e li specifichi utilizzando un filtro Monitoring, una query MQL o una query PromQL:

  • Per utilizzare i filtri di Monitoring, compila il campo timeSeriesField. Gli esempi in questa pagina utilizzano i filtri di Cloud Monitoring.

  • Per utilizzare una query MQL, compila il campo timeSeriesQueryLanguage. Per ulteriori informazioni, consulta Creazione di grafici.

  • Per utilizzare una query PromQL, compila il campo prometheusQuery. Per informazioni generali, consulta PromQL in Cloud Monitoring.

Layout della dashboard

Questa sezione contiene informazioni sui diversi layout disponibili per la dashboard.

Dashboard in GridLayout

Questa dashboard mostra una GridLayout con tre widget.

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

La dashboard è simile al seguente esempio:

Dashboard di esempio con layout a griglia.

Dashboard in MosaicLayout

Questa dashboard mostra una MosaicLayout con due widget.

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

La dashboard è simile al seguente esempio:

Dashboard di esempio con layout a mosaico.

Dashboard in RowLayout

Questa dashboard mostra una RowLayout con tre widget.

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

La dashboard è simile al seguente esempio:

Dashboard di esempio con layout a righe.

Dashboard in ColumnLayout

Questa dashboard mostra una ColumnLayout con tre widget.

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

La dashboard è simile al seguente esempio:

Dashboard di esempio con layout a colonne

Dashboard con Widgets

Dashboard con XyChart

Questa dashboard mostra una dashboard con un elemento XyChart di base. Se hai mai utilizzato la console Google Cloud per creare grafici sulle dashboard, si tratta di istanze del widget XyChart.

Analogamente alla funzionalità fornita nella console Google Cloud, l'API offre opzioni per modificare il PlotType del grafico o per configurare le modalità di visualizzazione del grafico.

{
  "dashboardFilters": [],
  "displayName": "Example line chart",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

Il grafico nella dashboard è simile al seguente esempio:

Esempio di un grafico XyChart.

La sezione successiva illustra come creare un widget di Analisi dei log, come visualizzare una soglia in un grafico e come configurare l'utilizzo dell'asse Y sinistro e destro o di entrambi.

Dashboard con un grafico di Analisi dei log

Questa dashboard mostra una dashboard con un grafico di Analisi dei log. Il codice JSON di esempio contiene una query SQL.

{
  "displayName": "Example Log Analytics",
  "dashboardFilters": [],
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Sample Log Analytics chart",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "location",
                    "columnType": "STRING",
                    "maxBinCount": 5,
                    "sortColumn": "location",
                    "sortOrder": "SORT_ORDER_ASCENDING"
                  }
                ],
                "measures": [
                  {
                    "aggregationFunction": {
                      "parameters": [],
                      "type": "count"
                    },
                    "column": ""
                  }
                ],
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "queryHandle": "",
                    "sql": "SELECT\n  CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,\n  severity,\nFROM\n  `TABLE`"
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  },
  "labels": {}
}

Il grafico nella dashboard è simile al seguente esempio:

Esempio di XyChart con una query SQL di Analisi dei log.

Dashboard con un valore XyChart e una soglia

Questa dashboard mostra una dashboard con un elemento XyChart di base, una soglia e l'asse Y sinistro configurato.

{
  "dashboardFilters": [],
  "displayName": "Example line with threshold",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [
              {
                "label": "",
                "targetAxis": "Y1",
                "value": 0.2
              }
            ],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

Nell'esempio precedente, JSON specifica l'utilizzo dell'asse Y sinistro perché contiene una struttura y2Axis. Nel campo targetAxis, utilizza "Y1" per l'asse Y destro e "Y2" per l'asse Y sinistro. Se ometti il campo targetAxis, viene utilizzato l'asse Y destro.

Il grafico in questa dashboard è simile al seguente esempio:

Esempio di grafico XyChart che utilizza l'asse Y sinistro e ha una soglia.

Puoi creare grafici che mostrano più tipi di metriche e che utilizzano gli assi sinistro e destro. L'esempio precedente mostrava un grafico con un singolo tipo di metrica, ovvero la presenza di un elemento nell'array dataSets. Quando crei un grafico con due tipi di metriche, l'array dataSets contiene due elementi e ogni elemento specifica il relativo targetAxis.

Dashboard con XyChart con STACKED_AREA PlotType

Questa dashboard mostra una XyChart con un STACKED_AREA PlotType.

{
  "dashboardFilters": [],
  "displayName": "Example stacked area",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

Il grafico nella dashboard è simile al seguente esempio:

Esempio di grafico XyChart con un grafico ad area in pila.

Dashboard con un grafico XyChart con un STACKED_BAR PlotType

Questa dashboard mostra una XyChart con un STACKED_BAR PlotType.

{
  "dashboardFilters": [],
  "displayName": "Example stacked bar",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

La dashboard è simile al seguente esempio:

Esempio di grafico XyChart con un grafico a barre in pila.

Dashboard con un Scorecard di base

Questa dashboard mostra una Scorecard senza indicatore o sparkline. L'esempio mostra l'utilizzo della CPU di Compute Engine e il prospetto ha due soglie. Una soglia utilizza il colore giallo per indicare che l'utilizzo della CPU è superiore al 70%, l'altra soglia utilizza il rosso per indicare che l'utilizzo della CPU è superiore al 90%.

Poiché l'utilizzo attuale della CPU è inferiore alle soglie specificate, il colore è verde.

{
  "dashboardFilters": [],
  "displayName": "Example-basic scorecard",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "scorecard": {
            "thresholds": [
              {
                "color": "YELLOW",
                "direction": "ABOVE",
                "label": "",
                "value": 0.7
              },
              {
                "color": "RED",
                "direction": "ABOVE",
                "label": "",
                "value": 0.9
              }
            ],
            "timeSeriesQuery": {
              "outputFullDuration": true,
              "timeSeriesFilter": {
                "aggregation": {
                  "alignmentPeriod": "60s",
                  "crossSeriesReducer": "REDUCE_MEAN",
                  "groupByFields": [],
                  "perSeriesAligner": "ALIGN_MEAN"
                },
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
              }
            }
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 16
      }
    ]
  }
}

La dashboard è simile al seguente esempio:

Dashboard di esempio con un widget Scorecard.

Dashboard con Scorecard con GaugeView

Questa dashboard aggiunge un indicatore alla tabella di base dell'esempio precedente. L'oggetto GaugeView può specificare un limite superiore e un limite inferiore per specificare l'intervallo di valori da mostrare sull'indicatore. Poiché il prospetto mostra valori compresi tra 0 e 1, i limiti superiore e inferiore sono ragionevoli. Per aggiungere il misuratore, aggiungi quanto segue al JSON per il prospetto di base:

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

Di seguito è riportata la specifica completa della dashboard modificata: Il valore attuale è inferiore alle soglie, i quali sono colorati in modo appropriato sull'indicatore.

{
  "dashboardFilters": [],
  "displayName": "Example-Gauge",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "scorecard": {
            "gaugeView": {
              "lowerBound": 0,
              "upperBound": 1
            },
            "thresholds": [
              {
                "color": "YELLOW",
                "direction": "ABOVE",
                "label": "",
                "value": 0.7
              },
              {
                "color": "RED",
                "direction": "ABOVE",
                "label": "",
                "value": 0.9
              }
            ],
            "timeSeriesQuery": {
              "outputFullDuration": true,
              "timeSeriesFilter": {
                "aggregation": {
                  "alignmentPeriod": "60s",
                  "crossSeriesReducer": "REDUCE_MEAN",
                  "groupByFields": [],
                  "perSeriesAligner": "ALIGN_MEAN"
                },
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
              }
            }
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 16
      }
    ]
  }
}

Il grafico in questa dashboard è simile al seguente esempio:

Dashboard di esempio con un widget prospetto con GaugeView.

Dashboard con Scorecard con SparkChartView

Questa dashboard sostituisce l'indicatore dell'esempio precedente con uno sparkline. L'oggetto SparkChartView può creare grafici a linee o a barre in un prospetto. In questo esempio viene utilizzata una riga. Se il valore non viola una soglia, diventa verde. Per aggiungere lo sparkline, sostituisci l'oggetto JSON gaugeView nel grafico precedente con il seguente codice:

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

Il prospetto è simile al seguente esempio:

Dashboard di esempio con un widget Scorecard con SparkChartView.

Dashboard con un widget PieChart

Le dashboard possono visualizzare i dati utilizzando un grafico a torta. Ogni serie temporale contribuisce a una fetta del grafico. I grafici a torta non mostrano dati nel tempo, ma solo il valore più recente.

Tutti i grafici a torta sono specificati dal widget PieChart. Per configurare il grafico in modo che mostri la somma delle misurazioni più recenti, imposta il campo chartType su DONUT. Altrimenti, imposta questo campo sul valore di PIE.

"pieChart": {
  "chartType": "DONUT",
},

L'esempio seguente configura una dashboard con due grafici a torta, di cui un grafico a torta configurato come ad anello:

{
  "dashboardFilters": [],
  "displayName": "Example Pie Donut",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    }
                  }
                }
              }
            ]
          },
          "title": "VM Instance - Disk read bytes [MEAN]"
        },
        "width": 24
      },
      {
        "height": 16,
        "widget": {
          "pieChart": {
            "chartType": "PIE",
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    }
                  }
                }
              }
            ]
          },
          "title": "VM Instance - Disk read bytes [MEAN]"
        },
        "width": 24,
        "xPos": 24
      },
    ]
  }
}

Come mostrato nello screenshot seguente, entrambi i widget mostrano i dati sotto forma di grafico a torta, con un widget che mostra la somma dei valori più recenti:

Esempio di widget **PieChart**.

Dashboard con un widget TimeSeriesTable

Le dashboard possono visualizzare i dati in formato tabulare, con una riga per ogni serie temporale monitorata. Le tabelle non mostrano dati nel tempo, ma solo il valore più recente.

Tutte le tabelle sono specificate dal widget TimeSeriesTable:

  • Per configurare il numero massimo di righe da visualizzare, imposta il campo pickTimeSeriesFilter. Ad esempio, per visualizzare solo le due serie temporali con il valore medio più alto nei 10 minuti precedenti, includi quanto segue:

    "pickTimeSeriesFilter": {
        "direction": "TOP",
        "numTimeSeries": 2,
        "rankingMethod": "METHOD_MEAN"
    },
    

    Se ometti il campo pickTimeSeriesFilter, la tabella mostra un massimo di 300 righe.

  • Per configurare la modalità di visualizzazione dei dati nella tabella, utilizza il campo metricVisualization:

    • Per visualizzare solo un valore come "25%", ometti questo campo o imposta il valore su "NUMBER". Quando utilizzi questa configurazione, la console Google Cloud visualizza il widget sotto forma di widget Tabella.
    • Per visualizzare il valore e un indicatore visivo del valore rispetto all'intervallo di valori possibili, imposta il valore di questo campo su "BAR". Quando utilizzi questa configurazione, nella console Google Cloud il widget viene visualizzato come widget Elenco in alto.
  • Per configurare quali colonne visualizzare, utilizza il campo columnSettings. L'esempio seguente genera una tabella con due colonne, una denominata Latest Value, che è una colonna obbligatoria, e l'altra denominata Name (from instance_id):

    "columnSettings": [
      {
        "column": "Name (from instance_id)",
        "visible": true
      }
    ],
    

    Se ometti il campo columnSettings, la tabella mostra una colonna per ogni etichetta.

L'esempio seguente mostra una dashboard con un widget Tabella e un widget Elenco principali:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "value",
                "visible": false
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "metricVisualization": "NUMBER"
          },
          "title": "Table"
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "value",
                "visible": false
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "metricVisualization": "BAR"
          },
          "title": "Top List"
        },
        "width": 24
      }
    ]
  }
}

Come mostrato nello screenshot seguente, entrambi i widget visualizzano i dati in forma tabulare e contengono una barra dei filtri. Tuttavia, i due widget sono preconfigurati per mostrare colonne diverse e rappresentare il valore numerico in modo diverso:

Dashboard di esempio con un widget tabella.

Le colonne della tabella corrispondono alle etichette. Ogni riga corrisponde a una serie temporale.

Dashboard con un widget Text

Questo esempio mostra una dashboard con un widget Text.

{
  "dashboardFilters": [],
  "displayName": "DB2+TE",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
    ...
      {
        "height": 16,
        "widget": {
          "text": {
            "content": "# Support information\n\n\nContact information: my-support-team@example.com\nOnline help: [Playbooks](https://example.com)\n\n",
            "format": "MARKDOWN",
            "style": {
              "backgroundColor": "",
              "fontSize": "FS_LARGE",
              "horizontalAlignment": "H_LEFT",
              "padding": "P_EXTRA_SMALL",
              "textColor": "",
              "verticalAlignment": "V_TOP"
            }
          }
        },
        "width": 24,
        "yPos": 14
      }
    ]
  }
}

Il widget di testo è simile al seguente esempio:

Esempio di un widget di testo.

Dashboard con un widget AlertChart

Questa dashboard mostra una dashboard con un widget AlertChart:

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

A differenza di altri widget delle dashboard, non occorre specificare un titolo o un filtro delle metriche per questi widget. ma devi specificare il nome della risorsa per un criterio di avviso. L'ultima voce nel campo name è l'identificatore del criterio di avviso.

Il grafico nella dashboard è simile al seguente esempio:

Esempio di grafico degli avvisi.

In questo esempio, il criterio di avviso monitora l'utilizzo della CPU di due diverse macchine virtuali. La linea tratteggiata mostra la soglia della condizione, impostata sul 50%. Il chip verde con l'etichetta No incidents indica che non sono presenti incidenti aperti per il criterio di avviso. Se posizioni il puntatore sul chip di incidenti, si apre una finestra di dialogo che rimanda al criterio di avviso sottostante.

Dashboard con un widget ErrorReportingPanel

Questa dashboard mostra una dashboard con un widget ErrorReportingPanel:

{
  "dashboardFilters": [],
  "displayName": "Error reporting widget",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "errorReportingPanel": {
            "projectNames": [
              "projects/my-project"
            ],
            "services": [],
            "versions": []
          },
          "title": "Error Reporting Panel"
        },
        "width": 24,
      }
    ]
  }
}

Ti consigliamo di configurare l'altezza di un riquadro per la segnalazione degli errori in modo che sia di almeno 16 unità e la larghezza di almeno 24 unità. Nell'esempio precedente, il widget ha un'altezza di 16 unità e una larghezza di 24 unità.

Il riquadro di segnalazione degli errori mostra i gruppi di errori del progetto selezionato e può limitare i gruppi di errori a un tipo di risorsa, a un servizio o a una versione specifici del servizio. L'esempio seguente illustra un riquadro di segnalazione degli errori:

Esempio di riquadro di configurazione del riquadro di segnalazione degli errori.

Dashboard con un widget IncidentList

Questa dashboard mostra una dashboard con un widget IncidentList:

{
  "category": "CUSTOM",
  "dashboardFilters": [],
  "displayName": "Incident widget",
  "labels": {},
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 5,
        "widget": {
          "incidentList": {
            "monitoredResources": [],
            "policyNames": []
          },
          "title": "Incidents"
        },
        "width": 8,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

Nell'esempio precedente, il campo title viene impostato su Incidents e il widget viene configurato per visualizzare tutti gli incidenti per le risorse di tipo gce_instance. Quando configuri questo widget, puoi selezionare più criteri di avviso o più tipi di risorse.

Il widget degli incidenti sulla dashboard è simile al seguente esempio:

Esempio di widget di un incidente.

Dashboard con un widget LogsPanel

Questa dashboard mostra una dashboard con un widget LogsPanel:

{
  "category": "CUSTOM",
  "displayName": "Logs Panel",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "logsPanel": {
            "filter": "",
            "resourceNames": [
              "projects/012012012012"
            ]
          },
          "title": "Logs Panel"
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

Ti consigliamo di configurare l'altezza di un riquadro dei log in modo che sia di almeno 3 unità e la sua larghezza di almeno 4 unità. Nell'esempio precedente, il widget ha un'altezza di 4 unità e una larghezza di 6 unità.

Nel riquadro dei log vengono visualizzati i log dei progetti Google Cloud elencati nel campo resourceNames. L'esempio precedente specifica un solo progetto, ma puoi includere più progetti in questo elenco.

Il riquadro dei log è simile al seguente esempio:

Dashboard di esempio con un widget del riquadro dei log.

Per informazioni sulla risoluzione dei problemi, consulta La chiamata API per creare una dashboard con un riquadro dei log non va a buon fine.

Dashboard con un widget CollapsibleGroup

Questa dashboard mostra una dashboard con un widget CollapsibleGroup:

{
  "category": "CUSTOM",
  "displayName": "Group testing",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "collapsibleGroup": {
            "collapsed": false
          },
          "title": "My group"
        },
        "width": 12,
        "xPos": 0,
        "yPos": 0
      },
      {
        "height": 4,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "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": [],
            "timeshiftDuration": "0s",
            "yAxis": {
              "label": "y1Axis",
              "scale": "LINEAR"
            }
          }
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

Nell'esempio precedente, il widget del gruppo comprimibile contiene un singolo grafico che mostra l'utilizzo della CPU di un'istanza VM. I widget di gruppo comprimibili possono trovarsi su un'intera riga di una tabella. Un widget è incluso in un gruppo quando le specifiche di posizione e altezza del gruppo (x,y) includono la posizione (x,y) del widget. Nell'esempio precedente, il gruppo si trova nella posizione di (0,0) e la sua altezza è 4. xyChart è nella posizione di (0,0), quindi è incluso nel gruppo. Tuttavia, se la posizione del grafico viene modificata in (0,5), il grafico viene escluso dal gruppo. Infine, quando la posizione (x,y) di un widget comporta l'inclusione del widget nel gruppo, l'altezza del widget del gruppo comprimibile potrebbe essere espansa.

Per includere un widget di gruppo in una dashboard, quest'ultima deve avere un elemento MosaicLayout.

Il widget del gruppo comprimibile è simile al seguente esempio:

Dashboard di esempio con un widget di gruppo comprimibile.

Dashboard con un widget SingleViewGroup

Un widget SingleViewGroup mostra un membro di un gruppo alla volta. Specifica i grafici e gli altri widget che fanno parte del gruppo. Inoltre, puoi stabilire quale widget del gruppo visualizzare usando un menu nel widget SingleViewGroup.

Questa dashboard mostra una dashboard con un widget SingleViewGroup:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "singleViewGroup": {},
          "title": "Untitled group"
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk read bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 16
      }
    ]
  }
}

Come mostrato nell'esempio precedente, l'array tiles contiene un oggetto SingleViewGroup, che tuttavia non specifica quali oggetti contiene. L'appartenenza all'oggetto SingleViewGroup è invece determinata dai valori dei campi width e yPos. Gli oggetti i cui valori per i campi width e yPos corrispondono ai valori dell'oggetto SingleViewGroup sono contenuti dall'oggetto SingleViewGroup. Nell'esempio precedente, l'oggetto SingleViewGroup contiene due grafici.

Dashboard con un widget SectionHeader

Un widget SectionHeader crea un divisore orizzontale nella dashboard e una voce nel sommario della dashboard. Puoi personalizzare la voce nel sommario e includere informazioni aggiuntive nel widget. Puoi anche configurare il widget per aggiungere un divisore al sommario dopo la voce dell'intestazione della sezione.

Questa dashboard mostra una dashboard con un singolo grafico e un widget SectionHeader:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 4
      },
      {
        "height": 4,
        "widget": {
          "sectionHeader": {
            "dividerBelow": true,
            "subtitle": "Instance metrics"
          },
          "title": "Metrics"
        },
        "width": 48
      }
    ]
  }
}

Nell'oggetto SectionHeader, il valore del campo title viene visualizzato sia nel widget sia nel sommario. Il valore del campo subtitle viene visualizzato solo dal widget. Quando il valore di dividerBelow è true, al sommario viene aggiunto un divisore.

Dashboard con widget SLO

Questa dashboard mostra una dashboard con un widget SLO:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "SLO Error Budget: 99.5% - Distribution Cut - Calendar month",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "Remaining error requests before SLO is burned",
                "measures": [],
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "perSeriesAligner": "ALIGN_NEXT_OLDER"
                    },
                    "filter": "select_slo_budget(\"projects/Project_Number/services/SERVICE_ID/serviceLevelObjectives/SLO_ID\")",
                  },
                  "unitOverride": "1"
                }
              }
            ],
            "thresholds": []
          }
        },
        "width": 24
      }
    ]
  }
}

Come mostra il JSON precedente, i grafici SLO sono rappresentati come oggetti XyChart. Questi oggetti specificano tutti i campi di aggregazione e le soglie e il valore del campo filter è un selettore di serie temporali. Per ulteriori informazioni su questi selettori, consulta Recupero dei dati dello SLO.

Il widget SLO è simile al seguente esempio:

Dashboard di esempio con un widget SLO.

Dashboard con un widget vuoto

Questo esempio mostra una dashboard con un widget segnaposto vuoto. Nel widget viene visualizzato il valore del campo displayName.

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

La dashboard è simile al seguente esempio:

Dashboard di esempio con un widget vuoto.

Dashboard con filtri permanenti

Per un esempio di dashboard con un filtro permanente, consulta la pagina Filtri della dashboard.