Contoh dasbor dan tata letak

Halaman ini mengilustrasikan cara membuat dasbor dengan menggunakan Cloud Monitoring API. Untuk setiap contoh, definisi dasbor dalam JSON dan dasbor yang sesuai ditampilkan. Anda dapat memberikan JSON ke Google Cloud CLI dan endpoint Cloud Monitoring API.

Cloud Monitoring juga menyediakan serangkaian definisi dasbor yang dikurasi di GitHub. Anda dapat menginstal definisi ini di project Google Cloud sebagai dasbor kustom. Untuk mengetahui informasi tentang repositori ini dan cara menginstal dasbor ini, lihat Menginstal contoh dasbor.

Kapan menggunakan API atau Google Cloud CLI

Cloud Monitoring API dan Google Cloud CLI memberi Anda cara untuk mengelola banyak dasbor sekaligus. Meskipun Anda dapat menggunakan konsolGoogle Cloud untuk mengelola dasbor, Anda mungkin merasa lebih mudah menggunakan skrip yang mengelola dasbor kustom secara massal.

Anda juga perlu menggunakan API saat ingin menambahkan widget placeholder kosong ke dasbor.

Menggunakan MQL atau PromQL dengan API

Anda membuat dasbor menggunakan metode dashboards.create. Anda meneruskan objek Dashboard ke metode API, yang berisi satu entri untuk setiap widget yang ditampilkan dasbor.

Saat widget menampilkan data deret waktu, seperti widget diagram, entrinya dalam objek Dashboard berisi objek TimeSeriesQuery. Objek ini menjelaskan data deret waktu yang akan dibuat diagramnya, dan Anda menentukan data tersebut menggunakan filter Pemantauan, kueri MQL, atau kueri PromQL:

  • Untuk menggunakan filter Pemantauan, isi kolom timeSeriesField. Contoh di halaman ini menggunakan filter Cloud Monitoring.

  • Untuk menggunakan kueri MQL, isi kolom timeSeriesQueryLanguage. Untuk mengetahui informasi selengkapnya, lihat Membuat diagram.

  • Untuk menggunakan kueri PromQL, isi kolom prometheusQuery. Untuk mengetahui informasi umum, lihat PromQL di Cloud Monitoring.

Tata letak dasbor

Bagian ini berisi informasi tentang berbagai tata letak dasbor yang tersedia.

Dasbor di GridLayout

Dasbor ini menampilkan GridLayout dengan tiga 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"
          }
        }
      }
    ]
  }
}

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan tata letak petak.

Dasbor di MosaicLayout

Dasbor ini menampilkan MosaicLayout dengan dua 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"
            }
          }
        }
      }
    ]
  }
}

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan tata letak mosaik.

Dasbor di RowLayout

Dasbor ini menampilkan RowLayout dengan tiga 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"
            }
          }
        ]
      }
    ]
  }
}

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan tata letak baris.

Dasbor di ColumnLayout

Dasbor ini menampilkan ColumnLayout dengan tiga 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"
            }
          }
        ]
      }
    ]
  }
}

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan tata letak kolom

Aktifkan peristiwa dasbor, lalu tambahkan filter dan label

Bagian ini menjelaskan cara menambahkan filter dan label ke dasbor, serta cara mengonfigurasi dasbor untuk menampilkan peristiwa.

Mengaktifkan peristiwa di dasbor

Anda dapat mengonfigurasi dasbor untuk menampilkan peristiwa, seperti peristiwa update Google Kubernetes Engine atau peristiwa kegagalan mesin virtual, dengan menyertakan kolom annotations dalam objek Dashboard. Kolom annotations berisi instance objek DashboardAnnotations, yang berisi dua kolom:

  • Kolom defaultResourceName mencantumkan default tingkat dasbor untuk Google Cloud project yang akan ditelusuri peristiwanya. Jika Anda tidak menentukan kolom ini, project yang dipilih akan ditelusuri.

  • Array objek EventAnnotation. Setiap objek berisi hal berikut:

    • Kolom displayName, yang memungkinkan Anda menentukan label pada tombol khusus peristiwa. Jika kolom ini tidak ditentukan atau jika nilai kolom ini adalah string kosong, nama default untuk peristiwa akan ditampilkan.
    • Kolom enabled, yang mengontrol nilai tombol peristiwa. Saat true, tombol berada di posisi on dan peristiwa ditampilkan di dasbor. Saat false, tombol berada di posisi off.
    • Kolom eventType, yang berisi nilai dari enumerasi EventType.
    • Kolom filter, yang memungkinkan Anda menentukan kueri untuk ditambahkan ke kueri khusus peristiwa. Jika nilai kolom ini adalah string kosong, maka kueri khusus peristiwa akan digunakan.
    • Kolom resourceNames, yang memungkinkan Anda menentukan daftar Google Cloud project untuk menelusuri peristiwa. Jika kolom ini adalah array kosong, project yang Anda pilih akan dicari.

