Filter di Cloud Monitoring API memungkinkan Anda memilih deret waktu, jenis metrik, resource yang dimonitor, dan grup resource tertentu dalam permintaan API, diagram, dan kebijakan pemberitahuan. Untuk menghitung proses yang berjalan di virtual machine Anda dalam kebijakan pemberitahuan atau diagram, gunakan filter kondisi proses.
Sebelum memulai
Jika Anda tidak memahami metrik, deret waktu, dan resource yang dimonitor, lihat Metrik, deret waktu, dan resource.
Jika Anda belum memahami label, lihat Label untuk pengantar.
Menggunakan filter
Anda dapat menggunakan filter di Monitoring API untuk melakukan hal berikut:
- Pilih data deret waktu tertentu yang ditampilkan dari permintaan API
list. Filter dapat memilih deret waktu berdasarkan project, grup, properti resource yang dimonitor, dan properti metrik data. Untuk mengetahui informasi dan contoh selengkapnya, lihat Mengambil data deret waktu.
Menetapkan resource ke
Groupberdasarkan properti resource dan project tempat resource tersebut berada. Untuk mengetahui informasi dan contoh selengkapnya, lihat Menentukan keanggotaan grup.Pilih resource dalam grup berdasarkan properti resource. Untuk mengetahui informasi dan contoh selengkapnya, lihat Mencantumkan anggota grup.
Mencantumkan jenis metrik tertentu. Untuk mengetahui informasi dan contoh selengkapnya, lihat Mencantumkan deskriptor metrik.
Mencantumkan jenis resource tertentu yang dimonitor. Untuk mengetahui informasi dan contoh selengkapnya, lihat Mencantumkan deskripsi resource yang dimonitor.
Pemilih filter
Filter terdiri dari setidaknya satu pemilih, yang merupakan kata kunci filter. Contoh berikut mengilustrasikan berbagai pemilih:
-
project: Cocok jika metrik project yang ditentukan terlihat oleh project pencakupan dari cakupan metrik yang disebutkan dalam parametername.Gunakan pemilih
projectsaat project Google Cloud dapat melihat metrik beberapa project Google Cloud atau akun AWS dan Anda hanya menginginkan metrik untuk subset project tersebut. Misalnya, jika cakupan metrik untukProject-AmenyertakanProject-B, kecocokan akan terjadi saatnamememiliki nilaiProject-Adan Anda menggunakan filter berikut:project = "Project-B"
Filter berikut cocok dengan project ID apa pun yang diawali dengan
Project-:project = monitoring.regex.full_match("Project-.*") -
group: Mencocokkan resource yang termasuk dalam satuGroup.Filter berikut mencocokkan grup dengan ID
group-id:group.id = "group-id" -
resource: Mencocokkan resource yang dimonitor dari jenis tertentu atau yang memiliki nilai label tertentu.-
Filter berikut cocok dengan semua resource yang dimonitor yang merupakan instance virtual machine (VM) Compute Engine:
resource.type = "gce_instance"
-
Filter berikut cocok dengan semua resource yang zonanya dimulai dengan
europe-:resource.labels.zone = starts_with("europe-")
-
-
metric: Mencocokkan jenis metrik atau deret waktu tertentu dengan label tertentu yang cocok dengan nilai tertentu.-
Filter berikut cocok dengan jenis metrik tertentu:
metric.type = "compute.googleapis.com/instance/cpu/usage_time"
-
Filter berikut mencocokkan deret waktu dengan label bernama
instance_name, yang nilainya dimulai dengangke-hipsterataugke-nginx:metric.labels.instance_name = monitoring.regex.full_match("gke-(hipster|nginx).*")
-
Tabel berikut menunjukkan pemilih yang diizinkan dalam filter berdasarkan panggilan Monitoring API:
| Tujuan filter | Pemilih project |
Pemilih group |
Pemilih resource |
Pemilih metric |
|---|---|---|---|---|
| Menentukan grup | ya | ya* | ||
| Membuat daftar anggota grup | ya | ya | ||
| Mencantumkan deret waktu | ya | ya | ya | ya † |
| Membuat daftar deskriptor metrik | ya | ya | ||
| Mencantumkan deskriptor resource yang dimonitor | ya |
† Saat mencantumkan deret waktu, Anda harus menentukan tepat satu jenis metrik.
Bagian berikut menunjukkan contoh penggunaan umum filter pemantauan. Lihat Sintaksis filter untuk mengetahui pembahasan lengkap tentang objek dan operator filter yang tersedia.
Mengambil data deret waktu
Metode:
projects.timeSeries.list
Objek filter:
project, group.id, resource.type, resource.labels.[KEY], metric.type,
metric.labels.[KEY]
Deret waktu adalah daftar titik data berstempel waktu dari jenis metrik dari resource yang dimonitor tertentu. Untuk mengetahui detailnya, lihat Model metrik. Jenis metrik ditentukan oleh deskriptor metrik, dan resource yang dimonitor ditentukan oleh deskriptor resource yang dimonitor.
Filter yang ditentukan untuk metode timeSeries.list harus menyertakan pemilih metric, dan pemilih tersebut harus menentukan tepat satu jenis metrik:
- Untuk menampilkan semua deret waktu untuk jenis metrik tertentu, gunakan filter berikut:
metric.type = "compute.googleapis.com/instance/cpu/usage_time"
Untuk menampilkan semua deret waktu untuk grup tertentu, gunakan filter berikut. Pemilih
grouphanya berfungsi dengan data deret waktu yang selaras; lihat Pemilih grup untuk mengetahui informasi selengkapnya:metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND group.id = "2468013579"
Untuk menampilkan semua deret waktu dari instance Compute Engine tertentu, gunakan filter berikut:
metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = "my-instance-name"
Untuk menampilkan semua deret waktu dari instance Compute Engine yang namanya diawali dengan
frontend-, gunakan filter berikut:metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = starts_with("frontend-")Untuk menampilkan semua deret waktu dari instance Compute Engine yang namanya diawali dengan
gke-hipsterataugke-nginx, gunakan filter berikut:metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = monitoring.regex.full_match("^gke-(hipster|nginx).*")
Menentukan keanggotaan grup
Metode:
projects.groups.create
Objek filter: project, resource.type, resource.labels.key,
metadata.system_labels.[KEY], metadata.user_labels.[KEY]
Grup dapat berisi sejumlah resource, seperti yang ditentukan oleh filter. Keanggotaan grup bersifat dinamis; lebih banyak atau lebih sedikit resource mungkin cocok dengan filter setiap kali filter dievaluasi. Parameter name dalam objek Group menentukan grup dan project pencakupan dari cakupan metrik.
Jika pemilih project digunakan dalam filter, pemilih tersebut harus menentukan project yang metriknya dapat dilihat oleh project pencakupan.
Misalnya, untuk membuat grup yang hanya menyertakan instance virtual machine (VM) Compute Engine di Eropa, gunakan filter berikut:
resource.type = "gce_instance" AND resource.labels.zone = starts_with("europe-")
Untuk mengetahui informasi tentang metode API yang dapat Anda gunakan untuk menghapus, memperbarui, atau mencantumkan grup, lihat halaman referensi API projects.groups.
Anggota kelompok listingan
Metode:
projects.groups.members.list
Objek filter: project, resource.type, resource.labels.[KEY]
Parameter name menentukan project pencakupan dari cakupan metrik dan grup yang ditentukan dalam project tersebut. Jika Anda tidak menentukan filter, projects.groups.members.list
akan menampilkan daftar keanggotaan grup.
Anda dapat menggunakan filter untuk membatasi anggota grup yang Anda ambil. Jika filter menyertakan pemilih project, nilai pemilih harus menentukan project yang metriknya dapat dilihat oleh project pencakupan. Jika nilai yang tidak valid ditentukan, pemilih project akan diabaikan.
Misalnya, Anda membuat grup yang mencakup semua resource yang namanya berisi test. Untuk mencantumkan hanya anggota grup
yang merupakan topik Pub/Sub, gunakan filter berikut:
resource.type = "pubsub_topic"
Mencantumkan deskriptor metrik
Metode:
projects.metricDescriptors.list
Objek filter: project, metric.type
Gunakan filter untuk membatasi deskriptor metrik yang Anda ambil.
Misalnya, untuk menampilkan deskriptor metrik Compute Engine saja, gunakan filter berikut:
metric.type = starts_with("compute.googleapis.com")
Lihat Daftar metrik untuk mengetahui daftar lengkap jenis metrik yang tersedia. Untuk ringkasan tentang cara penamaan metrik, lihat Konvensi penamaan metrik.
Mencantumkan deskripsi resource yang dimonitor
Metode:
projects.monitoredResourceDescriptors.list
Objek filter: resource.type
Gunakan filter untuk membatasi deskriptor resource yang dimonitor yang Anda ambil.
Misalnya, untuk mengambil hanya deskriptor resource yang dipantau Pub/Sub, gunakan filter berikut:
resource.type = starts_with("pubsub")
Lihat Daftar resource yang dimonitor untuk mengetahui daftar lengkap jenis resource yang dimonitor yang ditentukan oleh Monitoring.
Contoh
Dalam contoh pemfilteran, kami menggunakan deskriptor metrik, deskriptor resource yang dimonitor, dan instance virtual machine berikut, yang disederhanakan untuk ilustrasi:
# Metric descriptor:
{ "name": "projects/my-project-id/metricDescriptors/compute.googleapis.com%2Finstance%2Fdisk%2Fread_bytes_count",
"type": "compute.googleapis.com/instance/disk/read_bytes_count",
"labels": [ { "key": "device_name",
"description": "The name of the disk device." } ] }
# Monitored resource descriptor:
{ "name": "monitoredResourceDescriptors/gce_instance",
"type": "gce_instance",
"labels": [
{ "key": "instance_id",
"description": "The instance ID provided by Google Compute Engine." },
{ "key": "zone",
"description": "The Google Cloud Platform zone hosting the instance."
} ] }
# Resource descriptor for a virtual machine instance.
{ "type": "gce_instance",
"instance_id": "1472038649266883453",
"zone": "us-east-1b",
"disks": [ "log_partition" ],
"machine_type": "n1-standard-2",
"tags": { "environment": "bleeding-edge",
"role": "frobulator" },
"project_id": "my-project-id" }
Contoh pengambilan metrik
Untuk meminta penggunaan bandwidth baca disk untuk semua instance dan semua perangkat, tentukan filter sebagai berikut. Filter ini menampilkan, untuk setiap instance, deret waktu terpisah yang melaporkan bandwidth baca untuk setiap perangkat:
metric.type = "compute.googleapis.com/instance/disk/read_bytes_count"
Untuk menyaring permintaan kueri bandwidth baca hanya untuk perangkat disk yang dikenal sebagai "log_partition" di setiap instance, tentukan filter sebagai berikut. Filter ini menampilkan, untuk setiap instance, maksimal satu deret waktu, bergantung pada apakah perangkat dengan nama tersebut ada di instance tersebut:
metric.type = "compute.googleapis.com/instance/disk/read_bytes_count" AND metric.labels.device_name = "log_partition"
Untuk membatasi permintaan ke satu instance, tentukan instance tersebut:
resource.type = "gce_instance" AND resource.labels.instance_id = "1472038649266883453" AND metric.type = "compute.googleapis.com/instance/disk/read_bytes_count" AND metric.labels.device_name = "log_partition"
Pemfilteran dengan grup
Contoh berikut mengilustrasikan penggunaan pemilih grup dalam filter untuk membatasi resource yang dimonitor ke resource dalam grup tertentu. Lihat Pemilih resource untuk definisi grup untuk mengetahui informasi tentang pemilih yang digunakan untuk menentukan keanggotaan grup.
{ "name": "projects/my-test-project/groups/024681012",
"display_name": "My Redis Cluster",
"filter": "metadata.user_labels.role=redis" }
Dalam panggilan ke metode projects.timeSeries.list, filter berikut meminta penggunaan bandwidth baca disk untuk semua instance Compute Engine dalam grup tertentu. Grup harus ditentukan dalam project pencakupan cakupan metrik yang ditentukan dalam parameter name metode:
resource.type = "gce_instance" AND group.id = "024681012" AND metric.type = "compute.googleapis.com/instance/disk/read_bytes_count"
Referensi: sintaksis filter
Untuk ringkasan filter beserta contohnya, lihat Menggunakan filter.
Filter pemantauan adalah string yang terdiri dari hingga empat jenis pemilih:
<monitoring_filter> ::= <project_selector> AND
<group_selector> AND
<resource_selector> AND
<metric_selector>
Filter akan cocok dengan item jika semua pemilih yang disertakan cocok dengan item tersebut.
Seperti yang dijelaskan di bagian berikut, beberapa pemilih dapat memiliki beberapa
perbandingan yang digabungkan oleh AND atau OR. Urutan pemilih dalam filter tidak penting, tetapi perbandingan untuk pemilih yang berbeda tidak boleh digabungkan.
Bergantung pada tujuan filter, pemilih tertentu mungkin diperlukan, opsional, atau dilarang. Misalnya, filter yang digunakan untuk mencantumkan deret waktu harus berisi pemilih metrik. Namun, filter yang menentukan resource dalam grup tidak boleh berisi pemilih metrik, karena grup tidak berisi jenis metrik atau deret waktu.
Perbandingan
Filter dan pemilihnya dibuat dari perbandingan. Setiap perbandingan memiliki bentuk berikut:
-
[OBJECT]: memilih nilai yang akan diuji; salah satu dari berikut ini:
project group.id metric.type metric.labels.[KEY] resource.type resource.labels.[KEY] metadata.system_labels.[KEY] metadata.user_labels.[KEYSTRING][KEY] adalah nama, seperti
zoneatauinstance_id.[KEYSTRING] dapat berupa nama, tetapi jika berisi karakter khusus, maka harus diapit dengan tanda kutip (
"). -
[OPERATOR]: operator perbandingan; salah satu dari berikut ini:
= # equality (case-sensitive) > < >= <= # numeric ordering != # not equal : # "has" substring match and test for key (case-sensitive) -
[VALUE]: nilai literal atau panggilan fungsi bawaan; salah satu dari berikut ini:
<string> # "a Unicode string". Don't use apostrophes (`'`) to quote strings. <bool> # true or false <number> # 0, -2, 123456, 3.14156 <function> # operators on the right side of '=' or '!=': # starts_with(<string>) # ends_with(<string>) # has_substring(<string> [, ignore_case=false]) # one_of(<string>,...,<string>) for up to 100 strings # monitoring.regex.full_match(<RE2-string>)Kecuali jika digunakan dalam metode
timeSeries.list, filterhas_substringmenggunakan argumen kedua opsional, yang menentukan apakah pencocokan mengabaikan huruf besar/kecil atau tidak. Nilai defaultnya adalahfalse, sehingga pencocokan default peka huruf besar/kecil:- Peka huruf besar/kecil:
display_name=has_substring("Demo") - Peka huruf besar/kecil:
display_name=has_substring("Demo", false) - Tidak peka huruf besar/kecil:
display_name=has_substring("Demo", true)
Jika digunakan dalam metode
timeSeries.list, hanya formulirhas_substring(<string>)yang didukung.Filter
monitoring.regex.full_matchmenggunakan string ekspresi reguler dalam sintaksis RE2. - Peka huruf besar/kecil:
Anda dapat menggunakan operator berikut untuk mengelompokkan atau mengubah perbandingan. OR memiliki
prioritas lebih tinggi daripada AND. Operator harus ditulis dalam huruf besar:
(...) # grouping comparisons AND # conjunction (optional but recommended) OR # disjunction
Operator AND dapat dihilangkan di antara operator, tetapi menyertakannya akan lebih jelas dan
mengurangi risiko error.
Perbandingan x = one_of("a", "b", "c") setara dengan berikut ini:
(x = "a" OR x = "b" OR x = "c")
NOT,
sebelum perbandingan, tetapi tidak dengan operator exists (:) atau sebelum
ekspresi dalam tanda kurung:
NOT # negates the following comparison
Pemilih filter
Gunakan pemilih untuk membatasi pilihan filter ke item tertentu.
Di bagian berikut, tanda kurung kurawal digunakan untuk menunjukkan pengulangan. Misalnya,
notasi <x> {OR <y>} berarti Anda dapat menulis salah satu dari
hal berikut:
<x> <x> OR <y> <x> OR <y> OR <y> <x> OR <y> OR <y> OR <y> ...
Pemilih project
Pemilih project membatasi pemilihan filter ke item yang termasuk dalam satu project atau salah satu dari sekumpulan project. Setiap project dapat ditentukan berdasarkan ID, nomor, atau menggunakan ekspresi reguler:
<project_selector> ::= project '=' (<number> | <string> | monitoring.regex.full_match '(' <RE2-string> ')') {OR project '=' (<number> | <string> | monitoring.regex.full_match '(' <RE2-string> ')')}
Jika pemilih project Anda memiliki lebih dari satu perbandingan, sertakan seluruh pemilih dalam tanda kurung agar lebih mudah dibaca. Contoh:
(project=12345 OR project="my-project-id" OR monitoring.regex.full_match("^6789.*") OR monitoring.regex.full_match("some-project-id.*" )) AND resource.type="gce_instance"
Pemilih grup
Pemilih grup membatasi pilihan filter ke item yang termasuk dalam satu grup:
<group_selector> ::= group.id '=' <string>
Misalnya, filter berikut dapat digunakan untuk mengambil deret waktu dari setiap instance VM dalam grup:
group.id = 12345 AND resource.type = "gce_instance" AND metric.type = "compute.googleapis.com/instance/disk/read_bytes_count"
Pemilih grup hanya diizinkan dalam filter yang diteruskan ke
metode projects.timeSeries.list. Selain itu,
pemilihan grup memerlukan data yang selaras; yaitu, panggilan projects.timeSeries.list harus menyertakan nilai untuk kolom
perSeriesAligner dan alignmentPeriod. Hal ini karena keanggotaan grup itu sendiri adalah sejenis deret waktu yang harus digabungkan dengan data metrik, dan menyediakan parameter penyelarasan memberi Anda kontrol atas cara penggabungan tersebut terjadi.
Untuk mengetahui informasi selengkapnya tentang parameter penyelarasan, lihat Menggabungkan data.
Pemilih resource
Pemilih resource membatasi pilihan filter ke resource—atau item yang terkait dengan resource—yang memiliki jenis resource atau nilai label tertentu:
<resource_selector> ::= <resource_type_expression>
| <resource_label_expression>
| <resource_type_expression> AND <resource_label_expression>
<resource_type_expression> ::= resource.type '=' <string>
| resource.type ':' <string>
| resource.type '=' starts_with '(' <string> ')'
| resource.type '=' ends_with '(' <string> ')'
<r_label_comparison> ::= resource.labels.[KEY] '=' (<string> | <bool>)
| resource.labels.[KEY] ':' <string>
| resource.labels.[KEY] '=' (starts_with | ends_with) '(' <string> ')'
| resource.labels.[KEY] ('=' | '>' | '<' | '>=' | '<=') <number>
<resource_label_expression> ::= <r_label_comparison> {AND <r_label_comparison>}
| <r_label_comparison> {OR <r_label_comparison>}
Jika Anda menggunakan lebih dari satu <r_label_comparison> dalam pemilih, apit semuanya dalam tanda kurung agar lebih mudah dibaca.
Misalnya, filter berikut dapat digunakan untuk menentukan grup yang mencakup semua instance VM Compute Engine di Amerika Serikat dan Eropa:
resource.type = "gce_instance" AND
(resource.labels.zone = starts_with("us-") OR resource.labels.zone = starts_with("europe-"))
Pemilih resource untuk definisi grup
Pemilih resource yang digunakan untuk menentukan keanggotaan grup menggunakan ekstensi ke sintaksis <resource_selector>:
Anda dapat menyertakan filter berdasarkan nilai label sistem metadata,
metadata.system_labels.[KEY], dan label pengguna metadata,metadata.user_labels.[KEYSTRING]. Sebaiknya kutip kunci untukmetadata.user_labelskarena dapat berisi karakter khusus seperti tanda hubung.Jika pemilih berisi filter metadata dan filter resource, Anda harus menggabungkannya dengan
AND; Anda tidak dapat menggunakanOR. Misalnya, diagram dengan pemilih berikut menampilkan pemakaian CPU untuk semua instance VM dengan jenis mesine2-mediumataue2-micro:metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" AND (metadata.system_labels."machine_type"="e2-medium" OR metadata.system_labels."machine_type"="e2-micro")
Anda dapat menggunakan operator tidak sama dengan (
!=) untuk membandingkan jenis resource, label resource, dan metadata. Operator dapat digunakan saat membandingkan string, angka, Boolean, atau fungsi substring. Misalnya,resource.type!=starts_with("gce")bernilai benar jika jenis resource tidak dimulai dengan"gce".Anda dapat menggunakan satu operator
NOTsebelum perbandingan resource. Misalnya,NOT resource.labels.zone="europe"bernilai benar jika zona resource tidak menyertakan"europe". Anda tidak dapat menggunakanNOTsebelum operator exists (:) atau ekspresi dalam tanda kurung.Anda dapat menggunakan operator "exists" (
:) untuk menguji keberadaan kunci. Misalnya, perbandinganresource.labels:zonebernilai benar jika kunci labelzoneada dalam resource.
Misalnya, salah satu kunci metadata resource platform untuk instance VM adalah
spot_instance. Pemilih filter berikut memilih instance yang merupakan instance spot:
resource.type = "gce_instance" AND metadata.system_labels.spot_instance = true
Pemilih metrik
Pemilih metrik menentukan metrik atau deskriptor metrik tertentu dengan membatasi jenis metrik dan label metrik. Saat digunakan dengan metode projects.timeSeries.list, pemilih metrik harus menentukan satu jenis metrik:
<metric_selector> ::= <metric_name_expression> [AND <metric_label_expression>]
<metric_name_expression> ::= metric.type '=' <string>
| metric.type ':' <string>
| metric.type '=' starts_with '(' <string> ')'
| metric.type '=' ends_with '(' <string> ')'
<metric_label_comparison> ::= metric.labels.[KEY] '=' <string> | <bool>
| metric.labels.[KEY] ':' <string>
| metric.labels.[KEY] '=' starts_with '(' <string> ')'
| metric.labels.[KEY] '=' ends_with '(' <string> ')'
| metric.labels.[KEY] ('=' | '>' | '<' | '>=' | '<=') <number>
<metric_label_expression> ::= <metric_label_comparison> {[AND] <metric_label_comparison>}
| <metric_label_comparison> {OR <metric_label_comparison>}
Misalnya, filter berikut dapat digunakan untuk mengambil deret waktu untuk instance database tertentu:
metric.type = "cloudsql.googleapis.com/database/state" AND (metric.labels.resource_type = "instance" AND metric.labels.resource_id = "abc-123456")