En este documento se describe cómo puedes fijar filtros a nivel de panel de control para que sean permanentes. Los filtros fijados, que te permiten modificar los datos que se muestran en un panel de control sin tener que modificar cada widget, tienen un estado predeterminado y se aplican a todo el panel. La barra de herramientas del panel de control 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 de control 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 va precedido del signo de dólar $
.
En este documento se describe cómo usar la consola Google Cloud para crear variables y filtros fijados. Para obtener información sobre cómo usar la API Cloud Monitoring, consulta Crear y gestionar paneles de control mediante la API: filtros de panel de control.
Para obtener información sobre cómo añadir y modificar agrupaciones y filtros temporales, que solo se aplican a la sesión actual, consulta Añadir filtros temporales a un panel de control personalizado.
Esta función solo se admite en proyectos de Google Cloud . En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
Acerca de los filtros fijados
Un filtro fijado contiene una etiqueta, uno o varios valores predeterminados y una lista de todos los valores posibles. La lista de todos los valores posibles se deriva dinámicamente de los datos de serie temporal que se muestran en el panel de control.
Para obtener información sobre la estructura de un filtro, consulta DashboardFilter
.
No se aplica un filtro fijado a widgets concretos. 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 no especifica ningún valor para esa clave de etiqueta, el filtro fijado puede cambiar los datos que se muestran.
Por ejemplo, supongamos que añade el filtro fijado cluster_name: mycluster. A continuación, 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 de 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 concreto, modifica 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 de control, los nombres de las variables van precedidos del signo de dólar $
.
Si también ves el icono 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 varios valores de etiqueta predeterminados y una lista de todos los valores de etiqueta posibles. La lista de todos los valores posibles se deriva dinámicamente de los datos de serie temporal que se muestran en el panel de control.
Las variables de solo valor contienen uno o varios valores predeterminados y pueden enumerar todos los valores posibles. Si no especifica ningún valor predeterminado, se seleccionará el operador comodín
(*)
. Para definir el conjunto de todos los valores posibles, puedes proporcionar una matriz de valores o escribir una consulta SQL.Hay tres tipos de variables de solo valor: Personalizada, Entrada de texto y Consulta de SQL.
Personalizado: úsalo cuando quieras enumerar la lista de todos los valores posibles y definir uno o varios valores predeterminados. Por ejemplo, puedes definir la lista de todos los valores posibles como
prod, staging, dev
y el valor predeterminado comoprod
.Entrada de texto: úsala cuando no sepas todos los valores posibles. Por ejemplo, puede que quiera filtrar por URL, pero cuando cree la variable, no sabrá la lista exacta de URLs. Después, cuando use el menú de filtros del widget, podrá introducir nuevas URLs y guardar los cambios en la sesión actual o en la definición de la variable.
Consulta de SQL: úsala cuando quieras generar la lista de valores posibles mediante una consulta de SQL. Estas variables se deben aplicar a los gráficos creados con Analíticas de registros.
En el caso de 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 `TABLE_NAME_OF_LOG_VIEW` GROUP BY log_name
La consulta SQL no puede depender de una variable.
Para aplicar una variable a un widget, puedes actualizar la consulta emitida por el widget o la visibilidad del widget. Siempre puedes editar el widget para actualizar su consulta. Sin embargo, en el caso de las variables basadas en etiquetas y algunos tipos de widgets, puede actualizar la consulta seleccionando opciones 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 empezar
Completa los siguientes pasos en el Google Cloud proyecto en el que quieras configurar filtros y variables:
-
Para obtener los permisos que necesitas para añadir o modificar variables o filtros fijados mediante la consola Google Cloud , pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Monitoring (
roles/monitoring.editor
) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Para obtener más información sobre los roles, consulta Controlar el acceso con Gestión de Identidades y Accesos.
Crear y fijar un filtro
Para crear y fijar un filtro que se aplique a todos los widgets del panel de control que admitan filtros, siga estos pasos:
-
En la Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
- Selecciona un panel de control, ve a la barra de herramientas del panel y haz clic en settings Configuración.
- En la sección Filtros, haz clic en Añadir un filtro.
- Haz clic en arrow_drop_down Etiqueta y, a continuación, 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. Si Selección múltiple no está habilitada, los usuarios solo pueden seleccionar una opción del menú de valores.
Haga clic en arrow_drop_down Valor predeterminado y, a continuación, seleccione el valor o los valores predeterminados de la etiqueta. Para que coincidan todos los valores, selecciona
*
.Una vez creado el filtro, se añade a la barra de herramientas del panel de control. Para cambiar temporalmente el valor del filtro, selecciona el filtro y, a continuación, elige una opción en el menú.
Haz clic en Hecho y, a continuación, en Aplicar.
Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.
Crear una variable
Para crear una variable que se aplique a widgets de panel de control específicos, haz lo siguiente:
-
En la Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
- Selecciona un panel de control, ve a la barra de herramientas del panel y haz clic en settings Configuración.
- En la sección Variables, haga clic en Añadir una variable.
Seleccione el tipo de variable y, a continuación, complete el cuadro de diálogo.
Para crear una variable basada en etiquetas, selecciona Etiqueta. Usa esta opción cuando quieras una variable que tenga una clave y un valor de etiqueta, y que se pueda usar como un filtro. La lista de todos los valores posibles se deriva dinámicamente de los datos de serie temporal que se muestran en el panel de control. El menú Aplicar a los gráficos te permite seleccionar los widgets cuya consulta se va a modificar con la variable. También puedes actualizar la consulta editando el widget.
En el caso de las variables de solo valor, tienes las siguientes opciones:
SQL: usa esta opción cuando quieras que los resultados de una consulta de SQL generen la lista de todos los valores posibles.
Introduce uno o varios valores predeterminados y una consulta 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 tanto la lista de valores posibles como un valor predeterminado. Por ejemplo, puedes asignar el valor
prod, staging, dev
al campo Valores y el valorprod
al campo Valor predeterminado.Entrada de texto: usa esta opción cuando quieras especificar una lista de valores que se apliquen de forma predeterminada.
Haz clic en Hecho y, a continuación, en Aplicar.
Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.
Aplica la variable a los widgets. Si actualiza la consulta de un widget, cuando cambie el valor de la variable, la consulta se modificará y los datos que muestre el widget también. También puedes usar una variable para controlar si un widget está visible. Para obtener más información, consulta las siguientes secciones de este documento:
Definir la visibilidad de un widget
Cuando un widget consulta datos, puedes usar una variable para controlar si el widget se muestra en un panel de control. Por ejemplo, supongamos que un panel de control contiene widgets que muestran datos de tus sistemas de producción y otro conjunto de widgets que muestran datos de tus sistemas de pruebas. Cuando depures durante el desarrollo, puede que solo quieras ver los datos de la fase de pruebas. Si configuras la visibilidad de los widgets del panel de control con una variable, puedes alternar entre los datos de producción, los datos de la fase 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 Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- Selecciona un panel de control.
- Ve a la barra de herramientas del widget cuya visibilidad quieras configurar y haz clic en edit Editar.
- En el panel Pantalla, despliega Visibilidad del widget.
Selecciona una variable y completa el cuadro de diálogo.
Haz clic en Hecho y, a continuación, en Aplicar.
Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.
El panel de control se actualiza. Cuando se oculta al menos un widget del panel de control debido a los controles de visibilidad, el panel de control 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 de control, en la barra de herramientas, el nombre de la variable se anota con el icono visibility Visible.
Limitaciones
Se aplican las siguientes limitaciones al configurar 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.
Puede eliminar una variable a la que hagan referencia los controles de visibilidad de un widget. La acción de eliminación de variables también quita cualquier referencia a la variable.
No todos los paneles de control admiten la creación de variables. Sin embargo, si un panel de control contiene variables, puedes usar esas variables para gestionar la visibilidad de los widgets del panel.
Actualizar la consulta de un widget
En esta sección se describe cómo incluir variables en la consulta que emite el widget. Por lo tanto, cuando cambias el valor de la variable, la consulta se modifica y los datos que muestra el widget también:
En el caso de los gráficos que usan consultas SQL o PromQL, y de los widgets del panel de registros, debe editar el widget y modificar la consulta. En esta sección se describe cómo hacer esos cambios.
En los gráficos que hayas configurado mediante menús o el modo de filtro directo, Monitoring edita la consulta cuando seleccionas el widget con el menú Aplicar a gráficos. También puedes editar el widget, ir al campo Filtro y seleccionar la variable.
Para saber cómo actualizar la consulta de un widget con una variable basada en etiquetas o una variable de solo valor, 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 de SQL
Gráficos con consultas de filtros de Monitoring
Cuando usas la interfaz basada en menús para crear un gráfico que muestra datos de serie temporal, tus selecciones se convierten en un filtro de monitorización.
Crear filtros y variables
Consola
Para obtener información sobre cómo usar la Google Cloud consola 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, asigna al campo
templateVariable
el nombre de la variable. Omite este campo o asigna el valor de una cadena vacía cuando quieras crear un filtro fijado. - Para crear un filtro fijado o una variable basada en etiquetas, debe especificar el campo
labelKey
. Omite este campo si quieres una variable que solo tenga un valor. Define el valor predeterminado del 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 definir un único valor predeterminado y restringir a los usuarios a seleccionar exactamente una opción en el menú de valores, define el campo
valueType
comoSTRING
y también el campostringValue
:
"valueType": "STRING", "stringValue": "my-default-value",
- Para definir al menos un valor predeterminado y permitir que los usuarios seleccionen varias opciones en el menú de valores, define el campo
valueType
comoSTRING_ARRAY
y también define el campostringArrayValue
. En el siguiente ejemplo, hay tres valores predeterminados.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Para definir un único valor predeterminado y restringir a los usuarios a seleccionar exactamente una opción en el menú de valores, define el campo
Opcional: Para especificar la lista de todos los valores posibles de una variable de solo valor, defina el campo
stringArray
o el campotimeSeriesQuery
. Si especifica una consulta, debe ser una consulta de analíticas.
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 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 es un ID de instancia específico. También puedes configurar el valor predeterminado mediante una matriz. 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 ningún valor predeterminado, por lo que se aplica automáticamente el operador comodín(*)
. Además, esta variable usa una consulta de SQL para generar la lista de valores posibles de la variable.
Ten en cuenta que el objeto dashboardFilters
no muestra 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
En todos los widgets, excepto en los que se definen mediante 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, use
${my_value_only_variable}
. En el caso de las variables que solo tienen 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 de panel de registros, actualiza el panel de consultas. La sintaxis de estos widgets sigue la que se especifica en Sintaxis general.
Consola
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}"
Por ejemplo, supongamos que tenemos una variable que solo tiene valores, value_only_severity_variable
, y que en el menú de valores se han seleccionado tres: ERROR
, INFO
y NOTICE
.
A continuación, añade lo siguiente al panel de consulta del widget de panel de registros:
severity =~ "${value_only_severity_variable}"
A continuación, se muestra el formulario renderizado:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Por ejemplo, el siguiente JSON muestra 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 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" ] }
Por ejemplo, supongamos que tenemos una variable que solo tiene valores, value_only_severity_variable
, y que se han seleccionado tres valores en el menú: ERROR
, INFO
y NOTICE
.
A continuación, añade lo siguiente al panel de consulta del widget de panel de registros:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
A continuación, se muestra la consulta tal como la ejecuta el widget del panel de registros:
severity =~ "^(ERROR|INFO|NOTICE)$"
Si has configurado una consulta para el panel de registros y, a continuación, 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 resuelve el panel de registros las variables de ejemplo. Como se ha mencionado anteriormente, cuando solo se usa el valor de una variable, debe usar una expresión regular como operador de comparación:
Sintaxis | Valor seleccionado |
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 del 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 tenga una consulta de PromQL para que dependa de una variable basada en etiquetas, sigue las directrices que se indican en Sintaxis general.
Consola
Por ejemplo, la siguiente consulta se basa en la variable 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 consulta basada en etiquetas con instance_id
:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Si tiene una variable de solo valor, omita la cláusula .value
. Por ejemplo, para filtrar por zona usando una variable de solo valor, la consulta incluiría algo parecido a lo siguiente:
zone=~"${my_value_only_variable}"
API
Por ejemplo, el siguiente JSON muestra una consulta que se basa en la variable 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 consulta 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 tiene una variable de solo valor, omita la cláusula .value
. Por ejemplo, para filtrar por zona usando una variable de solo valor, la consulta incluiría algo parecido a lo siguiente:
zone=~\"${my_value_only_variable}\"
En la siguiente tabla se muestra cómo resuelve PromQL las variables de ejemplo. Como se ha mencionado anteriormente, cuando solo se usa el valor de una variable, debe usar una expresión regular como operador de comparación:
Sintaxis | Valor seleccionado |
Expresión PromQL resuelta |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
La variable de ejemplo se basa en la etiqueta del 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
Si quieres actualizar un widget definido por SQL para que dependa de una variable, actualiza la cláusula WHERE
para que haga referencia al valor de la variable.
En todas las variables, añade el signo "arroba" al principio del nombre de la variable. Por ejemplo:
@variable_name
. En el caso de las variables basadas en etiquetas, añade .value
al nombre de la variable, @my_label_based_variabe.value
.
En el caso de las consultas SQL, la sustitución de variables se basa en BigQuery y es segura frente a inyecciones de SQL. Para obtener más información, consulta Ejecutar consultas parametrizadas.
Consola
Como SQL no interpreta el operador comodín como "cualquier valor", te recomendamos que siempre uses una instrucción IF
cuando uses variables en una consulta SQL. En el siguiente ejemplo se muestra el uso de una variable que solo tiene un valor y 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 a los usuarios seleccionar varios valores, debes convertir el valor de la variable a un tipo de datos de GoogleSQL mediante la función CAST
.
La siguiente consulta ilustra esta sintaxis:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Se recomienda usar 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 omite la instrucción IF
y selecciona el operador comodín, el resultado de la consulta será una tabla vacía. En el segundo ejemplo, la función UNNEST
convierte la matriz en una tabla.
Para añadir una cláusula WHERE
con el formato adecuado, siga estos pasos:
- Edita el widget.
- En la barra de herramientas, selecciona Insertar filtro de variable y, a continuación, la variable cuya cláusula
WHERE
quieras actualizar. - En el cuadro de diálogo que se abre, revisa el código generado y haz clic en Copiar y cerrar.
Pega el código copiado en el panel Consulta y haz los cambios necesarios.
Por ejemplo, supongamos que crea 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 variable y, después, la variableLogName
. Se genera el siguiente código:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
En este ejemplo, debe editar el código generado y sustituir
LogName =
porlog_name =
para que se pueda unir la tabla:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Haga clic en Ejecutar y, a continuación, en Aplicar.
Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.
API
Como SQL no interpreta el operador comodín como "cualquier valor", te recomendamos que siempre uses una instrucción IF
cuando uses variables en una consulta SQL. En el siguiente ejemplo se muestra el uso de una variable que solo tiene un valor y 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 SQL. Para permitir que los resultados se filtren por el nombre de un registro, se ha añadido una cláusula WHERE
que hace referencia a la variable 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 envía una consulta para determinar la lista de nombres de registro 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ú de la variable permite a los usuarios seleccionar varios valores, debes convertir el valor de la variable a un tipo de datos de GoogleSQL mediante la función CAST
.
La siguiente consulta ilustra esta sintaxis:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Se recomienda usar 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 omite la instrucción IF
y selecciona el operador comodín, el resultado de la consulta será una tabla vacía. En el segundo ejemplo, la función UNNEST
convierte la matriz en una tabla.
Gráficos con consultas de filtros de Monitoring
Para actualizar un gráfico que tenga una consulta en forma de filtro de monitorización para que dependa de una variable basada en etiquetas, sigue las directrices que se indican en Sintaxis general.
Consola
Si usas la Google Cloud consola para crear tus gráficos y la interfaz basada en menús, puedes actualizar la consulta del 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ú Filtro. En el menú Filtrar se muestran todas las variables basadas en etiquetas y todas las claves de etiqueta.
Para actualizar la consulta de un gráfico de forma que dependa de una variable basada en valores, sigue estos pasos:
- Edita el gráfico.
- En el panel de consultas, haz clic en Añadir filtro y selecciona una clave de etiqueta. Por ejemplo, puedes seleccionar zona.
- En el menú Valor, selecciona la variable que solo tiene el valor.
- Haz clic en Aplicar.
- Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.
Por ejemplo, el siguiente JSON muestra 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 Monitoring no pueden filtrar las series temporales por el valor de una variable basada en etiquetas, pero sí pueden filtrar por variables que solo tengan valores.
Por ejemplo, la siguiente consulta muestra el valor del campo Filters de una consulta que filtra por zone
, en función del 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 muestra 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 Monitoring no pueden filtrar las series temporales por el valor de una variable basada en etiquetas, pero sí pueden filtrar por variables que solo tengan valores.
Por ejemplo, la siguiente consulta muestra el campo "filter"
de una consulta que filtra por zone
en función del 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 resuelve el filtro de Monitoring las variables de ejemplo. Como se ha mencionado anteriormente, cuando solo se usa el valor de una variable, debe 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 del 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} |
* |
".*" |
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 de control, haga clic en el nombre del filtro e introduzca un valor o seleccione una opción en el menú.
Si tu panel de control contiene una tabla que muestra datos de serie temporal, puedes añadir filtros temporales o modificar filtros y variables permanentes usando el botón filter_list Filtrar panel de control por 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. Los filtros y las variables 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 de una variable, siga estos pasos:
-
En la Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
- En la barra de herramientas del panel de control, haz clic en settings Configuración.
- Busca el filtro o la variable que quieras modificar y despliega su definición.
- Cuando hayas terminado de hacer los cambios, haz clic en Aplicar.
- Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.
Eliminar un filtro o una variable fijados
Para eliminar un filtro o una variable fijados, sigue estos pasos:
-
En la Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
- En la barra de herramientas del panel de control, haz clic en settings Configuración.
- Busca el filtro o la variable que quieras quitar y, a continuación, haz clic en Eliminar.
- Haz clic en Aplicar.
- Para guardar el panel de control modificado, haz clic en Guardar en la barra de herramientas.