Dokumen ini menjelaskan cara membuat dan mengelola dasbor kustom serta widget di dasbor tersebut menggunakan resource Dashboard
di Cloud Monitoring API.
Contoh di sini menggambarkan cara mengelola dasbor menggunakan
curl
untuk memanggil API, dan menunjukkan cara menggunakan Google Cloud CLI.
Meskipun Anda juga dapat mengelola dasbor kustom melalui konsol Google Cloud, API ini memberi Anda cara terprogram untuk mengelola banyak dasbor secara bersamaan.
Endpoint ini mendukung metode berikut untuk mengelola dan mengonfigurasi dasbor:
dashboards.create
: membuat dasbordashboards.delete
: menghapus dasbor yang ditentukandashboards.list
: mengambil daftar semua dasbor dalam project tertentudashboards.get
: mengambil dasbor yang ditentukandashboards.patch
: memperbarui struktur dasbor yang ditentukan
Anda dapat memanggil API secara langsung menggunakan utilitas curl
atau menggunakan Google Cloud CLI.
Anda tidak dapat mengambil, mengedit, atau menghapus dasbor standar.
Tentang dasbor
Saat membuat dasbor, Anda harus menentukan komponen, atau widget, yang ingin ditampilkan, dan tata letak untuk widget tersebut. Anda juga dapat menambahkan label dan filter ke dasbor. Label dapat membantu Anda menemukan dasbor atau menunjukkan jenis konten di dasbor.
Tata letak dasbor
Tata letak menentukan cara komponen dasbor diurutkan. API ini menyediakan tata letak berikut:
GridLayout
: membagi ruang yang tersedia menjadi kolom vertikal dengan lebar yang sama dan mengatur kumpulan widget menggunakan strategi baris pertama.MosaicLayout
: membagi ruang yang tersedia menjadi petak. Setiap widget dapat menempati satu atau beberapa blok petak.RowLayout
: membagi ruang yang tersedia menjadi baris dan mengatur sekumpulan widget secara horizontal di setiap baris.ColumnLayout
: membagi ruang yang tersedia menjadi kolom vertikal dan mengatur kumpulan widget secara vertikal di setiap kolom.
Misalnya, berikut ini menunjukkan representasi JSON dasbor di
RowLayout
dengan tiga widget Text
:
{
"displayName": "Row-layout example",
"rowLayout": {
"rows": [
{
"widgets": [
{
"text": {
"content": "Text Widget 1",
"format": "RAW"
}
},
{
"text": {
"content": "**Text Widget 2**",
"format": "MARKDOWN"
}
},
{
"text": {
"content": "_Text Widget 3_",
"format": "MARKDOWN"
}
}
]
}
]
}
}
Widget dasbor
Widget berisi satu komponen dasbor dan konfigurasi cara
menampilkan komponen di dasbor. Dasbor dapat memiliki lebih dari satu widget. Ada beberapa jenis objek Widget
:
Widget
XyChart
menampilkan data pada sumbu X dan Y.Widget ini menampilkan set data yang dapat berupa data deret waktu atau dihasilkan oleh kueri SQL. Widget ini memungkinkan Anda mengaitkan data diagram dengan sumbu Y kiri atau kanan. Jika beberapa jenis metrik dipetakan, Anda dapat menggunakan kedua sumbu Y. Widget
XyChart
mendukung gaya tampilan berikut:- Diagram garis
- Diagram batang
- Diagram area bertumpuk
- Peta panas
Widget yang ditampilkan dari satu dimensi, seperti nilai terbaru:
PieChart
: menampilkan nilai terbaru dari kumpulan deret waktu, dengan setiap deret waktu berkontribusi satu porsi pada lingkaran.Scorecard
: menampilkan nilai terbaru dari satu deret waktu, dan bagaimana nilai ini terkait dengan satu atau beberapa nilai minimum.TimeSeriesTable
: menampilkan nilai terbaru, atau nilai gabungan, untuk setiap deret waktu. Tabel mendukung penyesuaian. Misalnya, Anda dapat memberi kode warna pada sel dan mengonfigurasi nama kolom serta perataan data.
Widget yang menampilkan kebijakan pemberitahuan atau informasi insiden:
AlertChart
: menampilkan ringkasan kebijakan pemberitahuan satu kondisi. Widget ini menampilkan data sebagai diagram garis, menunjukkan nilai minimum, dan mencantumkan jumlah insiden yang terbuka.IncidentList
: menampilkan daftar insiden. Anda dapat mengonfigurasi widget untuk menampilkan insiden untuk kebijakan pemberitahuan tertentu atau untuk jenis resource tertentu.
Widget yang menampilkan entri log dan error:
ErrorReportingPanel
: menampilkan grup error yang disimpan di project Google Cloud yang dipilih.LogsPanel
: menampilkan entri log cakupan project yang disimpan di project Google Cloud saat ini. Anda dapat mengonfigurasi widget untuk menampilkan entri log yang disimpan di project Google Cloud yang dapat diakses melalui cakupan metrik saat ini.
Widget teks dan organisasi:
CollapsibleGroup
: menampilkan kumpulan widget. Anda dapat menciutkan tampilan grup.SingleViewGroup
: menampilkan satu widget dalam kumpulan widget. Anda dapat memilih widget yang akan ditampilkan.SectionHeader
: membuat pemisah horizontal di dasbor, dan membuat entri dalam tabel konten dasbor.Text
: menampilkan konten tekstual, baik sebagai teks mentah maupun string Markdown.
Untuk menyertakan widget teks dan organisasi di dasbor, dasbor harus memiliki
MosaicLayout
.
Selain objek ini, Anda juga dapat menambahkan placeholder kosong ke dasbor.
Misalnya, berikut ini menunjukkan representasi JSON widget
XyChart
yang sumbu Y kanannya dikonfigurasi:
{
"displayName": "Demo dashboard",
"gridLayout": {
"widgets": [
{
"title": "Sample line chart",
"xyChart": {
"dataSets": [
{
"timeSeriesQuery": {
"timeSeriesFilter": {
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
"aggregation": {
"perSeriesAligner": "ALIGN_MEAN",
"crossSeriesReducer": "REDUCE_MAX",
"groupByFields": [
"resource.label.zone"
]
}
},
"unitOverride": "1"
},
"plotType": "LINE"
}
],
"timeshiftDuration": "0s",
"yAxis": {
"label": "y1Axis",
"scale": "LINEAR"
},
"chartOptions": {
"mode": "COLOR"
}
}
}
]
}
}
Label dasbor
Label dapat membantu Anda mengelola dan mengatur dasbor. Misalnya, Anda
dapat menambahkan label bernama prod
untuk menunjukkan bahwa dasbor menampilkan
data deret waktu dan data log untuk resource produksi Anda. Atau,
Anda dapat menambahkan label playbook
untuk menunjukkan bahwa dasbor
berisi informasi untuk membantu Anda memecahkan masalah kegagalan.
Menambahkan label ke dasbor bersifat opsional.
Misalnya, berikut 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
berupa string. Saat Anda menambahkan label ke dasbor, tetapkan key
ke nama label, dan tetapkan kolom value
ke string kosong.
Filter dan variabel dasbor
Saat mendesain dasbor, Anda mungkin mengidentifikasi beberapa cara untuk melihat data yang ditampilkan dasbor. Misalnya, dasbor menampilkan data deret waktu untuk instance virtual machine (VM) Anda. Anda mungkin ingin melihat data deret waktu untuk semua VM, dan Anda mungkin hanya ingin melihat data yang ada di zona tertentu. Dalam situasi ini, sebaiknya buat filter yang disematkan atau variabel, lalu tetapkan nilai default filter tersebut ke zona yang paling sering dilihat.
Filter yang disematkan berlaku untuk semua widget dasbor yang mendukung label
yang ditentukan dalam filter, kecuali jika widget berisi filter dengan kunci label
yang sama.
Misalnya, saat diagram menyertakan filter zone = us-central1-a
, diagram tersebut akan mengabaikan filter yang disematkan dengan kunci label zone
. Demikian pula,
filter ini diabaikan oleh diagram yang tidak memiliki label dengan
kunci zone
.
Variabel mirip dengan filter yang disematkan, tetapi hanya berlaku untuk widget
tertentu. Variabel dapat didasarkan pada label, seperti filter yang disematkan, atau
hanya dapat memiliki nilai. Variabel khusus nilai berisi satu atau beberapa nilai default, dan daftar semua kemungkinan nilai. Jika Anda tidak menentukan nilai default, nilai default akan ditetapkan ke operator karakter pengganti (*)
.
Untuk menentukan kumpulan semua kemungkinan nilai, Anda dapat memberikan array nilai atau menulis kueri SQL.
Untuk filter dan variabel yang disematkan, toolbar dasbor menampilkan
setiap variabel, beserta menu, yang memungkinkan Anda mengubah nilai
variabel untuk sementara. Struktur data yang sama digunakan untuk merepresentasikan filter dan variabel yang disematkan. Untuk informasi selengkapnya, lihat DashboardFilter
.
Untuk mempelajari cara menerapkan variabel berbasis label atau variabel khusus nilai ke widget, lihat bagian berikut:
- Sintaksis umum untuk mendereferensikan variabel
- Widget panel log
- Diagram dengan kueri PromQL
- Diagram dengan kueri SQL
- Diagram dengan kueri MQL
Diagram dengan kueri filter Monitoring
Saat Anda menggunakan antarmuka berbasis menu untuk membuat diagram yang menampilkan data deret waktu, pilihan Anda akan dikonversi menjadi Filter pemantauan.
Membuat filter dan variabel
Konsol
Untuk informasi tentang cara menggunakan konsol Google Cloud untuk membuat filter dan variabel yang disematkan, lihat dokumen berikut:
API
Untuk menentukan filter dan variabel yang disematkan, gunakan
struktur data dashboardFilters
.
- Untuk membuat variabel, tetapkan nilai kolom
templateVariable
ke nama variabel. Hapus kolom ini atau tetapkan nilai ke string kosong saat Anda ingin membuat filter yang disematkan. - Untuk membuat filter yang disematkan atau variabel berbasis label, Anda harus menentukan
kolom
labelKey
. Hapus kolom ini jika Anda menginginkan variabel khusus nilai. Tetapkan nilai default untuk filter atau variabel. Konfigurasi kolom ini menentukan apakah pengguna dapat memilih tepat satu opsi dari menu nilai, atau apakah mereka dapat memilih beberapa nilai.
- Untuk menetapkan satu nilai default dan membatasi pengguna agar hanya memilih
satu opsi di menu nilai, tetapkan kolom
valueType
sebagaiSTRING
dan tetapkan juga kolomstringValue
:
"valueType": "STRING", "stringValue": "my-default-value",
- Untuk menetapkan setidaknya satu nilai default dan mengizinkan pengguna memilih beberapa opsi
di menu nilai, tetapkan kolom
valueType
sebagaiSTRING_ARRAY
dan tetapkan juga kolomstringArrayValue
. Dalam contoh berikut, ada tiga nilai default.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Untuk menetapkan satu nilai default dan membatasi pengguna agar hanya memilih
satu opsi di menu nilai, tetapkan kolom
Opsional: Untuk menentukan daftar semua nilai yang memungkinkan untuk variabel khusus nilai, tetapkan kolom
stringArray
atau kolomtimeSeriesQuery
. Jika Anda menentukan kueri, kueri tersebut harus berupa kueri analisis.
Misalnya, pertimbangkan objek dashboardFilters
berikut:
{ "dashboardFilters": [ { "labelKey": "zone" "stringValue": "us-central1-c", "valueType": "STRING", "filterType": "RESOURCE_LABEL" }, { "labelKey": "instance_id", "stringValue": "3133577226154888113", "valueType": "STRING", "filterType": "RESOURCE_LABEL", "templateVariable": "my_label_based_variable" }, { "filterType": "VALUE_ONLY", "templateVariable": "my_value_only_variable", timeSeriesQuery: { opsAnalyticsQuery: { sql: " SELECT log_name FROM `MY_TABLE` GROUP BY log_name ", } } } ], "displayName": "Illustrate Variables", ... }
JSON sebelumnya menentukan satu filter yang disematkan dan dua variabel:
Filter yang disematkan memiliki kunci label
zone
, yang ditampilkan di toolbar. KolomvalueType
danstringValue
menentukan satu nilai default. Untuk informasi selengkapnya, lihat halaman referensi API untuk struktur datadashboardFilters
.Variabel berbasis label memiliki nama
my_label_based_variable
, dan kunci labelnya adalahinstance_id
. Nilai default untuk variabel ini ditetapkan ke ID instance tertentu. Anda juga dapat mengonfigurasi nilai default menggunakan array. Di toolbar, filter ditampilkan dengan namamy_label_based_variable
.Variabel khusus nilai diberi nama
my_value_only_variable
. Entri ini tidak menentukan nilai default, sehingga operator karakter pengganti,(*)
, diterapkan secara otomatis. Selain itu, variabel ini menggunakan kueri SQL untuk membuat daftar kemungkinan nilai untuk variabel.
Perhatikan bahwa objek dashboardFilters
tidak mencantumkan widget yang menerapkan
variabel. Untuk menerapkan variabel ke widget, Anda mengubah
kueri untuk widget.
Sintaksis umum untuk mendereferensikan variabel
Untuk semua widget, kecuali yang ditentukan oleh SQL, gunakan sintaksis berikut untuk menerapkan variabel ke kueri:
Untuk menerapkan variabel berbasis label dan membuat kunci label dan nilai label di-resolve menjadi ekspresi filter yang valid untuk bahasa kueri, gunakan
${my_label_based_variable}
.Untuk hanya menerapkan nilai variabel berbasis label, gunakan
${my_label_based_variable.value}
. Perbandingan harus menggunakan ekspresi reguler.Untuk hanya menerapkan nilai variabel khusus nilai, gunakan
${my_value_only_variable}
. Untuk variabel khusus nilai, jangan sertakan klausa.value
. Perbandingan harus menggunakan ekspresi reguler.
Widget panel log
Untuk menerapkan variabel ke widget panel log, perbarui panel kueri. Sintaksis untuk widget ini mengikuti sintaksis yang ditentukan di bagian Sintaksis umum.
Konsol
Misalnya, kueri berikut menggunakan ekspresi reguler untuk membandingkan nilai kolom jsonPayload.message
dengan nilai string yang menyertakan nilai variabel berbasis label:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Sebagai contoh lain, pertimbangkan variabel khusus nilai,
value_only_severity_variable
, dan asumsikan bahwa dalam menu nilai, tiga
nilai dipilih: ERROR
, INFO
, dan NOTICE
.
Selanjutnya, tambahkan kode berikut ke panel kueri widget panel log Anda:
severity =~ "${value_only_severity_variable}"
Berikut ini ilustrasi formulir yang dirender:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Misalnya, JSON berikut mengilustrasikan cara menerapkan variabel berbasis label ke kueri widget panel log:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
Misalnya, kueri berikut menggunakan ekspresi reguler untuk membandingkan nilai kolom jsonPayload.message
dengan nilai string yang menyertakan nilai variabel berbasis label:
"logsPanel": { "filter": "resource.type=\"gce_instance\"\n resource.labels.project_id=~\"${my_label_based_variable.value}\"\n", "resourceNames": [ "projects/012345" ] }
Sebagai contoh lain, pertimbangkan variabel khusus nilai,
value_only_severity_variable
, dan asumsikan bahwa tiga
nilai dipilih di menu: ERROR
, INFO
, dan NOTICE
.
Selanjutnya, tambahkan kode berikut ke panel kueri widget panel log Anda:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
Berikut ini ilustrasi kueri yang dieksekusi oleh widget panel log:
severity =~ "^(ERROR|INFO|NOTICE)$"
Jika Anda telah mengonfigurasi kueri untuk panel log, lalu memilih tombol untuk membuka Logs Explorer, variabel akan di-resolve sebelum Logs Explorer dibuka.
Tabel berikut menggambarkan cara contoh variabel di-resolve oleh panel log. Seperti yang disebutkan sebelumnya, jika hanya nilai variabel yang digunakan, Anda harus menggunakan ekspresi reguler sebagai operator perbandingan:
Sintaks | Selected Value |
Ekspresi panel log yang di-resolve |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
Contoh variabel didasarkan pada label resource
|
${my_label_based_variable} |
* |
"" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Diagram dengan kueri PromQL
Untuk menerapkan variabel berbasis label ke diagram yang memiliki kueri PromQL, ikuti panduan yang tercantum di Sintaksis umum.
Konsol
Misalnya, kueri berikut mengandalkan variabel berbasis label,
my_label_based_variable
, yang di-resolve menjadi ekspresi filter:
compute_googleapis_com:instance_cpu_utilization{ monitored_resource="gce_instance", ${my_label_based_variable} }
Anda juga dapat mengubah kueri untuk hanya me-resolve nilai variabel.
Contoh berikut menggunakan ekspresi reguler untuk membandingkan nilai kueri berbasis label dengan instance_id
:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Jika Anda memiliki variabel khusus nilai, hapus klausa .value
. Misalnya, untuk memfilter menurut zona menggunakan variabel khusus nilai, kueri akan menyertakan hal seperti berikut:
zone=~"${my_value_only_variable}"
API
Misalnya, JSON berikut mengilustrasikan kueri yang mengandalkan variabel berbasis label, my_label_based_variable
, yang di-resolve menjadi ekspresi filter:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", ${my_label_based_variable} }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Anda juga dapat mengubah kueri untuk hanya me-resolve nilai variabel.
Contoh berikut menggunakan ekspresi reguler untuk membandingkan nilai kueri berbasis label dengan instance_id
:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", instance_id=~\"${my_label_based_variable.value}\" }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Jika Anda memiliki variabel khusus nilai, hapus klausa .value
. Misalnya, untuk memfilter menurut zona menggunakan variabel khusus nilai, kueri akan menyertakan hal seperti berikut:
zone=~\"${my_value_only_variable}\"
Tabel berikut menggambarkan cara contoh variabel di-resolve oleh PromQL. Seperti yang disebutkan sebelumnya, jika hanya nilai variabel yang digunakan, Anda harus menggunakan ekspresi reguler sebagai operator perbandingan:
Sintaks | Selected Value |
Ekspresi PromQL yang di-resolve |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
Contoh variabel didasarkan pada label resource
|
${my_label_based_variable} |
* |
noop_filter=~".*" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.+ |
Diagram dengan kueri SQL
Jika Anda ingin menerapkan variabel ke widget yang ditentukan SQL,
perbarui klausa WHERE
untuk mereferensikan nilai variabel.
Untuk semua variabel, beri awalan nama variabel dengan tanda "at", misalnya:
@variable_name
. Untuk variabel berbasis label, tambahkan .value
ke
nama variabel, @my_label_based_variabe.value
.
Untuk kueri SQL, penggantian variabel bergantung pada BigQuery, dan aman dari injeksi SQL. Untuk mengetahui informasi selengkapnya, lihat Menjalankan kueri berparameter.
Konsol
Karena SQL tidak menafsirkan operator karakter pengganti sebagai "nilai apa pun", sebaiknya
Anda selalu menggunakan pernyataan IF
saat menerapkan
variabel ke kueri SQL. Contoh berikut mengilustrasikan penggunaan untuk variabel khusus nilai yang jenis datanya adalah string:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Jika opsi menu untuk variabel memungkinkan pengguna memilih beberapa nilai,
Anda harus mentransmisikan
nilai variabel ke jenis data GoogleSQL menggunakan
fungsi CAST
.
Kueri berikut mengilustrasikan sintaksis ini:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Pernyataan IF
yang ditampilkan dalam contoh sebelumnya direkomendasikan karena SQL
tidak menafsirkan operator karakter pengganti sebagai "nilai apa pun". Oleh karena itu, jika Anda
menghapus pernyataan IF
dan jika Anda memilih operator karakter pengganti,
hasil kueri adalah tabel kosong. Pada contoh kedua,
fungsi UNNEST
mengonversi
array menjadi tabel.
Untuk menambahkan klausa WHERE
yang diformat dengan benar, lakukan hal berikut:
- Edit widget.
- Di toolbar, pilih Sisipkan filter variabel, lalu pilih
variabel yang ingin Anda terapkan ke klausa
WHERE
. - Dalam dialog yang terbuka, tinjau kode yang dihasilkan, lalu klik Salin dan tutup.
Tempel kode yang disalin ke panel Kueri dan lakukan pengeditan yang diperlukan.
Misalnya, Anda membuat variabel bernama
LogName
yang menghasilkan daftar nama log dan menampilkan hasilnya dalam tabel dengan satu kolom bernamalog_name
. Selanjutnya, Anda membuat diagram, memilih Sisipkan filter variabel, lalu memilih variabelLogName
. Kode berikut akan dibuat:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
Dalam contoh ini, Anda perlu mengedit kode yang dihasilkan dan mengganti
LogName =
denganlog_name =
, sehingga penggabungan tabel dapat terjadi:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Klik Jalankan, lalu Terapkan.
Untuk menyimpan dasbor yang telah diubah, klik Simpan di toolbar.
API
Karena SQL tidak menafsirkan operator karakter pengganti sebagai "nilai apa pun", sebaiknya
Anda selalu menggunakan pernyataan IF
saat menerapkan
variabel ke kueri SQL. Contoh berikut mengilustrasikan penggunaan untuk variabel khusus nilai yang jenis datanya adalah string:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Misalnya, berikut adalah representasi JSON sebagian dari diagram yang menampilkan hasil kueri SQL. Untuk mendukung pemfilteran hasil berdasarkan nama log, klausa WHERE
ditambahkan yang mereferensikan variabel bernama LogName
:
"plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": {}, "queryHandle": "", "sql": "SELECT\n timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload\n FROM\n `my-project.global._Default._Default`\n WHERE \n IF (@LogName = \"*\", TRUE, log_name=@LogName)\nLIMIT 10000" } }
Variabel LogName
juga mengeluarkan kueri untuk menentukan daftar
nama log yang mungkin:
"dashboardFilters": [ { "filterType": "VALUE_ONLY", "templateVariable": "LogName", "valueType": "STRING", "timeSeriesQuery": { "opsAnalyticsQuery": { "savedQueryId": "", "sql": "SELECT log_name FROM `my-project.global._Default._Default` GROUP BY log_name LIMIT 1000", "queryHandle": "" }, "unitOverride": "", "outputFullDuration": false } } ],
Jika opsi menu untuk variabel memungkinkan pengguna memilih beberapa nilai,
Anda harus mentransmisikan
nilai variabel ke jenis data GoogleSQL menggunakan
fungsi CAST
.
Kueri berikut mengilustrasikan sintaksis ini:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Pernyataan IF
yang ditampilkan dalam contoh sebelumnya direkomendasikan karena SQL
tidak menafsirkan operator karakter pengganti sebagai "nilai apa pun". Oleh karena itu, jika Anda
menghapus pernyataan IF
dan jika Anda memilih operator karakter pengganti,
hasil kueri adalah tabel kosong. Pada contoh kedua,
fungsi UNNEST
mengonversi
array menjadi tabel.
Diagram dengan kueri MQL
Untuk menerapkan variabel berbasis label ke diagram yang memiliki kueri MQL, tambahkan pipa, (|)
, lalu ikuti panduan yang tercantum di Sintaksis umum.
Saat Anda menggunakan antarmuka berbasis menu untuk membuat diagram yang menampilkan data deret waktu, pilihan Anda akan dikonversi menjadi Filter pemantauan
Konsol
Misalnya, kueri berikut mengandalkan variabel berbasis label,
my_label_based_variable
, yang di-resolve menjadi ekspresi filter:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | every 1m | ${my_label_based_variable}
Anda juga dapat mengubah kueri untuk hanya me-resolve nilai variabel.
Contoh berikut menggunakan ekspresi reguler untuk membandingkan nilai kueri berbasis label dengan instance_id
:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | filter resource.instance_id=~'${my_label_based_variable.value}' | group_by 1m, [value_utilization_mean: mean(value.utilization)] | every 1m
Jika Anda memiliki variabel khusus nilai, hapus klausa .value
. Misalnya, untuk memfilter menurut zona menggunakan variabel khusus nilai, kueri akan menyertakan hal seperti berikut:
resource.zone=~'${my_value_only_variable}'
API
Misalnya, JSON berikut mengilustrasikan kueri yang mengandalkan
variabel berbasis label,
my_label_based_variable
, yang di-resolve menjadi ekspresi filter:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n | ${my_label_based_variable}", "unitOverride": "", "outputFullDuration": false },
Anda juga dapat mengubah kueri untuk hanya me-resolve nilai variabel.
Contoh berikut menggunakan ekspresi reguler untuk membandingkan nilai kueri berbasis label dengan instance_id
:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | filter resource.instance_id=~'${my_label_based_variable.value}'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n", "unitOverride": "", "outputFullDuration": false },
Jika Anda memiliki variabel khusus nilai, hapus klausa .value
. Misalnya, untuk memfilter menurut zona menggunakan variabel khusus nilai, kueri akan menyertakan hal seperti berikut:
resource.zone=~'${my_value_only_variable}'
Tabel berikut mengilustrasikan cara contoh variabel di-resolve oleh MQL. Seperti yang disebutkan sebelumnya, jika hanya nilai variabel yang digunakan, Anda harus menggunakan ekspresi reguler sebagai operator perbandingan:
Sintaks | Selected Value |
Ekspresi MQL yang di-resolve |
---|---|---|
${my_label_based_variable} |
12345 |
filter (resource.instance_id == '12345')
Contoh variabel didasarkan pada label resource
|
${my_label_based_variable} |
* |
filter (true) |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Diagram dengan kueri filter Monitoring
Untuk menerapkan variabel berbasis label ke diagram yang memiliki kueri dalam bentuk filter Pemantauan, ikuti panduan yang tercantum di Sintaksis umum.
Konsol
Jika menggunakan konsol Google Cloud untuk membuat diagram, dan jika menggunakan antarmuka berbasis menu, Anda dapat menerapkan variabel berbasis label ke diagram menggunakan kolom Terapkan ke diagram variabel atau dengan mengedit widget dan memilih variabel berbasis label dari menu Filter. Menu Filter mencantumkan semua variabel berbasis label dan semua kunci label.
Untuk menerapkan variabel berbasis nilai ke jenis diagram ini, lakukan hal berikut:
- Edit diagram.
- Di panel kueri, klik Tambahkan filter, lalu pilih kunci label. Misalnya, Anda dapat memilih zona.
- Di menu Value, pilih variabel khusus nilai.
- Klik Terapkan.
- Untuk menyimpan dasbor yang telah diubah, klik Simpan di toolbar.
Misalnya, JSON berikut mengilustrasikan kueri yang mengandalkan
variabel berbasis label,
my_label_based_variable
, yang di-resolve menjadi ekspresi filter:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" ${my_label_based_variable}"
Widget yang menggunakan kueri dalam bentuk filter Monitoring
tidak dapat memfilter deret waktu berdasarkan nilai dalam variabel berbasis label;
tetapi, Anda dapat memfilter berdasarkan variabel khusus nilai.
Misalnya, kueri berikut menampilkan nilai kolom Filters
dari kueri yang memfilter menurut zone
, berdasarkan nilai variabel khusus nilai:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})
API
Misalnya, JSON berikut mengilustrasikan kueri yang mengandalkan
variabel berbasis label,
my_label_based_variable
, yang di-resolve menjadi ekspresi filter:
"timeSeriesQuery": { "timeSeriesFilter": { "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" ${my_label_based_variable} ", "aggregation": { "alignmentPeriod": "60s", "perSeriesAligner": "ALIGN_MEAN", "groupByFields": [] } }, "unitOverride": "", "outputFullDuration": false },
Widget yang menggunakan kueri dalam bentuk filter Monitoring
tidak dapat memfilter deret waktu berdasarkan nilai dalam variabel berbasis label;
tetapi, Anda dapat memfilter berdasarkan variabel khusus nilai.
Misalnya, kueri berikut menampilkan kolom "filter"
dari kueri yang memfilter menurut zone
, berdasarkan nilai variabel khusus nilai:
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"
Tabel berikut menggambarkan cara variabel contoh di-resolve oleh filter Monitoring. Seperti yang disebutkan sebelumnya, jika hanya nilai variabel yang digunakan, Anda harus menggunakan ekspresi reguler sebagai operator perbandingan:
Sintaks | Selected Value |
Ekspresi filter yang di-resolve |
---|---|---|
${my_label_based_variable} |
12345 |
resource.instance_id == "12345"
Contoh variabel didasarkan pada label resource
|
${my_label_based_variable} |
* |
Dihilangkan |
${my_label_based_variable.value} |
12345 |
Tidak didukung |
${my_label_based_variable.value} |
* |
Tidak didukung |
${my_value_based_variable} |
12345 |
"12345" |
${my_value_based_variable} |
* |
".*" |
Membuat dasbor
Untuk membuat dasbor kustom baru, panggil metode dashboards.create
dan berikan tata letak serta widget yang akan ditampilkan di dasbor.
Saat Anda membuat dasbor, API akan otomatis membuat
dashboard_id
. Jika ingin menentukan dashboard_id
kustom, Anda dapat menetapkan
kolom name
dari objek Dashboard
. Format kolom nama terlihat seperti
berikut:
"name": "projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}"
API
Untuk membuat dasbor baru, kirim permintaan POST
ke
endpoint Dashboard
.
curl -d @my-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X POST https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards
gcloud
Untuk membuat dasbor dalam project, gunakan
perintah gcloud monitoring dashboards create
.
gcloud monitoring dashboards create --config-from-file=my-dashboard.json
Misalnya, jika Anda ingin menduplikasi dasbor, lakukan tindakan berikut:
- Selesaikan langkah-langkah di Mendapatkan dasbor untuk mendownload definisi dasbor asli.
- Edit JSON yang ditampilkan untuk menghapus kolom
etag
danname
, serta mengubah nilai kolomdisplayName
. - Jalankan perintah untuk membuat dasbor.
Untuk informasi selengkapnya, lihat referensi gcloud monitoring dashboards
create
.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi penyedia Terraform.
Untuk membuat dasbor menggunakan Terraform, gunakan resource Terraform google_monitoring_dashboard
.
Dalam perintah, tetapkan kolom berikut:
dashboard_json
: Representasi JSON dasbor, menggunakan formatDashboards
.Untuk contoh format ini, Anda dapat mencantumkan dasbor menggunakan APIs Explorer, atau membuka dasbor di konsol Google Cloud, dan melihat representasi JSON.
parent
: Nama lengkap project Anda. Misalnya, Anda dapat menetapkan kolom ini ke"projects/PROJECT_ID"
, dengan PROJECT_ID adalah ID project Google Cloud Anda.
Contoh ini membuat dasbor contoh menggunakan file my-dashboard.json
.
Anda dapat mengelola dasbor melalui konsol Google Cloud.
Untuk konfigurasi dasbor tambahan, lihat Contoh dasbor dan tata letak.
Menghapus dasbor
Untuk menghapus dasbor kustom, panggil metode dashboards.delete
dan tentukan dasbor yang ingin Anda hapus.
API
Untuk menghapus dasbor kustom, kirim permintaan DELETE
ke endpoint Dashboard
, yang memenuhi syarat dengan ID dasbor yang akan dihapus.
curl -H "Authorization: Bearer $ACCESS_TOKEN" -X DELETE https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Jika berhasil, metode akan menampilkan respons kosong. Jika tidak, error akan ditampilkan.
gcloud
Untuk menghapus dasbor kustom, gunakan
gcloud monitoring dashboards delete
, dan
tentukan ID yang sepenuhnya memenuhi syarat dari dasbor yang akan dihapus:
gcloud monitoring dashboards delete projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Untuk informasi selengkapnya, lihat referensi gcloud monitoring dashboards
delete
.
Terraform
Anda dapat menghapus resource menggunakan Terraform. Untuk informasi tentang cara menghapus resource, lihat perintah Terraform destroy.
Cantumkan dasbor
Untuk mencantumkan semua dasbor kustom yang termasuk dalam project, panggil metode dashboards.list
dan tentukan project ID.
API
Untuk mencantumkan semua dasbor kustom project, kirim project ID ke endpoint Dashboard
.
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards
gcloud
Untuk mencantumkan semua dasbor kustom project, gunakan perintah gcloud monitoring dashboards list
:
gcloud monitoring dashboards list
Untuk informasi selengkapnya, lihat referensi gcloud monitoring dashboards list
Terraform
Anda tidak dapat menggunakan Terraform untuk mengirim kueri ke project dengan respons berupa daftar dasbor. Namun, Anda dapat melihat dasbor ini menggunakan konsol Google Cloud.
Contoh ini menampilkan dasbor kustom yang terkait dengan project Anda.
Memberi nomor halaman pada respons daftar
Metode dashboards.list
mendukung penomoran halaman, yang memungkinkan Anda mengambil hasil satu halaman pada satu waktu, bukan sekaligus.
API
Untuk halaman awal daftar hasil, tentukan parameter kueri pageSize
dengan permintaan:
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards?page_size=1
Metode ini menampilkan halaman pertama daftar dan nextPageToken
. Misalnya:
{ "dashboards" : [ { "displayName" : "Grid Layout Example", "gridLayout" : { "widgets" : [ { ... }, { ... }, { ... }, ] } } ] }, "nextPageToken": "ChYqFDEyMzkzMzUwNzg0OTE1MDI4MjM3"
Untuk setiap halaman yang tersisa, Anda harus menyertakan nextPageToken
yang sesuai
dalam permintaan.
gcloud
Untuk menentukan jumlah resource per halaman, teruskan flag --page-size
dengan
perintah. Contoh:
gcloud monitoring dashboards list --page-size=1
Terraform
Anda tidak dapat menggunakan Terraform untuk mengirim kueri project dengan respons berupa daftar dasbor yang diberi nomor halaman. Namun, Anda dapat melihat dasbor ini menggunakan konsol Google Cloud.
Mendapatkan dasbor
Untuk mendapatkan dasbor kustom tertentu untuk project, panggil metode dashboards.get
, yang memenuhi syarat dengan ID dasbor.
API
Untuk mendapatkan dasbor kustom tertentu, kirim ID dasbor ke endpoint Dashboard
.
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Metode ini menampilkan respons yang mirip dengan contoh berikut:
{ "columnLayout": { "columns": [ { "widgets": [ { "text": { "content": "Text Widget 1", "format": "RAW" } }, { "text": { "content": "**Text Widget 2**", "format": "MARKDOWN" } }, { "text": { "content": "_Text Widget 3_", "format": "MARKDOWN" } } ] } ] }, "displayName": "Column-layout example", "etag": "cb3070baf15de7c79d78761baac3a386", "name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d" }
gcloud
Untuk mendapatkan dasbor kustom tertentu, gunakan perintah gcloud monitoring dashboards describe
dan tentukan ID dasbor:
gcloud monitoring dashboards describe ${DASHBOARD_ID} --format=json
Perintah ini menampilkan dasbor yang diminta:
{ "columnLayout": { "columns": [ { "widgets": [ { "text": { "content": "Text Widget 1", "format": "RAW" } }, { "text": { "content": "**Text Widget 2**", "format": "MARKDOWN" } }, { "text": { "content": "_Text Widget 3_", "format": "MARKDOWN" } } ] } ] }, "displayName": "Column-layout example", "etag": "cb3070baf15de7c79d78761baac3a386", "name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d" }
Untuk informasi selengkapnya, lihat
referensi gcloud monitoring dashboards describe
.
Terraform
Anda tidak dapat menggunakan Terraform untuk mengirim kueri project dengan respons berupa dasbor individual. Namun, Anda dapat melihat dasbor ini menggunakan konsol Google Cloud.
Perbarui dasbor
Untuk memperbarui dasbor kustom yang ada, panggil
metode dashboards.patch
. Untuk mendapatkan nilai etag
saat ini, Anda dapat memanggil metode dashboards.get
dan menemukannya
dalam respons.
API
Untuk memperbarui dasbor kustom, kirim permintaan PATCH
ke endpoint Dashboard
dan berikan objek Dashboard
yang telah direvisi dan nilai etag
dari respons dashboards.get
terbaru.
curl -d @my-updated-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X PATCH https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Contoh sebelumnya memperbarui dasbor kustom yang ada menggunakan
file my-updated-dashboard.json
. Respons, yang menyertakan nilai
etag
baru, adalah salinan listingan dasbor yang diperbarui.
gcloud
Untuk memperbarui dasbor kustom, gunakan
gcloud monitoring dashboards update
, tentukan
ID dasbor yang akan diperbarui, dan berikan perubahan pada dasbor.
gcloud monitoring dashboards update ${DASHBOARD_ID} --config-from-file=my-updated-dashboard.json
Untuk informasi selengkapnya, lihat
referensi gcloud monitoring dashboards update
.
Contoh sebelumnya memperbarui dasbor kustom yang ada menggunakan
file my-updated-dashboard.json
. Respons, yang menyertakan nilai
etag
baru, adalah salinan listingan dasbor yang diperbarui.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi penyedia Terraform.
Untuk memperbarui dasbor menggunakan Terraform, gunakan resource Terraform
google_monitoring_dashboard
.
Dalam perintah, tetapkan kolom berikut:
dashboard_json
: Representasi JSON dasbor, menggunakan formatDashboards
.parent
: Nama lengkap project Anda. Misalnya, Anda dapat menetapkan kolom ini ke"projects/PROJECT_ID"
, dengan PROJECT_ID adalah ID project Google Cloud Anda.