En este documento, se describe cómo puedes fijar filtros a nivel del panel para que estos sean permanentes. Los filtros fijados, que te permiten modificar los datos que muestra un panel sin tener que modificar cada widget, tienen un estado predeterminado y se pueden aplicar a todo el panel o solo a widgets específicos. La barra de herramientas del panel muestra cada filtro fijado, junto con un menú que te permite cambiar temporalmente el valor del filtro.
Las variables son similares a los filtros fijados, pero solo se aplican a widgets específicos. En este documento, se describe cómo crear variables y cómo aplicarlas con un widget. La barra de herramientas del panel muestra cada variable, junto con un menú que te permite cambiar temporalmente el valor de la variable.
En este documento, se describe cómo usar la consola de Google Cloud para crear variables y filtros fijados. Para obtener información sobre el uso de la API de Cloud Monitoring, consulta Cómo crear y administrar paneles con la API: Filtros de paneles.
Si deseas obtener información para agregar y modificar agrupaciones y filtros temporales, que solo se aplican a la sesión actual, consulta Agrega filtros temporales a un panel personalizado.
Información acerca de los filtros fijados
Un filtro fijado contiene una etiqueta, uno o más valores predeterminados y una lista de todos los valores posibles. La lista de todos los valores posibles se obtiene de forma dinámica de los datos de las series temporales que se muestran en tu panel.
Para obtener información sobre la estructura de un filtro, consulta DashboardFilter
.
No aplicas un filtro fijado con widgets individuales. En su lugar, se usan las siguientes reglas para determinar si el filtro fijado puede cambiar los datos que muestra el widget:
Si el widget muestra datos que incluyen la clave de etiqueta especificada por un filtro fijado y el widget no especifica un valor para esa clave de etiqueta, el filtro fijado puede cambiar los datos que se muestran.
Por ejemplo, supongamos que agregas el filtro fijado cluster_name: mycluster. Luego, los gráficos muestran automáticamente solo aquellas series temporales que tienen una etiqueta cluster_name con un valor de mycluster. De manera similar, las consultas en los widgets del panel de registros se modifican a resource.labels."cluster_name"="mycluster", y tus gráficos muestran automáticamente solo aquellas series temporales que incluyen la etiqueta en el filtro fijado.
Un widget ignora un filtro fijado cuando incluye un filtro para la misma clave de etiqueta o cuando los datos que muestra el widget no contienen la clave de etiqueta especificada en el filtro fijado.
Acerca de las variables
Una variable tiene un nombre y un tipo. Para aplicar una variable a un widget en particular, se debe modificar la consulta que contiene.
Para obtener información sobre la estructura de un filtro, consulta DashboardFilter
.
Las variables pueden basarse en etiquetas o tener solo un valor:
Las variables basadas en etiquetas son como filtros fijados. Estas variables contienen una clave de etiqueta, uno o más valores de etiqueta predeterminados y una lista de todos los valores de etiqueta posibles. La lista de todos los valores posibles se deriva de forma dinámica de los datos de las series temporales que se muestran en tu panel.
Las variables de solo valor contienen uno o más valores predeterminados y pueden enumerar todos los valores posibles. Si no especificas un valor predeterminado, se selecciona el operador comodín,
(*)
, para el valor predeterminado. Para definir el conjunto de todos los valores posibles, proporciona un array de valores o escribe una consulta en SQL.Existen tres tipos de variables de solo valor: Personalizada, Entrada de texto y Consulta en SQL.
Personalizado: Úsalo cuando quieras enumerar la lista de todos los valores posibles y también establecer uno o más valores predeterminados. Por ejemplo, puedes establecer la lista de todos los valores posibles en
prod, staging, dev
y el valor predeterminado enprod
.Text Input: Úsala cuando no conozcas todos los valores posibles. Por ejemplo, es posible que desees filtrar por URL, pero cuando creas la variable, no conoces la lista exacta de URLs. Luego, cuando usas el menú de filtros del widget, puedes ingresar URLs nuevas y, luego, guardar los cambios para la sesión actual o para la definición de la variable.
Consulta en SQL: Úsala cuando quieras generar la lista de valores posibles con una consulta en SQL. El objetivo de estas variables es aplicarlas a los gráficos creados con el Análisis de registros.
Para estas variables, asegúrate de que el resultado de la consulta sea una tabla con una columna, que el tipo de datos de esa columna sea cadena y que cada fila de la tabla contenga un valor de cadena único:
SELECT log_name FROM `TABLE_NAME_OF_LOG_VIEW` GROUP BY log_name
La variable debe consultar la misma tabla que el gráfico.
Para aplicar una variable a un widget, debes actualizar la consulta que contiene. Si usas la consola de Google Cloud, puedes realizar esta asociación con una selección de menú para las variables basadas en etiquetas y algunos tipos de widgets. Sin embargo, puedes editar la consulta del widget para aplicar una variable en cualquier momento. Para obtener más información, consulta Cómo aplicar una variable a un widget.
Antes de comenzar
Para obtener los permisos que necesitas para agregar o modificar variables o filtros fijados con la consola de Google Cloud,
pídele a tu administrador que te otorgue el rol de IAM de
editor de Monitoring (roles/monitoring.editor
) en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Para obtener más información sobre los roles, consulta Controla el acceso con Identity and Access Management.
Cómo crear y fijar un filtro
Para crear y fijar un filtro que se aplique a todos los widgets del panel que admitan filtros, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Paneles.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
- En la barra de herramientas del panel, haz clic en settings Configuración.
- En la sección Filtros, haz clic en Agregar un filtro.
- Haz clic en arrow_drop_down Etiqueta y, luego, selecciona una etiqueta. Por ejemplo, puedes seleccionar
zone
. - Para permitir que un usuario seleccione varios valores del menú de valores de la variable, selecciona Selección múltiple. Cuando la opción Selección múltiple no está habilitada, los usuarios solo pueden seleccionar una opción del menú de valores.
Haz clic en arrow_drop_down Valor predeterminado y, luego, selecciona el valor o los valores predeterminados para la etiqueta. Para que coincida con todos los valores, selecciona
*
.Una vez creado el filtro, se agregará a la barra de herramientas del panel. Para cambiar temporalmente el valor del filtro, selecciónalo y, luego, realiza una selección en el menú.
Haz clic en Listo y, luego, en Aplicar.
Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Crea una variable
Para crear una variable que se aplique a widgets de panel específicos, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Paneles.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
- En la barra de herramientas del panel, haz clic en settings Configuración.
- En la sección Variables, haz clic en Agregar una variable.
Selecciona el tipo de variable y completa el diálogo.
Para crear una variable basada en etiquetas, selecciona Etiqueta. Usa esta opción cuando desees una variable que tenga una clave de etiqueta y un valor de etiqueta, y que se pueda usar como un filtro. La lista de todos los valores posibles se deriva de forma dinámica de los datos de las series temporales que se muestran en tu panel.
Para las variables de solo valor, tienes las siguientes opciones:
SQL: Usa esta opción cuando desees que los resultados de una consulta en SQL generen la lista de todos los valores posibles.
Ingresa uno o más valores predeterminados y, luego, una consulta en SQL que genere la lista de todos los valores posibles. Asegúrate de que el resultado de la consulta sea una tabla con una columna, que el tipo de datos de esa columna sea cadena y que cada fila de la tabla contenga un valor de cadena único.
Personalizado: Usa esta opción cuando quieras especificar la lista de valores posibles y un valor predeterminado. Por ejemplo, puedes establecer el campo Valores en
prod, staging, dev
y el Valor predeterminado enprod
.Text Input: Usa esta opción cuando quieras especificar una lista de valores que se apliquen como predeterminados.
Ingresa un nombre para la variable. El nombre se muestra en la barra de herramientas del panel.
Haz clic en Listo y, luego, en Aplicar.
Aplica la variable a los widgets del panel de registros y a los widgets configurados con SQL, MQL o PromQL. Para obtener más información, consulta Cómo aplicar una variable a un widget.
Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Aplica una variable a un widget
Para aplicar una variable a un widget, se debe editar la consulta que usa el widget:
En el caso de los gráficos que usan consultas SQL, PromQL o MQL, y de los widgets del panel de registros, debes editar el widget y modificar la consulta. En esta sección, se describe cómo realizar esas ediciones.
En el caso de los gráficos que configuraste con menús o con el modo de filtro directo, Monitoring edita la consulta cuando seleccionas el widget con el menú Aplicar a gráficos.
Para obtener información sobre cómo aplicar una variable basada en etiquetas o una variable solo de valor a un widget, consulta las siguientes secciones:
- Sintaxis general para anular la referencia de una variable
- Widgets del panel de registros
- Gráficos con consultas de PromQL
- Gráficos con consultas SQL
- Gráficos con consultas de MQL
Gráficos con consultas de filtros de supervisión
Cuando usas la interfaz basada en menús para crear un gráfico que muestre datos de series temporales, tus selecciones se convierten en un filtro de Monitoring.
Crea filtros y variables
Console
Para obtener información sobre cómo usar la consola de Google Cloud para crear variables y filtros fijos, consulta los siguientes documentos:
API
Para definir los filtros y las variables fijados, usa la estructura de datos dashboardFilters
.
- Para crear una variable, establece el valor del campo
templateVariable
en el nombre de la variable. Omite este campo o establece el valor en una cadena vacía cuando desees crear un filtro fijado. - Para crear un filtro fijado o una variable basada en etiquetas, debes especificar el campo
labelKey
. Omite este campo cuando quieras una variable de solo valor. Establece el valor predeterminado para el filtro o la variable. La configuración de este campo determina si un usuario puede seleccionar exactamente una opción del menú de valores o si puede seleccionar varios valores.
- Para establecer un solo valor predeterminado y restringir a los usuarios a seleccionar exactamente una opción en el menú de valores, establece el campo
valueType
comoSTRING
y también establece el campostringValue
:
"valueType": "STRING", "stringValue": "my-default-value",
- Para establecer al menos un valor predeterminado y permitir que los usuarios seleccionen varias opciones en el menú de valores, establece el campo
valueType
comoSTRING_ARRAY
y también configura el campostringArrayValue
. En el siguiente ejemplo, hay tres valores predeterminados.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Para establecer un solo valor predeterminado y restringir a los usuarios a seleccionar exactamente una opción en el menú de valores, establece el campo
Opcional: Para especificar la lista de todos los valores posibles de una variable solo de valor, establece el campo
stringArray
o el campotimeSeriesQuery
. Si especificas una consulta, esta debe ser una consulta de análisis.
Por ejemplo, considera el siguiente objeto dashboardFilters
:
{ "dashboardFilters": [ { "labelKey": "zone" "stringValue": "us-central1-c", "valueType": "STRING", "filterType": "RESOURCE_LABEL" }, { "labelKey": "instance_id", "stringValue": "3133577226154888113", "valueType": "STRING", "filterType": "RESOURCE_LABEL", "templateVariable": "my_label_based_variable" }, { "filterType": "VALUE_ONLY", "templateVariable": "my_value_only_variable", timeSeriesQuery: { opsAnalyticsQuery: { sql: " SELECT log_name FROM `MY_TABLE` GROUP BY log_name ", } } } ], "displayName": "Illustrate Variables", ... }
El JSON anterior define un filtro fijado y dos variables:
El filtro fijado tiene la clave de etiqueta
zone
, que se muestra en la barra de herramientas. Los camposvalueType
ystringValue
especifican el valor predeterminado único. Para obtener más información, consulta la página de referencias de la API de la estructura de datos dedashboardFilters
.La variable basada en etiquetas tiene el nombre
my_label_based_variable
y su clave de etiqueta esinstance_id
. El valor predeterminado de esta variable se establece en un ID de instancia específico. También puedes configurar el valor predeterminado con un array. En la barra de herramientas, el filtro se muestra con el nombremy_label_based_variable
.La variable solo de valor se llama
my_value_only_variable
. Esta entrada no especifica un valor predeterminado, por lo que el operador comodín,(*)
, se aplica automáticamente. Además, esta variable usa una consulta en SQL para generar la lista de valores posibles para la variable.
Ten en cuenta que el objeto dashboardFilters
no muestra los widgets a los que se aplica la variable. Para aplicar una variable a un widget, debes modificar la consulta del widget.
Sintaxis general para anular la referencia de una variable
Para todos los widgets, excepto los que define SQL, usa la siguiente sintaxis para aplicar una variable a una consulta:
Para aplicar una variable basada en etiquetas y que la clave y el valor de la etiqueta se resuelvan en una expresión de filtro válida para el lenguaje de consulta, usa
${my_label_based_variable}
.Para aplicar solo el valor de una variable basada en etiquetas, usa
${my_label_based_variable.value}
. La comparación debe usar una expresión regular.Para aplicar solo el valor de una variable de solo valor, usa
${my_value_only_variable}
. Para las variables de solo valor, no incluyas una cláusula.value
. La comparación debe usar una expresión regular.
Widgets del panel de registros
Para aplicar una variable a un widget del panel de registros, actualiza el panel de consultas. La sintaxis de estos widgets sigue la especificada en Sintaxis general.
Console
Por ejemplo, la siguiente consulta usa una expresión regular para comparar el valor del campo jsonPayload.message
con un valor de cadena que incluye el valor de una variable basada en etiquetas:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Como otro ejemplo, considera una variable solo de valor, value_only_severity_variable
, y supongamos que, en el menú de valores, se seleccionan tres valores: ERROR
, INFO
y NOTICE
.
A continuación, agrega lo siguiente al panel de consulta del widget del panel de registros:
severity =~ "${value_only_severity_variable}"
A continuación, se muestra el formulario renderizado:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Por ejemplo, en el siguiente JSON, se ilustra cómo aplicar una variable basada en etiquetas a la consulta de un widget de panel de registros:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
Por ejemplo, la siguiente consulta usa una expresión regular para comparar el valor del campo jsonPayload.message
con un valor de cadena que incluye el valor de una variable basada en etiquetas:
"logsPanel": { "filter": "resource.type=\"gce_instance\"\n resource.labels.project_id=~\"${my_label_based_variable.value}\"\n", "resourceNames": [ "projects/012345" ] }
Como otro ejemplo, considera una variable solo de valor, value_only_severity_variable
, y supongamos que se seleccionaron tres valores en el menú: ERROR
, INFO
y NOTICE
.
A continuación, agrega lo siguiente al panel de consulta del widget del panel de registros:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
A continuación, se ilustra la consulta que ejecuta el widget del panel de registros:
severity =~ "^(ERROR|INFO|NOTICE)$"
Si configuraste una consulta para el panel de registros y, luego, seleccionas el botón para abrir el Explorador de registros, las variables se resuelven antes de que se abra el Explorador de registros.
En la siguiente tabla, se muestra cómo el panel de registros resuelve las variables de ejemplo. Como se mencionó anteriormente, cuando solo se usa el valor de una variable, debes usar una expresión regular como operador de comparación:
Sintaxis | Valor seleccionado |
Expresión resuelta del panel de registros |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
La variable de ejemplo se basa en la etiqueta de recurso
|
${my_label_based_variable} |
* |
"" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Gráficos con consultas de PromQL
Para aplicar una variable basada en etiquetas a un gráfico que tiene una consulta de PromQL, sigue las instrucciones que se indican en Sintaxis general.
Console
Por ejemplo, la siguiente consulta se basa en la variable basada en etiquetas, my_label_based_variable
, que se resuelve en una expresión de filtro:
compute_googleapis_com:instance_cpu_utilization{ monitored_resource="gce_instance", ${my_label_based_variable} }
También puedes modificar la consulta para resolver solo el valor de una variable.
En el siguiente ejemplo, se usa una expresión regular para comparar el valor de una búsqueda basada en etiquetas con instance_id
:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Si tienes una variable solo de valor, omite la cláusula .value
. Por ejemplo,
para filtrar por zona con una variable de solo valor, la consulta incluiría
algo como lo siguiente:
zone=~"${my_value_only_variable}"
API
Por ejemplo, el siguiente JSON ilustra una consulta que se basa en la variable basada en etiquetas, my_label_based_variable
, que se resuelve en una expresión de filtro:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", ${my_label_based_variable} }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
También puedes modificar la consulta para resolver solo el valor de una variable.
En el siguiente ejemplo, se usa una expresión regular para comparar el valor de una búsqueda basada en etiquetas con instance_id
:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", instance_id=~\"${my_label_based_variable.value}\" }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Si tienes una variable de solo valor, omite la cláusula .value
. Por ejemplo,
para filtrar por zona con una variable de solo valor, la consulta incluiría
algo como lo siguiente:
zone=~\"${my_value_only_variable}\"
En la siguiente tabla, se muestra cómo PromQL resuelve las variables de ejemplo. Como se mencionó anteriormente, cuando solo se usa el valor de una variable, debes usar una expresión regular como operador de comparación:
Sintaxis | Valor seleccionado |
Expresión de PromQL resuelta |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
La variable de ejemplo se basa en la etiqueta de recurso
|
${my_label_based_variable} |
* |
noop_filter=~".*" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.+ |
Gráficos con consultas de SQL
Cuando quieras aplicar una variable a un widget definido por SQL,
actualiza la cláusula WHERE
para hacer referencia al valor de la variable.
Para todas las variables, coloca el signo "acento grave" como prefijo del nombre de la variable, por ejemplo: @variable_name
. Para las variables basadas en etiquetas, agrega .value
al nombre de la variable, @my_label_based_variabe.value
.
En el caso de las consultas de SQL, la sustitución de variables se basa en BigQuery y es segura contra la inyección de SQL. Para obtener más información, consulta Ejecuta consultas con parámetros.
Console
Debido a que SQL no interpreta el operador comodín como “cualquier valor”, te recomendamos que siempre uses una sentencia IF
cuando apliques variables a una consulta en SQL. En el siguiente ejemplo, se ilustra el uso de una variable solo de valor cuyo tipo de datos es una cadena:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Cuando la opción de menú de la variable permite que los usuarios seleccionen varios valores, debes transmitir el valor de la variable a un tipo de datos de GoogleSQL con la función CAST
.
En la siguiente consulta, se ilustra esta sintaxis:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Se recomienda la sentencia IF
que se muestra en los ejemplos anteriores porque SQL no interpreta el operador comodín como “cualquier valor”. Por lo tanto, si omites la sentencia IF
y seleccionas el operador comodín, el resultado de la consulta es una tabla vacía. En el segundo ejemplo, la función UNNEST
convierte el array en una tabla.
Para agregar una cláusula WHERE
con el formato correcto, haz lo siguiente:
- Edita el widget.
- En la barra de herramientas, selecciona Insertar filtro de variable y, luego, selecciona la variable que deseas aplicar a la cláusula
WHERE
. - En el diálogo que se abre, revisa el código generado y, luego, haz clic en Copiar y cerrar.
Pega el código copiado en el panel Consulta y realiza las modificaciones necesarias.
Por ejemplo, supongamos que creas una variable llamada
LogName
que genera una lista de nombres de registros y muestra el resultado en una tabla con una sola columna llamadalog_name
. A continuación, creas un gráfico, seleccionas Insertar filtro de variables y, luego, seleccionas la variableLogName
. Se genera el siguiente código:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
En este ejemplo, debes editar el código generado y reemplazar
LogName =
porlog_name =
para que se pueda realizar la unión de tablas:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Haz clic en Run y, luego, en Apply.
Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
API
Debido a que SQL no interpreta el operador comodín como “cualquier valor”, te recomendamos que siempre uses una sentencia IF
cuando apliques variables a una consulta en SQL. En el siguiente ejemplo, se ilustra el uso de una variable solo de valor cuyo tipo de datos es una cadena:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Por ejemplo, a continuación se muestra una representación JSON parcial de un gráfico que muestra los resultados de una consulta en SQL. Para admitir el filtrado de los resultados
por el nombre de un registro, se agregó una cláusula WHERE
que hace referencia a la variable
llamada LogName
:
"plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": {}, "queryHandle": "", "sql": "SELECT\n timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload\n FROM\n `my-project.global._Default._Default`\n WHERE \n IF (@LogName = \"*\", TRUE, log_name=@LogName)\nLIMIT 10000" } }
La variable LogName
también emite una consulta para determinar la lista de posibles nombres de registro:
"dashboardFilters": [ { "filterType": "VALUE_ONLY", "templateVariable": "LogName", "valueType": "STRING", "timeSeriesQuery": { "opsAnalyticsQuery": { "savedQueryId": "", "sql": "SELECT log_name FROM `my-project.global._Default._Default` GROUP BY log_name LIMIT 1000", "queryHandle": "" }, "unitOverride": "", "outputFullDuration": false } } ],
Cuando la opción de menú de la variable permite que los usuarios seleccionen varios valores, debes transmitir el valor de la variable a un tipo de datos de GoogleSQL con la función CAST
.
En la siguiente consulta, se ilustra esta sintaxis:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Se recomienda la sentencia IF
que se muestra en los ejemplos anteriores porque SQL no interpreta el operador comodín como “cualquier valor”. Por lo tanto, si omites la sentencia IF
y seleccionas el operador comodín, el resultado de la consulta es una tabla vacía. En el segundo ejemplo, la función UNNEST
convierte el array en una tabla.
Gráficos con consultas de MQL
Para aplicar una variable basada en etiquetas a un gráfico que tiene una consulta de MQL, agrega una barra, (|)
, y, luego, sigue las instrucciones que se indican en Sintaxis general.
Cuando usas la interfaz basada en menús para crear un gráfico que muestre datos de series temporales, tus selecciones se convierten en un filtro de Monitoring.
Console
Por ejemplo, la siguiente consulta se basa en una variable basada en etiquetas, my_label_based_variable
, que se resuelve en una expresión de filtro:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | every 1m | ${my_label_based_variable}
También puedes modificar la consulta para resolver solo el valor de una variable.
En el siguiente ejemplo, se usa una expresión regular para comparar el valor de una búsqueda basada en etiquetas con instance_id
:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | filter resource.instance_id=~'${my_label_based_variable.value}' | group_by 1m, [value_utilization_mean: mean(value.utilization)] | every 1m
Si tienes una variable solo de valor, omite la cláusula .value
. Por ejemplo,
para filtrar por zona con una variable de solo valor, la consulta incluiría
algo como lo siguiente:
resource.zone=~'${my_value_only_variable}'
API
Por ejemplo, el siguiente JSON ilustra una consulta que se basa en una variable basada en etiquetas, my_label_based_variable
, que se resuelve en una expresión de filtro:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n | ${my_label_based_variable}", "unitOverride": "", "outputFullDuration": false },
También puedes modificar la consulta para resolver solo el valor de una variable.
En el siguiente ejemplo, se usa una expresión regular para comparar el valor de una búsqueda basada en etiquetas con instance_id
:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | filter resource.instance_id=~'${my_label_based_variable.value}'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n", "unitOverride": "", "outputFullDuration": false },
Si tienes una variable de solo valor, omite la cláusula .value
. Por ejemplo,
para filtrar por zona con una variable de solo valor, la consulta incluiría
algo como lo siguiente:
resource.zone=~'${my_value_only_variable}'
En la siguiente tabla, se muestra cómo la MQL resuelve las variables de ejemplo. Como se mencionó anteriormente, cuando solo se usa el valor de una variable, debes usar una expresión regular como operador de comparación:
Sintaxis | Valor seleccionado |
Expresión de MQL resuelta |
---|---|---|
${my_label_based_variable} |
12345 |
filter (resource.instance_id == '12345')
La variable de ejemplo se basa en la etiqueta de recurso
|
${my_label_based_variable} |
* |
filter (true) |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Gráficos con consultas de filtros de supervisión
Para aplicar una variable basada en etiquetas a un gráfico que tiene una consulta en forma de filtro de supervisión, sigue las instrucciones que se indican en Sintaxis general.
Console
Si usas la consola de Google Cloud para crear tus gráficos y la interfaz basada en menús, puedes aplicar una variable basada en etiquetas a un gráfico mediante el campo Aplicar a gráficos de la variable o editando el widget y seleccionando la variable basada en etiquetas en el menú Filtrar. En el menú Filtro, se enumeran todas las variables basadas en etiquetas y todas las claves de etiquetas.
Para aplicar una variable basada en valores a estos tipos de gráficos, haz lo siguiente:
- Editar el gráfico
- En el panel de consulta, haz clic en Agregar filtro y selecciona una clave de etiqueta. Por ejemplo, puedes seleccionar zona.
- En el menú Valor, selecciona tu variable de solo valor.
- Haz clic en Aplicar.
- Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Por ejemplo, el siguiente JSON ilustra una consulta que se basa en una variable basada en etiquetas, my_label_based_variable
, que se resuelve en una expresión de filtro:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" ${my_label_based_variable}"
Los widgets que usan una consulta en forma de filtro de supervisión no pueden filtrar las series temporales por el valor de una variable basada en etiquetas. Sin embargo, puedes filtrar por variables de solo valor.
Por ejemplo, la siguiente consulta muestra el valor del campo Filtros de una consulta que filtra por zone
, según el valor de una variable de solo valor:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})
API
Por ejemplo, el siguiente JSON ilustra una consulta que se basa en una variable basada en etiquetas, my_label_based_variable
, que se resuelve en una expresión de filtro:
"timeSeriesQuery": { "timeSeriesFilter": { "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" ${my_label_based_variable} ", "aggregation": { "alignmentPeriod": "60s", "perSeriesAligner": "ALIGN_MEAN", "groupByFields": [] } }, "unitOverride": "", "outputFullDuration": false },
Los widgets que usan una consulta en forma de filtro de supervisión no pueden filtrar las series temporales por el valor de una variable basada en etiquetas. Sin embargo, puedes filtrar por variables de solo valor.
Por ejemplo, la siguiente consulta muestra el campo "filter"
de una consulta que filtra por zone
, según el valor de una variable de solo valor:
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"
En la siguiente tabla, se muestra cómo el filtro de Monitoring resuelve las variables de ejemplo. Como se mencionó anteriormente, cuando solo se usa el valor de una variable, debes usar una expresión regular como operador de comparación:
Sintaxis | Valor seleccionado |
Expresión de filtro resuelta |
---|---|---|
${my_label_based_variable} |
12345 |
resource.instance_id == "12345"
La variable de ejemplo se basa en la etiqueta de recurso
|
${my_label_based_variable} |
* |
Omitido |
${my_label_based_variable.value} |
12345 |
No compatible |
${my_label_based_variable.value} |
* |
No compatible |
${my_value_based_variable} |
12345 |
"12345" |
${my_value_based_variable} |
* |
".*" |
Cómo modificar un filtro o una variable fijados
Para cambiar temporalmente el valor de cualquier filtro que se muestre en la barra de herramientas del panel, haz clic en el nombre del filtro y, luego, ingresa un valor o realiza una selección en el menú.
Si tu panel contiene una tabla que muestra datos de series temporales, puedes agregar filtros temporales o modificar filtros y variables permanentes con el botón filter_list Filtrar panel a este valor de una celda. Cuando se selecciona este botón, se aplica un nuevo filtro temporal o se actualiza el valor de un filtro o una variable existente. Los filtros y las variables existentes se actualizan cuando la clave de etiqueta de la columna de la tabla coincide con la clave de etiqueta de un filtro o una variable.
Para cambiar la configuración de un filtro fijado o una variable, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Paneles.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
- En la barra de herramientas del panel, haz clic en settings Configuración.
- Busca el filtro o la variable que quieres modificar y expande su definición.
- Después de completar las modificaciones, haz clic en Aplicar.
- Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Cómo borrar un filtro o una variable fijados
Para borrar un filtro o una variable fijados, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Paneles.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
- En la barra de herramientas del panel, haz clic en settings Configuración.
- Busca el filtro o la variable que quieres quitar y, luego, haz clic en Borrar.
- Haz clic en Aplicar.
- Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.