En este documento, se describe cómo comprender los percentiles y el modelo de histograma.
para datos de métrica con un tipo de valor Distribution
.
La métrica de distribución define rangos de valores, llamados buckets, y registros
la cantidad de valores medidos
que caen en cada bucket. Métricas de distribución
no registres los valores de las mediciones individuales. informan un histograma de recuentos
en buckets. Los servicios usan este tipo de valor cuando la persona
las mediciones son demasiado extensas para recopilarlas, pero la información estadística,
como promedios o percentiles, sobre esas mediciones es valioso.
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 percentiles dependen la cantidad de buckets, el ancho de los buckets, la distribución de las mediciones y el recuento total de muestras. Los valores de percentiles no dependen de los valores medidos reales porque esos valores no están disponibles en el histograma.
Ejemplo con datos sintéticos
Considera un modelo de bucket Exponential
con una escala de
1, un factor de crecimiento de 2, y 10 buckets finitos. Este histograma contiene
12 buckets, los 10 buckets finitos, 1 bucket que solo especifica un
límite superior y 1, que solo especifica un límite inferior. Para este ejemplo, el
bucket finito con el índice n+1 es dos veces más ancho que el
bucket finito con el índice n.
En los siguientes ejemplos, se muestra que el ancho del bucket determina la longitud máxima entre el percentil calculado y las mediciones. También mostrar que la cantidad de muestras en un histograma es importante. Por ejemplo, el número de muestras sea menor que 20, entonces, los percentiles 95 y 99 siempre están en el mismo bucket.
Caso 1: El número total de muestras es 1.
Cuando hay una sola medición, los tres valores de percentiles difieren, solo muestran los percentiles 50, 95 y 99 del mismo bucket. El error entre la estimación y las mediciones reales no se puede determinada porque se desconoce la medición.
Por ejemplo, supón que el histograma de medidas es como se muestra en la siguiente tabla:
Número de intervalo | Límite inferior | Límite superior | Recuento | Rango 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 | De 0 a 100 |
9 | 256 | 512 | 0 | 0 |
10 | 512 | 1024 | 0 | 0 |
11 | 1024 | 0 | 0 |
Para calcular el percentil 50, haz lo siguiente:
- Usa los recuentos de bucket para determinar contiene el percentil 50. En este ejemplo, el bucket 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 valores inferiores y límites superiores del intervalo de percentiles del bucket. De forma similar,bucket_low
ybucket_up
son los límites inferior y superior. del bucket. Los valores dep_low
yp_up
dependen de la manera en que y los recuentos se distribuyen entre los diferentes buckets.
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, reemplaza 50
por 95
en el valor anterior
expresión. Para este ejemplo en el que hay exactamente una muestra, la
los percentiles son los siguientes:
Percentil | Número de intervalo | Valor |
---|---|---|
50.º | 8 | 192 |
95 | 8 | 249.6 |
99.º | 8 | 254.7 |
El error entre la estimación y las mediciones reales puede limitarse, pero por lo que no se puede determinar porque se desconoce la medición.
Caso 2: La cantidad total de muestras es 10.
Cuando hay 10 muestras, el percentil 50 podría estar en un bucket diferente que los percentiles 95 y 99. Sin embargo, no hay suficientes mediciones para permitir que los percentiles 95 y 99 estén en buckets diferentes.
Por ejemplo, supón que el histograma de medidas es como se muestra en la siguiente tabla:
Número de intervalo | Límite inferior | Límite superior | Recuento | Rango de percentiles |
---|---|---|---|---|
0 | 1 | 4 | Entre 0 y 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 las columnas 50, 95 y Percentiles 99. Por ejemplo, el percentil 50, que está en el número de bucket 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
Con el proceso descrito anteriormente, se pueden calcular los percentiles. Cada fila de la siguiente tabla muestra un percentil, el bucket correspondiente y el valor calculado:
Percentil | Número de intervalo | Valor | Máximo de errores |
---|---|---|---|
50.º | 1 | 1.5 | 0.5 |
95 | 8 | 192 | 74 |
99.º | 8 | 243,2 | 115,2 |
En este ejemplo y en el anterior, el percentil 95 se encuentra en el número 8; pero el cálculo del percentil es diferente. El se debe a cómo se distribuyen las muestras. En el primer ejemplo, todas de muestra están en el mismo bucket, mientras que, en el ejemplo más reciente, el en buckets diferentes.
Ejemplo con datos reales
Esta sección contiene un ejemplo que ilustra cómo puedes determinar el modelo de bucket que usa una métrica en particular. Esta sección también ilustra cómo se puede evaluar el error potencial en la y valores de percentiles.
Identifica el modelo de bucket
Para determinar los buckets utilizados para una métrica durante un intervalo de tiempo específico,
llamar a la API de Cloud Monitoring
projects.timeSeries/list
.
Por ejemplo, para identificar el modelo de bucket de una métrica, haz lo siguiente:
- Ve a la página web de
projects.timeSeries/list
. En Explorador de APIs, ingresa el filtro que especifica la métrica, una hora de inicio y una hora de finalización.
Por ejemplo, para obtener información sobre la métrica que almacena Latencias de las solicitudes a la API, Ingresa 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 supervisión.
Haz clic en Ingresar.
A continuación, se muestra la respuesta de la API de list
para una métrica con valor de distribución
que está disponible en un proyecto de 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
el array points
. Los campos count
y mean
informan que para el
en el intervalo de tiempo especificado hubo 3 mediciones y su valor promedio
era 25.889. El campo bucketOptions
muestra que el modelo exponencial es
para que tenga 66 buckets, una escala de 1 y un factor de crecimiento de 1.4.
Para calcular los límites inferior y superior del bucket con el índice n, haz lo siguiente: usa las siguientes 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 la cantidad total de buckets.
Los buckets de esta métrica, junto con el punto medio de cada bucket, se muestran en la siguiente tabla:
enésimo bucket | 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 |
… |
Verifica los procesamientos de percentiles
Ahora que se conoce la configuración del bucket, para cualquier conjunto de mediciones que pueden predecir los valores de los percentiles 50, 95 y 99. Por ejemplo: si hay una muestra y está en el bucket número 10, entonces el 50° valor percentil es 24.79.
Para recuperar los valores de los percentiles 50, 95 y 99 de la métrica, puedes
Usa el método de API projects.timeSeries/list
.
incluyen un período de alineación y un alineador. En este ejemplo, la siguiente configuración
se seleccionaron:
- Aligner:
ALIGN_PERCENTILE_50
,ALIGN_PERCENTILE_95
oALIGN_PERCENTILE_99
- Período de alineación: 60 segundos
Para la selección de ALIGN_PERCENTILE_50
, cada valor de la serie temporal es el
Percentil 50 de 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 } } ] },
En dos de las muestras, el percentil 50 está en el bucket 10 para la otra muestra, está en el bucket 11.
En la siguiente tabla, se muestran los resultados de la ejecución del
projects.timeSeries/list
con diferentes alineadores. La primera fila
corresponde al caso en el que no se especifica el alineador. Cuando no
especifica un alineador, el modelo de bucket y se muestran los valores medios. Los siguientes
con tres filas y los datos que se muestran cuando el alineador se establece en
ALIGN_PERCENTILE_50
, ALIGN_PERCENTILE_95
y ALIGN_PERCENTILE_99
:
Estadística | Muestra @ 15:06 | Muestra @ 15:05 | Muestra @ 15:04 |
---|---|---|---|
Media | 25.889 | 33.7435 | No 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 lo ilustran los dos ejemplos con datos sintéticos, los valores de la que dependen de cómo se distribuyan las muestras. Cuando todas las muestras están en el bucket de muestra, el percentil 50 es el punto medio bucket. Sin embargo, cuando las muestras están en buckets diferentes, esa distribución afecta 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 muestra con los detalles del bucket.
¿Qué sigue?
Para obtener información sobre cómo visualizar las métricas con valores de distribución, consulta Acerca de las métricas con valores de distribución.