Metrik yang ditentukan pengguna adalah semua metrik yang tidak ditentukan oleh Google Cloud. Hal ini mencakup metrik yang mungkin Anda tentukan dan mencakup metrik yang ditentukan oleh aplikasi pihak ketiga. Metrik yang ditentukan pengguna memungkinkan Anda merekam data khusus aplikasi atau data sistem sisi klien. Metrik bawaan yang dikumpulkan oleh Cloud Monitoring dapat memberi Anda informasi tentang latensi backend atau penggunaan disk, tetapi tidak dapat memberi tahu Anda, misalnya, jumlah rutinitas latar belakang yang dihasilkan aplikasi Anda. Anda juga dapat membuat metrik berdasarkan isi entri log. Untuk mengetahui informasi tentang jenis metrik tersebut, lihat Ringkasan metrik berbasis log.
Metrik yang ditentukan pengguna terkadang disebut metrik kustom atau metrik khusus aplikasi. Dengan metrik ini, Anda atau aplikasi pihak ketiga dapat menentukan dan mengumpulkan informasi yang tidak dapat diperoleh metrik Cloud Monitoring bawaan. Anda merekam metrik tersebut menggunakan API yang disediakan oleh library untuk menginstrumentasikan kode Anda, lalu mengirimkan metrik ke aplikasi backend seperti Cloud Monitoring.
Anda dapat membuat metrik buatan pengguna dengan langsung menggunakan Cloud Monitoring API. Namun, sebaiknya gunakan OpenTelemetry. Untuk mengetahui informasi tentang cara membuat metrik yang ditentukan pengguna, lihat dokumen berikut:
Mengumpulkan metrik dan trace OTLP menjelaskan cara menggunakan Agen Operasional dan penerima OpenTelemetry Protocol (OTLP) agen untuk mengumpulkan metrik dan trace dari aplikasi yang diinstrumentasikan dengan menggunakan OpenTelemetry dan berjalan di Compute Engine.
Google Cloud Managed Service for Prometheus menjelaskan cara mengumpulkan metrik Prometheus dari aplikasi yang berjalan di Google Kubernetes Engine dan Kubernetes.
Bagian Mengumpulkan metrik Prometheus menjelaskan cara menggunakan Agen Operasional untuk mengumpulkan metrik Prometheus dari aplikasi yang berjalan di Compute Engine.
Artikel Membuat metrik buatan pengguna dengan API menjelaskan cara membuat metrik menggunakan Cloud Monitoring API dan cara menambahkan data metrik ke metrik tersebut. Dokumen ini menggambarkan cara menggunakan Monitoring API dengan contoh menggunakan bahasa pemrograman APIs Explorer, C#, Go, Java, Node.js, PHP, Python, dan Ruby.
Buat metrik kustom di Cloud Run menunjukkan cara menggunakan OpenTelemetry Collector sebagai agen bantuan dalam deployment Cloud Run.
Dalam hal Cloud Monitoring, Anda dapat menggunakan metrik yang ditentukan pengguna, seperti metrik bawaan. Anda dapat membuat diagram, menyetel pemberitahuan, membacanya, dan memantaunya. Untuk informasi tentang membaca data metrik, lihat dokumen berikut:
- Metrik daftar dan jenis resource menjelaskan cara mencantumkan dan memeriksa jenis metrik bawaan dan yang ditetapkan pengguna. Misalnya, Anda dapat menggunakan informasi dalam dokumen tersebut untuk mencantumkan semua deskripsi metrik yang ditentukan pengguna dalam project Anda.
- Mengambil data deret waktu menjelaskan cara mengambil data deret waktu dari metrik menggunakan Monitoring API. Misalnya, dokumen ini menjelaskan cara menggunakan API untuk mengetahui pemakaian CPU instance virtual machine (VM) di project Google Cloud Anda.
Konsol Google Cloud menyediakan halaman khusus untuk membantu Anda melihat penggunaan metrik yang ditentukan pengguna. Untuk mengetahui informasi tentang konten halaman ini, baca Melihat penggunaan dan diagnostik metrik.
Deskripsi metrik untuk metrik yang ditentukan pengguna
Setiap jenis metrik harus memiliki deskripsi metrik yang menentukan cara pengaturan data metrik. Deskripsi metrik juga menentukan label untuk metrik dan nama metrik. Misalnya, daftar metrik menampilkan deskriptor metrik untuk semua jenis metrik bawaan.
Cloud Monitoring dapat membuat deskriptor metrik untuk Anda, dengan menggunakan data metrik yang Anda tulis, atau Anda dapat secara eksplisit membuat deskriptor metrik, lalu menulis data metrik. Dalam kedua kasus tersebut, Anda harus memutuskan cara mengatur data metrik.
Contoh desain
Misalkan Anda memiliki program yang berjalan di satu mesin,
dan program ini memanggil program tambahan A
dan B
. Anda ingin menghitung
seberapa sering program A
dan B
dipanggil. Anda juga ingin tahu kapan
program A
dipanggil lebih dari 10 kali per menit dan kapan B
program
dipanggil lebih dari 5 kali per menit. Terakhir, asumsikan Anda memiliki
satu project Google Cloud dan berencana untuk menulis data
pada resource yang dimonitor global
.
Contoh ini menjelaskan beberapa desain berbeda yang dapat Anda gunakan untuk metrik yang ditentukan pengguna:
Anda menggunakan dua metrik:
Metric-type-A
menghitung panggilan ke programA
danMetric-type-B
menghitung panggilan ke programB
. Dalam hal ini,Metric-type-A
berisi 1 deret waktu, danMetric-type-B
berisi 1 deret waktu.Anda dapat membuat satu kebijakan pemberitahuan dengan dua kondisi, atau membuat dua kebijakan pemberitahuan masing-masing dengan satu kondisi dengan mode data ini. Kebijakan pemberitahuan dapat mendukung beberapa kondisi, tetapi memiliki satu konfigurasi untuk saluran notifikasi.
Model ini mungkin tepat jika Anda tidak tertarik dengan kesamaan data antara aktivitas yang dipantau. Dalam contoh ini, aktivitasnya adalah kecepatan panggilan ke program
A
danB
.Anda menggunakan satu metrik dan menggunakan label untuk menyimpan ID program. Misalnya, label mungkin menyimpan nilai
A
atauB
. Monitoring membuat deret waktu untuk setiap kombinasi label yang unik. Oleh karena itu, ada deret waktu yang nilai labelnya adalahA
dan deret waktu lain yang nilai labelnya adalahB
.Seperti model sebelumnya, Anda dapat membuat satu kebijakan pemberitahuan atau dua kebijakan pemberitahuan. Namun, kondisi untuk kebijakan pemberitahuan lebih rumit. Kondisi yang menghasilkan insiden saat tingkat panggilan untuk program
A
melebihi nilai minimum harus menggunakan filter yang hanya menyertakan titik data yang nilai labelnyaA
.Salah satu keuntungan dari model ini adalah kemudahan penghitungan rasio. Misalnya, Anda dapat menentukan berapa banyak dari total yang disebabkan oleh panggilan ke
A
.Anda menggunakan satu metrik untuk menghitung jumlah panggilan, tetapi tidak menggunakan label untuk mencatat program mana yang dipanggil. Pada model ini, ada satu deret waktu yang menggabungkan data untuk kedua program. Namun, Anda tidak dapat membuat kebijakan pemberitahuan yang memenuhi tujuan karena data dari dua program tidak dapat dipisahkan.
Dua desain pertama memungkinkan Anda memenuhi persyaratan analisis data Anda; namun, desain terakhir tidak.
Untuk informasi selengkapnya, lihat Membuat metrik yang ditentukan pengguna.
Nama metrik yang ditentukan pengguna
Saat membuat metrik yang ditentukan pengguna, Anda menentukan ID string yang mewakili jenis metrik. String ini harus unik di antara metrik yang ditentukan pengguna di project Google Cloud Anda dan harus menggunakan awalan yang menandai metrik sebagai metrik yang ditentukan pengguna. Untuk Monitoring, awalan yang diizinkan adalah custom.googleapis.com/
, workload.googleapis.com/
, external.googleapis.com/user
, dan external.googleapis.com/prometheus
.
Awalan diikuti dengan nama yang
menjelaskan item yang Anda kumpulkan.
Untuk mengetahui detail tentang cara yang direkomendasikan untuk menamai metrik, lihat Konvensi penamaan metrik.
Berikut adalah contoh dari dua jenis ID untuk jenis metrik:
custom.googleapis.com/cpu_utilization custom.googleapis.com/instance/cpu/utilization
Pada contoh sebelumnya, awalan custom.googleapis.com
menunjukkan bahwa kedua metrik merupakan metrik yang ditentukan pengguna. Kedua contoh tersebut ditujukan untuk metrik yang mengukur
penggunaan CPU. Namun, keduanya menggunakan model organisasi yang berbeda. Jika Anda mengantisipasi adanya banyak metrik yang ditentukan pengguna, sebaiknya gunakan struktur penamaan hierarkis seperti yang digunakan oleh contoh kedua.
Semua jenis metrik memiliki ID unik global yang disebut nama resource. Struktur nama resource untuk jenis metrik adalah:
projects/PROJECT_ID/metricDescriptors/METRIC_TYPE
dengan METRIC_TYPE
adalah ID string dari jenis metrik.
Jika contoh metrik sebelumnya dibuat di project my-project-id
, nama resource untuk metrik ini adalah sebagai berikut:
projects/my-project-id/metricDescriptors/custom.googleapis.com/cpu_utilization projects/my-project-id/metricDescriptors/custom.googleapis.com/instance/cpu/utilization
Nama atau jenis? Dalam deskripsi metrik, kolom name
menyimpan nama resource jenis metrik dan kolom type
menyimpan string METRIC_TYPE
.
Jenis resource yang dipantau untuk metrik yang ditentukan pengguna
Saat menulis data ke deret waktu, Anda harus menunjukkan asal data tersebut. Untuk menentukan sumber data, pilih jenis resource yang dimonitor yang mewakili asal data, lalu gunakan jenis resource tersebut untuk mendeskripsikan asal tertentu. Resource yang dipantau bukan bagian dari jenis metrik. Sebaliknya, deret waktu tempat Anda menulis data akan menyertakan referensi ke jenis metrik dan referensi ke resource yang dimonitor. Jenis metrik mendeskripsikan data, sedangkan resource yang dipantau menjelaskan asal data.
Pertimbangkan resource yang dimonitor sebelum membuat deskriptor metrik. Jenis resource yang dipantau yang Anda gunakan memengaruhi label yang perlu disertakan dalam deskriptor metrik. Misalnya, resource VM Compute Engine berisi label untuk project ID, ID instance, dan zona instance. Oleh karena itu, jika Anda berencana untuk menulis metrik terhadap resource VM Compute Engine, label resource akan menyertakan ID instance sehingga Anda tidak memerlukan label untuk ID instance di deskriptor metrik.
Setiap titik data metrik Anda harus dikaitkan dengan objek resource yang dipantau. Titik dari berbagai objek resource yang dimonitor disimpan dalam deret waktu yang berbeda.
Anda harus menggunakan salah satu jenis resource yang dipantau berikut dengan metrik yang ditentukan pengguna:
aws_ec2_instance
: Instance Amazon EC2.dataflow_job
: Tugas Dataflow.gae_instance
: Instance App Engine.gce_instance
: Instance Compute Engine.generic_node
: Node komputasi yang ditentukan pengguna.generic_task
: Tugas yang ditentukan pengguna.gke_container
: Instance container GKE.global
: Gunakan resource ini saat tidak ada jenis resource lain yang cocok. Untuk sebagian besar kasus penggunaan,generic_node
ataugeneric_task
adalah pilihan yang lebih baik daripadaglobal
.k8s_cluster
: Cluster Kubernetes.k8s_container
: Container Kubernetes.k8s_node
: Node Kubernetes.k8s_pod
: Pod Kubernetes.
Praktik umumnya adalah menggunakan objek resource yang dimonitor yang mewakili resource fisik tempat kode aplikasi Anda dijalankan. Pendekatan ini memiliki beberapa keuntungan:
- Anda mendapatkan performa yang lebih baik dibandingkan dengan menggunakan jenis resource tunggal.
- Anda menghindari data tidak berurutan yang disebabkan oleh beberapa proses yang menulis ke deret waktu yang sama.
- Anda dapat mengelompokkan data metrik yang ditentukan pengguna dengan data metrik lainnya dari resource yang sama.
global
dan resource umum
Jenis resource generic_task
dan generic_node
berguna dalam situasi
saat tidak ada jenis resource lebih spesifik yang sesuai.
Jenis generic_task
berguna untuk menentukan resource seperti tugas seperti
aplikasi. Jenis generic_node
berguna untuk menentukan resource seperti node, misalnya mesin virtual. Kedua jenis generic_*
memiliki beberapa label umum yang dapat digunakan untuk menentukan objek resource unik,
sehingga memudahkan penggunaannya dalam filter metrik untuk agregasi dan pengurangan.
Sebaliknya, jenis resource global
hanya memiliki label
project_id
dan location
. Jika Anda memiliki banyak sumber metrik dalam suatu project, penggunaan objek resource global
yang sama dapat menyebabkan konflik dan penulisan data metrik yang berlebih.
Metode API yang mendukung metrik yang ditentukan pengguna
Tabel berikut menunjukkan metode dalam Monitoring API yang mendukung metrik yang ditentukan pengguna dan metode mana yang mendukung metrik bawaan:
Metode Monitoring API | Gunakan dengan metrik yang ditentukan pengguna |
Gunakan dengan metrik bawaan |
---|---|---|
monitoredResourceDescriptors.get | ya | ya |
monitoredResourceDescriptors.list | ya | ya |
metricDescriptors.get | ya | ya |
metricDescriptors.list | ya | ya |
timeSeries.list | ya | ya |
timeSeries.create | ya | |
metricDescriptors.create | ya | |
metricDescriptors.delete | ya |
Batas dan latensi
Untuk mengetahui batas terkait metrik yang ditentukan pengguna dan retensi data, lihat Kuota dan batas.
Untuk menyimpan data metrik di luar periode retensi, Anda harus menyalin data secara manual ke lokasi lain, seperti Cloud Storage atau BigQuery.
Untuk mengetahui informasi tentang latensi yang terkait dengan penulisan data ke metrik yang ditentukan pengguna, lihat Latensi data metrik.
Langkah selanjutnya
- Gunakan Google Cloud Managed Service for Prometheus untuk mengumpulkan metrik Prometheus dari aplikasi yang berjalan di Google Kubernetes Engine dan Kubernetes.
- Mengumpulkan metrik Prometheus dari aplikasi yang berjalan di Compute Engine.
- Kumpulkan metrik dan trace OTLP dari aplikasi yang diinstrumentasi menggunakan OpenTelemetry dan menjalankannya di Compute Engine.
- Membuat metrik buatan pengguna dengan API
- Pengantar Cloud Monitoring API
- Metrik, deret waktu, dan resource