Crea gráficos de las métricas de distribución

En esta página, se describe cómo puedes crear y, luego, interpretar un gráfico para mostrar datos de métricas que tengan un tipo de valor Distribution. Los servicios usan este tipo de valor cuando las mediciones individuales son demasiado numéricas para recopilar, pero la información estadística, como promedios o percentiles, es decir, esas mediciones son valiosas.

Por ejemplo, considera un servicio que mide la latencia de HTTP de las solicitudes. Los diseñadores eligen informar los datos de latencia de las solicitudes HTTP completadas mediante un tipo de valor de distribución. Los datos se informan cada minuto. El servicio define una colección de depósitos en la que cada depósito define un rango de valores de latencia. Cuando se completa una solicitud HTTP, el servicio aumenta la cantidad en el depósito cuyo rango incluye el valor de latencia de la solicitud. Estos conteos por depósito crean un histograma de valores para ese minuto.

Si los depósitos son [0, 4), [4, 8), [8, 12) y [12, 16) y si las latencias de solicitudes en un intervalo de un minuto son 5, 1, 3, 5, 6, 10 y 14, el histograma de estos datos es [2, 3, 1, 1]:

Bucket Mediciones de latencia Cantidad de valores en el depósito
[0,4) 1, 3 2
[4,8) 5, 5, 6 3
[8,12) 10 1
[12, 16) 14 1

Cuando estos datos se escriben en la serie temporal, se crea un objeto Point. Para las métricas con un valor de distribución, ese objeto incluye el histograma de valores. Para este período de muestreo, el Point contendrá [2, 3, 1, 1]. Las mediciones individuales no se escriben en la serie temporal.

Debido a que estos datos HTTP se informan cada minuto, una serie temporal puede incluir los siguientes histogramas:

Depósito Histograma de
1:00
Histograma de
1:01
Histograma de
1:02
Histograma de
1:03
[0, 4) 2 6 10 3
[4, 8) 3 1 1 8
[8,12) 1 0 2 2
[12, 16) 1 6 0 1

Gráficos del mapa de calor

Los gráficos de mapas de calor se diseñaron para mostrar una serie temporal con valores de distribución. Para estos gráficos, el eje X representa el tiempo, el eje Y representa los depósitos y el valor se representa por color. Cuanto más brillante sea el color, más alto será el valor. Por ejemplo, las áreas oscuras del mapa de calor indican recuentos más bajos que las áreas amarillas o blancas.

La siguiente figura es una representación de un mapa de calor para el ejemplo. En este ejemplo, las sumas varían de 0 a 10. Cuando el valor es cero, el color es negro. Si el valor es 10, el color es amarillo. Para un valor intermedio, como seis, el color es naranja.

Gráfico de mapa de calor del ejemplo.

Debido a que los gráficos de mapas de calor pueden representar solo una serie temporal, debes configurar las opciones de agregación para combinar todas las series temporales en una sola serie temporal:

  • Asegúrate de que el campo Agrupar por esté vacío.
  • Selecciona sum para la función group-by.

Gráficos de barras y líneas

Los gráficos de líneas, los gráficos de barras apiladas y los gráficos de líneas apiladas no pueden mostrar valores de distribución. Si tienes una métrica con un valor de distribución y deseas mostrarla con uno de estos tipos de gráficos, debes convertir el histograma de una Point, por ejemplo, [2, 3, 1]. 1], un valor numérico. Existen muchas maneras de realizar esta conversión. Por ejemplo, puedes calcular la suma o seleccionar un percentil.

Considera los datos de ejemplo que informan las latencias de las solicitudes HTTP mediante una métrica de distribución. En la siguiente tabla, se ilustra el histograma de la serie temporal como una función de tiempo. La última columna muestra la suma de los recuentos del histograma. Esta última columna se puede trazar mediante un trazado Xy:

