El recurso Dashboard en la API de Cloud Monitoring te permite
crear y administrar de forma programática paneles personalizados y sus widgets a
gran escala. Puedes administrar los paneles personalizados con Google Cloud CLI,
Terraform o llamadas de REST a los métodos create,
list,
get,
patch y
delete.
No puedes recuperar, editar ni borrar paneles predefinidos con la API. Para obtener información sobre cómo crear y administrar paneles personalizados con la consola de Google Cloud , consulta Crea y administra paneles personalizados.
Acerca de los paneles
Cuando creas un panel, debes especificar qué componentes o widgets deseas que se muestren y el diseño de esos widgets. También puedes agregar etiquetas y filtros a tu panel. Las etiquetas pueden ayudarte a encontrar un panel o indicar el tipo de contenido que tiene.
Diseños del panel
Los diseños definen cómo se ordenan los componentes de un panel. La API proporciona los siguientes diseños:
GridLayout: divide el espacio disponible en columnas verticales de igual ancho y organiza un conjunto de widgets con una estrategia de filas.MosaicLayout: Divide el espacio disponible en una cuadrícula. Cada widget puede ocupar uno o más bloques de cuadrícula.RowLayout: divide el espacio disponible en filas y organiza un conjunto de widgets horizontalmente en cada fila.ColumnLayout: divide el espacio disponible en columnas verticales y organiza un conjunto de widgets verticalmente en cada columna.
Por ejemplo, a continuación se muestra la representación JSON de un panel en RowLayout con tres widgets Text:
{
"displayName": "Row-layout example",
"rowLayout": {
"rows": [
{
"widgets": [
{
"text": {
"content": "Text Widget 1",
"format": "RAW"
}
},
{
"text": {
"content": "**Text Widget 2**",
"format": "MARKDOWN"
}
},
{
"text": {
"content": "_Text Widget 3_",
"format": "MARKDOWN"
}
}
]
}
]
}
}
Widgets del panel
Un widget contiene un único componente de panel y la configuración de cómo presentar el componente en él. Un panel puede tener más de un widget. Existen varios tipos de objetos Widget:
Widget
XyChart: Muestra datos en los ejes X e Y.Este widget muestra un conjunto de datos que puede ser de series temporales o generado por una consulta en SQL. Este widget te permite asociar los datos del gráfico con el eje Y izquierdo o derecho. Cuando se grafican varios tipos de métricas, puedes usar ambos ejes Y. El widget
XyChartadmite los siguientes estilos de visualización:- Gráficos de líneas
- Gráficos de barras
- Gráficos de áreas apiladas
- Mapas de calor
Puedes especificar el período de los widgets de
XyChart. Este parámetro de configuración anula el parámetro de configuración a nivel del panel. Configura la anulación del intervalo de tiempo de un gráfico cuando quieras que ese gráfico muestre datos durante un intervalo de tiempo más largo o más corto que el que es apropiado para otros widgets del panel. Para ver un ejemplo, consulta Panel con un widgetXyChartque establece una anulación del intervalo de tiempo.Widgets que muestran una dimensión, como el valor más reciente:
PieChart: Muestra los valores más recientes de una colección de series temporales, en la que cada serie temporal aporta una porción al gráfico circular.Scorecard: Muestra el valor más reciente de una serie temporal y cómo se relaciona este valor con uno o más umbrales.TimeSeriesTable: Muestra el valor más reciente o un valor agregado para cada serie temporal. Las tablas admiten la personalización. Por ejemplo, puedes asignar un código de color a las celdas y configurar los nombres de las columnas y la alineación de los datos.
Widgets que muestran información sobre la política de alertas o las alertas:
AlertChart: Muestra un resumen de una política de alertas de una sola condición. Este widget muestra los datos como un gráfico de líneas, el umbral y la cantidad de alertas abiertas.IncidentList: Muestra una lista de alertas. Puedes configurar el widget para que muestre alertas de políticas de alertas específicas o de tipos de recursos específicos.
Widgets que muestran entradas de registro y errores:
ErrorReportingPanel: Muestra los grupos de errores que se almacenan en el proyecto de Google Cloud seleccionado.LogsPanel: Muestra entradas de registro con alcance de proyecto que se almacenan en el proyecto Google Cloud actual. Puedes configurar el widget para que muestre las entradas de registro almacenadas en los proyectos de Google Cloud a los que se puede acceder a través del alcance de las métricas actual.
Widgets que muestran datos de seguimiento:
Widget
XyChart: Muestra datos en los ejes X e Y.TimeSeriesTable: Muestra el valor más reciente o un valor agregado. Las tablas admiten la personalización.
Widgets de texto y organización:
CollapsibleGroup: Muestra una colección de widgets. Puedes contraer la vista de un grupo.SingleViewGroup: Muestra un widget en una colección de widgets. Puedes seleccionar qué widget mostrar.SectionHeader: Crea un divisor horizontal en tu panel y una entrada en el índice del panel.Text: Muestra contenido textual, ya sea como texto sin procesar o como una cadena de Markdown.
Para incluir los widgets de texto y organización en un panel, este debe tener un
MosaicLayout.
Además de estos objetos, también puedes agregar un marcador de posición en blanco a un panel.
Por ejemplo, a continuación, se muestra la representación JSON de un widget XyChart cuyo eje Y derecho está configurado:
{
"displayName": "Demo dashboard",
"gridLayout": {
"widgets": [
{
"title": "Sample line chart",
"xyChart": {
"dataSets": [
{
"timeSeriesQuery": {
"timeSeriesFilter": {
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
"aggregation": {
"perSeriesAligner": "ALIGN_MEAN",
"crossSeriesReducer": "REDUCE_MAX",
"groupByFields": [
"resource.label.zone"
]
}
},
"unitOverride": "1"
},
"plotType": "LINE"
}
],
"timeshiftDuration": "0s",
"yAxis": {
"label": "y1Axis",
"scale": "LINEAR"
},
"chartOptions": {
"mode": "COLOR"
}
}
}
]
}
}
Etiquetas del panel
Las etiquetas pueden ayudarte a administrar y organizar tus paneles. Por ejemplo, puedes agregar una etiqueta llamada prod para indicar que el panel muestra
datos de series temporales y de registro de tus recursos de producción. Como alternativa,
puedes agregar la etiqueta playbook para indicar que el panel
contiene información que te ayudará a solucionar problemas.
Agregar etiquetas a un panel es opcional.
Por ejemplo, a continuación, se muestra un objeto Dashboard que
especifica la etiqueta llamada playbook.
{
"displayName": "Example",
"mosaicLayout": {
"columns": 12,
"tiles": [
...
]
},
"dashboardFilters": [],
"labels": {
"playbook": ""
}
}
Como se ilustra en el ejemplo anterior, el campo labels se implementa como un map, en el que los campos key y value son cadenas. Cuando agregues una
etiqueta a un panel, establece el key en el nombre de la etiqueta y el
campo value en una cadena vacía.
Filtros y variables del panel
Cuando diseñas un panel, puedes identificar varias formas de ver los datos que muestra. Por ejemplo, supongamos que un panel muestra datos de series temporales para tus instancias de máquina virtual (VM). Es posible que quieras ver los datos de series temporales de todas las VMs y que quieras ver solo los datos que se encuentran en una zona específica. En esta situación, te recomendamos que crees un filtro fijado o una variable y, luego, establezcas el valor predeterminado de ese filtro en la zona que se visualiza con más frecuencia.
Los filtros fijados se aplican a todos los widgets del panel que admiten la etiqueta
especificada en el filtro, a menos que el widget contenga un filtro con esa misma
clave de etiqueta.
Por ejemplo, cuando un gráfico incluye el filtro zone = us-central1-a, ese
gráfico ignora un filtro fijado cuya clave de etiqueta es zone. Del mismo modo,
los gráficos que no tienen una etiqueta con
una clave de zone ignoran este filtro.
Las variables son como filtros fijados, pero solo se aplican a widgets
específicos. Las variables pueden basarse en etiquetas o solo tener un valor.
Las variables de solo valor contienen uno o más valores predeterminados y una lista de todos
los valores posibles. Si no especificas un valor predeterminado, se establece
en el operador comodín (*). Para definir el conjunto de todos los valores posibles,
proporciona un array de valores o escribe una consulta en SQL.
Si creas un filtro o una variable fijados, Monitoring
actualiza la barra de herramientas de tu panel personalizado para mostrar un filtro.
En el caso de los filtros fijados, el nombre del filtro de la barra de herramientas es el nombre del filtro
fijado. Para las variables, el nombre del filtro de la barra de herramientas es un signo de dólar $ seguido del nombre de la variable. Cada filtro de la barra de herramientas contiene un menú
que te permite cambiar el valor del filtro o la variable fijados asociados.
En el caso de las variables, puedes
reemplazar el filtro de la barra de herramientas por un widget del panel. Para obtener más información, consulta
Panel con un widget de FilterControl.
En el caso de los widgets que consultan datos, puedes incluir una variable en la consulta del widget y usar una variable para controlar la visibilidad del widget. Cuando la consulta depende de una variable, los datos que solicita el widget cambian cuando modificas el valor de la variable. Como resultado, los datos que se muestran también cambian. Cuando usas una variable para controlar la visibilidad de un widget, se muestra un ícono de visibility Visible en la barra de herramientas. Para conocer las restricciones relacionadas con la visibilidad, consulta Cómo configurar la visibilidad de un widget.
Se usa la misma estructura de datos para representar los filtros y las variables fijados.
Para obtener más información, consulta DashboardFilter.
Para ver un ejemplo que muestra cómo puedes controlar la visibilidad de un widget con una variable, consulta Panel con visibilidad de widget configurada.
Para aprender a 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 anular la referencia de una variable
- Widgets del panel Registros
- Gráficos con consultas de PromQL
- Gráficos con consultas en SQL
Gráficos con consultas de filtro de Monitoring
Cuando usas la interfaz basada en menús para crear un gráfico que muestra 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:
REST
Para definir filtros y variables fijados, usa la estructura de datos dashboardFilters.
- Para crear una variable, establece el valor del campo
templateVariableen 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 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 para que seleccionen exactamente una opción en el menú de valores, establece el campo
valueTypecomoSTRINGy 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
valueTypecomoSTRING_ARRAYy también establece el campostringArrayValue. En el siguiente ejemplo, hay tres valores predeterminados."valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },Opcional: Para especificar la lista de todos los valores posibles de una variable de solo valor, configura el campo
stringArrayo el campotimeSeriesQuery. Si especificas una consulta, debe ser una consulta de estadísticas.
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 de
zone, que se muestra en la barra de herramientas. Los camposvalueTypeystringValueespecifican el valor predeterminado único. Para obtener más información, consulta la página de referencia de la API para la estructura de datosdashboardFilters.La variable basada en etiquetas tiene el nombre
my_label_based_variabley 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 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 enumera los widgets a los que se aplica la variable. En su lugar, actualizas 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 hacer 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 que se especifica en Sintaxis general.
Console
Por ejemplo, en la siguiente consulta, se 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 de solo 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 muestra el formulario renderizado:
severity =~ "^(ERROR|INFO|NOTICE)$"
REST
Por ejemplo, en el siguiente JSON, se 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, en la siguiente consulta, se 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 de solo valor,
value_only_severity_variable, y supón que se seleccionan 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",
...
}
A continuación, se ilustra 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ó antes, 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 del panel de registros resueltos |
|---|---|---|
${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 consulta basada en etiquetas con instance_id:
compute_googleapis_com:instance_cpu_utilization{
instance_id=~"${my_label_based_variable.value}"
}
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}"
REST
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 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 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 ilustra cómo PromQL resuelve las variables de ejemplo. Como se mencionó antes, 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 en SQL
Hay dos lugares en los que puedes usar variables en tus consultas en SQL:
La cláusula
FROMpuede depender de la variable definida por el sistema llamada@__project_id, que se resuelve en el valor del proyecto seleccionado.La cláusula
WHEREpuede depender de variables definidas por el usuario.
Actualiza la cláusula FROM para que dependa de una variable definida por el sistema
Si creas plantillas de panel y estas plantillas grafican los resultados de
las consultas en SQL, reemplaza el ID del proyecto en tu consulta por la
variable @__project_id. Cuando instalas la plantilla en un proyecto, la
variable se resuelve automáticamente en el ID del proyecto. No es necesario que edites el widget de forma manual ni que actualices la cláusula FROM.
A continuación, se ilustra una cláusula FROM que depende de la variable definida por el sistema:
FROM `@__project_id.global._Default._Default`
La cláusula FROM no puede depender de variables definidas por el usuario.
Actualiza la cláusula WHERE para que dependa de una variable definida por el usuario
En esta sección, se describe cómo puedes actualizar la cláusula WHERE de un widget definido por SQL para que dependa de una variable definida por el usuario.
Para todas las variables, antepón el signo de 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.
Para las consultas en SQL, la sustitución de variables se basa en BigQuery y es segura contra inyecciones de SQL. Para obtener más información, consulta Ejecuta consultas parametrizadas.
Console
Debido a que SQL no interpreta el operador de comodín como "cualquier valor", te
recomendamos que siempre uses una declaración IF cuando uses
variables en una consulta en SQL. En el siguiente ejemplo, se ilustra el uso de
una variable de solo 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 convertir
el valor de la variable en 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,
ya que SQL no interpreta el operador comodín como "cualquier valor".
Por lo tanto, si omites la declaració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, la
variable cuya cláusula
WHEREquieras actualizar. - En el cuadro de 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
LogNameque genera una lista de nombres de registros y genera el resultado en una tabla con una sola columna llamadalog_name. A continuación, crea un gráfico, selecciona Insertar filtro de variable 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 tablas:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)Haz clic en Ejecutar y, luego, en Aplicar.
Para guardar el panel modificado, en la barra de herramientas, haz clic en Guardar.
REST
Debido a que SQL no interpreta el operador de comodín como "cualquier valor", te
recomendamos que siempre uses una declaración IF cuando uses
variables en una consulta en SQL. En el siguiente ejemplo, se ilustra el uso de
una variable de solo 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 parcial en JSON 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 convertir
el valor de la variable en 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,
ya que SQL no interpreta el operador comodín como "cualquier valor".
Por lo tanto, si omites la declaració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 filtro de Monitoring
Para actualizar un gráfico que tiene una consulta en forma de filtro de Monitoring 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 etiqueta.
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 de solo valor.
- Haz clic en Aplicar.
- Para guardar el panel modificado, en la barra de herramientas, haz clic en Guardar.
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 Monitoring
no pueden filtrar la serie temporal por el valor de una variable basada en etiquetas.
Sin embargo, puedes filtrar por variables de solo valor.
Por ejemplo, en la siguiente consulta, se 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})
REST
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 Monitoring
no pueden filtrar la serie temporal por el valor de una variable basada en etiquetas.
Sin embargo, puedes filtrar por variables de solo valor.
Por ejemplo, en la siguiente consulta, se 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 ilustra cómo el filtro de Monitoring resuelve las variables de ejemplo. Como se mencionó antes, 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} |
* |
".*" |
Antes de comenzar
Completa lo siguiente en el proyecto de Google Cloud en el que deseas crear o administrar paneles:
gcloud
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:
gcloud initTerraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
-
Instala Google Cloud CLI.
-
Configura gcloud CLI para usar tu identidad federada.
Para obtener más información, consulta Accede a gcloud CLI con tu identidad federada.
-
Crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
Si se devuelve un error de autenticación, confirma que accediste a gcloud CLI con tu identidad federada.
Para obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Crear un panel
Para crear un panel nuevo personalizado, invoca el método dashboards.create y proporciónale el diseño y los widgets que se mostrarán en él.
El campo name es opcional. El valor del campo name tiene la siguiente
estructura:
"name": "projects/PROJECT_ID_OR_NUMBER/dashboards/DASHBOARD_ID"
Cuando creas un panel, la API genera automáticamente el componente DASHBOARD_ID. Si deseas especificar un DASHBOARD_ID personalizado, puedes especificar el campo name del objeto Dashboard.
gcloud
Para crear un panel en un proyecto, usa el
comando gcloud monitoring dashboards create.
gcloud monitoring dashboards create --config-from-file=my-dashboard.json --project=PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza lo siguiente:
- PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
Por ejemplo, si quieres duplicar un panel, haz lo siguiente:
- Completa los pasos que se indican en Obtén el panel para descargar la definición del panel original.
- Edita el JSON que se muestra para quitar los campos
etagyname, y cambia el valor del campodisplayName. - Ejecuta el comando para crear el panel.
Para obtener más información, consulta la referencia gcloud monitoring dashboards create.
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor de Terraform.
Para crear un panel con Terraform, haz lo siguiente:
- Instala y configura Terraform para tu proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
Usa el recurso de Terraform
google_monitoring_dashboard.En el comando, configura los siguientes campos:
dashboard_json: Es la representación JSON del panel con el formatoDashboard.Para ver ejemplos de este formato, puedes enumerar tus paneles con el Explorador de APIs o abrir un panel en la consola de Google Cloud y ver la representación JSON.
parent: Es el nombre completamente calificado de tu proyecto. Por ejemplo, puedes establecer este campo en"projects/PROJECT_ID", donde PROJECT_ID es el ID de tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
REST
Para crear un panel nuevo, envía una solicitud POST al extremo Dashboard.
curl -d @my-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X POST https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards
Antes de ejecutar el comando anterior, configura lo siguiente:
${PROJECT_ID}: Es una variable de entorno que almacena el ID del proyecto en el que se creará el panel. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
En los ejemplos, se crea un panel de muestra con el archivo my-dashboard.json.
Puedes administrar tu panel a través de la
consola deGoogle Cloud .
Para obtener configuraciones adicionales de los paneles, consulta Ejemplos de paneles y diseños.
Borrar paneles
Para borrar un panel personalizado, invoca el método dashboards.delete y especifica el panel que deseas borrar.
gcloud
Para borrar un panel personalizado, usa
gcloud monitoring dashboards delete y
especifica el ID completamente calificado del panel que deseas borrar:
gcloud monitoring dashboards delete DASHBOARD_ID --project=PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza lo siguiente:
- PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
- DASHBOARD_ID: Es el ID del panel.
Para obtener más información, consulta la referencia gcloud monitoring dashboards delete.
Terraform
Puedes borrar recursos con Terraform. Para obtener información sobre cómo borrar recursos, consulta el comando destroy de Terraform.
REST
Para borrar un panel personalizado, envía una solicitud DELETE al extremo Dashboard, calificado con el ID del panel que se borrará.
curl -H "Authorization: Bearer $ACCESS_TOKEN" -X DELETE https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Antes de ejecutar el comando anterior, configura lo siguiente:
${PROJECT_ID}: Es una variable de entorno que almacena el ID del proyecto en el que se creará el panel. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.${DASHBOARD_ID}: Es una variable de entorno que almacena el ID del panel.
Si se completa correctamente, el método muestra una respuesta vacía. De lo contrario, muestra un error.
Mostrar paneles
Para enumerar todos los paneles personalizados que pertenecen a un proyecto, invoca el método dashboards.list y especifica el ID del proyecto.
gcloud
Para enumerar todos los paneles personalizados de un proyecto, usa el
comando gcloud monitoring dashboards list:
gcloud monitoring dashboards list --project=PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza lo siguiente:
- PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
Para obtener más información, consulta la referencia de gcloud monitoring dashboards list.
Terraform
No puedes usar Terraform para enviar una consulta a tu proyecto con la respuesta como una lista de paneles. Sin embargo, puedes ver estos paneles con la consola de Google Cloud .
REST
Para enumerar todos los paneles personalizados de un proyecto, envía el ID del proyecto al extremo Dashboard.
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards
Antes de ejecutar el comando anterior, configura lo siguiente:
${PROJECT_ID}: Es una variable de entorno que almacena el ID del proyecto en el que se creará el panel. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
En los ejemplos, se muestran los paneles asociados con tu proyecto.
Pagina la respuesta de la lista
El método dashboards.list admite la paginación, lo que te permite tomar los resultados de una página a la vez en lugar de todos juntos.
gcloud
Para especificar la cantidad de recursos por página, pasa la marca --page-size con el comando. Por ejemplo:
gcloud monitoring dashboards list --page-size=1 --project=PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza lo siguiente:
- PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
Terraform
No puedes usar Terraform para enviar una consulta a tu proyecto con la respuesta como una lista paginada de paneles. Sin embargo, puedes ver estos paneles con la consola de Google Cloud .
REST
Para la página inicial de la lista de resultados, especifica el parámetro de consulta pageSize
con la solicitud:
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards?page_size=1
Antes de ejecutar el comando anterior, configura lo siguiente:
${PROJECT_ID}: Es una variable de entorno que almacena el ID del proyecto en el que se creará el panel. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
El método muestra la primera página de la lista y nextPageToken. Por ejemplo:
{
"dashboards" : [
{
"displayName" : "Grid Layout Example",
"gridLayout" : {
"widgets" : [
{ ... },
{ ... },
{ ... },
]
}
}
]
},
"nextPageToken": "ChYqFDEyMzkzMzUwNzg0OTE1MDI4MjM3"
Para cada página restante, debes incluir el nextPageToken correspondiente en la solicitud.
Obtener panel
Para obtener un panel personalizado específico de un proyecto, invoca el método dashboards.get calificado con el ID del panel.
gcloud
Para obtener un panel personalizado específico, usa el comando
gcloud monitoring dashboards describe
y especifica el ID del panel:
gcloud monitoring dashboards describe DASHBOARD_ID --format=json --project=PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza lo siguiente:
- PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
- DASHBOARD_ID: Es el ID del panel.
El comando muestra el panel solicitado:
{
"columnLayout": {
"columns": [
{
"widgets": [
{
"text": {
"content": "Text Widget 1",
"format": "RAW"
}
},
{
"text": {
"content": "**Text Widget 2**",
"format": "MARKDOWN"
}
},
{
"text": {
"content": "_Text Widget 3_",
"format": "MARKDOWN"
}
}
]
}
]
},
"displayName": "Column-layout example",
"etag": "cb3070baf15de7c79d78761baac3a386",
"name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d"
}
Para obtener más información, consulta la referencia de gcloud monitoring dashboards describe.
Terraform
No puedes usar Terraform para enviar una consulta a tu proyecto con la respuesta como un panel individual. Sin embargo, puedes ver estos paneles con la consola de Google Cloud .
REST
Para obtener un panel personalizado específico, envía el ID del panel al extremo Dashboard.
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Antes de ejecutar el comando anterior, configura lo siguiente:
${PROJECT_ID}: Es una variable de entorno que almacena el ID del proyecto en el que se creará el panel. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.${DASHBOARD_ID}: Es una variable de entorno que almacena el ID del panel.
En la expresión anterior, ${DASHBOARD_ID} es una variable de entorno que
almacena el nombre completamente calificado del panel.
El método muestra una respuesta similar a la del siguiente ejemplo:
{
"columnLayout": {
"columns": [
{
"widgets": [
{
"text": {
"content": "Text Widget 1",
"format": "RAW"
}
},
{
"text": {
"content": "**Text Widget 2**",
"format": "MARKDOWN"
}
},
{
"text": {
"content": "_Text Widget 3_",
"format": "MARKDOWN"
}
}
]
}
]
},
"displayName": "Column-layout example",
"etag": "cb3070baf15de7c79d78761baac3a386",
"name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d"
}
Actualizar panel
Para actualizar un panel personalizado existente, invoca el método dashboards.patch. Para obtener el valor etag actual, puedes invocar el método dashboards.get y encontrarlo en la respuesta.
gcloud
Para actualizar un panel personalizado, usa
gcloud monitoring dashboards update, especifica
el ID del panel que deseas actualizar y proporciona los cambios en el panel.
gcloud monitoring dashboards update DASHBOARD_ID --config-from-file=my-updated-dashboard.json --project=PROJECT_ID
Antes de ejecutar el comando anterior, reemplaza lo siguiente:
- PROJECT_ID: Es el identificador del proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
- DASHBOARD_ID: Es el ID del panel.
Para obtener más información, consulta la referencia de gcloud monitoring dashboards update.
En el ejemplo anterior, se actualiza un panel personalizado existente con el
archivo my-updated-dashboard.json. La respuesta, que incluye un valor etag nuevo, es una copia de la lista de paneles actualizada.
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor de Terraform.
Para actualizar un panel con Terraform, haz lo siguiente:
- Instala y configura Terraform para tu proyecto. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
Usa el recurso de Terraform
google_monitoring_dashboard.En el comando, configura los siguientes campos:
dashboard_json: Es la representación JSON del panel con el formatoDashboard.parent: Es el nombre completamente calificado de tu proyecto. Por ejemplo, puedes establecer este campo en"projects/PROJECT_ID", donde PROJECT_ID es el ID de tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
REST
Para actualizar un panel personalizado, envía una solicitud PATCH al extremo Dashboard y proporciona el objeto Dashboard revisado y el valor etag de la respuesta dashboards.get más reciente.
curl -d @my-updated-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X PATCH https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Antes de ejecutar el comando anterior, configura lo siguiente:
${PROJECT_ID}: Es una variable de entorno que almacena el ID del proyecto en el que se creará el panel. Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.${DASHBOARD_ID}: Es una variable de entorno que almacena el ID del panel.
En el ejemplo anterior, se actualiza un panel personalizado existente con el
archivo my-updated-dashboard.json. La respuesta, que incluye un valor etag nuevo, es una copia de la lista de paneles actualizada.