Contoh berikut menunjukkan kolom annotations yang menentukan peristiwa Google Kubernetes Engine:

{
  "displayName": "Annotation example",
  "annotations": {
    "defaultResourceNames": [],
    "eventAnnotations": [
      {
        "displayName": "",
        "enabled": true,
        "eventType": "GKE_CLUSTER_UPDATE",
        "filter": "resource.labels.cluster_name=my-cluster",
        "resourceNames": []
      }
    ]
  },
  "dashboardFilters": [],
  "mosaicLayout": {
  ...
  },
  "labels": {}
}

Dalam contoh sebelumnya, kolom filter digunakan untuk membatasi kueri ke cluster my-name. Kolom displayName ditetapkan ke string kosong, sehingga nama default untuk jenis peristiwa ditampilkan di tombol peristiwa. Terakhir, karena resourceNames ditetapkan ke array kosong, entri log di project Google Cloud saat ini akan dikueri.

Menambahkan filter dan variabel dasbor

Untuk mengontrol data yang ditampilkan widget di dasbor, Anda dapat menambahkan variabel dan filter yang disematkan. Variabel berbeda dari filter yang disematkan karena variabel berlaku untuk widget tertentu.

Jika Anda membuat filter atau variabel yang disematkan, Monitoring akan memperbarui toolbar dasbor kustom Anda untuk menampilkan filter. Untuk filter yang disematkan, nama filter toolbar adalah nama filter yang disematkan. Untuk variabel, nama filter toolbar adalah tanda dolar $ diikuti dengan nama variabel. Setiap filter toolbar berisi menu yang memungkinkan Anda mengubah nilai filter atau variabel yang disematkan terkait. Untuk variabel, Anda dapat mengganti filter toolbar dengan widget dasbor. Untuk mempelajari lebih lanjut, lihat Dasbor dengan widget FilterControl.

Untuk mengetahui informasi selengkapnya tentang variabel dan filter yang disematkan, serta mempelajari cara menerapkan variabel ke widget, lihat Filter dasbor.

Menambahkan label dasbor

Contoh ini menunjukkan objek Dashboard yang menentukan label bernama playbook.

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

Seperti yang diilustrasikan contoh sebelumnya, kolom labels diimplementasikan sebagai map, dengan kolom key dan value adalah string. Saat Anda menambahkan label ke dasbor, tetapkan key ke nama label, dan tetapkan kolom value ke string kosong.

Menambahkan label ke dasbor bersifat opsional.

Dasbor dengan Widgets

Bagian ini menyertakan contoh dasbor yang berisi berbagai jenis widget.

Dasbor dengan XyChart

Dasbor ini menampilkan dasbor dengan XyChart dasar. Jika Anda pernah menggunakan konsol Google Cloud untuk membuat diagram di dasbor, diagram tersebut adalah instance widget XyChart.

Mirip dengan fungsi yang disediakan di konsol Google Cloud , API menyediakan opsi untuk mengubah PlotType diagram atau mengonfigurasi mode tampilan diagram.

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

Diagram di dasbor akan terlihat mirip dengan contoh berikut:

Contoh XyChart.

Bagian berikutnya menggambarkan cara membuat widget diagram Log Analytics, cara menampilkan nilai minimum pada diagram, dan cara mengonfigurasi apakah diagram menggunakan sumbu Y kiri, sumbu Y kanan, atau keduanya.

Dasbor dengan diagram Log Analytics