Hora Histograma1 Suma de los valores de histogramas
1:00 [2, 3, 1, 1] 7
1:01 [6, 1, 0, 6] 13
1:02 [10, 1, 2, 0] 13
1:03 [3, 8, 2, 1] 14

1Los depósitos de histogramas son [0, 4), [4, 8), [8, 12) y [12, 16). El histograma [2, 3, 1, 1] indica 2 muestras en el bucket [0, 4).

En este ejemplo, la suma es una medida significativa, ya que se puede considerar como la tasa de finalización de la solicitud HTTP:

Gráfico de líneas del ejemplo.

Métricas de agregación y distribución

Agregación, los procesos de normalizar puntos dentro de una serie temporal y de la combinación de varias series temporales, son los mismos para las métricas de tipo de distribución, ya que son para métricas que tienen un tipo de valor{101. }de número entero o doble. Sin embargo, el tipo de gráfico aplica algunos requisitos a las opciones usadas para alinear y agrupar series temporales.

Gráficos del mapa de calor

Se debe seleccionar la función de alineación y la función de agrupación, de modo que el resultado sea una sola serie temporal con un valor de distribución.

Para la función de alineación, puedes seleccionar sum o delta. Estas funciones se combinan a nivel del depósito, todas las muestras de una sola serie temporal que se encuentran en el mismo período de alineación y el resultado es un valor de distribución. Por ejemplo, si dos muestras adyacentes de una serie temporal son [2, 3, 1] y [2, 5, 4, 1], entonces, la función de alineación sum produce [4, 8, 5, 2].

Para la función de agrupación, la única opción es sum. Esta función suma los valores de los mismos depósitos para las distintas series temporales. El resultado es un valor de distribución. Por ejemplo, si en el momento 1:00 el histograma temporal-A un histograma es
[2, 3, 1, 1], y el histograma temporal de la serie es [1, 5, 2, 2] ] y, luego, sumar estos histogramas juntos genera [3, 8, 3, 3].

Gráficos de líneas

La función de alineación y la función de agrupación se deben seleccionar de modo que, una vez que se complete la agregación, los valores de distribución se conviertan en valores numéricos. Puedes convertir un valor de distribución en un valor numérico con la función de alineación o con la función de agrupación.

  • Si seleccionas un percentil para la función de alineación, luego, durante la etapa de alineación de la agregación, cada valor de distribución se convierte en un valor numérico. La agrupación por series temporales es opcional.

    Por ejemplo, para mostrar el percentil 99 de cada serie temporal, establece la función de alineación en 99th percentile, asegúrate de que las opciones de agrupación estén vacías y configura la función de agrupación en none. las rutas "a GCP". Con esta configuración, el gráfico puede mostrar varias líneas, una para cada serie temporal.

  • Si seleccionas sum o delta como la función de alineación, luego, al final de la fase de alineación, cada muestra contendrá un valor de distribución. Con estas funciones de alineación, debes seleccionar una función de agrupación. La función de agrupación convierte el valor de distribución en un valor numérico.

    Por ejemplo, para mostrar el percentil 99 de todas las series temporales, establece la función de alineación en sum, asegúrate de que las opciones de agrupación estén vacías y configura la función de agrupación en 99th percentile. las rutas "a GCP". Debido a que las opciones de agrupación se encuentran vacías, la función de agrupación combina los valores de distribución para todas las series temporales en un valor de distribución nuevo y, luego, selecciona el percentil 99. Con esta configuración, el gráfico muestra una sola línea.

Comprende los percentiles de distribución

Cuando trazas una métrica de valor de distribución en el mapa de calor, tienes la opción de superponer el percentil 50, el percentil 95 y el percentil 99. Si muestras una métrica con valor de distribución en un gráfico de líneas, debes convertirla en una métrica numérica y una forma de hacerlo es seleccionar un percentil. Lo que puede no ser claro es cómo interpretar estos percentiles o cómo se generan.

