Questo documento descrive come comprendere i percentili e il modello dell'istogramma
per dati di metrica con un tipo di valore Distribution
.
Una metrica di distribuzione definisce intervalli di valori, denominati bucket, e record
il conteggio dei valori misurati
che rientrano in ciascun segmento. Metriche di distribuzione
non registri i singoli valori delle misure; riporta un istogramma di conteggi
nei bucket. Questo tipo di valore viene utilizzato dai servizi quando il singolo
le misurazioni sono troppo numerose per poter essere raccolte, ma le informazioni statistiche,
come medie o percentili, queste misurazioni sono importanti.
La sezione successiva di questa pagina utilizza un esempio sintetico per mostrare vengono determinati i percentili. L'esempio mostra che i valori percentili dipendono in base al numero di bucket, alla loro larghezza, alla distribuzione misurazioni e il conteggio totale dei campioni. I valori percentili non dipendono dai valori misurati effettivi perché questi valori non sono disponibili nell'istogramma.
Esempio con dati sintetici
Considera un modello di bucket Exponential
con una scala
1, con un fattore di crescita pari a 2 e 10 bucket finiti. Questo istogramma contiene
12 bucket, 10 bucket finiti, 1 bucket che specifica solo
limite superiore e 1 che specifica solo un limite inferiore. Per questo esempio,
un bucket finito con indice n+1 ha una larghezza doppia rispetto
bucket finito con indice n.
I seguenti esempi mostrano che la larghezza del bucket determina la tra il percentile calcolato e le misurazioni. Inoltre, dimostrare che il numero di campioni in un istogramma è importante. Ad esempio, se il numero di campioni è inferiore a 20, il 95° e il 99° percentile si trovano sempre nello stesso bucket.
Caso 1: il numero totale di campioni è 1.
Quando è presente una singola misurazione, i tre valori percentile sono diversi, ma vengono mostrati solo il 50°, il 95° e il 99° percentile dello stesso bucket. L'errore tra la stima e le misurazioni effettive non può essere perché la misurazione è sconosciuta.
Ad esempio, supponiamo che l'istogramma delle misurazioni sia quello mostrato nella tabella seguente:
Numero bucket | Limite inferiore | Limite superiore | Conteggio | Intervallo percentile |
---|---|---|---|---|
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 |
Per calcolare il 50° percentile, segui questi passaggi:
- Utilizzare il conteggio dei bucket per determinare il bucket contiene il 50° percentile. In questo esempio, il bucket numero 8 contiene il 50° percentile.
Calcola la stima utilizzando la seguente regola:
pth percentage = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)
Nell'espressione precedente,
p_low
ep_up
sono i valori più bassi e limiti superiori dell'intervallo percentile per il bucket. Analogamente,bucket_low
ebucket_up
sono i limiti inferiore e superiore del bucket. I valori dip_low
ep_up
dipendono dal modo in cui i conteggi vengono distribuiti tra i diversi bucket.
Ad esempio, il 50° percentile viene calcolato come segue:
50th percentile = 128 + (256-128)*(50-0)/(100-0) = 128 + 128 * 50 / 100 = 128 + 64 = 192
Per calcolare il 95° percentile, sostituisci 50
con 95
nella precedente
espressione di base. In questo esempio in cui c'è esattamente un campione,
percentili sono i seguenti:
Percentile | Numero bucket | Valore |
---|---|---|
50° | 8 | 192 |
95° | 8 | 249,6 |
99° | 8 | 254,7 |
L'errore tra la stima e le misurazioni effettive può essere limitato, ma non è possibile determinarla perché la misurazione è sconosciuta.
Caso 2: il numero totale di campioni è 10.
Quando ci sono 10 campioni, il 50° percentile potrebbe essere in un bucket diverso rispetto al 95° e al 99° percentile. Tuttavia, le misurazioni non sono sufficienti in modo che il 95° e il 99° percentile siano in bucket diversi.
Ad esempio, supponiamo che l'istogramma delle misurazioni sia quello mostrato nella tabella seguente:
Numero bucket | Limite inferiore | Limite superiore | Conteggio | Intervallo percentile |
---|---|---|---|---|
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 |
Puoi utilizzare la procedura descritta in precedenza per calcolare il 50°, il 95° 99° percentile. Ad esempio, il 50° percentile, che è nel numero del bucket 1, viene calcolata come segue:
50th percentile = 1 + (2-1)*(50-40)/(60-40) = 1 + (1 * 10 / 20) = 1 + 0.5 = 1.5
Analogamente, il 95° percentile viene calcolato come segue:
95th percentile = 128 + (256-128)*(95-90)/(100-90) = 128 + 128 * 5 / 10 = 128 + 64 = 192
Utilizzando il processo descritto in precedenza, è possibile calcolare i percentili. Ogni riga nella tabella seguente elenca un percentile, il bucket corrispondente e il valore calcolato:
Percentile | Numero bucket | Valore | Errore massimo |
---|---|---|---|
50° | 1 | 1,5 | 0,5 |
95° | 8 | 192 | 74 |
99° | 8 | 243,2 | 115,2 |
In questo esempio e nell'esempio precedente, il 95° percentile è nel bucket numero 8; ma il calcolo del percentile è diverso. La la differenza è dovuta al modo in cui i campioni sono distribuiti. Nel primo esempio, tutti gli esempi si trovano nello stesso bucket, mentre nell'esempio più recente, gli esempi si trovano in bucket diversi.
Esempio con dati reali
Questa sezione contiene un esempio che illustra come puoi determinare il modello di bucket usato da una determinata metrica. Questa sezione Inoltre, illustra come valutare il potenziale errore nei percentili.
Identificare il modello di bucket
Per determinare i bucket utilizzati per una metrica in un intervallo di tempo specifico,
chiama l'API Cloud Monitoring
projects.timeSeries/list
.
Ad esempio, per identificare il modello di bucket per una metrica, segui questi passaggi:
- Vai alla pagina web
projects.timeSeries/list
. In Explorer API, inserisci il valore filtro che specifica la metrica, un'ora di inizio e un'ora di fine.
Ad esempio, per ottenere informazioni sulla metrica che memorizza Latenze delle richieste API, inserisci quanto segue:
metric.type="serviceruntime.googleapis.com/api/request_latencies" resource.type="consumed_api"
In questo esempio, il campo del filtro specifica un tipo di metrica e e un tipo di risorsa. Per ulteriori informazioni su questi filtri, consulta: Filtri di Monitoring.
Fai clic su Invio.
Di seguito è riportata la risposta dell'API list
per una metrica con valore di distribuzione
disponibili in un solo progetto 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" ] } } },
Nella risposta dell'API, il campo value
descrive i dati archiviati in
l'array points
. I campi count
e mean
indicano che per l'intervallo di tempo specificato sono state effettuate 3 misurazioni e il loro valore medio è 25,889. Il campo bucketOptions
mostra che il modello esponenziale è
configurato per avere 66 bucket, una scala di 1 e un fattore di crescita di 1, 4.
Per calcolare i limiti inferiore e superiore per il bucket con indice n, utilizza le seguenti regole:
- Limite inferiore (1 ≤ n < N) = scala * (fattore di crescita)(n-1)
- Limite superiore (0 ≤ n < N-1) = scala * (fattore di crescita)n
Nelle espressioni precedenti, N
è il numero totale di bucket.
I bucket per questa metrica, insieme al punto medio di ogni bucket, sono riportati nella seguente tabella:
n° bucket | Limite inferiore | Limite superiore | Punto intermedio |
---|---|---|---|
0 | 1 | Non applicabile | |
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 |
… |
Verifica i calcoli dei percentili
Ora che la configurazione del bucket è nota, per qualsiasi insieme di misurazioni può prevedere i valori del 50°, 95° e 99° percentile. Ad esempio: se esiste un campione nel bucket numero 10, il 50° percentile è 24,79.
Per recuperare i valori del 50°, 95° e 99° percentile della metrica, puoi
utilizzare il metodo API projects.timeSeries/list
, e
includi un periodo di allineamento e un allineatore. In questo esempio, le seguenti impostazioni
sono stati selezionati:
- Allineatore:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
oALIGN_PERCENTILE_99
- Periodo di allineamento: 60 sec
Per la selezione ALIGN_PERCENTILE_50
, ogni valore nella serie temporale corrisponde
50° percentile di un 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 } } ] },
Per due dei campioni, il 50° percentile è nel bucket 10, per l'altro campione si trova nel bucket 11.
La tabella seguente mostra i risultati dell'esecuzione
projects.timeSeries/list
con allineatori diversi. La prima riga corrisponde al caso in cui l'allineatore non sia specificato. Quando non
specificare un allineatore, vengono restituiti il modello del bucket e i valori medi. Il prossimo
tre righe elencano i dati restituiti quando l'allineatore è impostato su
ALIGN_PERCENTILE_50
, ALIGN_PERCENTILE_95
e ALIGN_PERCENTILE_99
:
Statistica | Anteprima @ 15:06 | Anteprima @ 15:05 | Sample @ 15:04 |
---|---|---|---|
medio | 25,889 | 33,7435 | Non disponibile. |
50° percentile | 24,79 | 34,71 | 24,79 |
95° percentile | 28,51 | 39,91 | 28,51 |
99° percentile | 28,84 | 40,37 | 28,84 |
Come illustrato nei due esempi con dati sintetici, i valori del parametro percentili dipendono da come sono distribuiti i campioni. Quando tutti gli esempi sono nel bucket di esempio, il 50° percentile è il punto medio di sincronizzare la directory di una VM con un bucket. Tuttavia, quando i campioni si trovano in bucket diversi, la distribuzione influisce sulle stime.
Per determinare se il 50° percentile è una stima ragionevole della media, puoi confrontare il valore medio con il 50° percentile. Viene restituito il valore medio con i dettagli del bucket.
Passaggi successivi
Per informazioni su come visualizzare le metriche con valori di distribuzione, consulta Informazioni sulle metriche basate sul valore di distribuzione.