Dasbor ini menampilkan dasbor dengan diagram Log Analytics. Contoh JSON berisi kueri SQL.

{
  "displayName": "Example",
  "dashboardFilters": [],
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Sample 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  `VIEW`"
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  },
  "labels": {}
}

Diagram di dasbor akan terlihat mirip dengan contoh berikut:

Contoh XyChart dengan kueri SQL Log Analytics.

Dasbor dengan XyChart dan nilai minimum

Dasbor ini menampilkan dasbor dengan XyChart dasar, nilai minimum, dan sumbu Y kiri yang dikonfigurasi.

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

Dalam contoh sebelumnya, JSON menentukan penggunaan sumbu Y kiri karena berisi struktur y2Axis. Di kolom targetAxis, gunakan "Y1" untuk sumbu Y kanan dan "Y2" untuk sumbu Y kiri. Jika Anda menghilangkan kolom targetAxis, sumbu Y kanan akan digunakan.

Diagram di dasbor ini terlihat mirip dengan contoh berikut:

Contoh XyChart yang menggunakan sumbu Y kiri dan memiliki nilai minimum.

Anda dapat membuat diagram yang menampilkan beberapa jenis metrik dan yang menggunakan sumbu kiri dan kanan. Contoh sebelumnya menggambarkan diagram dengan satu jenis metrik, yaitu ada satu elemen dalam array dataSets. Saat Anda membuat diagram dua jenis metrik, array dataSets berisi dua elemen, dan setiap elemen menentukan targetAxis-nya.

Dasbor dengan XyChart dengan STACKED_AREA PlotType

Dasbor ini menampilkan XyChart dengan 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
      }
    ]
  }
}

Diagram di dasbor akan terlihat mirip dengan contoh berikut:

Contoh XyChart dengan plot area bertumpuk.

Dasbor dengan XyChart dengan STACKED_BAR PlotType

Dasbor ini menampilkan XyChart dengan 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
      }
    ]
  }
}

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh XyChart dengan plot batang bertumpuk.

Dasbor dengan Scorecard dasar

Dasbor ini menampilkan Scorecard tanpa pengukur atau sparkline. Contoh ini menunjukkan pemanfaatan CPU Compute Engine dan kartu skor memiliki dua nilai minimum. Satu nilai minimum menggunakan warna kuning untuk menunjukkan bahwa penggunaan CPU lebih dari 70%, sedangkan nilai minimum lainnya menggunakan warna merah untuk menunjukkan bahwa penggunaan CPU lebih dari 90%.

Karena pemakaian CPU saat ini kurang dari nilai minimum yang ditentukan, warnanya adalah hijau.

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

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget Kartu Skor.

Dasbor dengan Scorecard dan GaugeView

Dasbor ini menambahkan pengukur ke kartu skor dasar dalam contoh sebelumnya. Objek GaugeView dapat menentukan batas atas dan batas bawah, untuk menentukan rentang nilai yang akan ditampilkan pada pengukur. Karena kartu skor menampilkan nilai dari 0 hingga 1, batas atas dan bawah tersebut wajar. Untuk menambahkan pengukur, tambahkan berikut ke JSON untuk kartu skor dasar:

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

Berikut menunjukkan spesifikasi dasbor yang dimodifikasi secara lengkap: Nilai saat ini berada di bawah nilai minimum, yang diberi warna yang sesuai pada pengukur.

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

Diagram di dasbor ini terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget Kartu Skor dengan GaugeView.

Dasbor dengan Scorecard dan SparkChartView

Dasbor ini menggantikan pengukur pada contoh sebelumnya dengan sparkline. Objek SparkChartView dapat membuat diagram garis atau diagram batang pada kartu skor. Contoh ini menggunakan garis. Selama nilai tidak melanggar ambang batas, nilai tersebut berwarna hijau. Untuk menambahkan garis percik, ganti objek JSON gaugeView di diagram sebelumnya dengan objek berikut:

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

Kartu skor terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget Kartu Skor dengan SparkChartView.

Dasbor dengan widget PieChart

