Neste documento, descrevemos como criar e gerenciar
painéis personalizados e os widgets neles usando
o recurso Dashboard
na API Cloud Monitoring.
Os exemplos aqui ilustram como gerenciar seus painéis usando
curl
para invocar a API e mostram como usar a Google Cloud CLI.
Também é possível gerenciar os painéis personalizados pelo
Google Cloud console. No entanto, a API oferece uma maneira
programática de gerenciar vários painéis ao mesmo tempo.
O endpoint é compatível com os métodos de gerenciamento e configuração de painéis a seguir:
dashboards.create
: cria um painel.dashboards.delete
: exclui um painel especificado.dashboards.list
: recupera uma lista de todos os painéis em um determinado projeto.dashboards.get
: recupera um painel especificado.dashboards.patch
: atualiza a estrutura de um painel especificado.
É possível invocar a API diretamente usando o utilitário curl
ou a
Google Cloud CLI.
Não é possível recuperar, editar ou excluir painéis predefinidos.
Esse recurso só é compatível com projetos Google Cloud . Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
Sobre os painéis
Ao criar um painel, você precisa especificar quais componentes ou widgets serão exibidos e qual será o layout desses widgets. Você também pode adicionar rótulos e filtros ao painel. Os rótulos ajudam a encontrar um painel ou indicam o tipo de conteúdo dele.
Layouts de painel
Os layouts definem como os componentes de um painel são ordenados. A API fornece os seguintes layouts:
GridLayout
: divide o espaço disponível em colunas verticais com larguras iguais e organiza um conjunto de widgets usando uma estratégia de linha primeiro.MosaicLayout
: divide o espaço disponível em uma grade. Cada widget pode ocupar um ou mais blocos de grade.RowLayout
: divide o espaço disponível em linhas e organiza um conjunto de widgets na horizontal em cada uma delas.ColumnLayout
: divide o espaço disponível em colunas verticais e organiza um conjunto de widgets na vertical em cada uma delas.
Por exemplo, veja a seguir a representação JSON de um painel em RowLayout
com três 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 do painel
Um widget inclui um único componente de painel, além da configuração de como ele será apresentado nesse painel. Um painel pode ter mais de um widget. Há vários tipos de objetos Widget
:
O widget
XyChart
mostra dados nos eixos X e Y.Esse widget mostra um conjunto de dados que pode ser de série temporal ou gerado por uma consulta SQL. Com ele, você pode associar os dados representados ao eixo Y esquerdo ou direito. Quando vários tipos de métricas são representados em um gráfico, é possível usar os dois eixos Y. O widget
XyChart
é compatível com os seguintes estilos de exibição:- Gráficos de linhas
- Gráficos de barras
- Gráficos de área empilhada
- Mapas de calor
Widgets que mostram informações de uma dimensão, como o valor mais recente:
PieChart
: mostra os valores mais recentes de uma coleção de série temporal, em que cada série temporal contribui com uma fatia do gráfico de pizza.Scorecard
: mostra o valor mais recente de uma série temporal e como ele está relacionado a um ou mais limites.TimeSeriesTable
: mostra o valor mais recente ou um valor agregado para cada série temporal. As tabelas podem ser personalizadas. Por exemplo, é possível atribuir cores às células e configurar nomes de colunas e alinhamento de dados.
Widgets que mostram informações sobre política de alertas ou incidentes:
AlertChart
: exibe um resumo de uma política de alertas de condição única. Esse widget exibe dados como um gráfico de linhas, mostra o limite e lista o número de incidentes abertos.IncidentList
: mostra uma lista de incidentes. É possível configurar o widget para mostrar incidentes de políticas de alerta ou tipos de recursos específicos.
Widgets que mostram entradas de registro e erros:
ErrorReportingPanel
: mostra grupos de erros armazenados no projetoGoogle Cloud selecionado.LogsPanel
: exibe entradas de registro no escopo do projeto que estão armazenadas no Google Cloud projeto atual. É possível configurar o widget para mostrar as entradas de registro armazenadas em projetos do Google Cloud acessíveis pelo escopo de métricas atual.
Widgets de texto e organização:
CollapsibleGroup
: mostra uma coleção de widgets. É possível fechar a visualização de um grupo.SingleViewGroup
: mostra um widget em uma coleção de widgets. Você pode selecionar qual widget mostrar.SectionHeader
: cria um divisor horizontal no painel e uma entrada na tabela de conteúdo dele.Text
: exibe o conteúdo textual como texto bruto ou string do Markdown.
Para incluir os widgets de texto e organização em um painel, ele precisa ter um
MosaicLayout
.
Além desses objetos, é possível adicionar um marcador vazio a um painel.
O exemplo a seguir mostra a representação JSON de um
widget XyChart
com o eixo Y direito 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"
}
}
}
]
}
}
Rótulos de painel
Os rótulos ajudam a gerenciar e organizar seus painéis. Por exemplo, você pode adicionar um rótulo chamado prod
para indicar que o painel mostra dados de série temporal e de registros dos seus recursos de produção. Ou adicione o rótulo playbook
para indicar que o painel contém informações que ajudam a resolver falhas.
A adição de rótulos a um painel é opcional.
Por exemplo, o código a seguir mostra um objeto Dashboard
que
especifica o rótulo chamado playbook
.
{
"displayName": "Example",
"mosaicLayout": {
"columns": 12,
"tiles": [
...
]
},
"dashboardFilters": [],
"labels": {
"playbook": ""
}
}
Como ilustra o exemplo anterior, o campo labels
é implementado como um
map
, em que os campos key
e value
são strings. Ao adicionar um rótulo a um painel, defina o key
como o nome do rótulo e o campo value
como uma string vazia.
Filtros e variáveis do painel
Ao criar um painel, você pode identificar várias maneiras de visualizar os dados que ele mostra. Por exemplo, suponha que um painel mostre dados de série temporal das instâncias de máquina virtual (VM). Talvez você queira ver os dados de série temporal de todas as VMs ou apenas os dados de uma zona específica. Nesse caso, recomendamos que você crie um filtro fixado ou uma variável e defina o valor padrão desse filtro como a zona mais visualizada.
Os filtros fixados são aplicados a todos os widgets do painel que aceitam o rótulo especificado no filtro, a menos que o widget contenha um filtro com a mesma chave de rótulo.
Por exemplo, quando um gráfico inclui o filtro zone = us-central1-a
, ele ignora um filtro fixado cuja chave de rótulo é zone
. Da mesma forma, esse filtro é ignorado por gráficos que não têm um rótulo com uma chave de zone
.
As variáveis são como filtros fixados, mas só se aplicam a widgets específicos. As variáveis podem ser baseadas em rótulos, como os filtros fixados, ou ter apenas um valor. As variáveis somente com valor contêm um ou mais valores padrão e uma lista de todos os valores possíveis. Se você não especificar um valor padrão, o padrão será definido como o operador curinga (*)
.
Para definir o conjunto de todos os valores possíveis, forneça uma matriz de valores ou escreva uma consulta SQL.
Para widgets que consultam dados, é possível incluir uma variável na consulta deles e usar uma variável para controlar a visibilidade do widget. Quando a consulta depende de uma variável, os dados solicitados pelo widget mudam quando você altera o valor da variável. Como resultado, os dados mostrados também mudam. Quando você usa uma variável para controlar a visibilidade de um widget, um ícone visibility Visível aparece na barra de ferramentas. Para restrições relacionadas à visibilidade, consulte Definir a visibilidade de um widget.
Para filtros fixados e variáveis, a barra de ferramentas do painel mostra
cada variável, além de um menu que permite mudar temporariamente o valor
da variável. A mesma estrutura de dados é usada para representar filtros fixados e variáveis. Para ajudar você a diferenciar filtros de variáveis, na barra de ferramentas do painel, o nome de uma variável é precedido por um cifrão $
.
Para ver mais informações, consulte DashboardFilter
.
Para um exemplo que mostra como controlar a visibilidade do widget usando uma variável, consulte Painel com visibilidade do widget configurada.
Para saber como atualizar a consulta de um widget com uma variável baseada em rótulo ou somente valor, consulte as seções a seguir:
- Sintaxe geral para desreferenciar uma variável
- Widgets do painel de registros
- Gráficos com consultas PromQL
- Gráficos com consultas SQL
- Gráficos com consultas MQL
Gráficos com consultas de filtro do Monitoring
Quando você usa a interface orientada por menus para criar um gráfico que mostra dados de série temporal, suas seleções são convertidas em um filtro do Monitoring.
Criar filtros e variáveis
Console
Para informações sobre como usar o console do Google Cloud para criar filtros fixados e variáveis, consulte os seguintes documentos:
API
Para definir filtros e variáveis fixados, use a estrutura de dados dashboardFilters
.
- Para criar uma variável, defina o valor do campo
templateVariable
como o nome da variável. Omita esse campo ou defina o valor como uma string vazia quando quiser criar um filtro fixado. - Para criar um filtro fixado ou uma variável baseada em rótulo, especifique o campo
labelKey
. Omita esse campo quando quiser uma variável somente de valor. Defina o valor padrão para o filtro ou a variável. A configuração desse campo determina se um usuário pode selecionar exatamente uma opção no menu de valores ou se pode selecionar vários valores.
- Para definir um único valor padrão e restringir os usuários a selecionar exatamente uma opção no menu de valores, defina o campo
valueType
comoSTRING
e também defina o campostringValue
:
"valueType": "STRING", "stringValue": "my-default-value",
- Para definir pelo menos um valor padrão e permitir que os usuários selecionem várias opções no menu de valores, defina o campo
valueType
comoSTRING_ARRAY
e também defina o campostringArrayValue
. No exemplo a seguir, há três valores padrão.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Para definir um único valor padrão e restringir os usuários a selecionar exatamente uma opção no menu de valores, defina o campo
Opcional: para especificar a lista de todos os valores possíveis de uma variável somente de valor, defina o campo
stringArray
outimeSeriesQuery
. Se você especificar uma consulta, ela precisa ser uma consulta de análise.
Por exemplo, considere o seguinte 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", ... }
O JSON anterior define um filtro fixado e duas variáveis:
O filtro fixado tem a chave de rótulo
zone
, que é exibida na barra de ferramentas. Os camposvalueType
estringValue
especificam o único valor padrão. Para mais informações, consulte a página de referências da API para a estrutura de dadosdashboardFilters
.A variável com base em rótulo tem o nome
my_label_based_variable
, e a chave de rótulo éinstance_id
. O valor padrão dessa variável é definido como um ID de instância específico. Também é possível configurar o valor padrão usando uma matriz. Na barra de ferramentas, o filtro é exibido com o nomemy_label_based_variable
.A variável somente valor é chamada de
my_value_only_variable
. Essa entrada não especifica um valor padrão. Por isso, o operador curinga,(*)
, é aplicado automaticamente. Além disso, essa variável usa uma consulta SQL para gerar a lista de valores possíveis.
O objeto dashboardFilters
não lista os widgets a que a variável se aplica. Em vez disso, atualize a consulta de um widget para depender de uma variável.
Sintaxe geral para desreferenciar uma variável
Para todos os widgets, exceto aqueles definidos por SQL, use a seguinte sintaxe para aplicar uma variável a uma consulta:
Para aplicar uma variável com base em rótulo e resolver a chave e o valor do rótulo em uma expressão de filtro válida para a linguagem de consulta, use
${my_label_based_variable}
.Para aplicar apenas o valor de uma variável baseada em rótulo, use
${my_label_based_variable.value}
. A comparação precisa usar uma expressão regular.Para aplicar apenas o valor de uma variável somente de valor, use
${my_value_only_variable}
. Para variáveis somente de valor, não inclua uma cláusula.value
. A comparação precisa usar uma expressão regular.
Widgets do painel de registros
Para aplicar uma variável a um widget do painel de registros, atualize o painel de consultas. A sintaxe desses widgets segue a especificada em Sintaxe geral.
Console
Por exemplo, a consulta a seguir usa uma expressão regular para comparar o valor do campo jsonPayload.message
com um valor de string que inclui o valor de uma variável baseada em rótulo:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Como outro exemplo, considere uma variável somente de valor, value_only_severity_variable
, e suponha que, no menu de valores, três valores estejam selecionados: ERROR
, INFO
e NOTICE
.
Em seguida, adicione o seguinte ao widget do painel de consultas do painel de registros:
severity =~ "${value_only_severity_variable}"
Veja a seguir o formulário renderizado:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Por exemplo, o JSON a seguir ilustra como atualizar a consulta de um widget de painel de registros com uma variável baseada em rótulo:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
Por exemplo, a consulta a seguir usa uma expressão regular para comparar o valor do campo jsonPayload.message
com um valor de string que inclui o valor de uma variável baseada em rótulo:
"logsPanel": { "filter": "resource.type=\"gce_instance\"\n resource.labels.project_id=~\"${my_label_based_variable.value}\"\n", "resourceNames": [ "projects/012345" ] }
Como outro exemplo, considere uma variável somente de valor, value_only_severity_variable
, e suponha que três valores estejam selecionados no menu: ERROR
, INFO
e NOTICE
.
Em seguida, adicione o seguinte ao widget do painel de consultas do painel de registros:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
A ilustração a seguir mostra a consulta executada pelo widget do painel de registros:
severity =~ "^(ERROR|INFO|NOTICE)$"
Se você tiver configurado uma consulta para o painel de registros e selecionar o botão para abrir a Análise de registros, as variáveis serão resolvidas antes da abertura da Análise de registros.
A tabela a seguir ilustra como as variáveis de exemplo são resolvidas pelo painel de registros. Como mencionado anteriormente, quando apenas o valor de uma variável é usado, é necessário usar uma expressão regular como operador de comparação:
Sintaxe | Selected Value |
Expressão do painel de registros resolvida |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
A variável de exemplo é baseada no rótulo 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 com consultas PromQL
Para atualizar um gráfico com uma consulta PromQL para depender de uma variável baseada em rótulo, siga as orientações listadas em Sintaxe geral.
Console
Por exemplo, a consulta a seguir depende da variável baseada em rótulo my_label_based_variable
, que é resolvida em uma expressão de filtro:
compute_googleapis_com:instance_cpu_utilization{ monitored_resource="gce_instance", ${my_label_based_variable} }
Você também pode modificar a consulta para resolver apenas o valor de uma variável.
O exemplo a seguir usa uma expressão regular para comparar o valor
de uma consulta baseada em rótulo com o instance_id
:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Se você tiver uma variável somente de valor, omita a cláusula .value
. Por exemplo, para filtrar por zona usando uma variável somente de valor, a consulta incluiria algo como:
zone=~"${my_value_only_variable}"
API
Por exemplo, o JSON a seguir ilustra uma consulta que depende da variável baseada em rótulo, my_label_based_variable
, sendo resolvida em uma expressão 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 },
Você também pode modificar a consulta para resolver apenas o valor de uma variável.
O exemplo a seguir usa uma expressão regular para comparar o valor
de uma consulta baseada em rótulo com o 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 },
Se você tiver uma variável somente de valor, omita a cláusula .value
. Por exemplo, para filtrar por zona usando uma variável somente de valor, a consulta incluiria algo como:
zone=~\"${my_value_only_variable}\"
A tabela a seguir ilustra como as variáveis de exemplo são resolvidas pelo PromQL. Como mencionado anteriormente, quando apenas o valor de uma variável é usado, é necessário usar uma expressão regular como operador de comparação:
Sintaxe | Selected Value |
Expressão PromQL resolvida |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
A variável de exemplo é baseada no rótulo 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 com consultas SQL
Quando você quiser atualizar um widget definido em SQL para depender de uma variável,
atualize a cláusula WHERE
para referenciar o valor da variável.
Para todas as variáveis, adicione o prefixo "at" ao nome da variável. Por exemplo:
@variable_name
. Para variáveis baseadas em rótulos, anexe .value
ao nome da variável, @my_label_based_variabe.value
.
Para consultas SQL, a substituição de variáveis depende do BigQuery e é segura contra injeção de SQL. Para mais informações, consulte Como executar consultas parametrizadas.
Console
Como o SQL não interpreta o operador curinga como "qualquer valor", recomendamos que você sempre use uma instrução IF
ao usar variáveis em uma consulta SQL. O exemplo a seguir ilustra o uso de uma variável somente de valor cujo tipo de dados é uma string:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Quando a opção de menu da variável permite que os usuários selecionem vários valores, é necessário converter o valor da variável em um tipo de dados do GoogleSQL usando a função CAST
.
A consulta a seguir ilustra essa sintaxe:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
A instrução IF
mostrada nos exemplos anteriores é recomendada porque o SQL não interpreta o operador curinga como "qualquer valor". Portanto, se você omitir a instrução IF
e selecionar o operador curinga, o resultado da consulta será uma tabela vazia. No segundo exemplo, a função UNNEST
converte a matriz em uma tabela.
Para adicionar uma cláusula WHERE
formatada corretamente, faça o seguinte:
- Edite o widget.
- Na barra de ferramentas, selecione Inserir filtro de variável e escolha a variável cuja cláusula
WHERE
você quer atualizar. - Na caixa de diálogo que será aberta, revise o código gerado e clique em Copiar e fechar.
Cole o código copiado no painel Consulta e faça as edições necessárias.
Por exemplo, suponha que você crie uma variável chamada
LogName
que gera uma lista de nomes de registros e mostra o resultado em uma tabela com uma única coluna chamadalog_name
. Em seguida, crie um gráfico, selecione Inserir filtro de variável e escolha a variávelLogName
. O seguinte código é gerado:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
Neste exemplo, edite o código gerado e substitua
LogName =
porlog_name =
para que a junção de tabelas possa ocorrer:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Clique em Executar e em Aplicar.
Para salvar o dashboard modificado, clique em Salvar na barra de ferramentas.
API
Como o SQL não interpreta o operador curinga como "qualquer valor", recomendamos que você sempre use uma instrução IF
ao usar variáveis em uma consulta SQL. O exemplo a seguir ilustra o uso de uma variável somente de valor cujo tipo de dados é uma string:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Por exemplo, veja a seguir uma representação JSON parcial de um gráfico que mostra os resultados de uma consulta SQL. Para permitir a filtragem dos resultados pelo nome de um registro, foi adicionada uma cláusula WHERE
que faz referência à variável chamada 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" } }
A variável LogName
também emite uma consulta para determinar a lista de
nomes de registros possíveis:
"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 } } ],
Quando a opção de menu da variável permite que os usuários selecionem vários valores, é necessário converter o valor da variável em um tipo de dados do GoogleSQL usando a função CAST
.
A consulta a seguir ilustra essa sintaxe:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
A instrução IF
mostrada nos exemplos anteriores é recomendada porque o SQL não interpreta o operador curinga como "qualquer valor". Portanto, se você omitir a instrução IF
e selecionar o operador curinga, o resultado da consulta será uma tabela vazia. No segundo exemplo, a função UNNEST
converte a matriz em uma tabela.
Gráficos com consultas MQL
Para um gráfico que tem uma consulta MQL usar uma variável baseada em rótulo, adicione um pipe, (|)
, e siga as orientações listadas em Sintaxe geral.
Quando você usa a interface orientada por menus para criar um gráfico que mostra dados de série temporal, suas seleções são convertidas em um filtro do Monitoring.
Console
Por exemplo, a consulta a seguir depende de uma variável baseada em rótulo, my_label_based_variable
, que é resolvida em uma expressão de filtro:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | every 1m | ${my_label_based_variable}
Você também pode modificar a consulta para resolver apenas o valor de uma variável.
O exemplo a seguir usa uma expressão regular para comparar o valor
de uma consulta baseada em rótulo com o instance_id
:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | filter resource.instance_id=~'${my_label_based_variable.value}' | group_by 1m, [value_utilization_mean: mean(value.utilization)] | every 1m
Se você tiver uma variável somente de valor, omita a cláusula .value
. Por exemplo, para filtrar por zona usando uma variável somente de valor, a consulta incluiria algo como:
resource.zone=~'${my_value_only_variable}'
API
Por exemplo, o JSON a seguir ilustra uma consulta que depende de uma variável baseada em rótulo, my_label_based_variable
, sendo resolvida em uma expressão de filtro:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n | ${my_label_based_variable}", "unitOverride": "", "outputFullDuration": false },
Você também pode modificar a consulta para resolver apenas o valor de uma variável.
O exemplo a seguir usa uma expressão regular para comparar o valor
de uma consulta baseada em rótulo com o instance_id
:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | filter resource.instance_id=~'${my_label_based_variable.value}'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n", "unitOverride": "", "outputFullDuration": false },
Se você tiver uma variável somente de valor, omita a cláusula .value
. Por exemplo, para filtrar por zona usando uma variável somente de valor, a consulta incluiria algo como:
resource.zone=~'${my_value_only_variable}'
A tabela a seguir ilustra como as variáveis de exemplo são resolvidas pela MQL. Como mencionado anteriormente, quando apenas o valor de uma variável é usado, é necessário usar uma expressão regular como operador de comparação:
Sintaxe | Selected Value |
Expressão MQL resolvida |
---|---|---|
${my_label_based_variable} |
12345 |
filter (resource.instance_id == '12345')
A variável de exemplo é baseada no rótulo de recurso
|
${my_label_based_variable} |
* |
filter (true) |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Gráficos com consultas de filtro do Monitoring
Para atualizar um gráfico que tem uma consulta na forma de um filtro do Monitoring para depender de uma variável baseada em rótulo, siga as orientações listadas em Sintaxe geral.
Console
Se você usa o console Google Cloud para criar gráficos e a interface orientada por menu, é possível atualizar a consulta do gráfico usando o campo Aplicar aos gráficos da variável ou editando o widget e selecionando a variável baseada em rótulo no menu Filtrar. O menu Filtro lista todas as variáveis com base em rótulo e todas as chaves de rótulo.
Para atualizar a consulta de um gráfico e fazer com que ela dependa de uma variável baseada em valor, faça o seguinte:
- Edite o gráfico.
- No painel de consulta, clique em Adicionar filtro e selecione uma chave de rótulo. Por exemplo, é possível selecionar zona.
- No menu Valor, selecione sua variável somente de valor.
- Clique em Aplicar.
- Para salvar o dashboard modificado, clique em Salvar na barra de ferramentas.
Por exemplo, o JSON a seguir ilustra uma consulta que depende de uma variável baseada em rótulo, my_label_based_variable
, sendo resolvida em uma expressão de filtro:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" ${my_label_based_variable}"
Os widgets que usam uma consulta na forma de um filtro do Monitoring não podem filtrar a série temporal pelo valor em uma variável com base em rótulo. No entanto, é possível filtrar por variáveis somente de valor.
Por exemplo, a consulta a seguir mostra o valor do campo Filtros
de uma consulta que filtra por zone
, com base no valor de uma variável somente de 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 exemplo, o JSON a seguir ilustra uma consulta que depende de uma variável baseada em rótulo, my_label_based_variable
, sendo resolvida em uma expressão 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 },
Os widgets que usam uma consulta na forma de um filtro do Monitoring não podem filtrar a série temporal pelo valor em uma variável com base em rótulo. No entanto, é possível filtrar por variáveis somente de valor.
Por exemplo, a consulta a seguir mostra o campo "filter"
de uma consulta que filtra por zone
, com base no valor de uma variável somente de 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})"
A tabela a seguir ilustra como as variáveis de exemplo são resolvidas pelo filtro do Monitoring. Como mencionado anteriormente, quando apenas o valor de uma variável é usado, é necessário usar uma expressão regular como operador de comparação:
Sintaxe | Selected Value |
Expressão de filtro resolvida |
---|---|---|
${my_label_based_variable} |
12345 |
resource.instance_id == "12345"
A variável de exemplo é baseada no rótulo de recurso
|
${my_label_based_variable} |
* |
Omitida |
${my_label_based_variable.value} |
12345 |
Sem suporte |
${my_label_based_variable.value} |
* |
Sem suporte |
${my_value_based_variable} |
12345 |
"12345" |
${my_value_based_variable} |
* |
".*" |
Antes de começar
Conclua o seguinte no projeto do Google Cloud em que você quer criar ou gerenciar painéis:
-
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
- Conclua as etapas em Receber painel para baixar a definição do painel original.
- Edite o JSON retornado para remover os campos
etag
ename
e mude o valor do campodisplayName
. - Execute o comando para criar o painel.
- Instale e configure o Terraform para seu projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
Use o recurso do Terraform
google_monitoring_dashboard
.No comando, defina os seguintes campos:
dashboard_json
: a representação JSON do painel, usando o formatoDashboards
.Para ver exemplos desse formato, liste seus painéis usando o APIs Explorer ou abra um painel no console do Google Cloud e confira as representações JSON.
parent
: o nome totalmente qualificado do projeto. Por exemplo, você pode definir esse campo como"projects/PROJECT_ID"
, em que PROJECT_ID é o ID do seu projeto Google Cloud . Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
${PROJECT_ID}
: uma variável de ambiente que armazena o ID do projeto em que o painel será criado. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
- DASHBOARD_ID: o ID do painel.
${PROJECT_ID}
: uma variável de ambiente que armazena o ID do projeto em que o painel será criado. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.${DASHBOARD_ID}
: uma variável de ambiente que armazena o ID do painel.- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
${PROJECT_ID}
: uma variável de ambiente que armazena o ID do projeto em que o painel será criado. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
${PROJECT_ID}
: uma variável de ambiente que armazena o ID do projeto em que o painel será criado. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
- DASHBOARD_ID: o ID do painel.
${PROJECT_ID}
: uma variável de ambiente que armazena o ID do projeto em que o painel será criado. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.${DASHBOARD_ID}
: uma variável de ambiente que armazena o ID do painel.- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
- DASHBOARD_ID: o ID do painel.
- Instale e configure o Terraform para seu projeto. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
Use o recurso do Terraform
google_monitoring_dashboard
.No comando, defina os seguintes campos:
dashboard_json
: a representação JSON do painel, usando o formatoDashboards
.parent
: o nome totalmente qualificado do projeto. Por exemplo, você pode definir esse campo como"projects/PROJECT_ID"
, em que PROJECT_ID é o ID do seu projeto Google Cloud . Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.
${PROJECT_ID}
: uma variável de ambiente que armazena o ID do projeto em que o painel será criado. Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta com app ativado.${DASHBOARD_ID}
: uma variável de ambiente que armazena o ID do painel.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud .
Criar um painel
Para criar um novo painel personalizado, invoque o método
dashboards.create
e inclua nele o layout e os widgets a serem exibidos no painel.O campo
name
é opcional. O valor do campo "name" tem a seguinte estrutura:"name": "projects/PROJECT_ID_OR_NUMBER/dashboards/DASHBOARD_ID"
Quando você cria um painel, a API gera automaticamente o componente DASHBOARD_ID. Se você quiser especificar um DASHBOARD_ID personalizado, defina o campo
name
do objetoDashboard
.gcloud
Para criar um painel em um projeto, use o comando
gcloud monitoring dashboards create
.gcloud monitoring dashboards create --config-from-file=my-dashboard.json --project=PROJECT_ID
Antes de executar o comando anterior, substitua o seguinte:
Por exemplo, se você quiser duplicar um painel, faça o seguinte:
Para mais informações, consulte a referência de
gcloud monitoring dashboards create
.Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform. Para mais informações, consulte a documentação de referência do provedor Terraform.
Para criar um painel usando o Terraform, faça o seguinte:
REST
Para criar um novo painel, envie uma solicitação
POST
para o endpointDashboard
.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 executar o comando anterior, configure o seguinte:
Os exemplos criam um painel de amostra usando o arquivo
my-dashboard.json
. É possível gerenciar seu painel pelo Google Cloud console.Para outras configurações do painel, consulte Exemplos de painéis e layouts.
Excluir painéis
Para excluir um painel personalizado, invoque o método
dashboards.delete
e especifique o painel que você quer excluir.gcloud
Para excluir um painel personalizado, use
gcloud monitoring dashboards delete
e especifique o ID totalmente qualificado do painel a ser excluído:gcloud monitoring dashboards delete DASHBOARD_ID --project=PROJECT_ID
Antes de executar o comando anterior, substitua o seguinte:
Para mais informações, consulte a referência de
gcloud monitoring dashboards delete
.Terraform
É possível excluir recursos usando o Terraform. Para informações sobre excluir recursos, consulte o comando destroy do Terraform.
REST
Para excluir um painel personalizado, envie uma solicitação
DELETE
para o endpointDashboard
, qualificado com o código do painel a ser excluído.curl -H "Authorization: Bearer $ACCESS_TOKEN" -X DELETE https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Antes de executar o comando anterior, configure o seguinte:
Se for bem-sucedido, o método retornará uma resposta vazia. Caso contrário, um erro será exibido.
Listar painéis
Para listar todos os painéis que pertencem a um projeto, invoque o método
dashboards.list
e especifique o ID do projeto.gcloud
Para listar todos os painéis personalizados de um projeto, use o comando
gcloud monitoring dashboards list
:gcloud monitoring dashboards list --project=PROJECT_ID
Antes de executar o comando anterior, substitua o seguinte:
Para mais informações, consulte a referência
gcloud monitoring dashboards list
.Terraform
Não é possível usar o Terraform para enviar uma consulta ao seu projeto com a resposta sendo uma lista de painéis. No entanto, é possível conferir esses painéis usando o console Google Cloud .
REST
Para listar todos os painéis personalizados de um projeto, envie o código do projeto para o endpoint
Dashboard
.curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards
Antes de executar o comando anterior, configure o seguinte:
Os exemplos retornam os painéis personalizados associados ao seu projeto.
Paginar a resposta da lista
O método
dashboards.list
suporta paginação. Com ela, em vez de ver todos os resultados ao mesmo tempo, você os visualiza em uma página de cada vez.gcloud
Para especificar o número de recursos por página, passe a sinalização
--page-size
com o comando. Exemplo:gcloud monitoring dashboards list --page-size=1 --project=PROJECT_ID
Antes de executar o comando anterior, substitua o seguinte:
Terraform
Não é possível usar o Terraform para enviar uma consulta ao seu projeto com a resposta sendo uma lista paginada de painéis. No entanto, é possível conferir esses painéis usando o console Google Cloud .
REST
Na página inicial da lista de resultados, especifique o parâmetro de consulta
pageSize
com a solicitação:curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards?page_size=1
Antes de executar o comando anterior, configure o seguinte:
O método retorna a primeira página da lista e o
nextPageToken
. Exemplo:{ "dashboards" : [ { "displayName" : "Grid Layout Example", "gridLayout" : { "widgets" : [ { ... }, { ... }, { ... }, ] } } ] }, "nextPageToken": "ChYqFDEyMzkzMzUwNzg0OTE1MDI4MjM3"
Em cada página restante, você precisa incluir o
nextPageToken
correspondente na solicitação.Acessar painel
Para receber um painel personalizado específico para um projeto, invoque o método
dashboards.get
, qualificado com o código do painel.gcloud
Para receber um painel personalizado específico, use o comando
gcloud monitoring dashboards describe
e especifique o ID do painel:gcloud monitoring dashboards describe DASHBOARD_ID --format=json --project=PROJECT_ID
Antes de executar o comando anterior, substitua o seguinte:
O comando retorna o painel 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 mais informações, consulte a referência
gcloud monitoring dashboards describe
.Terraform
Não é possível usar o Terraform para enviar uma consulta ao projeto com a resposta sendo um painel individual. No entanto, é possível conferir esses painéis usando o console Google Cloud .
REST
Para receber um painel personalizado específico, envie o código dele para o endpoint
Dashboard
.curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Antes de executar o comando anterior, configure o seguinte:
Na expressão anterior,
${DASHBOARD_ID}
é uma variável de ambiente que armazena o nome totalmente qualificado do painel.O método retorna uma resposta semelhante ao exemplo a seguir:
{ "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" }
Atualizar painel
Para atualizar um painel personalizado existente, invoque o método
dashboards.patch
. Para receber o valoretag
atual, invoque o métododashboards.get
, e ele estará incluído na resposta.gcloud
Para atualizar um painel personalizado, use
gcloud monitoring dashboards update
, especifique o ID do painel a ser atualizado e forneça as mudanças no painel.gcloud monitoring dashboards update DASHBOARD_ID --config-from-file=my-updated-dashboard.json --project=PROJECT_ID
Antes de executar o comando anterior, substitua o seguinte:
Para mais informações, consulte a referência
gcloud monitoring dashboards update
.O exemplo anterior atualiza um painel personalizado usando o arquivo
my-updated-dashboard.json
. A resposta, que inclui um novo valoretag
, é uma cópia da listagem atualizada do painel.Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform. Para mais informações, consulte a documentação de referência do provedor Terraform.
Para atualizar um painel usando o Terraform, faça o seguinte:
REST
Para atualizar um painel personalizado, envie uma solicitação
PATCH
para o endpointDashboard
e forneça o objetoDashboard
revisado e o valoretag
da respostadashboards.get
mais recente.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 executar o comando anterior, configure o seguinte:
O exemplo anterior atualiza um painel personalizado usando o arquivo
my-updated-dashboard.json
. A resposta, que inclui um novo valoretag
, é uma cópia da listagem atualizada do painel.A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-07-14 UTC.
-