Acerca de las proporciones de las métricas

Calcular una proporción de dos métricas en Cloud Monitoring te permite transformar los recuentos sin procesar en proporciones o tasas, como calcular el porcentaje de solicitudes HTTP que fallaron en relación con las solicitudes totales. Puedes graficar y supervisar las proporciones de métricas con PromQL, la interfaz controlada por el menú en la Google Cloud consola o los filtros de series temporales en la API de Cloud Monitoring. Comprender cómo interactúan las tasas de muestreo, las agrupaciones de etiquetas y los períodos de alineación te ayuda a evitar anomalías cuando los configuras.

Prácticas recomendadas

Para supervisar o graficar una proporción de datos de métricas, te recomendamos que uses PromQL. Puedes usar PromQL con la API de Cloud Monitoring y con la Google Cloud consola. La Google Cloud consola incluye un editor de código que proporciona sugerencias, detección de errores y otra asistencia para crear consultas de PromQL válidas.

Para crear una política de alertas que supervise una proporción de métricas cuando no estés familiarizado con PromQL, usa la API de Cloud Monitoring y agrega un filtro de series temporales. Si quieres ver un ejemplo, consulta Proporción de métricas.

Para graficar una proporción de datos de métricas cuando no estés familiarizado con PromQL, te recomendamos que uses la Google Cloud consola y una interfaz controlada por el menú. Para obtener instrucciones detalladas, consulta Grafica una proporción de métricas y Agrega gráficos y tablas a un panel personalizado.

Restricciones con proporciones

Cuando configuras una proporción, se aplican las siguientes restricciones:

  • Después de la agregación, las etiquetas de las series temporales del denominador deben ser las mismas que las etiquetas de las series temporales del numerador o un subconjunto de ellas.

    Te recomendamos que selecciones opciones de agregación de modo que, después de la agregación, las series temporales del numerador y del denominador tengan las mismas etiquetas.

    Considera una configuración en la que las series temporales del numerador tengan etiquetas method, quota_metric y project_id. Las series temporales del denominador tienen etiquetas limit_name, quota_metric y project_id. Las opciones válidas para la agrupación del denominador dependen de las selecciones del numerador:

    • Numerador agrupado por la etiqueta method: Combina las series temporales del denominador en una sola. Ninguna otra agrupación hace que las etiquetas de las series temporales del denominador sean un subconjunto de las etiquetas de las series temporales del numerador.
    • Numerador agrupado por la etiqueta quota_metric: Agrupa el denominador por esa etiqueta o combina todas las series temporales del denominador en una sola.
    • Numerador agrupado por las etiquetas quota_metric y project_id: Agrupa el denominador por ambas etiquetas, por una etiqueta o combina las series temporales del denominador en una sola.

    Las opciones válidas de agregación del denominador siempre eliminan la etiqueta limit_name de las series temporales agrupadas porque esa etiqueta no está presente en las series temporales del numerador.

  • El período de alineación debe ser el mismo para el numerador y el denominador cuando se configura un gráfico con la Google Cloud consola. Sin embargo, estos campos pueden ser diferentes cuando se usa la API de Cloud Monitoring.

    Te recomendamos que uses el mismo período de alineación para el numerador y el denominador, independientemente de la herramienta que uses para crear el gráfico.

  • El numerador y el denominador deben tener el mismo tipo de valor. Por ejemplo, cuando el numerador es de tipo DOUBLE, el denominador también debe ser de tipo DOUBLE.

    Las proporciones requieren que las métricas del numerador y del denominador tengan un tipo de valor DOUBLE o INT64.

  • Las series temporales alineadas para el numerador y el denominador deben tener el mismo tipo de métrica. Cuando las dos métricas tienen tipos diferentes, debes usar alineadores para convertirlas al mismo tipo.

    Considera una configuración en la que se selecciona una métrica DELTA para el numerador y una métrica GAUGE para el denominador. En esta situación, usa el alineador de tasas, ALIGN_RATE, para convertir la métrica DELTA en una métrica GAUGE. Si quieres ver un ejemplo, consulta Políticas de alertas de proporción sobre el uso de la cuota de frecuencia para un límite.

  • Para las proporciones que no se definen con PromQL, el tipo de recurso supervisado debe ser el mismo para el numerador y el denominador.

    Por ejemplo, si el recurso de la métrica del numerador son las instancias de Compute Engine, el recurso de la métrica del denominador también debe ser instancias de Compute Engine.

Anomalías debido a desajustes de muestreo y alineación

En general, es mejor calcular las proporciones según las series temporales recopiladas para un solo tipo de métrica mediante el uso de valores de etiquetas. Una proporción calculada sobre dos tipos de métricas diferentes está sujeta a anomalías debido a diferentes períodos de muestreo y ventanas de alineación.

Por ejemplo, supongamos que tienes dos tipos de métricas, un recuento total de RPC y un recuento de errores de RPC, y deseas calcular la proporción de las RPC del recuento de errores sobre el total de RPC. Las RPC sin éxito se cuentan en las series temporales de ambos tipos de métricas. Por lo tanto, existe la posibilidad de que, cuando alineas las series temporales, una RPC sin éxito no aparezca en el mismo intervalo de alineación para ambas series temporales. Esta diferencia puede ocurrir por varias razones, incluidas las siguientes:

  • Debido a que hay dos series temporales diferentes que registran el mismo evento, hay dos valores de contador subyacentes que implementan la recopilación y no se actualizan de forma atómica.
  • Las tasas de muestreo pueden variar. Cuando las series temporales se alinean a un período común, los recuentos de un solo evento pueden aparecer en intervalos de alineación adyacentes en las series temporales de las diferentes métricas.

La diferencia en la cantidad de valores en los intervalos de alineación correspondientes puede generar valores de proporción error/total sin sentido, como 1/0 o 2/1.

Es menos probable que las proporciones de números más grandes generen valores sin sentido. Puedes obtener números más grandes mediante la agregación, ya sea usando una ventana de alineación más larga que el período de muestreo o agrupando datos para ciertas etiquetas. Estas técnicas minimizan el efecto de pequeñas diferencias en la cantidad de puntos en un intervalo determinado. Es decir, una disparidad de dos puntos es más significativa cuando la cantidad esperada de puntos en un intervalo es 3 que cuando la cantidad esperada es 300.

Si usas tipos de métricas integradas, es posible que no tengas más opción que calcular las proporciones entre los tipos de métricas para obtener el valor que necesitas.

Si diseñas métricas personalizadas que pueden contar lo mismo, como las RPC que muestran el estado del error, en dos métricas diferentes, considera una sola métrica, que incluye cada recuento solo una vez. Por ejemplo, supongamos que estás contando RPC y deseas hacer un seguimiento de la proporción de RPC sin éxito con respecto a todas las RPC. Para resolver este problema, crea un solo tipo de métrica para contar las RPC y usa una etiqueta para registrar el estado de la invocación, incluido el estado "OK". Luego, cada valor de estado, error o "OK", se registra actualizando un solo contador para ese caso.

Alertas falsas debido a anomalías en el cálculo de la proporción

Para evitar alertas falsas debido a errores transitorios o datos faltantes, establece la duración de tu consulta de PromQL en al menos el doble del intervalo de evaluación:

  • Google Cloud Consola: Establece la duración en el campo Duración cuando configures la condición de alerta.
  • API de Cloud Monitoring o Terraform: Especifica la duración con el campo AlertPolicy.Condition.PrometheusQueryLanguageCondition.duration.

¿Qué sigue?