Dasbor dapat menampilkan data dengan menggunakan diagram lingkaran. Setiap deret waktu menyumbang satu irisan pada diagram lingkaran. Diagram lingkaran tidak menampilkan data dari waktu ke waktu; melainkan, hanya menampilkan nilai terbaru.

Semua diagram lingkaran ditentukan oleh widget PieChart. Untuk mengonfigurasi diagram agar menampilkan jumlah pengukuran terbaru, tetapkan kolom chartType ke DONUT. Jika tidak, setel kolom ini ke nilai PIE.

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

Contoh berikut mengonfigurasi dasbor dengan dua diagram lingkaran, dengan satu diagram lingkaran dikonfigurasi sebagai donat:

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

Seperti yang ditunjukkan pada screenshot berikut, kedua widget menampilkan data sebagai diagram lingkaran, dengan satu widget menampilkan jumlah nilai terbaru:

Contoh widget **PieChart**.

Dasbor dengan widget Treemap

Untuk melihat data terbaru sebagai serangkaian persegi panjang bertingkat, dengan setiap persegi panjang sesuai dengan kumpulan nilai label yang unik, tambahkan peta hierarki. Asumsikan bahwa Anda telah menggabungkan data yang Anda buat diagramnya menurut label zone. Jika Anda menyetel jenis widget ke peta hierarki, setiap persegi panjang pada peta hierarki sesuai dengan satu zona. Saturasi warna persegi panjang sebanding dengan nilai yang diwakilinya.

Saat menjelajahi peta hierarki, gunakan pointer untuk mengaktifkan tooltip persegi panjang.

JSON berikut mengonfigurasi widget Treemap yang menggabungkan deret waktu menurut zona dan jenis penyimpanan:

{
  "displayName": "Example Treemap",
  "dashboardFilters": [],
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "xPos": 24,
        "height": 16,
        "width": 24,
        "widget": {
          "title": "VM Instance - Write read bytes [SUM]",
          "id": "",
          "treemap": {
            "dataSets": [
              {
                "breakdowns": [],
                "measures": [],
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "resource.label.\"zone\"",
                        "metric.label.\"storage_type\""
                      ],
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "treemapHierarchy": [
              "resource.label.\"zone\"",
              "metric.label.\"storage_type\""
            ]
          }
        }
      }
    ]
  }
}

Screenshot berikut menunjukkan widget peta hierarki dengan konfigurasi sebelumnya:

Contoh widget **Peta hierarki**.

Dalam screenshot, tooltip ditampilkan untuk satu persegi panjang.

Dasbor dengan widget TimeSeriesTable

Dasbor dapat menampilkan data dalam format tabel, dengan satu baris untuk setiap kombinasi nilai label unik. Tabel tidak menampilkan data dari waktu ke waktu, tetapi menampilkan nilai terbaru atau nilai gabungan.

