Metrik dengan jenis nilai Distribution di Cloud Monitoring mengelompokkan pengukuran bervolume tinggi ke dalam rentang nilai yang disebut bucket, bukan mencatat setiap titik data satu per satu. Merekam jumlah bucket sebagai histogram memungkinkan layanan meringkas set pengukuran yang besar sehingga Anda dapat menganalisis statistik seperti rata-rata dan persentil.
Pada diagram peta panas, Anda dapat menempatkan persentil ke-50, ke-95, dan ke-99 dari toolbar diagram. Untuk menampilkan metrik bernilai distribusi pada diagram garis, gunakan aligner yang memilih persentil untuk mengonversi setiap distribusi menjadi nilai numerik.
Contoh dalam dokumen ini menunjukkan cara jumlah bucket, lebar bucket, distribusi pengukuran, dan ukuran sampel menentukan perkiraan nilai persentil tanpa menyimpan pengukuran individual.
Contoh dengan data sintetis
Pertimbangkan model bucket Exponential dengan skala 1, faktor pertumbuhan 2, dan 10 bucket terbatas. Histogram ini berisi 12 bucket: 10 bucket terbatas, 1 bucket yang hanya menentukan batas atas, dan 1 bucket yang hanya menentukan batas bawah. Untuk contoh ini, bucket terbatas dengan indeks n+1 dua kali lebih lebar daripada bucket terbatas dengan indeks n.
Contoh berikut menunjukkan bahwa lebar bucket menentukan error maksimum antara persentil yang dihitung dan pengukuran. Contoh ini juga menunjukkan bahwa jumlah sampel dalam histogram itu penting. Misalnya, jika jumlah sampel kurang dari 20, persentil ke-95 dan ke-99 akan selalu berada dalam bucket yang sama.
Kasus 1: Jumlah total sampel adalah 1
Jika hanya ada satu pengukuran, ketiga nilai persentil akan berbeda, tetapi hanya menunjukkan persentil ke-50, ke-95, dan ke-99 dari bucket yang sama. Error antara estimasi dan pengukuran sebenarnya tidak dapat ditentukan karena pengukurannya tidak diketahui.
Misalnya, asumsikan bahwa histogram pengukuran seperti yang ditunjukkan dalam tabel berikut:
| Nomor bucket | Batas bawah | Batas atas | Jumlah | Rentang persentil |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | |
| 1 | 1 | 2 | 0 | 0 |
| 2 | 2 | 4 | 0 | 0 |
| 3 | 4 | 8 | 0 | 0 |
| 4 | 8 | 16 | 0 | 0 |
| 5 | 16 | 32 | 0 | 0 |
| 6 | 32 | 64 | 0 | 0 |
| 7 | 64 | 128 | 0 | 0 |
| 8 | 128 | 256 | 1 | 0 - 100 |
| 9 | 256 | 512 | 0 | 0 |
| 10 | 512 | 1024 | 0 | 0 |
| 11 | 1024 | 0 | 0 |
Untuk menghitung persentil ke-50, lakukan hal berikut:
- Gunakan jumlah bucket untuk menentukan bucket yang berisi persentil ke-50. Dalam contoh ini, bucket nomor 8 berisi persentil ke-50.
Hitung estimasi menggunakan aturan berikut:
pth percentile = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)Dalam ekspresi sebelumnya,
p_lowdanp_upadalah batas bawah dan atas rentang persentil untuk bucket. Demikian pula,bucket_lowdanbucket_upadalah batas bawah dan atas bucket. Nilai untukp_lowdanp_upbergantung pada cara jumlah didistribusikan di antara bucket yang berbeda.
Misalnya, persentil ke-50 dihitung sebagai:
50th percentile = 128 + (256-128)*(50-0)/(100-0)
= 128 + 128 * 50 / 100
= 128 + 64
= 192Untuk menghitung persentil ke-95, ganti 50 dengan 95 dalam ekspresi sebelumnya. Untuk contoh ini, jika terdapat tepat satu sampel, persentilnya adalah sebagai berikut:
| Persentil | Nomor bucket | Nilai |
|---|---|---|
| Ke-50 | 8 | 192 |
| Ke-95 | 8 | 249,6 |
| Ke-99 | 8 | 254,7 |
Error antara estimasi dan pengukuran sebenarnya dapat dibatasi, tetapi tidak dapat ditentukan karena pengukurannya tidak diketahui.
Kasus 2: Total jumlah sampel adalah 10
Jika ada 10 sampel, persentil ke-50 mungkin berada di bucket yang berbeda dengan persentil ke-95 dan ke-99. Namun, tidak ada cukup pengukuran untuk memungkinkan persentil ke-95 dan ke-99 berada dalam bucket yang berbeda.
Misalnya, asumsikan bahwa histogram pengukuran seperti yang ditunjukkan dalam tabel berikut:
| Nomor bucket | Batas bawah | Batas atas | Jumlah | Rentang persentil |
|---|---|---|---|---|
| 0 | 1 | 4 | 0 - 40 | |
| 1 | 1 | 2 | 2 | 40 - 60 |
| 2 | 2 | 4 | 1 | 60 - 70 |
| 3 | 4 | 8 | 1 | 70 - 80 |
| 4 | 8 | 16 | 1 | 80 - 90 |
| 5 | 16 | 32 | 0 | 0 |
| 6 | 32 | 64 | 0 | 0 |
| 7 | 64 | 128 | 0 | 0 |
| 8 | 128 | 256 | 1 | 90 - 100 |
| 9 | 256 | 512 | 0 | 0 |
| 10 | 512 | 1024 | 0 | 0 |
| 11 | 1024 | 0 | 0 |
Anda dapat menggunakan prosedur yang dijelaskan sebelumnya untuk menghitung persentil ke-50, ke-95, dan ke-99. Misalnya, persentil ke-50, yang berada di bucket nomor 1, dihitung sebagai berikut:
50th percentile = 1 + (2-1)*(50-40)/(60-40)
= 1 + (1 * 10 / 20)
= 1 + 0.5
= 1.5
Demikian pula, persentil ke-95 dihitung sebagai berikut:
95th percentile = 128 + (256-128)*(95-90)/(100-90)
= 128 + 128 * 5 / 10
= 128 + 64
= 192
Dengan menggunakan proses yang dijelaskan sebelumnya, persentil dapat dihitung. Setiap baris dalam tabel berikut mencantumkan persentil, bucket yang sesuai, dan nilai yang dihitung:
| Persentil | Nomor bucket | Nilai | Error maksimum |
|---|---|---|---|
| Ke-50 | 1 | 1,5 | 0,5 |
| Ke-95 | 8 | 192 | 74 |
| Ke-99 | 8 | 243,2 | 115,2 |
Dalam contoh ini dan contoh sebelumnya, persentil ke-95 berada di bucket nomor 8; namun, komputasi persentilnya berbeda. Perbedaannya terletak pada cara sampel didistribusikan. Pada contoh pertama, semua sampel berada dalam bucket yang sama, sedangkan pada contoh terbaru, sampel berada dalam bucket yang berbeda.
Contoh dengan data aktual
Bagian ini berisi contoh yang menggambarkan cara menentukan model bucket yang digunakan oleh metrik tertentu. Bagian ini juga menggambarkan cara mengevaluasi potensi error dalam nilai persentil yang dihitung.
Mengidentifikasi model bucket
Untuk menentukan bucket yang digunakan untuk metrik selama interval waktu tertentu, panggil metode projects.timeSeries/list Cloud Monitoring API.
Misalnya, untuk mengidentifikasi model bucket untuk sebuah metrik, lakukan hal berikut:
- Buka halaman web
projects.timeSeries/list. Di APIs Explorer, masukkan filter yang menentukan metrik, waktu mulai, dan waktu akhir.
Misalnya, untuk mendapatkan informasi tentang metrik yang menyimpan latensi permintaan API, masukkan kode berikut:
metric.type="serviceruntime.googleapis.com/api/request_latencies" resource.type="consumed_api"Dalam contoh ini, kolom filter menentukan jenis metrik dan jenis resource. Untuk mengetahui informasi selengkapnya tentang filter ini, lihat Filter pemantauan.
Klik Enter.
Berikut adalah respons list API untuk metrik bernilai distribusi yang tersedia di satu project Google Cloud :
{
"timeSeries": [
{
"metric": {...},
"resource": {...},
"metricKind": "DELTA",
"valueType": "DISTRIBUTION",
"points": [
{
"interval": {
"startTime": "2020-11-03T15:05:00Z",
"endTime": "2020-11-03T15:06:00Z"
},
"value": {
"distributionValue": {
"count": "3",
"mean": 25.889,
"bucketOptions": {
"exponentialBuckets": {
"numFiniteBuckets": 66,
"growthFactor": 1.4,
"scale": 1
}
},
"bucketCounts": [
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"3"
]
}
}
},
Dalam respons API, kolom value menjelaskan data yang disimpan dalam array points. Kolom count dan mean melaporkan bahwa untuk interval waktu yang ditentukan, ada 3 pengukuran dan nilai rata-ratanya adalah 25,889. Kolom bucketOptions menunjukkan bahwa model eksponensial dikonfigurasi untuk memiliki 66 bucket, skala 1, dan faktor pertumbuhan 1,4.
Untuk menghitung batas bawah dan atas bucket dengan indeks n, gunakan aturan berikut:
- Batas bawah (1 ≤ n < N) = skala * (faktor pertumbuhan)(n-1)
- Batas atas (0 ≤ n < N-1) = skala * (faktor pertumbuhan)n
Dalam ekspresi sebelumnya, N adalah jumlah total bucket.
Bucket untuk metrik ini, beserta titik tengah setiap bucket, ditampilkan dalam tabel berikut:
| Bucket ke-n | Batas bawah | Batas atas | Titik tengah |
|---|---|---|---|
| 0 | 1 | Tidak berlaku | |
| 1 | 1 | 1,40 | 1,20 |
| 2 | 1,40 | 1,96 | 1,68 |
| ... | |||
| 9 | 14,76 | 20,66 | 17,71 |
| 10 | 20,66 | 28,93 | 24,79 |
| 11 | 28,93 | 40.50 | 34,71 |
| ... |
Memverifikasi komputasi persentil
Setelah konfigurasi bucket diketahui, untuk setiap kumpulan pengukuran, Anda dapat memprediksi nilai persentil ke-50, ke-95, dan ke-99. Misalnya, jika ada satu sampel dan sampel tersebut berada di bucket nomor 10, maka nilai persentil ke-50 adalah 24,79.
Untuk mengambil nilai persentil ke-50, ke-95, dan ke-99 dari metrik, Anda dapat menggunakan metode API projects.timeSeries/list dan menyertakan periode penyelarasan dan penyelarasan. Dalam contoh ini, setelan berikut dipilih:
- Aligner:
ALIGN_PERCENTILE_50,ALIGN_PERCENTILE_95, atauALIGN_PERCENTILE_99 - Periode perataan: 60 dtk
Untuk pilihan ALIGN_PERCENTILE_50, setiap nilai dalam deret waktu adalah
persentil ke-50 dari bucket:
{
"timeSeries": [
{
"metric": {...},
"resource": {...},
"metricKind": "GAUGE",
"valueType": "DOUBLE",
"points": [
{
"interval": {
"startTime": "2020-11-03T15:06:36Z",
"endTime": "2020-11-03T15:06:36Z"
},
"value": {
"doubleValue": 24.793256140799986
}
},
{
"interval": {
"startTime": "2020-11-03T15:05:36Z",
"endTime": "2020-11-03T15:05:36Z"
},
"value": {
"doubleValue": 34.710558597119977
}
},
{
"interval": {
"startTime": "2020-11-03T15:04:36Z",
"endTime": "2020-11-03T15:04:36Z"
},
"value": {
"doubleValue": 24.793256140799986
}
}
]
},
Untuk dua sampel, persentil ke-50 berada di bucket 10; untuk sampel lainnya, persentil ke-50 berada di bucket 11.
Tabel berikut menunjukkan hasil eksekusi metode projects.timeSeries/list dengan berbagai penyelarasan. Baris pertama
sesuai dengan kasus saat perata tidak ditentukan. Jika Anda tidak menentukan penyelarasan, model bucket dan nilai rata-rata akan ditampilkan. Tiga baris berikutnya mencantumkan data yang ditampilkan saat penyelarasan ditetapkan ke ALIGN_PERCENTILE_50, ALIGN_PERCENTILE_95, dan ALIGN_PERCENTILE_99:
| Statistik | Contoh @ 15:06 | Contoh @ 15:05 | Contoh @ 15:04 |
|---|---|---|---|
| rata-rata | 25.889 | 33,7435 | Tidak tersedia |
| Persentil ke-50 | 24,79 | 34,71 | 24,79 |
| Persentil ke-95 | 28,51 | 39,91 | 28,51 |
| Persentil ke-99 | 28,84 | 40,37 | 28,84 |
Seperti yang diilustrasikan oleh dua contoh dengan data sintetis, nilai persentil bergantung pada cara sampel didistribusikan. Jika semua sampel berada dalam bucket yang sama, persentil ke-50 adalah titik tengah bucket tersebut. Namun, jika sampel berada dalam bucket yang berbeda, distribusi tersebut akan memengaruhi estimasi.
Untuk menentukan apakah persentil ke-50 merupakan perkiraan rata-rata yang wajar, Anda dapat membandingkan nilai rata-rata dengan persentil ke-50. Nilai rata-rata ditampilkan bersama detail bucket.
Langkah berikutnya
Untuk mengetahui informasi tentang cara memvisualisasikan metrik nilai distribusi, lihat Tentang metrik nilai distribusi.