En este documento, se te ayudará a elegir el mejor enfoque para graficar o supervisar una proporción de datos de métricas. También incluye vínculos a ejemplos, identifica cuándo puedes calcular proporciones y describe las anomalías que podrías ver cuando generas un gráfico de la proporción de dos métricas diferentes. Estas anomalías se deben a diferencias en la frecuencia de muestreo o en los parámetros de alineación.
Las proporciones te permiten transformar los datos de tus métricas en un formato diferente y, posiblemente, más útil. Por ejemplo, considera un tipo de métrica que cuenta la cantidad de respuestas HTTP por código de respuesta. Los datos de la métrica informan la cantidad de errores, pero no la proporción de solicitudes que fallaron. Sin embargo, los requisitos de rendimiento suelen especificarse como un porcentaje, por ejemplo, "El porcentaje de errores debe ser inferior al 0.1%". Para determinar la tasa de errores con los datos de la métrica, calcula la proporción de las solicitudes que fallaron con respecto a la cantidad total de solicitudes.
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 consola de Google Cloud . La consola Google Cloud incluye un editor de código que proporciona sugerencias, detección de errores y otro tipo de 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 conoces PromQL, usa la API de Cloud Monitoring y, luego, incluye un filtro de series temporales. Para ver un ejemplo, consulta Proporción de métrica.
Para generar un gráfico de una proporción de datos de métricas cuando no conoces PromQL, te recomendamos que uses la consola de Google Cloud y una interfaz basada en menús. 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 la serie temporal del denominador deben ser las mismas que las de la serie temporal 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 el denominador tengan las mismas etiquetas.
Considera una configuración en la que la serie temporal del numerador tiene etiquetas
method,quota_metricyproject_id. La serie temporal del denominador tiene las etiquetaslimit_name,quota_metricyproject_id. Las opciones válidas para el agrupamiento del denominador dependen de las selecciones del numerador:- Numerador agrupado por la etiqueta
method: Combina las series temporales del denominador en una sola serie temporal. Ningún otro agrupamiento hace que las etiquetas de la serie temporal del denominador sean un subconjunto de las etiquetas de la serie temporal 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_metricyproject_id: Agrupa el denominador por ambas etiquetas, por una etiqueta o combina las series temporales del denominador en una sola serie temporal.
Las opciones de agregación del denominador válidas siempre eliminan la etiqueta
limit_namede las series temporales agrupadas, ya que esa etiqueta no está presente en las series temporales del numerador.- Numerador agrupado por la etiqueta
El período de alineación debe ser el mismo para el numerador y el denominador cuando se configura un gráfico con la consola de Google Cloud . 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 tipoDOUBLE.Las proporciones requieren que la métrica del numerador y la del denominador tengan un tipo de valor
DOUBLEoINT64.Las series temporales alineadas del 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 de
DELTApara el numerador y una métrica deGAUGEpara el denominador. En esta situación, usa el alineador de tasa,ALIGN_RATE, para convertir la métricaDELTAen una métricaGAUGE. Para ver un ejemplo, consulta Políticas de alertas de proporción sobre el uso de la cuota de frecuencia para un límite.En el caso de 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 instancias de Compute Engine, el recurso de la métrica del denominador también debe ser instancias de Compute Engine.
Anomalías debido a discrepancias en el muestreo y la 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 en dos tipos de métricas diferentes está sujeta a anomalías debido a los 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 con errores se cuentan en las series temporales de ambos tipos de métricas. Por lo tanto, existe la posibilidad de que, cuando alinees las series temporales, una RPC con errores 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 colección y no se actualizan de manera atómica.
- Las tasas de muestreo pueden variar. Cuando las series temporales están alineadas a un período común, los recuentos de un solo evento pueden aparecer en intervalos de alineación adyacentes en la serie temporal para 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 por 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 las 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 de 3 que cuando es de 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 cuentas RPC y deseas realizar un seguimiento de la proporción de RPC fallidas en 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 “Correcto” se registra actualizando un solo contador para ese caso.
Incidentes falsos debido a anomalías en el cálculo de la proporción
Para evitar incidentes falsos debido a errores transitorios o falta de datos, establece la duración de tu consulta de PromQL en, al menos, el doble del intervalo de evaluación:
- Consola deGoogle Cloud : 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?
Para obtener información sobre el uso de PromQL para configurar políticas de alertas, consulta Descripción general de las alertas de PromQL.
Para obtener información sobre cómo crear gráficos, consulta los siguientes documentos:
- Para crear gráficos temporales, consulta el Explorador de métricas.
- Para agregar gráficos a un panel con la consola de Google Cloud , consulta Agrega gráficos y tablas a un panel personalizado.
- Para administrar gráficos con la API de Cloud Monitoring, consulta Cómo crear y administrar paneles con la API.