El valor de percentil es un valor calculado. El cálculo tiene en cuenta la cantidad de depósitos, el ancho de ellos y el recuento total de muestras. Debido a que los valores medidos no son conocidos, el cálculo del percentil no puede confiar en estos datos.

Ejemplo con datos sintéticos

Considera un modelo de depósito Exponential con una escala de uno y un factor de crecimiento de dos. Esto da como resultado una serie de depósitos en los que el depósito (i+1) es dos veces más ancho que el depósito.

Caso 1: El número total de muestras es 1.

Supongamos que el histograma de las mediciones se muestra en la siguiente tabla:

Depósito count
[0, 1) 0
[1, 2) 0
[2, 4) 0
[4, 8) 0
[8, 16) 0
[16, 32) 0
[32, 64) 0
[64, 128) 0
[128, 256) 1

Para calcular el percentil 50, realiza los siguientes pasos:

  1. Usa los recuentos de buckets para determinar que el bucket [128, 256) contenga el percentil 50.
  2. Supongamos que los valores medidos dentro del depósito seleccionado se distribuyen de manera uniforme y, por lo tanto, la mejor estimación del percentil 50 es el punto medio del depósito.

Si usas la misma lógica, puedes calcular cualquier percentil para cualquier depósito:

Percentil cubeta valor
50.º [128, 256) 192
95.º [128, 256) 249.6
99.º [128, 256) 254.7

Cuando hay una sola medición, los tres valores de percentil difieren, pero solo muestran el percentil 50, el 95 y el 99 % del mismo depósito. No se puede determinar el error entre la estimación y las mediciones reales porque no se conoce la medición. Todo lo que se conoce es que hubo una lectura única cuyo valor estaba en el intervalo [128, 256). Este valor puede ser de 128 o puede ser 255.

Caso 2: El número total de muestras es 10.

Supongamos que el histograma de las mediciones se muestra en la siguiente tabla:

Depósito count
[0, 1) 4
[1, 2) 2
[2, 4) 1
[4, 8) 1
[8, 16) 1
[16, 32) 0
[32, 64) 0
[64, 128) 0
[128, 256) 1

Si usas el proceso descrito con anterioridad, los percentiles se pueden calcular y se muestran en la siguiente tabla:

Percentil cubeta valor error máx.
50.º [1, 2) 1.5 0.5
95.º [128, 256) 249.6 121.6
99.º [128, 256) 254.7 126.7

Como se muestra en este ejemplo, cuando hay 10 muestras, el percentil 50 puede estar en un depósito diferente que los percentiles 95 y 99. Sin embargo, aún no hay suficientes mediciones para permitir que los percentiles 95 y 99 estén en depósitos diferentes.

Ejemplo con datos reales

En esta sección, se incluye un ejemplo detallado que ilustra cómo puedes determinar el modelo del depósito que usa una métrica específica y cómo puedes evaluar el posible error en los valores de los percentiles calculados.

Determina el modelo de depósito

A fin de determinar los depósitos que se usan para esta métrica, usa el método projects.timeSeries/list de la API de Cloud Monitoring.

Para este ejemplo, los datos que se muestran se extrajeron de un proyecto de Google Cloud existente mediante el Explorador de API con la siguiente configuración:

  • Filtro de métrica: metric.type="networking.googleapis.com/google-service/backend_latencies" resource.type="google_service_gce_client" resource.label."zone"="us-central1-f"
  • Hora de finalización: 2020-11-03T10:06:36-05:00
  • Fecha de inicio: 2020-11-03T10:04:00-05:00

La respuesta a esta consulta incluye el modelo de depósito y la cantidad de muestras en la distribución:

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "service_name": "monitoring.googleapis.com",
          "protocol": "HTTP/2.0",
          "response_code_class": "200",
          "service_region": "us-central1"
        },
        "type": "networking.googleapis.com/google-service/backend_latencies"
      },
      "resource": {
          [redacted]
        }
      },
      "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"
              ]
            }
          }
        },