Semua tabel ditentukan oleh widget TimeSeriesTable:

  • Untuk mengonfigurasi deret waktu yang akan ditampilkan, gunakan kolom dataSets. Setiap objek dalam array dataSets sesuai dengan satu jenis metrik. Jika Anda membuat kueri untuk beberapa jenis metrik, konsol Google Cloud akan mencoba menampilkan nilai terbaru untuk setiap kueri di baris tabel yang sama. Untuk mengetahui informasi selengkapnya, lihat Cara tabel menggabungkan data dari beberapa jenis metrik.

    • Kolom TimeSeriesQuery menentukan jenis metrik.
    • Jika Anda ingin tabel menampilkan nilai gabungan, dengan data digabungkan berdasarkan nilai rentang waktu yang ditetapkan oleh dasbor, tetapkan kolom timeSeriesQuery.outputFullDuration ke true.
  • Untuk mengonfigurasi jumlah maksimum baris yang akan ditampilkan, tetapkan kolom pickTimeSeriesFilter. Misalnya, untuk menampilkan hanya dua deret waktu dengan nilai rata-rata terbesar selama 10 menit sebelumnya, sertakan kode berikut:

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

    Jika Anda menghapus kolom pickTimeSeriesFilter, tabel akan menampilkan maksimum 300 baris.

  • Untuk mengonfigurasi cara tabel menampilkan data, gunakan kolom metricVisualization:

    • Untuk hanya menampilkan nilai seperti "25%", hapus kolom ini atau tetapkan nilai ke "NUMBER". Saat Anda menggunakan konfigurasi ini, konsol Google Cloud menampilkan widget sebagai widget Tabel.
    • Untuk menampilkan nilai dan indikator visual nilai yang dibandingkan dengan rentang nilai yang mungkin, tetapkan nilai kolom ini ke "BAR". Saat Anda menggunakan konfigurasi ini, konsol Google Cloud akan menampilkan widget sebagai widget Daftar Teratas.
  • Untuk mengonfigurasi kolom yang ditampilkan dan properti kolom, gunakan array columnSettings. Jika kolom ini tidak ditentukan, maka tabel akan menampilkan satu kolom untuk setiap label.

    Nilai kolom "column" harus ditetapkan ke kunci label atau ke value, yang merujuk ke nilai terbaru deret waktu. Anda dapat menetapkan nama tampilan untuk kolom, dan Anda dapat mengonfigurasi perataan data dalam sel tabel:

    • Untuk menyesuaikan header kolom, tetapkan kolom displayName.
    • Untuk mewarnai sel yang menampilkan nilai terbaru berdasarkan perbandingan nilai dengan nilai minimum, tambahkan objek thresholds.
    • Untuk mengubah perataan teks, tambahkan kolom alignment.

    Contoh berikut mengilustrasikan dua kolom:

    "columnSettings": [
      {
        "column": "device_name",
        "displayName": "Device",
        "visible": true
      },
      {
        "alignment": "CENTER",
        "column": "value",
        "displayName": "Disk Write Bytes",
        "thresholds": [
          {
            "color": "YELLOW",
            "direction": "ABOVE",
            "value": 4000
          },
          {
            "color": "RED",
            "direction": "ABOVE",
            "value": 5000
          }
        ],
        "visible": true
      }
    ],
    

JSON berikut menjelaskan dasbor dengan dua tabel. Tabel pertama menampilkan dua jenis metrik, jumlah byte yang dibaca dari instance dan jumlah byte yang ditulis ke instance. Nilai gabungan ditampilkan bersama batang referensi. Tabel kedua menampilkan nilai terbaru dari satu jenis metrik, dan kolom nilai telah dikonfigurasi untuk memberi kode warna pada sel berdasarkan perbandingan nilai dengan nilai minimum:

{
  "displayName": "Example",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 44,
        "height": 17,
        "widget": {
          "title": "VM Instance - Disk read bytes [RATE], Disk write bytes [RATE]",
          "timeSeriesTable": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "groupByFields": []
                    },
                    "pickTimeSeriesFilter": {
                      "rankingMethod": "METHOD_MEAN",
                      "numTimeSeries": 30,
                      "direction": "TOP"
                    }
                  },
                  "unitOverride": "",
                  "outputFullDuration": true
                },
                "tableTemplate": "",
                "minAlignmentPeriod": "60s"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "groupByFields": []
                    },
                    "pickTimeSeriesFilter": {
                      "rankingMethod": "METHOD_MEAN",
                      "numTimeSeries": 30,
                      "direction": "TOP"
                    }
                  },
                  "unitOverride": "",
                  "outputFullDuration": true
                },
                "tableTemplate": "",
                "minAlignmentPeriod": "60s"
              }
            ],
            "metricVisualization": "BAR",
            "columnSettings": [
              {
                "column": "Name (from instance_id)",
                "visible": true
              },
              {
                "column": "zone",
                "visible": true
              },
              {
                "column": "device_name",
                "visible": true
              },
              {
                "column": "storage_type",
                "visible": true
              },
              {
                "column": "device_type",
                "visible": true
              },
              {
                "column": "value",
                "visible": true,
                "displayName": "Read bytes"
              },
              {
                "column": "value-1",
                "visible": true,
                "displayName": "Written bytes"
              }
            ],
            "opsAnalyticsSettings": {
              "maxRows": "0",
              "showFilterBar": false,
              "pageSize": "0"
            },
            "displayColumnType": false
          },
          "id": ""
        }
      },
      {
        "yPos": 17,
        "width": 44,
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "device_name",
                "displayName": "Device",
                "visible": true
              },
              {
                "alignment": "LEFT",
                "column": "instance_name",
                "displayName": "Instance name",
                "visible": true
              },
              {
                "column": "storage_type",
                "displayName": "Storage type",
                "visible": true
              },
              {
                "column": "device_type",
                "displayName": "Device Type",
                "visible": true
              },
              {
                "alignment": "CENTER",
                "column": "value",
                "displayName": "Disk Write Bytes",
                "thresholds": [
                  {
                    "color": "YELLOW",
                    "direction": "ABOVE",
                    "label": "",
                    "value": 4000
                  },
                  {
                    "color": "RED",
                    "direction": "ABOVE",
                    "label": "",
                    "value": 5000
                  }
                ],
                "visible": true
              },
              {
                "alignment": "LEFT",
                "column": "Name (from instance_id)",
                "displayName": "ID",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "displayColumnType": false,
            "metricVisualization": "NUMBER",
            "opsAnalyticsSettings": {
              "maxRows": "0",
              "pageSize": "0",
              "showFilterBar": false
            }
          }
        }
      }
    ]
  },
  "dashboardFilters": [],
  "labels": {}
}

