Halaman ini mengilustrasikan cara membuat dasbor menggunakan Cloud Monitoring API. Untuk setiap contoh, definisi dasbor dalam JSON dan dasbor yang sesuai akan ditampilkan. Anda dapat memberikan JSON ke endpoint Google Cloud CLI dan Cloud Monitoring API.
Cloud Monitoring juga menyediakan kumpulan definisi dasbor yang diseleksi di GitHub. Anda dapat menginstal definisi ini di project Google Cloud sebagai dasbor kustom. Untuk informasi tentang repositori ini dan cara menginstal dasbor ini, lihat Menginstal contoh 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 konsol Google 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 informasi selengkapnya, lihat Membuat diagram.Untuk menggunakan kueri PromQL, isi kolom
prometheusQuery
. Untuk 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 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 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 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 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
defaultResourceName
mencantumkan default tingkat dasbor untuk project Google Cloud guna menelusuri peristiwa. 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. Jikatrue
, tombol berada di posision
dan peristiwa 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 project Google Cloud untuk menelusuri peristiwa. Jika kolom ini adalah 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-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. Untuk mengetahui informasi selengkapnya dan contoh, 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
diterapkan 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
.
Serupa dengan fungsi yang disediakan di konsol Google Cloud, API ini 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 terlihat mirip dengan contoh berikut:
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 `TABLE_NAME_OF_LOG_VIEW`"
}
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
}
]
},
"labels": {}
}
Diagram di dasbor terlihat mirip dengan contoh berikut:
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
}
]
}
}
Pada 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 memetakan 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 terlihat mirip dengan contoh berikut:
Dasbor dengan Scorecard
dasar
Dasbor ini menampilkan Scorecard
tanpa pengukur atau
garis percik. Contoh ini menunjukkan penggunaan CPU Compute Engine dan kartu skor 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 penggunaan 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
}
]
}
}
Dasbor terlihat mirip dengan contoh berikut:
Dasbor dengan Scorecard
dengan 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
hal berikut ke JSON untuk kartu skor dasar:
"gaugeView": {
"lowerBound": 0,
"upperBound": 1,
},
Berikut adalah spesifikasi dasbor lengkap yang diubah: Nilai saat ini berada di bawah nilai minimum, yang diberi warna 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:
Dasbor dengan Scorecard
dengan SparkChartView
Dasbor ini menggantikan pengukur dalam contoh sebelumnya dengan garis percik.
Objek SparkChartView
dapat membuat diagram garis atau diagram batang di kartu skor.
Contoh ini menggunakan garis. Selama nilai tidak melanggar nilai minimum, nilai tersebut akan berwarna hijau. Untuk menambahkan garis percik, ganti objek JSON gaugeView
di
diagram sebelumnya dengan kode 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 berkontribusi satu irisan pada lingkaran. Diagram lingkaran tidak menampilkan data dari waktu ke waktu; sebagai gantinya, diagram ini 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 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; sebagai gantinya, tabel 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 arraydataSets
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
ketrue
.
- Kolom
Untuk mengonfigurasi jumlah maksimum baris yang akan ditampilkan, tetapkan kolom
pickTimeSeriesFilter
. Misalnya, untuk hanya menampilkan dua 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
nilai ke
"NUMBER"
. Saat Anda menggunakan konfigurasi ini, Konsol Google Cloud akan menampilkan widget sebagai widget Tabel. - Untuk menampilkan nilai dan indikator visual nilai 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 hanya menampilkan nilai seperti "25%", hapus kolom ini atau tetapkan
nilai 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 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 } ],
- 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 panel 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 menampilkan 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
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 terlihat mirip dengan contoh berikut:
Dalam contoh ini, kebijakan pemberitahuan memantau penggunaan CPU dari dua VM 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 yang tertaut 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 minimal 16 unit, dan lebarnya 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 mengilustrasikan panel pelaporan error:
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 jenis 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:
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 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 di kolom resourceNames
. Contoh sebelumnya hanya menentukan satu project;
tetapi, 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
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 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 akan dikecualikan dari grup. Terakhir, saat
posisi (x,y) widget menyebabkan widget disertakan dalam grup, tinggi widget grup yang dapat diciutkan dapat 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 pada satu waktu. Anda menentukan diagram dan widget lain yang merupakan anggota
dalam grup. Selain itu, Anda mengontrol widget mana dalam grup yang ditampilkan
dengan menggunakan menu di widget SingleViewGroup
.
Dasbor ini menampilkan dasbor dengan widget SingleViewGroup
:
{
"dashboardFilters": [],
"displayName": "Example",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"height": 16,
"widget": {
"singleViewGroup": {},
"title": "Untitled group"
},
"width": 24,
"yPos": 16
},
{
"height": 16,
"widget": {
"title": "VM Instance - Disk read bytes [RATE]",
"xyChart": {
"chartOptions": {
"mode": "COLOR"
},
"dataSets": [
{
"minAlignmentPeriod": "60s",
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_RATE"
},
"filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\""
}
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
},
"width": 24,
"yPos": 16
},
{
"height": 16,
"widget": {
"title": "VM Instance - Disk write bytes [RATE]",
"xyChart": {
"chartOptions": {
"mode": "COLOR"
},
"dataSets": [
{
"minAlignmentPeriod": "60s",
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_RATE"
},
"filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
}
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
},
"width": 24,
"yPos": 16
}
]
}
}
Seperti yang ditunjukkan pada contoh sebelumnya, array tiles
berisi satu
objek SingleViewGroup
; namun, objek tersebut tidak menentukan objek
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
akan dimuat oleh
objek SingleViewGroup
. Pada contoh sebelumnya, objek SingleViewGroup
berisi dua diagram.
Dasbor dengan widget SectionHeader
Widget SectionHeader
membuat pemisah horizontal di dasbor, dan membuat entri dalam tabel konten 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
, pembagi akan 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 direpresentasikan sebagai
objek XyChart
. Objek ini menentukan semua
kolom agregasi, nilai minimum, dan
nilai kolom filter
adalah pemilih deret waktu. Untuk informasi selengkapnya tentang pemilih ini, lihat Mengambil data SLO.
Widget SLO terlihat mirip dengan contoh berikut:
Dasbor dengan widget kosong
Contoh ini menampilkan dasbor dengan widget placeholder kosong.
Nilai kolom displayName
akan muncul di widget.
{
"displayName": "Demo Dashboard",
"gridLayout": {
"widgets": [
{
"blank": {}
}
]
}
}
Dasbor terlihat mirip dengan contoh berikut: