En este documento, se describe cómo puedes fijar filtros a nivel del panel para que 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 aplican a todo el panel. 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. Una variable puede modificar la consulta del widget o controlar su visibilidad. La barra de herramientas del panel muestra cada variable por su nombre, junto con un menú que te permite cambiar temporalmente el valor de la variable. Para ayudarte a diferenciar los filtros de las variables, en la barra de herramientas, el nombre de una variable se antepone con un signo de dólar $
.
En este documento, se describe cómo usar la consola de Google Cloud para crear variables y filtros fijados. Si deseas obtener información sobre el uso de la API de Cloud Monitoring, consulta Crea y administra paneles con la API: Filtros de panel.
Para obtener información sobre cómo agregar y modificar agrupaciones y filtros temporales, que solo se aplican a la sesión actual, consulta Agrega filtros temporales a un panel personalizado.
Esta función solo se admite para proyectos de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para la app.
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 deriva de forma dinámica de los datos de series temporales que se muestran en tu panel.
Para obtener información sobre la estructura de un filtro, consulta DashboardFilter
.
No puedes aplicar un filtro fijado a widgets individuales. En cambio, 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 si 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 mostrarán automáticamente solo las series temporales que tengan una etiqueta cluster_name con el valor mycluster. Del mismo modo, las consultas en los widgets del panel de registros se modifican a resource.labels."cluster_name"="mycluster", y los gráficos muestran automáticamente solo las 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 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 el widget.
Para obtener información sobre la estructura de un filtro, consulta DashboardFilter
.
En la barra de herramientas del panel, los nombres de las variables se anteponen con un signo de dólar $
.
Si también ves un ícono de visibility Visible, significa que la variable controla la visibilidad de al menos un widget.
Las variables pueden basarse en etiquetas o solo tener 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 a partir de los datos de series temporales que se muestran en tu panel.
Las variables solo de valor contienen uno o más valores predeterminados y pueden enumerar todos los valores posibles. Si no especificas un valor predeterminado, se seleccionará el operador comodín,
(*)
, como valor predeterminado. Para definir el conjunto de todos los valores posibles, puedes proporcionar un array de valores o escribir una consulta en SQL.Existen tres tipos de variables de solo valor: Personalizada, Entrada de texto y Consulta en SQL.
Personalizado: Se usa cuando deseas 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
.Entrada de texto: Ú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 uses el menú de filtros del widget, podrás 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. Estas variables están diseñadas para aplicarse 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, de que el tipo de datos de esa columna sea una cadena y de que cada fila de la tabla contenga un valor de cadena único:
SELECT log_name FROM `VIEW` GROUP BY log_name
La consulta en SQL no puede depender de una variable.
Para aplicar una variable a un widget, debes actualizar la consulta que emite el widget o actualizar su visibilidad. Siempre puedes editar el widget para actualizar su búsqueda. Sin embargo, para las variables basadas en etiquetas y algunos tipos de widgets, puedes actualizar la consulta realizando selecciones en el menú. Para controlar la visibilidad, debes editar el widget. Para obtener más información, consulta las siguientes secciones de este documento:
Antes de comenzar
Completa lo siguiente para el proyecto Google Cloud en el que deseas configurar filtros y variables:
-
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 deeditor 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 admiten filtros, haz lo siguiente:
-
En la consola de Google Cloud , accede 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 de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para la app.
- Selecciona un panel, ve a la barra de herramientas del panel y, luego, 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 coincidan todos los valores, selecciona
*
.Después de crear el filtro, se agregará a la barra de herramientas del panel. Para cambiar temporalmente el valor del filtro, selecciona el filtro 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 específicos del panel, haz lo siguiente:
-
En la consola de Google Cloud , accede 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 de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para la app.
- Selecciona un panel, ve a la barra de herramientas del panel y, luego, haz clic en settings Configuración.
- En la sección Variables, haz clic en Agregar una variable.
Selecciona el tipo de variable y, luego, 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 y un valor de etiqueta, y que se pueda usar como filtro. La lista de todos los valores posibles se deriva de forma dinámica a partir de los datos de series temporales que se muestran en tu panel. El menú Aplicar a los gráficos te permite seleccionar los widgets cuya consulta se modificará con la variable. También puedes actualizar la búsqueda editando el widget.
Para las variables solo de valor, tienes las siguientes opciones:
SQL: Usa esta opción cuando quieras que los resultados de una consulta en SQL generen la lista de todos los valores posibles.
Ingresa uno o más valores predeterminados y 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, de que el tipo de datos de esa columna sea una cadena y de 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
.Entrada de texto: Usa esta opción cuando quieras especificar una lista de valores que se apliquen como valores predeterminados.
Haz clic en Listo y, luego, en Aplicar.
Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Aplica la variable a los widgets. Si actualizas la consulta de un widget, cuando cambies el valor de la variable, se modificará la consulta y los datos que muestra el widget. También puedes usar una variable para controlar si un widget es visible. Para obtener más información, consulta las siguientes secciones de este documento:
Cómo establecer la visibilidad de un widget
Cuando un widget consulta datos, puedes usar una variable para controlar si el widget es visible en un panel. Por ejemplo, supón que un panel contiene widgets que muestran datos de tus sistemas de producción y otro conjunto de widgets que muestran datos de tus sistemas de etapa de pruebas. Cuando depures durante el desarrollo, es posible que solo quieras ver los datos de la etapa de pruebas. Si configuras la visibilidad de los widgets del panel con una variable, puedes alternar entre solo datos de producción, solo datos de etapa de pruebas y todos los datos.
Cualquier tipo de variable puede controlar si un widget está visible u oculto.
Para configurar la visibilidad de un widget, haz lo siguiente:
-
En la consola de Google Cloud , accede 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.
- Selecciona un panel.
- Ve a la barra de herramientas del widget cuya visibilidad deseas configurar y, luego, haz clic en edit Editar.
- En el panel Mostrar, expande Visibilidad del widget.
Selecciona una variable y completa el diálogo.
Haz clic en Listo y, luego, en Aplicar.
Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Se actualizó el panel. Cuando al menos un widget del panel está oculto debido a los controles de visibilidad, el panel muestra un banner. Para ver todos los widgets, haz clic en Mostrar todos los widgets.
Cuando usas una variable para controlar la visibilidad de al menos un widget en tu panel, en la barra de herramientas, el nombre de la variable se anota con un ícono de visibility Visible.
Limitaciones
Se aplican las siguientes limitaciones cuando configuras la visibilidad de un widget:
Los widgets organizativos, como los de grupo contraíble, encabezado de sección y vista única, siempre están visibles.
Puedes borrar una variable a la que hacen referencia los controles de visibilidad de un widget. La acción de borrado de variables también quita cualquier referencia a la variable.
No todos los paneles admiten la creación de variables. Sin embargo, si un panel contiene variables, puedes usarlas para administrar la visibilidad de los widgets en el panel.
Actualiza la consulta de un widget
En esta sección, se describe cómo incluir variables en la consulta que emite el widget. Como resultado, cuando cambias el valor de la variable, se modifica la consulta y los datos que muestra el widget:
En el caso de los gráficos que usan consultas de SQL o PromQL, 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 los gráficos. Como alternativa, puedes editar el widget, ir al campo Filtro y, luego, seleccionar la variable.
Para obtener información sobre cómo actualizar la consulta de un widget con una variable basada en etiquetas o una variable solo con valores, consulta las siguientes secciones:
- Sintaxis general para desreferenciar una variable
- Widgets del panel de registros
- Gráficos con consultas de PromQL
- Gráficos con consultas en SQL
Gráficos con consultas de filtros de Monitoring
Cuando usas la interfaz accionada con 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 filtros y variables fijados, consulta los siguientes documentos:
API
Para definir filtros y 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 quieras 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 solo con 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 establece 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 de solo valor, establece el campo
stringArray
o el campotimeSeriesQuery
. Si especificas una consulta, debe ser una consulta de Analytics.
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 único valor predeterminado. Para obtener más información, consulta la página de referencias de la API para la estructura de datosdashboardFilters
.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 de solo valor se llama
my_value_only_variable
. Esta entrada no especifica un valor predeterminado, por lo que se aplica automáticamente el operador comodín,(*)
. 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 enumera los widgets a los que se aplica la variable. En su lugar, actualiza la consulta de un widget para que dependa de una variable.
Sintaxis general para desreferenciar una variable
Para todos los widgets, excepto los que se definen con 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 consultas, 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 búsqueda 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 supón que, en el menú de valores, se seleccionan tres valores: ERROR
, INFO
y NOTICE
.
A continuación, agrega lo siguiente al panel de consultas del widget del panel de registros:
severity =~ "${value_only_severity_variable}"
A continuación, se ilustra el formulario renderizado:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Por ejemplo, el siguiente código JSON ilustra cómo actualizar la consulta de un widget de panel de registros con una variable basada en etiquetas:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
Por ejemplo, la siguiente búsqueda 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 supón que se seleccionaron tres valores en el menú: ERROR
, INFO
y NOTICE
.
A continuación, agrega lo siguiente al panel de consultas del widget del panel de registros:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
En la siguiente ilustración, se muestra la consulta tal como la 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 ilustra 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 | Selected Value |
Expresión del panel de registros resuelta |
---|---|---|
${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 actualizar un gráfico que tiene una consulta de PromQL para que dependa de una variable basada en etiquetas, 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 código JSON ilustra una consulta que depende de que la variable basada en etiquetas, my_label_based_variable
, se resuelva 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 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}\"
En la siguiente tabla, se ilustra 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 | Selected Value |
Expresión 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 actualizar un widget definido por SQL para que dependa de una variable, actualiza la cláusula WHERE
para hacer referencia al valor de la variable.
Para todas las variables, antepón el signo "arroba" al 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 en 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
Dado que SQL no interpreta el operador de comodín como "cualquier valor", te recomendamos que siempre uses una instrucción IF
cuando uses variables en 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ú para la variable permite que los usuarios seleccionen varios valores, debes convertir 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 instrucción 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 instrucción IF
y seleccionas el operador comodín, el resultado de la consulta será 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 cuya cláusula
WHERE
deseas actualizar. - 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 ediciones 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, crea un gráfico, selecciona Insertar filtro de variables y, luego, selecciona 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 la tabla:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Haz clic en Ejecutar y, luego, en Aplicar.
Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
API
Dado que SQL no interpreta el operador de comodín como "cualquier valor", te recomendamos que siempre uses una instrucción IF
cuando uses variables en 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 nombres de registros posibles:
"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ú para la variable permite que los usuarios seleccionen varios valores, debes convertir 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 instrucción 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 instrucción IF
y seleccionas el operador comodín, el resultado de la consulta será una tabla vacía. En el segundo ejemplo, la función UNNEST
convierte el array en una tabla.
Gráficos con consultas de filtros de Monitoring
Para actualizar un gráfico que tiene una consulta en forma de filtro de supervisión para que dependa de una variable basada en etiquetas, 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 controlada por menús, puedes actualizar la consulta del gráfico con el campo Aplicar a gráficos de la variable o editando el widget y seleccionando la variable basada en etiquetas en el menú Filtro. En el menú Filtro, se enumeran todas las variables basadas en etiquetas y todas las claves de etiquetas.
Para actualizar la consulta de un gráfico de modo que dependa de una variable basada en valores, haz lo siguiente:
- Editar el gráfico
- En el panel de consultas, haz clic en Agregar filtro y selecciona una clave de etiqueta. Por ejemplo, puedes seleccionar zona.
- En el menú Valor, selecciona tu variable solo de valor.
- Haz clic en Aplicar.
- Para guardar el panel modificado, haz clic en Guardar en la barra de herramientas.
Por ejemplo, el siguiente código JSON ilustra una búsqueda que depende de 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 la serie temporal según el valor de las variables basadas en etiquetas. Sin embargo, puedes filtrar por variables de solo valor.
Por ejemplo, la siguiente búsqueda muestra el valor del campo Filters de una búsqueda 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 código JSON ilustra una búsqueda que depende de 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 la serie temporal según el valor de las variables basadas en etiquetas. Sin embargo, puedes filtrar por variables de solo valor.
Por ejemplo, la siguiente búsqueda muestra el campo "filter"
de una búsqueda 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 ilustra 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 | Selected Value |
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 selecciona una opción del menú.
Si tu panel incluye 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 el panel según 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 existentes. 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 , accede 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 de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para la app.
- 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 fijado o una variable, haz lo siguiente:
-
En la consola de Google Cloud , accede 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 de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para la app.
- En la barra de herramientas del panel, haz clic en settings Configuración.
- Busca el filtro o la variable que quieras 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.