Screenshot berikut menggambarkan tabel yang ditentukan sebelumnya:

Contoh dasbor dengan widget tabel.

Dasbor dengan widget Text

Contoh ini menunjukkan dasbor dengan 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
      }
    ]
  }
}

Widget teks terlihat mirip dengan contoh berikut:

Contoh widget teks.

Dasbor dengan widget AlertChart

Dasbor ini menampilkan dasbor dengan widget AlertChart:

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

Tidak seperti widget dasbor lainnya, Anda tidak menentukan judul atau filter metrik untuk widget ini. Sebagai gantinya, Anda menentukan nama resource untuk kebijakan pemberitahuan. Entri terakhir di kolom name adalah ID kebijakan pemberitahuan.

Diagram di dasbor akan terlihat mirip dengan contoh berikut:

Contoh diagram untuk kebijakan pemberitahuan.

Dalam contoh ini, kebijakan pemberitahuan memantau penggunaan CPU dua virtual machine yang berbeda. Garis putus-putus menunjukkan nilai minimum kondisi, yang ditetapkan ke 50%. Chip hijau dengan label No incidents menunjukkan bahwa tidak ada insiden terbuka untuk kebijakan pemberitahuan. Jika Anda menempatkan kursor pada chip insiden, dialog akan terbuka dan menautkan ke kebijakan pemberitahuan yang mendasarinya.

Dasbor dengan widget ErrorReportingPanel

Dasbor ini menampilkan dasbor dengan 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,
      }
    ]
  }
}

Sebaiknya konfigurasikan tinggi panel pelaporan error menjadi minimal 16 unit, dan lebarnya menjadi minimal 24 unit. Pada contoh sebelumnya, widget memiliki tinggi 16 unit dan lebar 24 unit.

Panel pelaporan error menampilkan grup error dari project yang dipilih, dan panel ini dapat membatasi grup error ke jenis resource, layanan, atau versi layanan tertentu. Contoh berikut menggambarkan panel pelaporan error:

Contoh panel konfigurasi panel pelaporan error.

Dasbor dengan widget FilterControl

Jika Anda membuat variabel, Monitoring akan memperbarui toolbar dasbor kustom Anda untuk menampilkan filter untuk variabel tersebut. Nama filter adalah tanda dolar $ yang diikuti dengan nama variabel. Contoh, $my-variable. Setiap filter berisi menu yang memungkinkan Anda mengubah nilai variabel.

Mengelola nilai variabel menggunakan filter toolbar mungkin tidak optimal. Misalnya, Anda memiliki dasbor dengan banyak diagram dan Anda memiliki variabel yang hanya berlaku untuk dua diagram. Untuk skenario ini, Anda dapat melakukan hal berikut:

  1. Tambahkan widget CollapsibleGroup ke dasbor Anda dan tempatkan kedua diagram tersebut dalam grup.
  2. Tambahkan widget FilterControl ke dasbor Anda. Anda mengonfigurasi widget ini untuk variabel dan juga menambahkan widget ini ke grup.

    Widget grup berisi widget FilterControl yang memungkinkan Anda mengubah nilai variabel, dan widget yang menerapkan variabel. Selain itu, toolbar dasbor tidak lagi menampilkan filter untuk variabel.

