Dokumen ini menjelaskan cara memahami persentil dan model histogram untuk data metrik dengan jenis nilai Distribution
.
Metrik distribusi menentukan rentang nilai, yang disebut bucket, dan mencatat jumlah nilai terukur yang masuk ke setiap bucket. Metrik distribusi tidak melaporkan nilai masing-masing pengukuran, tetapi melaporkan histogram jumlah dalam bucket. Jenis nilai ini digunakan oleh layanan jika setiap pengukuran terlalu banyak untuk dikumpulkan, tetapi informasi statistik, seperti rata-rata atau persentil, tentang pengukuran tersebut bernilai.
Bagian berikutnya dari halaman ini menggunakan contoh sintetis untuk menunjukkan cara menentukan persentil. Contoh tersebut menunjukkan bahwa nilai persentil bergantung pada jumlah bucket, lebar bucket, distribusi pengukuran, dan jumlah total sampel. Nilai persentil tidak bergantung pada nilai terukur sebenarnya karena nilai tersebut tidak tersedia dalam histogram.
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 yang hanya menentukan batas bawah. Untuk contoh ini, bucket terbatas dengan indeks n+1 dua kali lebih lebar dari bucket terbatas dengan indeks n.
Contoh berikut menunjukkan bahwa lebar bucket menentukan error maksimum antara persentil yang dihitung dan pengukuran. Eksperimen tersebut juga menunjukkan bahwa jumlah sampel dalam histogram penting. Misalnya, jika jumlah sampel kurang dari 20, persentil ke-95 dan ke-99 selalu berada di bucket yang sama.
Kasus 1: Jumlah total sampel adalah 1.
Jika ada satu pengukuran, ketiga nilai persentil tersebut akan berbeda, tetapi keduanya hanya menampilkan persentil ke-50, ke-95, dan ke-99 dari bucket yang sama. Error antara pengukuran dan pengukuran sebenarnya tidak dapat ditentukan karena pengukuran tidak diketahui.
Misalnya, asumsikan histogram pengukuran seperti yang ditunjukkan pada 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 estimasinya menggunakan aturan berikut:
pth percentage = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)
Dalam ekspresi sebelumnya,
p_low
danp_up
adalah batas bawah dan atas dari rentang persentil untuk bucket. Demikian pula,bucket_low
danbucket_up
adalah batas bawah dan atas bucket. Nilai untukp_low
danp_up
bergantung pada cara pendistribusian jumlah 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 = 192
Untuk menghitung persentil ke-95, ganti 50
dengan 95
dalam ekspresi
sebelumnya. Untuk contoh ini jika hanya ada satu sampel, persentil-nya 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: Jumlah total sampel adalah 10.
Jika ada 10 sampel, persentil ke-50 mungkin berada di bucket yang berbeda dari persentil ke-95 dan ke-99. Namun, tidak ada cukup pengukuran untuk memungkinkan persentil ke-95 dan ke-99 berada di bucket yang berbeda.
Misalnya, asumsikan histogram pengukuran seperti yang ditunjukkan pada 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 ada pada nomor bucket 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 | Kesalahan maksimum |
---|---|---|---|
Ke-50 | 1 | 1,5 | 0,5 |
Ke-95 | 8 | 192 | 74 |
Ke-99 | 8 | 243,2 | 115,2 |
Dalam contoh ini dan dalam contoh sebelumnya, persentil ke-95 ada di bucket nomor 8; namun, komputasi persentilnya berbeda. Perbedaannya terletak pada cara pendistribusian sampel. Pada contoh pertama, semua sampel berada di bucket yang sama, sedangkan dalam contoh terbaru, sampel berada di bucket yang berbeda.
Contoh dengan data nyata
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
Guna menentukan bucket yang digunakan untuk metrik selama interval waktu tertentu, panggil metode projects.timeSeries/list
Cloud Monitoring API.
Misalnya, guna mengidentifikasi model bucket untuk metrik, lakukan tindakan berikut:
- Buka halaman web
projects.timeSeries/list
. Di Penjelajah API, masukkan filter yang menentukan metrik, waktu mulai, dan waktu berakhir.
Misalnya, untuk mendapatkan informasi tentang metrik yang menyimpan latensi permintaan API, masukkan informasi 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 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 terdapat 3 pengukuran
untuk interval waktu yang ditentukan 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 untuk 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
Pada ekspresi sebelumnya, N
adalah jumlah total bucket.
Bucket untuk metrik ini, beserta titik tengah setiap bucket, ditampilkan dalam tabel berikut:
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 nilai persentil ke-50, ke-95, dan ke-99. Misalnya, jika ada satu sampel dan berada di nomor bucket 10, 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
serta menyertakan periode penyelarasan dan penyelaras. Dalam contoh ini, setelan berikut dipilih:
- Perata:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
, atauALIGN_PERCENTILE_99
- Periode Perataan: 60 d
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 ada di bucket 10, untuk sampel lainnya ada di bucket 11.
Tabel berikut menunjukkan hasil menjalankan
metode projects.timeSeries/list
dengan pelurus yang berbeda. Baris pertama
sesuai dengan kasus saat penyelaras tidak ditentukan. Jika Anda tidak
menentukan penyelaras, model bucket dan nilai rata-rata akan ditampilkan. Tiga baris berikutnya mencantumkan data yang ditampilkan saat penyelaras 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 di bucket sampel, persentil ke-50 adalah titik tengah bucket tersebut. Namun, jika sampel berada di bucket yang berbeda, distribusi tersebut akan memengaruhi estimasi.
Untuk menentukan apakah persentil ke-50 adalah perkiraan rata-rata yang wajar, Anda dapat membandingkan nilai rata-rata dengan persentil ke-50. Nilai rata-rata ditampilkan dengan detail bucket.
Langkah selanjutnya
Untuk mendapatkan informasi tentang cara memvisualisasikan metrik bernilai distribusi, lihat Tentang metrik nilai distribusi.