Acerca del lenguaje de consultas de Monitoring (MQL)

Esta página proporciona información general sobre el lenguaje de consulta de Monitoring (MQL). Esta información se aplica si usas MQL de Google Cloud Console o de la API de Cloud Monitoring.

En esta página, se supone que estás familiarizado con el lenguaje MQL, como se describe en los ejemplos.

Consultas estrictas y concisas

Las consultas del lenguaje de consulta de Monitoring se pueden expresar de forma estricta o concisa. Las consultas complejas aprovechan las notación abreviadas, y el hecho de que el lenguaje permite que se omitan algunos componentes de la consulta cuando se pueden especificar o establecer como predeterminados. Por esta razón, es posible que encuentres consultas equivalentes que se vean muy diferentes entre sí.

Si ingresa una consulta concisa en el Editor de consultas y luego guarda el gráfico, la consulta se convierte en una forma estricta.

En esta sección, se describen algunos de estos accesos directos y otras variaciones.

Para obtener una lista completa, consulta Combinaciones de teclas de la operación de tabla.

Accesos directos para operaciones

Las operaciones fetch, group_by y filter se pueden hacer más concisas si se omite el nombre de la operación.

Las siguientes solicitudes fetch son equivalentes:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
      gce_instance::compute.googleapis.com/instance/cpu/utilization

Las siguientes operaciones group_by son equivalentes:

group_by [zone], mean(val())
         [zone], mean(val())

Puedes omitir la palabra filter si pones la prueba de filtro entre paréntesis. Por ejemplo, las dos operaciones filter siguientes son equivalentes:

filter instance_name =~ 'apache.*'
       (instance_name =~ 'apache.*')

Accesos directos para funciones

Si vas a aplicar una función al valor de un punto de entrada, por ejemplo, function(val()), puedes usar la notación .function. El punto al principio significa "Llamar a la siguiente función, proporcionando el valor (o valores) de punto de entrada como los primeros argumentos de la función".

Por ejemplo, puedes reemplazar la función mean(val()) por .mean. Los siguientes son equivalentes:

group_by [zone], mean(val())
group_by [zone], .mean

También puedes aplicar el acceso directo group_by:

[zone], .mean

Para el caso común de una tabla de series temporales con un valor en cada punto, .mean significa "tomar la media del valor de todos los puntos agregados". De manera similar, .div(3) significa "dividir el valor del punto por 3". Los siguientes son equivalentes:

div(val(), 3)
.div(3)
val() / 3

Variaciones en fetch

La operación fetch muestra datos de series temporales para una combinación de tipos de recursos y métricas supervisados. También hay operaciones resource y metric. A continuación, cada operación resource debe estar seguida de una operación metric. Las siguientes consultas son equivalentes:

resource gce_instance | metric compute.googleapis.com/instance/cpu/utilization
fetch    gce_instance | metric compute.googleapis.com/instance/cpu/utilization
         gce_instance | metric compute.googleapis.com/instance/cpu/utilization

Este formato resource | metric es muy común, por lo que los siguientes formatos concisos también son compatibles y equivalentes a los ejemplos anteriores:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
      gce_instance::compute.googleapis.com/instance/cpu/utilization

Sin embargo, a la operación resource no la tiene que seguir una operación metric directamente. Puedes canalizar el resultado resource directamente en una operación filter y, luego, canalizar ese resultado en una operación metric. Por ejemplo:

fetch gce_instance
| filter zone = "us-central1-a"
| metric compute.googleapis.com/instance/cpu/utilization.

Este formulario es muy útil si deseas trabajar con dos tipos de métricas diferentes recopilados del mismo grupo de recursos supervisados como una secuencia de operaciones. Para obtener más información, consulta fetch. Para ver otro ejemplo en el que se usan secuencias, consulta Combinar selecciones con union.

Ejemplo: conversión de conciso a estricto

Cuando ingresas una consulta con el editor de consultas y guardas el gráfico en un panel, la consulta se convierte a un formato estricto.

La siguiente consulta aparece en Combina selecciones con union:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|
  {
     top 1, max(val())
  ;
     bottom 1, min(val())
  }
| union

Si ingresas esta consulta en el editor de consultas y luego guardas el gráfico, la consulta se convierte de esta manera:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|
  {
     t_0: top 1, max(value.utilization)
  ;
     t_1: bottom 1, min(value.utilization)
  }
| union

Puedes recuperar esta versión de la consulta de la representación JSON del gráfico después de guardarla en el panel:

  1. Ve al panel y haz clic en en el gráfico.
  2. En el menú de opciones, selecciona una de las siguientes opciones:

    • Editar
    • Abrir en el Explorador de métricas.

    El editor de consultas muestra la consulta en formato estricto.

Coincidencia con la columna resource.project_id

Cada tipo de recurso incluye la etiqueta resource.project_id. Esta etiqueta designa el proyecto que posee el recurso y los datos de ese recurso.

La etiqueta resource.project_id tiene el número de proyecto en forma de texto como su valor, pero MQL convierte ese valor al nombre del proyecto en algunas situaciones. Por ejemplo, un proyecto con el nombre "monitoring-demo" podría tener el número de proyecto "530310927541". El valor de la etiqueta resource.project_id para cualquier recurso que es propiedad de este proyecto es "530310927541", pero en ciertos casos, MQL la trata como si el valor fuera "monitoring-demo".

En los siguientes casos, MQL trata a la etiqueta resource.project_id con la premisa de que el nombre y el número del proyecto están disponibles:

  • La leyenda de un gráfico muestra el nombre del proyecto en lugar del número del proyecto de la etiqueta resource.project_id.

  • Comparaciones de igualdad del valor de resource.project_id con un literal de string. Reconoce el número y el nombre del proyecto. Por ejemplo, los siguientes resultados son verdaderos para los recursos que pertenecen a este proyecto:

    • resource.project_id == "monitoring-demo"
    • resource.project_id == "530310927541"

    Esto funciona para los operadores == y !=, y para las formas eq() y ne() de funciones.

  • Una coincidencia de expresión regular en la etiqueta resource.project_id funcionará de manera correcta con el número o el nombre del proyecto. Por ejemplo, los siguientes resultados son verdaderos para los recursos que son propiedad de este proyecto:

    • resource.project_id =~ "monitoring-.*"
    • resource.project_id =~ ".*27541"

    Esto funciona para los operadores =~ y !~, y para la forma re_full_match de la función.

Ten en cuenta que el valor real de la columna es el número y que el valor numérico se usa para todas las demás operaciones. Por ejemplo, concatenate("project-", resource.project_id) da como resultado el valor "project-530310927541" y no "project-monitoring-demo".