Dasbor berikut berisi widget FilterControl:

{
  "displayName": "Dashboard with filter control widget",
  "dashboardFilters": [
    {
      "filterType": "RESOURCE_LABEL",
      "labelKey": "project_id",
      "stringValue": "my-project",
      "templateVariable": "proj",
      "valueType": "STRING"
    }
  ],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "yPos": 70,
        "height": 5,
        "width": 16,
        "widget": {
          "title": "Project control",
          "filterControl": {
            "templateVariable": "proj"
          }
        }
      }
    ]
  }
}

Contoh sebelumnya menentukan satu variabel, proj, dan menambahkan satu widget FilterControl. Dengan konfigurasi ini, menu untuk variabel dipindahkan dari toolbar dasbor ke dalam widget dengan widget berjudul Project control. Widget tersebut berisi menu yang dapat Anda gunakan untuk memilih project.

Dasbor dengan widget IncidentList

Dasbor ini menampilkan dasbor dengan 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
      }
    ]
  }
}

Contoh sebelumnya menetapkan kolom title ke Incidents, dan mengonfigurasi widget untuk menampilkan semua insiden untuk resource berjenis gce_instance. Saat mengonfigurasi widget ini, Anda dapat memilih beberapa kebijakan pemberitahuan atau beberapa jenis resource.

Widget insiden di dasbor terlihat mirip dengan contoh berikut:

Contoh widget insiden.

Dasbor dengan widget LogsPanel

Dasbor ini menampilkan dasbor dengan 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
      }
    ]
  }
}

Sebaiknya konfigurasikan tinggi panel log menjadi minimal 3 unit, dan lebarnya menjadi minimal 4 unit. Dalam contoh sebelumnya, widget memiliki tinggi 4 unit dan lebar 6 unit.

Panel log menampilkan log dari project yang tercantum di kolom resourceNames. Google Cloud Contoh sebelumnya hanya menentukan satu project; namun, Anda dapat menyertakan beberapa project dalam daftar ini.

Panel log terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget panel log.

Untuk informasi pemecahan masalah, lihat Panggilan API untuk membuat dasbor dengan panel log gagal.

Dasbor dengan widget CollapsibleGroup

Dasbor ini menampilkan dasbor dengan 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
      }
    ]
  }
}

Pada contoh sebelumnya, widget grup yang dapat diciutkan berisi satu diagram yang menampilkan penggunaan CPU instance VM. Widget grup yang dapat diciutkan mencakup seluruh baris tabel. Widget disertakan dalam grup jika spesifikasi posisi (x,y) dan tinggi grup mencakup posisi (x,y) widget. Pada contoh sebelumnya, grup berada di posisi (0,0) dan tingginya adalah 4. xyChart berada di posisi (0,0), sehingga disertakan dalam grup. Namun, jika posisi diagram tersebut diubah menjadi (0,5), diagram tersebut akan dikecualikan dari grup. Terakhir, saat posisi (x,y) widget menyebabkan widget disertakan dalam grup, tinggi widget grup yang dapat diciutkan mungkin diperluas.

Untuk menyertakan widget grup di dasbor, dasbor harus memiliki MosaicLayout.

Widget grup yang dapat diciutkan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget grup yang dapat diciutkan.

Dasbor dengan widget SingleViewGroup

Widget SingleViewGroup menampilkan satu anggota grup dalam satu waktu. Anda menentukan diagram dan widget lain yang menjadi anggota dalam grup. Selain itu, Anda dapat mengontrol widget mana dalam grup yang ditampilkan dengan menggunakan menu di widget SingleViewGroup.

Widget SingleViewGroup mendukung dua gaya tampilan, DROPDOWN dan TAB. Perbedaan antara kedua gaya ini adalah cara Anda memilih anggota grup yang akan ditampilkan. Widget dengan gaya DROPDOWN menyediakan menu. Widget dengan gaya TAB menyediakan tab di toolbar widget:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "singleViewGroup": {
            "displayType": "DROPDOWN"
          },
          "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
      }
    ]
  }
}