Este resultado muestra que Service Networking escribe los datos de latencia de backend mediante un modelo exponencial con 66 depósitos, la escala es 1 y el factor de crecimiento es 1.4. La respuesta de la API muestra que, en el intervalo de tiempo de 1 minuto especificado, hubo 3 medidas con un valor promedio de 25.889.

En la siguiente tabla, se muestran los depósitos para esta métrica, junto con el punto medio de cada depósito y la contribución del percentil:

intervalo ih Límite inferior1 Límite superior2 Punto medio Cada contribución por percentil
0 -infinito 0 No corresponde
1 0 1.4 0.7 0.014
2 1.4 1.96 1.58 0.0056
9 14.75 20.66 17.7 0.0591
10 20.66 28.93 24.78 0.0827
11 28.9 40.5 34.7 0.116

1 Límite inferior = escala * (factor de crecimiento)^(i-1)
2 Límite superior = escala * (factor de crecimiento).^

En función del análisis anterior, se espera que si el percentil 50 se encuentra en el número 10 del depósito, el valor del percentil 50 es 24.78.

Verifica los cálculos del percentil

Para recuperar los valores de percentil 50, 95 y 99, puedes usar el método de API projects.timeSeries/list y, también, incluir un período de alineación y un alineador. En este ejemplo, se seleccionaron las siguientes opciones de configuración:

  • Alineador: ALIGN_50, ALIGN_95 o ALIGN_99
  • Período de alineación: 60 segundos

Para la selección ALIGN_50, el método de la API mostró los siguientes datos:

{
  "timeSeries": [
    {
      "metric": {
         [redacted]
      },
      "resource": {
         [redacted]
         }
      },
      "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
          }
        }
      ]
    },

Después de ejecutar los comandos para los alineadores 95 y 99, hay los siguientes datos:

Estadística Muestra @ 15:06 Muestra @ 15:05 Muestra @ 15:04
Media1 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

1 La media se informa con los detalles del depósito.

Los valores del percentil coinciden con lo que se espera. Los valores del percentil 50 son puntos medios de un intervalo. De manera similar, si sabes que el percentil 99 está en el depósito 10, el valor del percentil 99 debe ser de alrededor de 20.66 +(99*0.0827) o 28.84. Esto coincide con el valor informado.

En estos datos, los valores medios de los datos informados a las 15:05 y 15:06 son muy similares a los valores percentiles del 50%. Esto proporciona confianza respecto de que si el número de muestras en el histograma es lo suficientemente grande, el percentil 50 es una estimación razonable de la media.

Resumen

En esta página, se proporciona una introducción a la tabla de métricas con valores de distribución. Para estas métricas, cada Point contiene un intervalo de tiempo y un Distribution. La Distribution define los depósitos y, además, incluye un histograma de los recuentos asociados con cada depósito.

Puedes trazar métricas con valores de distribución mediante un mapa de calor. Si deseas usar gráficos de líneas, debes convertir el histograma en un valor numérico. Una forma de realizar esta conversión es trazar un percentil específico de la distribución.

Se calculan los valores de percentil para las métricas de distribución, y el algoritmo depende de los recuentos de buckets, los anchos de los buckets y la forma del histograma:

  • Los valores de los percentiles 50, 95 y 99 siempre son diferentes. Sin embargo, es posible que muestren percentiles diferentes dentro del mismo depósito.
  • Los percentiles no se generan a partir de mediciones porque estos valores no están disponibles.
  • El ancho del depósito determina el error máximo entre el percentil calculado y las mediciones.
  • La cantidad de muestras en un histograma es importante. Por ejemplo, si este número es menor que 20, los percentiles 95 y 99 siempre están en el mismo depósito.
  • Para cualquier métrica de distribución, puedes usar la API de Cloud Monitoring a fin de identificar el modelo de depósito que se usa para esa métrica. Debido a que este modelo tiene una marca de tiempo, un servicio puede cambiar el modelo del depósito.