Definisi dasbor JSON memungkinkan Anda mengonfigurasi tata letak dasbor kustom, filter, anotasi peristiwa, dan widget secara terprogram menggunakan Cloud Monitoring API atau Google Cloud CLI. Dokumen ini memberikan contoh konfigurasi JSON dan menunjukkan cara setiap definisi dirender di dasbor kustom.
Untuk menginstal definisi dasbor JSON bawaan untuk layanan Google Cloud dari GitHub, lihat Menginstal template dasbor.
Kapan harus 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 Google Cloud konsol 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 Monitoring, kueri MQL, atau kueri PromQL:
Untuk menggunakan filter Monitoring, isi kolom
timeSeriesFilter. 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:
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:
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:
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:
Mengaktifkan peristiwa dasbor, serta menambahkan 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 virtual machine,
dengan menyertakan kolom annotations dalam objek Dashboard. Kolom annotations berisi instance objek DashboardAnnotations, yang berisi dua kolom:
Kolom
defaultResourceNamesmencantumkan default tingkat dasbor untuk projectGoogle Cloud guna menelusuri peristiwa. Jika Anda tidak menentukan kolom ini, project yang Anda pilih 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. Jikatrue, tombol akan berada di posisiondan peristiwa akan ditampilkan di dasbor. Jikafalse, tombol berada di posisioff. - Kolom
eventType, yang berisi nilai dari enumerasiEventType. - Kolom
filter, yang memungkinkan Anda menentukan kueri untuk ditambahkan ke kueri khusus peristiwa. Jika nilai kolom ini adalah string kosong, kueri khusus peristiwa akan digunakan. - Kolom
resourceNames, yang memungkinkan Anda menentukan daftar projectGoogle Cloud untuk menelusuri peristiwa. Jika kolom ini berupa array kosong, project yang Anda pilih akan ditelusuri.
- Kolom
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": {}
}
Pada contoh sebelumnya, kolom filter digunakan untuk membatasi kueri ke cluster my-cluster. Kolom displayName ditetapkan ke string kosong, sehingga nama default untuk jenis peristiwa ditampilkan di tombol peristiwa. Terakhir, karena kolom resourceNames ditetapkan ke array kosong, entri log dalam project Google Cloud Anda 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 dengan filter yang disematkan karena variabel berlaku untuk widget tertentu.
Jika Anda membuat filter atau variabel yang disematkan, Monitoring akan memperbarui toolbar dasbor kustom 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 untuk 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 dalam contoh sebelumnya, kolom labels diimplementasikan sebagai
map, dengan kolom key dan value sama-sama berupa 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 mencakup contoh dasbor yang berisi berbagai jenis widget.
Dasbor dengan XyChart
Contoh ini menunjukkan dasbor dengan XyChart dasar. Jika
Anda pernah menggunakan konsol Google Cloud untuk membuat diagram di dasbor, diagram tersebut
adalah instance widget XyChart.
Serupa dengan fungsi yang disediakan di konsol Google Cloud , API ini
menyediakan opsi untuk mengubah PlotType diagram atau untuk
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 terlihat mirip dengan contoh berikut:
Bagian berikutnya menggambarkan cara membuat widget diagram Observability Analytics, cara menampilkan nilai minimum pada diagram, dan cara mengonfigurasi apakah diagram menggunakan sumbu Y kiri, sumbu Y kanan, atau keduanya.
Dasbor dengan diagram Observability Analytics
Contoh ini menunjukkan dasbor dengan diagram Observability 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 terlihat mirip dengan contoh berikut:

Dasbor dengan XyChart dan nilai minimum
Contoh ini menunjukkan 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:
Anda dapat membuat diagram yang menampilkan beberapa jenis metrik dan menggunakan sumbu kiri dan kanan. Contoh sebelumnya mengilustrasikan 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 terlihat mirip dengan contoh berikut:
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:
Dasbor dengan XyChart yang dikonfigurasi sebagai histogram
Untuk melihat data terbaru sebagai histogram, konfigurasikan array DataSet.dimensions, yang merupakan kolom dalam XyChart.
Histogram memberikan informasi tentang frekuensi relatif nilai terbaru dari beberapa deret waktu. Artinya, sumbu x diindeks oleh bin, yang masing-masing sesuai dengan rentang nilai.
Sumbu y menentukan jumlah, yang merupakan jumlah sampel yang nilainya berada dalam rentang bin.
Untuk mengonfigurasi histogram, dalam struktur XyChart, lakukan hal berikut:
- Tetapkan kolom
DataSet.plotTypeke"STACKED_BAR". - Tetapkan kolom
DataSet.dimension.columnke"metric_value".
Jika Anda ingin mengontrol model bin, bukan membiarkan Cloud Monitoring menentukan bin berdasarkan data Anda, tambahkan kolom berikut ke struktur DataSet.dimension:
xMindanxMax: Ditetapkan ke nilai minimum dan maksimum untuk jenis metrik.maxBinCountataunumericBinSize: Tetapkan jumlah bin atau ukuran bin. Jika Anda menetapkan jumlah bin, sebaiknya nilainya minimal 5, tetapi tidak lebih dari 50. Jumlah maksimum bin adalah 1.000.
JSON berikut menjelaskan dasbor yang menampilkan data dengan visualisasi histogram:
{
"displayName": "Histogram example",
"dashboardFilters": [],
"description": "",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"height": 16,
"width": 24,
"widget": {
"title": "VM Instance - CPU utilization [MEAN]",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR"
},
"dataSets": [
{
"dimensions": [
{
"column": "metric_value"
}
],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"groupByFields": [],
"perSeriesAligner": "ALIGN_MEAN"
},
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
}
}
}
],
"thresholds": [],
"yAxis": {
"scale": "LINEAR"
}
}
}
}
]
}
}
Kolom dataSets.dimensions menyebabkan XyChart dirender sebagai histogram.
Histogram di dasbor contoh menggunakan setelan default, sehingga kolom dimension berisi satu subkolom, "column": "metric_value".
Screenshot berikut menunjukkan XyChart yang dikonfigurasi sebagai histogram:
Dasbor dengan widget XyChart yang menetapkan penggantian rentang waktu
Secara default, widget dasbor menampilkan data selama rentang waktu yang ditentukan di tingkat dasbor. Namun, widget XyChart
menyediakan kemampuan penggantian rentang waktu. Gunakan kemampuan ini jika Anda ingin diagram menampilkan data dalam rentang waktu yang lebih lama atau lebih singkat daripada yang sesuai untuk widget dasbor lainnya. Misalnya, pertimbangkan kasus penggunaan berikut:
Dasbor menampilkan metrik kuota, yang memiliki 1 sampel per hari, dan data metrik yang diambil sampelnya setiap 60 detik. Diagram metrik kuota memerlukan rentang waktu minimal satu hari, mungkin selama satu minggu. Namun, rentang waktu ini terlalu lama untuk melihat lonjakan atau penurunan dalam metrik yang diambil sampelnya setiap 60 detik.
Untuk metrik, Anda ingin melihat tren dan pengukuran saat ini. Oleh karena itu, Anda menambahkan dua diagram ke dasbor. Untuk satu diagram, Anda menetapkan penggantian rentang waktunya menjadi delapan hari, sedikit lebih lama dari seminggu. Diagram lainnya menampilkan data satu jam, yang merupakan setelan rentang waktu dasbor.
Untuk mengonfigurasi penggantian rentang waktu, tetapkan kolom widget.timeRange. Dalam contoh berikut, kolom ini ditetapkan ke "relativeDuration": "21600s", yang berarti diagram menampilkan data 6 jam terakhir:
{
"displayName": "Test Dashboard",
"dashboardFilters": [],
"description": "",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"xPos": 24,
"height": 16,
"width": 24,
"widget": {
"title": "VM Instance - CPU utilization [MEAN]",
"timeRange": {
"relativeDuration": "21600s"
},
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR"
},
"dataSets": [
{
"minAlignmentPeriod": "60s",
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"groupByFields": [],
"perSeriesAligner": "ALIGN_MEAN"
},
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
}
}
}
],
"thresholds": [],
"yAxis": {
"scale": "LINEAR"
}
}
}
}
]
}
}
Dasbor dengan Scorecard dasar
Dasbor ini menampilkan Scorecard tanpa pengukur atau
sparkline. Contoh ini menunjukkan pemakaian CPU Compute Engine dan scorecard
memiliki dua nilai minimum. Satu nilai minimum menggunakan warna kuning untuk menunjukkan bahwa
penggunaan CPU lebih dari 70%; 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 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
}
]
}
}
Widget ini dapat menampilkan beberapa kartu skor. Misalnya, jika setelan agregasi menghasilkan tiga deret waktu, widget ini akan menampilkan tiga scorecard, satu untuk setiap deret waktu.
Dasbor akan terlihat mirip dengan contoh berikut:
Dasbor dengan Scorecard yang berisi GaugeView
Dasbor ini menambahkan pengukur ke kartu skor dasar dalam contoh sebelumnya.
Objek GaugeView dapat menentukan batas atas dan bawah untuk menentukan
rentang nilai yang akan ditampilkan pada pengukur. Karena kartu skor menampilkan nilai dari 0 hingga 1, batas atas dan bawah tersebut masuk akal. Untuk menambahkan pengukur, tambahkan
hal berikut ke JSON untuk kartu skor dasar:
"gaugeView": {
"lowerBound": 0,
"upperBound": 1,
},
Dalam spesifikasi dasbor yang dimodifikasi berikut, nilai saat ini berada di bawah nilai minimum, yang diwarnai dengan tepat 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_SUM",
"groupByFields": [
"resource.labels.\"zone\""
],
"perSeriesAligner": "ALIGN_MEAN"
},
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
}
}
},
"title": "VM Instance - CPU utilization [MEAN]"
},
"width": 16
}
]
}
}
Widget ini dapat menampilkan beberapa pengukur. Misalnya, screenshot berikut menunjukkan widget Scorecard yang dikonfigurasi dengan GaugeView, dan widget tersebut menampilkan tiga pengukur:
Jumlah pengukur yang ditampilkan oleh widget bergantung pada setelan agregasi Anda. Dalam contoh ini, setelan agregasi menghasilkan tiga deret waktu, sehingga tiga pengukur ditampilkan. Anda menentukan nilai minimum di tingkat widget, sehingga nilai minimum tersebut berlaku untuk setiap deret waktu. Dalam contoh ini, satu pengukur berwarna merah, satu berwarna kuning, dan yang ketiga berwarna hijau.
Dasbor dengan Scorecard yang memiliki SparkChartView
Dasbor ini menggantikan pengukur dalam contoh sebelumnya dengan diagram bentuk mini.
Objek SparkChartView dapat membuat diagram garis atau diagram batang di kartu skor.
Contoh ini menggunakan garis. Selama nilainya tidak melanggar nilai minimum, nilainya akan 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:
Dasbor dengan widget PieChart
Dasbor dapat menampilkan data menggunakan diagram lingkaran. Setiap deret waktu menyumbangkan satu irisan ke 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, tetapkan 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:
Dasbor dengan widget Treemap
Untuk melihat data terbaru sebagai rangkaian 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 berdasarkan label zone.
Jika Anda menetapkan jenis widget ke treemap, setiap persegi panjang pada
treemap akan sesuai dengan satu zona. Saturasi warna persegi panjang sebanding dengan nilai yang diwakilinya.
Saat menjelajahi peta hierarki, gunakan kursor untuk mengaktifkan tooltip untuk persegi panjang.
JSON berikut mengonfigurasi widget Treemap yang menggabungkan deret waktu berdasarkan 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 menampilkan widget treemap dengan konfigurasi sebelumnya:
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; melainkan 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 arraydataSetssesuai 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
TimeSeriesQuerymenentukan jenis metrik. - Jika Anda ingin tabel menampilkan nilai gabungan, dengan data
yang digabungkan selama nilai rentang waktu yang ditetapkan oleh dasbor, tetapkan
kolom
timeSeriesQuery.outputFullDurationketrue.
- Kolom
Untuk mengonfigurasi jumlah maksimum baris yang akan ditampilkan, tetapkan kolom
pickTimeSeriesFilter. Misalnya, untuk menampilkan hanya 2 deret waktu dengan nilai rata-rata terbesar selama 10 menit sebelumnya, sertakan hal 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
nilainya ke
"NUMBER". Saat Anda menggunakan konfigurasi ini, konsolGoogle Cloud akan menampilkan widget sebagai widget Table. - Untuk menampilkan nilai dan indikator visual nilai dibandingkan dengan
rentang nilai yang mungkin, tetapkan nilai kolom ini ke
"BAR". Saat Anda menggunakan konfigurasi ini, konsolGoogle Cloud akan menampilkan widget sebagai widget Daftar Teratas.
- Untuk hanya menampilkan nilai seperti "25%", hapus kolom ini atau tetapkan
nilainya ke
Untuk mengonfigurasi kolom yang ditampilkan dan properti kolom, gunakan array
columnSettings. Jika kolom ini tidak ditentukan, tabel akan menampilkan satu kolom untuk setiap label.Nilai kolom
"column"harus ditetapkan ke kunci label atau kevalue, yang mengacu pada 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 } ],- Untuk menyesuaikan header kolom, tetapkan kolom
JSON berikut menjelaskan dasbor dengan dua tabel. Tabel pertama menampilkan dua jenis metrik, yaitu jumlah byte yang dibaca dari instance dan jumlah byte yang ditulis ke instance. Nilai gabungan ditampilkan bersama dengan batang referensi. Tabel kedua menunjukkan 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 mengilustrasikan tabel yang ditentukan sebelumnya:
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:
Dasbor dengan widget AlertChart
Contoh ini menunjukkan 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 perlu 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 terlihat mirip dengan contoh berikut:
Dalam contoh ini, kebijakan pemberitahuan memantau penggunaan CPU dari dua virtual machine yang berbeda. Garis putus-putus menunjukkan nilai minimum kondisi, yang ditetapkan ke 50%. Chip hijau dengan label No alerts
menunjukkan bahwa tidak ada pemberitahuan terbuka untuk kebijakan pemberitahuan. Jika
Anda menempatkan kursor pada chip pemberitahuan, dialog yang
menautkan ke kebijakan pemberitahuan yang mendasarinya akan terbuka.
Dasbor dengan widget ErrorReportingPanel
Contoh ini menunjukkan 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 minimal 16 unit, dan lebarnya minimal 24 unit. Pada contoh sebelumnya, widget memiliki tinggi 16 unit dan lebar 24 unit.
Panel Error Reporting menampilkan grup error dari project yang dipilih, dan panel ini dapat membatasi grup error ke jenis resource, layanan, atau versi layanan tertentu. Contoh berikut mengilustrasikan panel pelaporan error:
Dasbor dengan widget FilterControl
Jika Anda membuat variabel, Monitoring akan memperbarui toolbar dasbor kustom Anda untuk menampilkan filter variabel. Nama filter adalah tanda dolar $ 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 memiliki variabel yang hanya berlaku untuk dua diagram. Untuk skenario ini, Anda dapat melakukan hal berikut:
- Tambahkan widget
CollapsibleGroupke dasbor Anda dan tempatkan kedua diagram tersebut dalam grup. Tambahkan widget
FilterControlke dasbor Anda. Anda mengonfigurasi widget ini untuk variabel dan Anda juga menambahkan widget ini ke grup.Widget grup berisi widget
FilterControlyang memungkinkan Anda mengubah nilai variabel, dan widget yang menerapkan variabel tersebut. 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 widget berjudul Project control.
Widget tersebut berisi menu yang dapat Anda gunakan untuk memilih project.
Dasbor dengan widget IncidentList untuk mencantumkan pemberitahuan
Contoh ini menunjukkan dasbor dengan widget IncidentList untuk mencantumkan pemberitahuan:
{
"category": "CUSTOM",
"dashboardFilters": [],
"displayName": "Incident widget",
"labels": {},
"mosaicLayout": {
"columns": 12,
"tiles": [
{
"height": 5,
"widget": {
"incidentList": {
"monitoredResources": [],
"policyNames": []
},
"title": "Alerts"
},
"width": 8,
"xPos": 0,
"yPos": 0
}
]
}
}
Contoh sebelumnya menetapkan kolom title ke Alerts, dan mengonfigurasi widget untuk menampilkan semua pemberitahuan untuk resource jenis gce_instance.
Saat mengonfigurasi widget ini, Anda dapat memilih beberapa kebijakan pemberitahuan atau beberapa jenis resource.
Di konsol Google Cloud , widget ini disebut widget Alerts. Widget akan terlihat mirip dengan contoh berikut:
Dasbor dengan widget LogsPanel
Contoh ini menunjukkan 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 minimal 3 unit, dan lebarnya minimal 4 unit. Pada contoh sebelumnya, widget memiliki tinggi 4 unit dan lebar 6 unit.
Panel log menampilkan log dari project Google Cloud yang tercantum
dalam kolom resourceNames. Contoh sebelumnya hanya menentukan satu project;
namun, Anda dapat menyertakan beberapa project dalam daftar ini.
Panel log terlihat mirip dengan contoh berikut:
Untuk informasi pemecahan masalah, lihat Panggilan API untuk membuat dasbor dengan panel log gagal.
Dasbor dengan widget CollapsibleGroup
Contoh ini menunjukkan 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
}
]
}
}
Dalam 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 dan tinggi (x,y) grup menyertakan 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:
Dasbor dengan widget SingleViewGroup
Widget SingleViewGroup menampilkan satu anggota grup dalam satu waktu. Anda menentukan diagram dan widget lain yang merupakan 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
dimuatnya. 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 pembagi horizontal di dasbor Anda, dan membuat entri dalam daftar isi dasbor. Anda dapat menyesuaikan entri dalam daftar isi, dan menyertakan
informasi tambahan di widget. Anda juga dapat mengonfigurasi widget
untuk menambahkan pembagi ke daftar isi setelah entri header bagian.
Contoh ini menunjukkan 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
di widget dan di daftar isi. Nilai kolom
subtitle hanya ditampilkan oleh widget. Jika nilai
dividerBelow adalah true, pembagi akan ditambahkan ke daftar isi.
Dasbor dengan widget SLO
Contoh ini menunjukkan 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 direpresentasikan 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:
Dasbor dengan data rekaman aktivitas
Untuk menampilkan data trace di dasbor, gunakan struktur
XyChart atau TimeSeriesTable.
Jika Anda menginginkan peta panas atau diagram garis, gunakan struktur XyChart. Jika Anda
menginginkan tampilan tabel, gunakan struktur TimeSeriesTable.
Dasbor ini menampilkan data trace sebagai peta panas dan dalam dua tabel:
{
"displayName": "Example trace chart",
"dashboardFilters": [],
"description": "",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"height": 22,
"width": 48,
"widget": {
"title": "Visualizer",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR"
},
"dataSets": [
{
"plotType": "HEATMAP",
"timeSeriesQuery": {
"traceQuery": {
"resourceContainer": "projects/my-project",
"spanDataValue": "SPAN_DURATION",
"spanFilters": {
"apphubServices": [],
"apphubWorkloads": [],
"applicationIds": [],
"attributes": [],
"displayNames": [
"/taskqueue.QueryAndOwnTasks"
],
"isRootSpan": false,
"kinds": [],
"services": [],
"status": []
}
}
}
}
],
"thresholds": [],
"yAxis": {
"scale": "LINEAR"
}
}
}
},
{
"yPos": 22,
"height": 16,
"width": 24,
"widget": {
"title": "Grouped span table",
"timeSeriesTable": {
"columnSettings": [],
"dataSets": [
{
"breakdowns": [
{
"aggregationFunction": {
"type": "none"
},
"column": "serviceOrWorkload",
"limit": 0,
"sortOrder": "SORT_ORDER_NONE"
}
],
"timeSeriesQuery": {
"traceQuery": {
"resourceContainer": "projects/my-project",
"spanDataValue": "SPAN_DURATION",
"spanFilters": {
"apphubServices": [],
"apphubWorkloads": [],
"applicationIds": [],
"attributes": [],
"displayNames": [],
"isRootSpan": false,
"kinds": [],
"services": [],
"status": []
}
}
}
}
],
"metricVisualization": "NUMBER"
}
}
},
{
"yPos": 22,
"xPos": 24,
"height": 16,
"width": 24,
"widget": {
"title": "Span table",
"timeSeriesTable": {
"columnSettings": [],
"dataSets": [
{
"timeSeriesQuery": {
"traceQuery": {
"resourceContainer": "projects/my-project",
"spanDataValue": "SPAN_DURATION",
"spanFilters": {
"apphubServices": [],
"apphubWorkloads": [],
"applicationIds": [],
"attributes": [],
"displayNames": [],
"isRootSpan": false,
"kinds": [],
"services": [],
"status": []
}
}
}
}
],
"metricVisualization": "NUMBER"
}
}
}
]
}
}
Seperti yang ditunjukkan dalam JSON sebelumnya, Anda dapat mengonfigurasi filter dan menerapkannya ke masing-masing objek.
Dasbor akan terlihat mirip dengan gambar berikut:
Dasbor dengan widget kosong
Contoh ini menunjukkan dasbor dengan widget placeholder kosong.
Nilai kolom displayName akan muncul di widget.
{
"displayName": "Demo Dashboard",
"gridLayout": {
"widgets": [
{
"blank": {}
}
]
}
}
Dasbor akan terlihat mirip dengan contoh berikut:
Dasbor dengan visibilitas widget yang dikonfigurasi
Dasbor ini berisi widget teks dan variabel. Nilai variabel menentukan apakah widget teks ditampilkan atau disembunyikan:
Variabel bernama
showmemiliki nilai defaulta. Nilai variabel ditentukan sebagaia,b, danc. Karena kolomvalueTypeadalahSTRING_ARRAY, variabel juga dapat ditetapkan ke nilai sepertia or b.Di widget teks, entri berlabel
visibilityConditionmenentukan visibilitas widget. Jika nilai variabelshowmenyertakanb, 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 batasan terkait konfigurasi visibilitas widget, lihat Menetapkan visibilitas widget.