Seperti yang ditunjukkan dalam contoh sebelumnya, array tiles berisi satu objek SingleViewGroup; namun, objek tersebut tidak menentukan objek mana yang dikandungnya. Sebagai gantinya, keanggotaan dalam objek SingleViewGroup ditentukan oleh nilai kolom width dan yPos. Objek yang nilainya untuk kolom width dan yPos cocok dengan nilai objek SingleViewGroup dimuat oleh objek SingleViewGroup. Dalam contoh sebelumnya, objek SingleViewGroup berisi dua diagram.

Dasbor dengan widget SectionHeader

Widget SectionHeader membuat pemisah horizontal di dasbor Anda, dan membuat entri dalam daftar isi dasbor. Anda dapat menyesuaikan entri dalam daftar isi, dan menyertakan informasi tambahan dalam widget. Anda juga dapat mengonfigurasi widget untuk menambahkan pemisah ke daftar isi setelah entri header bagian.

Dasbor ini menampilkan dasbor dengan satu diagram dan 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
      }
    ]
  }
}

Dalam objek SectionHeader, nilai kolom title ditampilkan baik di widget maupun di daftar isi. Nilai kolom subtitle hanya ditampilkan oleh widget. Jika nilai dividerBelow adalah true, maka pembagi ditambahkan ke daftar isi.

Dasbor dengan widget SLO

Dasbor ini menampilkan dasbor dengan 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
      }
    ]
  }
}

Seperti yang ditunjukkan JSON sebelumnya, diagram SLO ditampilkan sebagai objek XyChart. Objek ini menentukan semua kolom agregasi, nilai minimum, dan nilai kolom filter adalah pemilih deret waktu. Untuk mengetahui informasi selengkapnya tentang pemilih ini, lihat Mengambil data SLO.

Widget SLO terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget SLO.

Dasbor dengan widget kosong

Contoh ini menunjukkan dasbor dengan widget placeholder yang kosong. Nilai kolom displayName muncul di widget.

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

Dasbor akan terlihat mirip dengan contoh berikut:

Contoh dasbor dengan widget kosong.

Dasbor dengan visibilitas widget yang dikonfigurasi

Dasbor ini berisi widget teks dan variabel. Nilai variabel menentukan apakah widget teks ditampilkan atau disembunyikan:

  • Variabel bernama show memiliki nilai default a. Nilai variabel ditentukan sebagai a, b, dan c. Karena kolom valueType adalah STRING_ARRAY, variabel juga dapat ditetapkan ke nilai seperti a or b.

  • Di widget teks, entri berlabel visibilityCondition menentukan visibilitas widget. Jika nilai variabel show menyertakan b, widget teks akan ditampilkan. Jika tidak, widget teks tidak akan ditampilkan.


{
  "displayName": "Conditional Widget Example",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "yPos": 16,
        "width": 24,
        "height": 16,
        "widget": {
          "title": "A text widget",
          "text": {
            "content": "Example showing how to use a custom variable to control visibility.",
            "format": "MARKDOWN",
            "style": {
              "backgroundColor": "#FFFFFF",
              "fontSize": "FS_LARGE",
              "horizontalAlignment": "H_LEFT",
              "padding": "P_EXTRA_SMALL",
              "pointerLocation": "POINTER_LOCATION_UNSPECIFIED",
              "textColor": "#212121",
              "verticalAlignment": "V_TOP"
            }
          },
          "visibilityCondition": {
            "templateVariableCondition": {
              "templateVariable": "show",
              "templateVariableValue": "b",
              "comparator": "REGEX_FULL_MATCH"
            }
          }
        }
      }
    ]
  },
  "dashboardFilters": [
    {
      "labelKey": "",
      "templateVariable": "show",
      "stringArrayValue": {
        "values": [
          "a"
        ]
      },
      "filterType": "VALUE_ONLY",
      "valueType": "STRING_ARRAY",
      "stringArray": {
        "values": [
          "a",
          "b",
          "c"
        ]
      }
    }
  ],
  "labels": {}
}

Untuk mengetahui batasan terkait konfigurasi visibilitas widget, lihat Menetapkan visibilitas widget.