Le metriche con un tipo di valore Distribution in Cloud Monitoring raggruppano le misurazioni di volumi elevati in intervalli di valori chiamati bucket anziché registrare ogni singolo punto dati. La registrazione dei conteggi dei bucket come istogramma consente ai servizi di riepilogare grandi insiemi di misurazioni in modo da poter analizzare statistiche come medie e percentili.
In un grafico a mappa termica, puoi sovrapporre il 50°, il 95° e il 99° percentile dalla barra degli strumenti del grafico. Per visualizzare una metrica con valore di distribuzione su un grafico a linee, utilizza un allineatore che seleziona un percentile per convertire ogni distribuzione in un valore numerico.
Gli esempi in questo documento mostrano come il conteggio dei bucket, la larghezza dei bucket, la distribuzione delle misurazioni e le dimensioni del campione determinano i valori percentili stimati senza memorizzare le singole misurazioni.
Esempio con dati sintetici
Considera un modello di bucket Exponential con una scala di 1, un fattore di crescita di 2 e 10 bucket finiti. Questo istogramma contiene 12 bucket: i 10 bucket finiti, 1 bucket che specifica solo un limite superiore e 1 che specifica solo un limite inferiore. In questo esempio, il bucket finito con indice n+1 è due volte più ampio del bucket finito con indice n.
I seguenti esempi mostrano che la larghezza del bucket determina l'errore massimo tra il percentile calcolato e le misurazioni. Mostrano anche 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 esiste una singola misurazione, i tre valori percentili sono diversi, ma mostrano solo il 50°, il 95° e il 99° percentile dello stesso bucket. L'errore tra la stima e le misurazioni effettive non può essere determinato perché la misurazione non è nota.
Ad esempio, supponiamo che l'istogramma delle misurazioni sia quello mostrato nella seguente tabella:
| Numero di 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:
- Utilizza i conteggi dei bucket per determinare il bucket che contiene il 50° percentile. In questo esempio, il bucket numero 8 contiene il 50° percentile.
Calcola la stima utilizzando la seguente regola:
pth percentile = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)Nell'espressione precedente,
p_lowep_upsono i limiti inferiore e superiore dell'intervallo percentile per il bucket. Analogamente,bucket_lowebucket_upsono i limiti inferiore e superiore del bucket. I valori dip_lowep_updipendono da come i conteggi sono 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
= 192Per calcolare il 95° percentile, sostituisci 50 con 95 nell'espressione precedente. Per questo esempio in cui esiste esattamente un campione, i percentili sono i seguenti:
| Percentile | Numero di 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 può essere determinato perché la misurazione non è nota.
Caso 2: il numero totale di campioni è 10
Se sono presenti 10 campioni, il 50° percentile potrebbe trovarsi in un bucket diverso rispetto al 95° e al 99° percentile. Tuttavia, non ci sono abbastanza misurazioni per consentire al 95° e al 99° percentile di trovarsi in bucket diversi.
Ad esempio, supponiamo che l'istogramma delle misurazioni sia quello mostrato nella seguente tabella:
| Numero di 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° e il 99° percentile. Ad esempio, il 50° percentile, che si trova nel bucket numero 1, viene calcolato 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 la procedura descritta in precedenza, è possibile calcolare i percentili. Ogni riga della tabella seguente elenca un percentile, il bucket corrispondente e il valore calcolato:
| Percentile | Numero di bucket | Valore | Errore massimo |
|---|---|---|---|
| 50° | 1 | 1,5 | 0,5 |
| 95° | 8 | 192 | 74 |
| 99° | 8 | 243.2 | 115,2 |
In questo esempio e in quello precedente, il 95° percentile si trova nel bucket numero 8, ma il calcolo del percentile è diverso. La differenza è dovuta al modo in cui vengono distribuiti i campioni. Nel primo esempio, tutti i campioni si trovano nello stesso bucket, mentre nell'esempio più recente i campioni si trovano in bucket diversi.
Esempio con dati reali
Questa sezione contiene un esempio che illustra come determinare il modello di bucket utilizzato da una determinata metrica. Questa sezione illustra anche come valutare il potenziale errore nei valori percentili calcolati.
Identifica il modello di bucket
Per determinare i bucket utilizzati per una metrica in un intervallo di tempo specifico, chiama il metodo projects.timeSeries/list dell'API Cloud Monitoring.
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 filtro che specifica la metrica, un'ora di inizio e un'ora di fine.
Ad esempio, per ottenere informazioni sulla metrica che memorizza le 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 un tipo di risorsa. Per saperne di più su questi filtri, consulta Filtri di Monitoring.
Fai clic su Invio.
Di seguito è riportata la risposta dell'API listper una metrica con valore di distribuzione disponibile in un 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 nell'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 era 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 ciascun bucket, sono mostrati nella tabella seguente:
| n-esimo bucket | Limite inferiore | Limite superiore | Punto centrale |
|---|---|---|---|
| 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 dei bucket è nota, per qualsiasi insieme di misurazioni puoi prevedere i valori del 50°, 95° e 99° percentile. Ad esempio, se esiste un campione e si trova nel bucket numero 10, il valore del 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 includere un periodo di allineamento e un allineatore. In questo esempio, sono state selezionate
le seguenti impostazioni:
- Allineatore:
ALIGN_PERCENTILE_50,ALIGN_PERCENTILE_95oALIGN_PERCENTILE_99 - Periodo di allineamento: 60 s
Per la selezione ALIGN_PERCENTILE_50, ogni valore della serie temporale è il
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 si trova nel bucket 10; per l'altro campione, si trova nel bucket 11.
La tabella seguente mostra i risultati dell'esecuzione del metodo projects.timeSeries/list con diversi allineatori. La prima riga corrisponde al caso in cui l'allineatore non è specificato. Se non specifichi un allineatore, vengono restituiti il modello di bucket e i valori medi. Le tre righe successive elencano i dati restituiti quando l'allineatore è impostato su ALIGN_PERCENTILE_50, ALIGN_PERCENTILE_95 e ALIGN_PERCENTILE_99:
| Statistica | Esempio alle 15:06 | Esempio alle 15:05 | Esempio alle 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 illustrano i due esempi con dati sintetici, i valori dei percentili dipendono dalla distribuzione dei campioni. Quando tutti i campioni si trovano nello stesso bucket, il 50° percentile è il punto medio di quel bucket. Tuttavia, quando i campioni si trovano in bucket diversi, questa distribuzione influisce sulle stime.
Per determinare se il 50° percentile è una stima ragionevole della media, puoi confrontare il valore medio con il 50° percentile. Il valore medio viene restituito con i dettagli del bucket.
Passaggi successivi
Per informazioni su come visualizzare le metriche con valori di distribuzione, consulta Informazioni sulle metriche con valori di distribuzione.