Asigna métricas de Cloud Monitoring a PromQL

Puedes usar el lenguaje de consulta de Prometheus (PromQL) para consultar todas las métricas que almacena Cloud Monitoring, incluidas las métricas del sistema de Google Cloud, las métricas de Kubernetes, las métricas personalizadas y las métricas basadas en registros.

Asigna nombres de métricas de Cloud Monitoring a PromQL

Los nombres de las métricas de Cloud Monitoring incluyen dos componentes, un dominio (como compute.googleapis.com/) y una ruta de acceso (como instance/disk/max_read_ops_count). Debido a que PromQL solo admite los caracteres especiales : y _, primero debes hacer que los nombres de métricas de Monitoring sean compatibles con PromQL. Para asignar nombres de métricas de Monitoring a PromQL, aplica las siguientes reglas:

  • Reemplaza el primer / por :.
  • Reemplaza 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:

Nombre de la métrica de Cloud Monitoring Nombre de la métrica de PromQL
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/
http/server/request_count_by_method
custom_googleapis_com:opencensus_opencensus_io_
http_server_request_count_by_method
agent.googleapis.com/disk/io_time agent_googleapis_com:disk_io_time

Las métricas con valor de distribución de Cloud Monitoring se pueden consultar como histogramas de Prometheus, con el sufijo _count, _sum o _bucket agregado al nombre de la métrica:

Nombre de la métrica de Cloud Monitoring Nombres de métricas de PromQL
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

Especifica un tipo de recurso supervisado

Cuando una métrica se asocia a un solo tipo de recurso supervisado de Cloud Monitoring, las consultas de PromQL funcionarán sin especificar un tipo de recurso de forma manual. Sin embargo, algunas métricas dentro de Cloud Monitoring, incluidas algunas métricas del sistema y muchas de las que generan las métricas basadas en registros, se asignan a más de un tipo de recurso.

Puedes ver qué tipos de recursos supervisados se asignan a una métrica si realizas una de las siguientes acciones:

  • Para las métricas seleccionadas por Google, puedes consultar las listas de métricas disponibles, incluidas las métricas de Google Cloud y las métricas de Kubernetes. Cada entrada en la documentación enumera los tipos de recursos supervisados asociados en la primera columna de cada entrada debajo del tipo. Si no se enumeran tipos de recursos supervisados, la métrica se puede asociar con cualquier tipo.
  • En el Explorador de métricas, puedes hacer lo siguiente:

    1. Ingresa el nombre de tu métrica en el campo Seleccionar una métrica y, luego, navega por los menús para seleccionarla. En el menú de recursos, se enumeran los tipos de recursos válidos para esa métrica, por ejemplo, “Instancia de VM”.
    2. En la barra de herramientas del panel del compilador de consultas, selecciona el botón cuyo nombre sea MQL o PromQL.
    3. Verifica que MQL esté seleccionado en el botón de activación Lenguaje. El botón de activación de lenguaje se encuentra en la misma barra de herramientas que te permite dar formato a tu consulta.

      La consulta que se muestra indica el tipo de recurso. En particular, MQL es útil para las métricas que se pueden asociar con muchos tipos de recursos supervisados, por ejemplo, métricas basadas en registros, métricas personalizadas o cualquier métrica definida por el usuario.

Si una métrica está asociada con más de un tipo de recurso, debes especificar el tipo de recurso en tu consulta de PromQL. Existe una etiqueta especial, monitored_resource, que puedes usar para seleccionar el tipo de recurso.

Los tipos de recursos supervisados en la mayoría de los casos son una string corta, como gce_instance, pero a veces aparecen como URI completos, como monitoring.googleapis.com/MetricIngestionAttribution. Las consultas de PromQL bien formadas podrían 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 "" para la etiqueta monitored_resource es especial y se refiere al tipo de recurso predeterminado prometheus_target que se usa para el servicio administrado para las métricas de Prometheus.

Si no usas la etiqueta monitored_resource cuando es necesario, verás 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

Usa etiquetas de metadatos

Puedes usar etiquetas de metadatos en PromQL como cualquier otra etiqueta, aunque, al igual que los nombres de métricas, las etiquetas de metadatos también deben ser compatibles con PromQL. La sintaxis para referirse a una etiqueta del sistema de metadatos version es metadata_system_version y la sintaxis para la etiqueta de usuario de metadatos version es metadata_user_version. Las consultas de PromQL bien formadas que usan etiquetas de metadatos podrían 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)

El único carácter especial que puedes usar en las claves de etiquetas de metadatos es _. No se admite la agregación mediante etiquetas de metadatos con el tipo MULTI_STRING o KEY_VALUE.

Resuelve 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, puedes consultar la etiqueta de métrica de forma específica si agregas el prefijo metric_ al nombre de la clave de la etiqueta en tu consulta.

Por ejemplo, supongamos que tienes una etiqueta de recurso y una etiqueta de métrica llamadas pod_name en la métrica example.googleapis.com/user/widget_count.

  • Para filtrar el valor de la etiqueta de recurso, usa
    example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}

  • Para filtrar el valor de la etiqueta de métrica, usa
    example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}