Puedes usar PromQL para consultar y representar gráficamente datos de Cloud Monitoring de las siguientes fuentes:
- Google Cloud servicios, como Google Kubernetes Engine o Compute Engine, que escriben métricas descritas en las listas de métricas del sistema de Cloud Monitoring.
- Métricas definidas por el usuario, como las métricas basadas en registros y las métricas definidas por el usuario de Cloud Monitoring.
- Google Cloud Managed Service para Prometheus, la solución multicloud totalmente gestionada para Prometheus deGoogle Cloud. Para obtener información sobre el servicio gestionado, incluida la asistencia de PromQL, consulta Google Cloud Managed Service para Prometheus.
También puedes usar herramientas como Grafana para representar gráficamente los datos de métricas insertados en Cloud Monitoring. Entre las métricas disponibles se incluyen las de Managed Service para Prometheus y las métricas de Cloud Monitoring que se documentan en las listas de métricas. Para obtener información sobre cómo configurar Grafana y otras herramientas basadas en la API de Prometheus, consulta la documentación de Managed Service para Prometheus sobre Grafana.
También puedes importar tus paneles de Grafana a Cloud Monitoring.
Consultar métricas de Cloud Monitoring mediante PromQL
Las métricas de Cloud Monitoring se pueden consultar mediante la especificación UTF-8 de PromQL. Los nombres de métricas UTF-8 deben ir entre comillas y colocarse dentro de las llaves. Los nombres de las etiquetas también deben incluirse entre comillas si contienen caracteres no compatibles con versiones anteriores. En el caso de la métrica de Cloud Monitoring kubernetes.io/container/cpu/limit_utilization
, las siguientes consultas son equivalentes:
{"kubernetes.io/container/cpu/limit_utilization", pod_name="foo"}
{__name__="kubernetes.io/container/cpu/limit_utilization", pod_name="foo"}
.{"__name__"="kubernetes.io/container/cpu/limit_utilization", "pod_name"="foo"}
.
Las métricas con valores de distribución de Cloud Monitoring se pueden consultar como los histogramas de Prometheus, con los sufijos _count
, _sum
o _bucket
añadidos al nombre de la métrica.
Puedes usar etiquetas de metadatos en PromQL como cualquier otra etiqueta, pero, al igual que los nombres de las métricas, las etiquetas de metadatos también deben ser compatibles con PromQL. La sintaxis para hacer referencia a una etiqueta de sistema de metadatos version
es metadata_system_version
, y la sintaxis para una etiqueta de usuario de metadatos version
es metadata_user_version
. Las consultas de PromQL bien formadas que usan etiquetas de metadatos pueden tener el siguiente aspecto:
{"compute.googleapis.com/instance/cpu/utilization", monitored_resource="gce_instance",metadata_user_env="prod"}
sum("compute.googleapis.com/instance/cpu/utilization") by (metadata_system_region)
sum("compute.googleapis.com/instance/cpu/utilization") by (metadata_user_env)
{"compute.googleapis.com/instance/uptime_total", "metadata_user_i-love.special/chars"="yes"}
sum("compute.googleapis.com/instance/uptime_total") by ("metadata_user_i-love.special/chars")
Si la clave de la etiqueta de metadatos contiene caracteres especiales que no sean _
, debe incluir la clave de la etiqueta entre comillas dobles ("
) según la especificación UTF-8 de PromQL.
Aun así, debe añadir el prefijo metadata_user_
a la etiqueta de los metadatos.
Los gráficos y los paneles de control creados antes de que se implementara la compatibilidad con UTF-8 consultan las métricas de Cloud Monitoring convirtiendo sus nombres en equivalentes antiguos compatibles con PromQL. Para obtener más información sobre las reglas de conversión de PromQL antiguas, consulta Asignar métricas de Cloud Monitoring a PromQL antiguo.
Acceder a PromQL en Cloud Monitoring
Puedes usar PromQL desde la pestaña Código de las siguientes páginas de la consola de Google Cloud :
- Explorador de métricas
- Añadir gráfico al crear paneles personalizados
Para obtener información sobre cómo acceder al editor y usarlo, consulta el artículo Usar el editor de PromQL.
Reglas y alertas de PromQL
Puedes usar PromQL para crear políticas de alertas de cualquier métrica de Cloud Monitoring. Para obtener más información, consulta Políticas de alertas basadas en PromQL.
También puedes usar PromQL para crear reglas de registro y alertas en cualquier métrica de Cloud Monitoring mediante alertas en el clúster de estilo Prometheus en Cloud Monitoring. Para obtener más información, consulta Evaluación de reglas gestionadas y alertas o Evaluación de reglas implementadas automáticamente y alertas.
Aprender a usar PromQL
Para aprender los conceptos básicos de PromQL, te recomendamos que consultes la documentación de código abierto. Los siguientes recursos pueden ayudarte a empezar:
Especificar un tipo de recurso monitorizado
Cuando una métrica de Cloud Monitoring está asociada a un solo tipo de recurso monitorizado de Cloud Monitoring, las consultas de PromQL funcionarán sin necesidad de especificar manualmente un tipo de recurso. Sin embargo, algunas métricas de Cloud Monitoring, incluidas algunas métricas del sistema y muchas de las generadas por métricas basadas en registros, se asignan a más de un tipo de recurso. Si usas una de estas métricas, especialmente las métricas basadas en registros, debes especificar explícitamente el tipo de recurso.Para ver qué tipos de recursos monitorizados se corresponden con una métrica, puedes hacer lo siguiente:
- En el caso de las métricas seleccionadas por Google, puede consultar las listas de métricas disponibles, incluidas las Google Cloudmétricas y las métricas de Kubernetes. En cada entrada de la documentación se indican los tipos de recursos monitorizados asociados en la primera columna de cada entrada, debajo del tipo. Si no se indica ningún tipo de recurso monitorizado, la métrica se puede asociar a cualquier tipo.
En el explorador de métricas, puedes hacer lo siguiente:
- Escriba el nombre de la métrica en el campo Seleccionar una métrica y, a continuación, desplácese por los menús para seleccionarla. El menú de recursos muestra los tipos de recursos válidos para esa métrica (por ejemplo, "Instancia de VM").
En la barra de herramientas del panel de creación de consultas, selecciona el botón cuyo nombre es < > PromQL.
La consulta de PromQL que se muestra indica el tipo de recurso como valor del campo
monitored_resource
. En concreto, este método es útil para las métricas que se pueden asociar a muchos tipos de recursos monitorizados, como las métricas basadas en registros, las métricas personalizadas o cualquier métrica definida por el usuario.
Si una métrica está asociada a más de un tipo de recurso, debe especificar el tipo de recurso en su consulta de PromQL. Hay una etiqueta especial, monitored_resource
, que puede usar para seleccionar el tipo de recurso.
Los tipos de recursos monitorizados suelen ser cadenas cortas, como gce_instance
, pero en ocasiones aparecen como URIs completos, como monitoring.googleapis.com/MetricIngestionAttribution
. Las consultas PromQL bien formadas pueden tener el siguiente aspecto:
logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
custom_googleapis_com:opencensus_opencensus_io_http_server_request_count_by_method{monitored_resource="global"}
loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}
El valor de ""
de la etiqueta monitored_resource
es especial y hace referencia al tipo de recurso prometheus_target
predeterminado que se usa para las métricas de Cloud Monitoring.
Si no usa la etiqueta monitored_resource
cuando es necesario, recibirá el siguiente error:
metric is configured to be used with more than one monitored resource type;
series selector must specify a label matcher on monitored resource name
Resolver conflictos de etiquetas
En Cloud Monitoring, las etiquetas pueden pertenecer a la métrica o al recurso.
Si una etiqueta de métrica tiene el mismo nombre de clave que una etiqueta de recurso, puede hacer referencia a la etiqueta de métrica específicamente añadiendo el prefijo metric_
al nombre de la clave de la etiqueta en su consulta.
Por ejemplo, supongamos que tiene una etiqueta de recurso y una etiqueta de métrica con el nombre pod_name
en la métrica example.googleapis.com/user/widget_count
.
Para filtrar por el valor de la etiqueta de recurso, usa
example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}
Para filtrar por el valor de la etiqueta de la métrica, use
example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}
Asignar nombres de métricas de Cloud Monitoring a PromQL antiguo
Los nombres de las métricas de Cloud Monitoring incluyen dos componentes: un dominio (como compute.googleapis.com/
) y una ruta (como instance/disk/max_read_ops_count
). Como la versión antigua de PromQL solo admite los caracteres especiales :
y _
, debe aplicar las siguientes reglas para que los nombres de las métricas de Monitoring sean compatibles con la versión antigua de PromQL:
- Sustituye el primer
/
por:
. - Sustituye todos los demás caracteres especiales (incluidos
.
y otros caracteres/
) por_
.
En la siguiente tabla se enumeran algunos nombres de métricas y sus equivalentes de PromQL antiguos:
Nombre de la métrica de Cloud Monitoring | Nombre de métrica de PromQL antiguo |
---|---|
kubernetes.io/container/cpu/limit_cores |
kubernetes_io:container_cpu_limit_cores |
compute.googleapis.com/instance/cpu/utilization |
compute_googleapis_com:instance_cpu_utilization |
logging.googleapis.com/log_entry_count |
logging_googleapis_com:log_entry_count |
custom.googleapis.com/opencensus/opencensus.io/ |
custom_googleapis_com:opencensus_opencensus_io_ |
agent.googleapis.com/disk/io_time |
agent_googleapis_com:disk_io_time |
Las métricas con valores de distribución de Cloud Monitoring se pueden consultar como histogramas de Prometheus, con el sufijo _count
, _sum
o _bucket
añadido al nombre de la métrica:
Nombre de la métrica de Cloud Monitoring | Nombres de métricas de PromQL antiguos |
---|---|
networking.googleapis.com/vm_flow/rtt |
networking_googleapis_com:vm_flow_rtt_sum networking_googleapis_com:vm_flow_rtt_count networking_googleapis_com:vm_flow_rtt_bucket
|
Compatibilidad con PromQL
PromQL para Cloud Monitoring puede funcionar de forma ligeramente diferente a PromQL upstream.
Las consultas de PromQL en Cloud Monitoring se evalúan parcialmente en el backend de Monarch mediante un lenguaje de consulta interno, y hay algunas diferencias conocidas en los resultados de las consultas. Aparte de las diferencias que se indican en esta sección, la versión de PromQL de Cloud Monitoring es igual a la de Prometheus 2.44.Es posible que no se admitan las funciones de PromQL añadidas después de la versión 2.44 de Prometheus.
Compatibilidad con UTF-8
PromQL para Cloud Monitoring admite consultas UTF-8.
Si el nombre de tu métrica de Prometheus solo contiene caracteres alfanuméricos más los caracteres _
o :
, y si las claves de tus etiquetas solo contienen caracteres alfanuméricos más el carácter _
, puedes hacer consultas con la sintaxis tradicional de PromQL.
Por ejemplo, una consulta válida podría ser la siguiente:
job:my_metric:sum{label_key="label_value"}
.
Sin embargo, si el nombre de tu métrica de Prometheus usa caracteres especiales, excepto _
o :
, o si tus claves de etiqueta usan caracteres especiales, excepto _
, debes crear tu consulta de acuerdo con la especificación UTF-8 de PromQL.
Los nombres de métricas UTF-8 deben incluirse entre comillas y colocarse entre llaves. Los nombres de las etiquetas también deben incluirse entre comillas si contienen caracteres no compatibles con versiones anteriores. Las siguientes consultas válidas de ejemplo son equivalentes:
{"my.domain.com/metric/name_bucket", "label.key"="label.value"}
{__name__="my.domain.com/metric/name_bucket", "label.key"="label.value"}
{"__name__"="my.domain.com/metric/name_bucket", "label.key"="label.value"}
Coincidencia por nombre de métrica
Solo se admite la coincidencia exacta de nombres de métricas. Debe incluir una coincidencia exacta del nombre de la métrica en su consulta.
Te recomendamos las siguientes soluciones alternativas para los casos habituales en los que se usa un buscador de expresiones regulares en la etiqueta __name__
:
- Las configuraciones del adaptador de Prometheus suelen usar el operador
=~
para buscar coincidencias en varios nombres de métricas. Para corregir este uso, amplíe la configuración para usar una política independiente para cada métrica y asigne un nombre explícito a cada métrica. De esta forma, también se evita que se aplique el autoescalado por error en métricas inesperadas. - Las expresiones regulares se suelen usar para representar gráficamente varias métricas no dimensionales en el mismo gráfico. Por ejemplo, si tiene una métrica como
cpu_servicename_usage
, puede usar un comodín para representar gráficamente todos sus servicios juntos. Usar métricas no dimensionales como esta es una práctica inadecuada en Cloud Monitoring, y lleva a un rendimiento de las consultas extremadamente bajo. Para corregir este uso, mueva toda la dimensionalidad a las etiquetas de métricas en lugar de insertar dimensiones en el nombre de la métrica. - Las consultas de varias métricas se suelen usar para ver qué métricas se pueden consultar. En su lugar, te recomendamos que uses la llamada
/labels/__name__/values
para descubrir métricas. También puede descubrir métricas mediante la interfaz de Cloud Monitoring. - Asociar varias métricas es útil para ver cuántas muestras se han recogido, ingerido y cobrado por métrica. Cloud Monitoring te proporciona esta información en la página Gestión de métricas. También puede acceder a esta información como datos de métricas mediante la métrica Muestras ingeridas o la métrica Muestras escritas por ID de atribución.
Falta de actualización
La obsolescencia no se admite en el backend de Monarch.
Cálculo de irate
Si la ventana retrospectiva de la función irate
es inferior al tamaño del paso, aumentamos la ventana hasta el tamaño del paso.
Monarch requiere este cambio para asegurarse de que no se ignore por completo ningún dato de entrada en la salida. Esta diferencia también se aplica a los cálculos de rate
.
Cálculo de rate
y increase
Si la ventana retrospectiva de la función rate
es inferior al tamaño del paso, aumentamos la ventana hasta el tamaño del paso.
Monarch requiere este cambio para asegurarse de que no se ignore por completo ningún dato de entrada en la salida. Esta diferencia también se aplica a los cálculos de irate
.
Hay diferencias en los cálculos de interpolación y extrapolación. Monarch usa un algoritmo de interpolación diferente al de Prometheus, y esta diferencia puede dar lugar a resultados ligeramente distintos. Por ejemplo, las muestras de contador de Monarch se almacenan con un intervalo de tiempo en lugar de con la única marca de tiempo que usa Prometheus. Por lo tanto, las muestras de contador de Monarch se pueden incluir en un cálculo de la tasa, aunque la marca de tiempo de Prometheus las excluya. Por lo general, esto da como resultado tasas más precisas, sobre todo cuando se consulta el principio o el final de la serie temporal subyacente.
Cálculo de histogram_quantile
Un cálculo de PromQL histogram_quantile
en un histograma sin muestras produce un valor NaN. El cálculo del lenguaje de consulta interno no produce ningún valor, sino que se elimina el punto de la marca de tiempo.
Las diferencias en el cálculo de las tarifas también pueden afectar a las entradas de las consultas histogram_quantile
.
Funciones específicas de tipo en métricas de tipos diferentes
Aunque Prometheus upstream tiene un tipado débil, Monarch tiene un tipado fuerte. Esto significa que no se pueden ejecutar funciones específicas de un solo tipo en una métrica de otro tipo (por ejemplo, ejecutar rate()
en una métrica GAUGE o histogram_quantile()
en una métrica COUNTER o sin tipo) en Cloud Monitoring, aunque estas funciones sí funcionen en Prometheus.