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 termasuk dalam setiap bucket. Metrik distribusi
tidak melaporkan nilai pengukuran individual; metrik ini melaporkan histogram jumlah
dalam bucket. Jenis nilai ini digunakan oleh layanan jika pengukuran individual terlalu banyak untuk dikumpulkan, tetapi informasi statistik, seperti rata-rata atau persentil, tentang pengukuran tersebut sangat berharga.
Bagian berikutnya di halaman ini menggunakan contoh sintetis untuk menunjukkan cara persentil ditentukan. Contoh ini menunjukkan bahwa nilai persentil bergantung pada jumlah bucket, lebar bucket, distribusi pengukuran, dan jumlah total sampel. Nilai persentil tidak bergantung pada nilai yang diukur 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 daripada
bucket terbatas dengan indeks n.
Contoh berikut menunjukkan bahwa lebar bucket menentukan error maksimum antara persentil yang dihitung dan pengukuran. Hal ini juga menunjukkan bahwa jumlah sampel dalam histogram sangat penting. Misalnya, jika jumlah sampel kurang dari 20, persentil ke-95 dan ke-99 selalu berada dalam bucket yang sama.
Kasus 1: Jumlah total sampel adalah 1.
Jika ada satu pengukuran, ketiga nilai persentil akan berbeda, tetapi nilai tersebut hanya menampilkan persentil ke-50, ke-95, dan ke-99 dari bucket yang sama. Error antara estimasi dan pengukuran sebenarnya tidak dapat ditentukan karena pengukuran tidak diketahui.
Misalnya, asumsikan 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 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 batas atas rentang persentil untuk bucket. Demikian pula,bucket_low
danbucket_up
adalah batas bawah dan atas bucket. Nilai untukp_low
danp_up
bergantung pada cara jumlah didistribusikan di antara berbagai bucket.
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, dengan 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: 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 pengukuran yang memadai agar persentil ke-95 dan ke-99 berada di bucket yang berbeda.
Misalnya, asumsikan 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 adalah karena 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 sebenarnya
Bagian ini berisi contoh yang menggambarkan cara menentukan model bucket yang digunakan oleh metrik tertentu. Bagian ini juga mengilustrasikan 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 metrik, lakukan hal berikut:
- Buka halaman web
projects.timeSeries/list
. Di APIs Explorer, masukkan filter yang menentukan metrik, waktu mulai, dan waktu berakhir.
Misalnya, untuk mendapatkan informasi tentang metrik yang menyimpan latensi permintaan API, masukkan hal 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 agar 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
Dalam ekspresi sebelumnya, N
adalah jumlah total bucket.
Bucket untuk metrik ini, beserta titik tengah setiap bucket, ditampilkan dalam tabel berikut:
Bucket 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 penghitungan 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 berada di bucket nomor 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
, dan
menyertakan periode penyelarasan dan penyelaras. Dalam contoh ini, setelan berikut
dipilih:
- Aligner:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
, atauALIGN_PERCENTILE_99
- Periode Penyelarasan: 60 s
Untuk pemilihan ALIGN_PERCENTILE_50
, setiap nilai dalam deret waktu adalah persentil ke-50 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 berada di bucket 11.
Tabel berikut menunjukkan hasil eksekusi
metode projects.timeSeries/list
dengan penyelaras 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 dalam bucket sampel, 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 adalah estimasi rata-rata yang wajar, Anda dapat membandingkan nilai rata-rata dengan persentil ke-50. Nilai rata-rata ditampilkan dengan detail bucket.
Langkah selanjutnya
Untuk informasi tentang cara memvisualisasikan metrik nilai distribusi, lihat Tentang metrik nilai distribusi.