En este documento se describe cómo interpretar los percentiles y el modelo de histograma de los datos de métricas con el tipo de valor Distribution
.
Una métrica de distribución define intervalos de valores, llamados segmentos, y registra el recuento de los valores medidos que se incluyen en cada segmento. Las métricas de distribución no registran los valores de las medidas individuales, sino un histograma de recuentos en segmentos. Los servicios usan este tipo de valor cuando las mediciones individuales son demasiado numerosas para recogerlas, pero la información estadística sobre esas mediciones (como medias o percentiles) es valiosa.
En la siguiente sección de esta página se usa un ejemplo sintético para mostrar cómo se determinan los percentiles. En el ejemplo se muestra que los valores de percentil dependen del número de contenedores, de la anchura de los contenedores, de la distribución de las mediciones y del recuento total de muestras. Los valores de percentil no dependen de los valores medidos reales, ya que estos no están disponibles en el histograma.
Ejemplo con datos sintéticos
Imagina un modelo de contenedor Exponential
con una escala de 1, un factor de crecimiento de 2 y 10 contenedores finitos. Este histograma contiene 12 segmentos: los 10 segmentos finitos, 1 segmento que solo especifica un límite superior y 1 que solo especifica un límite inferior. En este ejemplo, el contenedor finito con el índice n+1 tiene el doble de anchura que el contenedor finito con el índice n.
En los siguientes ejemplos se muestra que la anchura del contenedor determina el error máximo entre el percentil calculado y las mediciones. También muestran que el número de muestras de un histograma es importante. Por ejemplo, si el número de muestras es inferior a 20, los percentiles 95 y 99 siempre estarán en el mismo contenedor.
Caso 1: El número total de muestras es 1.
Cuando hay una sola medición, los tres valores de percentil son diferentes, pero solo muestran los percentiles 50, 95 y 99 del mismo contenedor. No se puede determinar el error entre la estimación y las mediciones reales porque no se conoce la medición.
Por ejemplo, supongamos que el histograma de las mediciones es el que se muestra en la siguiente tabla:
Número de segmento | Límite inferior | Límite superior | Recuento | Intervalo de percentiles |
---|---|---|---|---|
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 |
Para calcular el percentil 50, siga estos pasos:
- Usa los recuentos de los segmentos para determinar el segmento que contiene el percentil 50. En este ejemplo, el contenedor número 8 contiene el percentil 50.
Calcula la estimación con la siguiente regla:
pth percentage = bucket_low + (bucket_up - bucket_low)*(p - p_low)/(p_up - p_low)
En la expresión anterior,
p_low
yp_up
son los límites inferior y superior del intervalo de percentiles del contenedor. Del mismo modo,bucket_low
ybucket_up
son los límites inferior y superior del contenedor. Los valores dep_low
yp_up
dependen de cómo se distribuyan los recuentos entre los diferentes contenedores.
Por ejemplo, el percentil 50 se calcula de la siguiente manera:
50th percentile = 128 + (256-128)*(50-0)/(100-0) = 128 + 128 * 50 / 100 = 128 + 64 = 192
Para calcular el percentil 95, sustituye 50
por 95
en la expresión anterior. En este ejemplo, en el que hay exactamente una muestra, los percentiles son los siguientes:
Percentil | Número de segmento | Valor |
---|---|---|
50 | 8 | 192 |
95.º | 8 | 249,6 |
99 | 8 | 254,7 |
El error entre la estimación y las mediciones reales se puede acotar, pero no se puede determinar porque no se conoce la medición.
Caso 2: El número total de muestras es 10.
Cuando hay 10 muestras, el percentil 50 puede estar en un contenedor diferente al de los percentiles 95 y 99. Sin embargo, no hay suficientes mediciones para que los percentiles 95 y 99 estén en segmentos diferentes.
Por ejemplo, supongamos que el histograma de las mediciones es el que se muestra en la siguiente tabla:
Número de segmento | Límite inferior | Límite superior | Recuento | Intervalo de percentiles |
---|---|---|---|---|
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 |
Puedes usar el procedimiento descrito anteriormente para calcular los percentiles 50, 95 y 99. Por ejemplo, el percentil 50, que está en el contenedor número 1, se calcula de la siguiente manera:
50th percentile = 1 + (2-1)*(50-40)/(60-40) = 1 + (1 * 10 / 20) = 1 + 0.5 = 1.5
Del mismo modo, el percentil 95 se calcula de la siguiente manera:
95th percentile = 128 + (256-128)*(95-90)/(100-90) = 128 + 128 * 5 / 10 = 128 + 64 = 192
Siguiendo el proceso descrito anteriormente, se pueden calcular los percentiles. En cada fila de la tabla siguiente se indica un percentil, el contenedor correspondiente y el valor calculado:
Percentil | Número de segmento | Valor | Error máximo |
---|---|---|---|
50 | 1 | 1,5 | 0,5 |
95.º | 8 | 192 | 74 |
99 | 8 | 243,2 | 115,2 NZD |
En este ejemplo y en el anterior, el percentil 95 se encuentra en el contenedor número 8. Sin embargo, el cálculo del percentil es diferente. La diferencia se debe a cómo se distribuyen las muestras. En el primer ejemplo, todas las muestras están en el mismo contenedor, mientras que, en el ejemplo más reciente, las muestras están en contenedores diferentes.
Ejemplo con datos reales
En esta sección se incluye un ejemplo que muestra cómo puede determinar el modelo de contenedor que usa una métrica concreta. En esta sección también se explica cómo evaluar el posible error de los valores de percentil calculados.
Identificar el modelo de segmento
Para determinar los contenedores que se han usado en una métrica durante un intervalo de tiempo específico, llama al método projects.timeSeries/list
de la API Cloud Monitoring.
Por ejemplo, para identificar el modelo de contenedor de una métrica, haga lo siguiente:
- Ve a la página web
projects.timeSeries/list
. En APIs Explorer, introduce el filtro que especifica la métrica, la hora de inicio y la hora de finalización.
Por ejemplo, para obtener información sobre la métrica que almacena las latencias de las solicitudes de API, introduce lo siguiente:
metric.type="serviceruntime.googleapis.com/api/request_latencies" resource.type="consumed_api"
En este ejemplo, el campo de filtro especifica un tipo de métrica y un tipo de recurso. Para obtener más información sobre estos filtros, consulta Filtros de monitorización.
Pulsa Intro.
A continuación se muestra la respuesta de la API list
de una métrica con valores de distribución que está disponible en un proyecto: 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" ] } } },
En la respuesta de la API, el campo value
describe los datos almacenados en la matriz points
. Los campos count
y mean
indican que, en el intervalo de tiempo especificado, se han realizado 3 mediciones y su valor medio ha sido 25,889. El campo bucketOptions
muestra que el modelo exponencial está configurado para tener 66 contenedores, una escala de 1 y un factor de crecimiento de 1, 4.
Para calcular los límites inferior y superior del segmento con el índice n, sigue estas reglas:
- Límite inferior (1 ≤ n < N) = escala * (factor de crecimiento)(n-1)
- Límite superior (0 ≤ n < N-1) = escala * (factor de crecimiento)n
En las expresiones anteriores, N
es el número total de contenedores.
Los contenedores de esta métrica, junto con el punto medio de cada contenedor, se muestran en la siguiente tabla:
n segmento | Límite inferior | Límite superior | Punto medio |
---|---|---|---|
0 | 1 | No aplicable | |
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 |
... |
Verificar los cálculos de percentiles
Ahora que se conoce la configuración del segmento, puede predecir los valores de los percentiles 50, 95 y 99 de cualquier conjunto de mediciones. Por ejemplo, si hay una muestra y está en el contenedor número 10, el valor del percentil 50 es 24,79.
Para obtener los valores del percentil 50, 95 y 99 de la métrica, puede usar el método de la API projects.timeSeries/list
e incluir un periodo de alineación y un alineador. En este ejemplo, se han seleccionado los siguientes ajustes:
- Alineador:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
oALIGN_PERCENTILE_99
- Periodo de alineación: 60 s
En el caso de la selección ALIGN_PERCENTILE_50
, cada valor de la serie temporal es el percentil 50 de un segmento:
{ "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 } } ] },
En dos de las muestras, el percentil 50 está en el contenedor 10, mientras que en la otra muestra está en el contenedor 11.
En la siguiente tabla se muestran los resultados de ejecutar el método projects.timeSeries/list
con diferentes alineadores. La primera fila
corresponde al caso en el que no se especifica el alineador. Si no especificas un alineador, se devuelven el modelo de contenedor y los valores medios. En las tres filas siguientes se muestran los datos devueltos cuando el alineador se define como ALIGN_PERCENTILE_50
, ALIGN_PERCENTILE_95
y ALIGN_PERCENTILE_99
:
Estadística | Ejemplo a las 15:06 | Muestra a las 15:05 | Ejemplo a las 15:04 |
---|---|---|---|
media | 25.889 | 33.7435 | No está disponible. |
Percentil 50 | 24,79 | 34,71 | 24,79 |
Percentil 95 | 28,51 | 39,91 | 28,51 |
Percentil 99 | 28,84 | 40,37 | 28,84 |
Como se muestra en los dos ejemplos con datos sintéticos, los valores de los percentiles dependen de cómo se distribuyan las muestras. Cuando todas las muestras se encuentran en el contenedor de muestras, el percentil 50 es el punto medio de ese contenedor. Sin embargo, cuando las muestras están en segmentos diferentes, esa distribución afecta a las estimaciones.
Para determinar si el percentil 50 es una estimación razonable de la media, puedes comparar el valor medio con el percentil 50. El valor medio se devuelve con los detalles del segmento.
Siguientes pasos
Para obtener información sobre cómo visualizar métricas con valores de distribución, consulta el artículo Acerca de las métricas con valores de distribución.