Este documento descreve como pode fixar filtros ao nível do painel de controlo para que estes filtros sejam permanentes. Os filtros fixos, que lhe permitem modificar os dados apresentados por um painel de controlo sem ter de modificar cada widget, têm um estado predefinido e aplicam-se a todo o painel de controlo. A barra de ferramentas do painel de controlo apresenta cada filtro afixado, juntamente com um menu que lhe permite alterar temporariamente o valor do filtro.
As variáveis são semelhantes aos filtros fixos, mas aplicam-se apenas a widgets específicos. Este documento descreve como criar variáveis e como aplicá-las com um widget. Uma variável pode modificar a consulta do widget ou pode controlar a visibilidade de um widget. A barra de ferramentas do painel de controlo apresenta
cada variável por nome, juntamente com um menu que lhe permite alterar temporariamente
o valor da variável. Para ajudar a distinguir os filtros das variáveis,
na barra de ferramentas, o nome de uma variável tem um cifrão $
antes.
Este documento descreve como usar a consola Google Cloud para criar variáveis e filtros fixos. Para obter informações sobre a utilização da API Cloud Monitoring, consulte o artigo Crie e faça a gestão de painéis de controlo por API: filtros de painéis de controlo.
Para obter informações sobre como adicionar e modificar agrupamentos e filtros temporários, que se aplicam apenas à sessão atual, consulte o artigo Adicione filtros temporários a um painel de controlo personalizado.
Esta funcionalidade só é suportada para projetos do Google Cloud . Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
Acerca dos filtros fixados
Um filtro fixado contém uma etiqueta, um ou mais valores predefinidos e
uma lista de todos os valores possíveis. A lista de todos os valores possíveis é derivada dinamicamente dos dados de séries cronológicas apresentados no painel de controlo.
Para informações sobre a estrutura de um filtro,
consulte DashboardFilter
.
Não aplica um filtro fixo a widgets individuais. Em alternativa, são usadas as seguintes regras para determinar se o filtro fixo pode alterar os dados apresentados pelo widget:
Se o widget apresentar dados que incluem a chave de etiqueta especificada por um filtro fixo e se o widget não especificar um valor para essa chave de etiqueta, o filtro fixo pode alterar os dados apresentados.
Por exemplo, suponhamos que adiciona o filtro fixo cluster_name: mycluster. Em seguida, os gráficos apresentam automaticamente apenas as séries cronológicas que têm uma etiqueta cluster_name com um valor de mycluster. Da mesma forma, as consultas nos widgets do painel de registos são modificadas para resource.labels."cluster_name"="mycluster", e os gráficos apresentam automaticamente apenas os intervalos temporais que incluem a etiqueta no filtro afixado.
Um filtro fixo é ignorado por um widget quando o widget inclui um filtro para a mesma chave de etiqueta ou quando os dados apresentados pelo widget não contêm a chave de etiqueta especificada no filtro fixo.
Acerca das variáveis
Uma variável tem um nome e um tipo. Uma variável é aplicada a um widget específico modificando a consulta que o widget contém.
Para informações sobre a estrutura de um filtro,
consulte DashboardFilter
.
Na barra de ferramentas do painel de controlo, os nomes das variáveis são precedidos por um cifrão $
.
Se também vir um ícone visibility Visível, a variável controla a visibilidade de, pelo menos, um widget.
As variáveis podem basear-se em etiquetas ou ter apenas um valor:
As variáveis baseadas em etiquetas são como filtros fixos. Estas variáveis contêm uma chave de etiqueta, um ou mais valores de etiqueta predefinidos e uma lista de todos os valores de etiqueta possíveis. A lista de todos os valores possíveis é derivada dinamicamente dos dados de séries cronológicas apresentados no painel de controlo.
As variáveis apenas com valores contêm um ou mais valores predefinidos e podem apresentar todos os valores possíveis. Se não especificar um valor predefinido, o operador de carateres universais,
(*)
, é selecionado para o valor predefinido. Para definir o conjunto de todos os valores possíveis, fornece uma matriz de valores ou escreve uma consulta SQL.Existem três tipos de variáveis apenas com valores: Personalizada, Introdução de texto e Consulta SQL.
Personalizado: use quando quiser enumerar a lista de todos os valores possíveis e também definir um ou mais valores predefinidos. Por exemplo, pode definir a lista de todos os valores possíveis como
prod, staging, dev
e o valor predefinido comoprod
.Introdução de texto: use quando não souber todos os valores possíveis. Por exemplo, pode querer filtrar por URL, mas quando cria a variável, não conhece a lista exata de URLs. Em seguida, quando usa o menu de filtros do widget, pode introduzir novos URLs e, em seguida, guardar as alterações para a sessão atual ou para a definição da variável.
Consulta SQL: use quando quiser gerar a lista de valores possíveis através de uma consulta SQL. Estas variáveis destinam-se a ser aplicadas a gráficos criados através do Log Analytics.
Para estas variáveis, certifique-se de que o resultado da consulta é uma tabela com uma coluna, que o tipo de dados dessa coluna é string e que cada linha na tabela contém um valor de string único:
SELECT log_name FROM `VIEW` GROUP BY log_name
A consulta SQL não pode depender de uma variável.
Para aplicar uma variável a um widget, atualiza a consulta emitida pelo widget ou atualiza a visibilidade do widget. Pode sempre editar o widget para atualizar a respetiva consulta. No entanto, para variáveis baseadas em etiquetas e alguns tipos de widgets, pode atualizar a consulta fazendo seleções no menu. Para controlar a visibilidade, tem de editar o widget. Para mais informações, consulte as seguintes secções deste documento:
Antes de começar
Conclua os passos seguintes para o Google Cloud projeto onde quer configurar filtros e variáveis:
-
Para obter as autorizações de que precisa para adicionar ou modificar variáveis ou filtros fixados através da Google Cloud consola, peça ao seu administrador para lhe conceder a função IAM de Editor de monitorização (
roles/monitoring.editor
) no seu projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Para mais informações sobre as funções, consulte o artigo Controle o acesso com a gestão de identidades e acessos.
Crie e afixe um filtro
Para criar e fixar um filtro que se aplica a todos os widgets do painel de controlo que suportam filtros, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
- Selecione um painel de controlo, aceda à barra de ferramentas do painel de controlo e, de seguida, clique em settings Definições.
- Na secção Filtros, clique em Adicionar um filtro.
- Clique em arrow_drop_down Etiqueta e, em seguida, selecione uma etiqueta. Por exemplo,
pode selecionar
zone
. - Para permitir que um utilizador selecione vários valores no menu de valores da variável, selecione Seleção múltipla. Quando a opção Seleção múltipla não está ativada, os utilizadores só podem selecionar uma opção no menu de valores.
Clique em arrow_drop_down Valor predefinido e, de seguida, selecione o valor ou os valores predefinidos para a etiqueta. Para fazer corresponder todos os valores, selecione
*
.Depois de criar o filtro, este é adicionado à barra de ferramentas do painel de controlo. Para alterar temporariamente o valor do filtro, selecione o filtro e, de seguida, faça uma seleção no menu.
Clique em Concluído e, de seguida, em Aplicar.
Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.
Crie uma variável
Para criar uma variável que se aplica a widgets específicos do painel de controlo, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
- Selecione um painel de controlo, aceda à barra de ferramentas do painel de controlo e, de seguida, clique em settings Definições.
- Na secção Variáveis, clique em Adicionar uma variável.
Selecione o tipo de variável e, de seguida, conclua a caixa de diálogo.
Para criar uma variável baseada em etiquetas, selecione Etiqueta. Use esta opção quando quiser uma variável com uma chave de etiqueta e um valor de etiqueta, e que possa ser usada como um filtro. A lista de todos os valores possíveis é derivada dinamicamente dos dados de séries cronológicas apresentados no painel de controlo. O menu Aplicar aos gráficos permite-lhe selecionar widgets cuja consulta vai ser modificada pela variável. Também pode atualizar a consulta editando o widget.
Para variáveis apenas de valor, tem as seguintes opções:
SQL: use esta opção quando quiser que os resultados de uma consulta SQL gerem a lista de todos os valores possíveis.
Introduza um ou mais valores predefinidos e introduza uma consulta SQL que gera a lista de todos os valores possíveis. Certifique-se de que o resultado da consulta é uma tabela com uma coluna, que o tipo de dados dessa coluna é uma string e que cada linha na tabela contém um valor de string único.
Personalizado: use esta opção quando quiser especificar a lista de valores possíveis e também um valor predefinido. Por exemplo, pode definir o campo Valores como
prod, staging, dev
e definir o Valor predefinido comoprod
.Introdução de texto: use esta opção quando quiser especificar uma lista de valores que são aplicados como predefinições.
Clique em Concluído e, de seguida, em Aplicar.
Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.
Aplique a variável aos widgets. Se atualizar a consulta de um widget, quando alterar o valor da variável, a consulta é modificada e os dados apresentados pelo widget são modificados. Também pode usar uma variável para controlar se um widget está visível. Para mais informações, consulte as seguintes secções deste documento:
Defina a visibilidade de um widget
Quando um widget consulta dados, pode usar uma variável para controlar se o widget está visível num painel de controlo. Por exemplo, suponha que um painel de controlo contém widgets que apresentam dados para os seus sistemas de produção e outro conjunto de widgets que apresentam dados para os seus sistemas de preparação. Quando depura durante o desenvolvimento, pode querer ver apenas os dados de preparação. Ao configurar a visibilidade dos widgets do painel de controlo com uma variável, pode alternar entre apenas dados de produção, apenas dados de preparação e todos os dados.
Qualquer tipo de variável pode controlar se um widget está visível ou oculto.
Para configurar a visibilidade de um widget, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Selecione um painel de controlo.
- Aceda à barra de ferramentas do widget cuja visibilidade quer configurar e, em seguida, clique em edit Editar.
- No painel Apresentação, expanda Visibilidade do widget.
Selecione uma variável e conclua a caixa de diálogo.
Clique em Concluído e, de seguida, em Aplicar.
Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.
O painel de controlo é atualizado. Quando, pelo menos, um widget no painel de controlo está oculto devido aos controlos de visibilidade, o painel de controlo apresenta uma faixa. Para ver todos os widgets, clique em Mostrar todos os widgets.
Quando usa uma variável para controlar a visibilidade de, pelo menos, um widget no painel de controlo, na barra de ferramentas, o nome da variável é anotado com um ícone visibility Visível.
Limitações
Aplicam-se as seguintes limitações quando configura a visibilidade de um widget:
Os widgets organizacionais, como o grupo redutível, o cabeçalho de secção e os widgets de vista única, estão sempre visíveis.
Pode eliminar uma variável referenciada pelos controlos de visibilidade de um widget. A ação de eliminação de variáveis também remove qualquer referência à variável.
Nem todos os painéis de controlo suportam a criação de variáveis. No entanto, se um painel de controlo contiver variáveis, pode usar essas variáveis para gerir a visibilidade dos widgets no painel de controlo.
Atualize a consulta de um widget
Esta secção descreve como incluir variáveis na consulta emitida pelo widget. Como resultado, quando altera o valor da variável, a consulta é modificada e os dados apresentados pelo widget são modificados:
Para gráficos que usam consultas SQL ou PromQL e para widgets do painel de registos, tem de editar o widget e modificar a consulta. Esta secção descreve como fazer essas edições.
Para gráficos que configurou através de menus ou do modo de filtro direto, o Monitoring edita a consulta quando seleciona o widget através do menu Aplicar a gráficos. Em alternativa, pode editar o widget, aceder ao campo Filtro e, de seguida, selecionar a variável.
Para saber como atualizar a consulta de um widget com uma variável baseada em etiqueta ou uma variável apenas com valor, consulte as seguintes secções:
- Sintaxe geral para desreferenciar uma variável
- Widgets do painel de registos
- Gráficos com consultas PromQL
- Gráficos com consultas SQL
Gráficos com consultas de filtros de monitorização
Quando usa a interface orientada por menus para criar um gráfico que apresenta dados de séries cronológicas, as suas seleções são convertidas num filtro de monitorização.
Crie filtros e variáveis
Consola
Para obter informações sobre como usar a Google Cloud consola para criar filtros fixos e variáveis, consulte os seguintes documentos:
API
Para definir filtros e variáveis fixos, use a estrutura de dados dashboardFilters
.
- Para criar uma variável, defina o valor do campo
templateVariable
para o nome da variável. Omita este campo ou defina o valor como uma string vazia quando quiser criar um filtro fixo. - Para criar um filtro fixo ou uma variável baseada em etiquetas, tem de especificar o campo
labelKey
. Omita este campo quando quiser uma variável apenas com valor. Defina o valor predefinido para o filtro ou a variável. A configuração deste campo determina se um utilizador pode selecionar exatamente uma opção no menu de valores ou se pode selecionar vários valores.
- Para definir um único valor predefinido e restringir os utilizadores à seleção de 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 predefinido e permitir que os utilizadores selecionem várias opções no menu de valores, defina o campo
valueType
comoSTRING_ARRAY
e defina também o campostringArrayValue
. No exemplo seguinte, existem três valores predefinidos.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Para definir um único valor predefinido e restringir os utilizadores à seleção de exatamente uma opção no menu de valores, defina o campo
Opcional: para especificar a lista de todos os valores possíveis para uma variável apenas de valor, defina o campo
stringArray
ou o campotimeSeriesQuery
. Se especificar uma consulta, tem de ser uma consulta de estatísticas.
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 fixo e duas variáveis:
O filtro fixo tem a chave da etiqueta
zone
, que é apresentada na barra de ferramentas. Os camposvalueType
estringValue
especificam o valor predefinido único. Para mais informações, consulte a página de referências da API para a estrutura de dadosdashboardFilters
.A variável baseada em etiquetas tem o nome
my_label_based_variable
e a respetiva chave de etiqueta éinstance_id
. O valor predefinido desta variável está definido como um ID de instância específico. Também pode configurar o valor predefinido através de uma matriz. Na barra de ferramentas, o filtro é apresentado com o nomemy_label_based_variable
.A variável apenas com valor tem o nome
my_value_only_variable
. Esta entrada não especifica um valor predefinido, pelo que o operador universal,(*)
, é aplicado automaticamente. Além disso, esta variável usa uma consulta SQL para gerar a lista de valores possíveis para a variável.
Tenha em atenção que o objeto dashboardFilters
não apresenta os widgets aos quais a variável se aplica. Em alternativa, atualize a consulta de um widget para depender de uma variável.
Sintaxe geral para desreferenciar uma variável
Para todos os widgets, exceto os definidos por SQL, use a seguinte sintaxe para aplicar uma variável a uma consulta:
Para aplicar uma variável baseada em etiquetas e ter a chave da etiqueta e o valor da etiqueta resolvidos numa 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 etiquetas, use
${my_label_based_variable.value}
. A comparação tem de usar uma expressão regular.Para aplicar apenas o valor de uma variável apenas de valor, use
${my_value_only_variable}
. Para variáveis apenas com valores, não inclua uma cláusula.value
. A comparação tem de usar uma expressão regular.
Widgets do painel de registos
Para aplicar uma variável a um widget do painel Registos, atualize o painel de consultas. A sintaxe destes widgets segue a especificada em Sintaxe geral.
Consola
Por exemplo, a seguinte consulta 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 etiquetas:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Como outro exemplo, considere uma variável apenas com valores, value_only_severity_variable
, e suponha que, no menu de valores, estão selecionados três valores: ERROR
, INFO
e NOTICE
.
Em seguida, adicione o seguinte ao painel de consulta do widget do painel de registos:
severity =~ "${value_only_severity_variable}"
A imagem seguinte ilustra o formulário renderizado:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Por exemplo, o JSON seguinte ilustra como atualizar a consulta de um widget do painel de registos com uma variável baseada em etiquetas:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
Por exemplo, a seguinte consulta 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 etiquetas:
"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 apenas com valores, value_only_severity_variable
, e suponha que são selecionados três valores no menu: ERROR
, INFO
e NOTICE
.
Em seguida, adicione o seguinte ao painel de consulta do widget do painel de registos:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
A imagem seguinte ilustra a consulta conforme executada pelo widget do painel de registos:
severity =~ "^(ERROR|INFO|NOTICE)$"
Se tiver configurado uma consulta para o painel de registos e, em seguida, selecionar o botão para abrir o Explorador de registos, as variáveis são resolvidas antes de o Explorador de registos ser aberto.
A tabela seguinte ilustra como as variáveis de exemplo são resolvidas pelo painel de registos. Conforme mencionado anteriormente, quando apenas o valor de uma variável é usado, tem de usar uma expressão regular como o operador de comparação:
Sintaxe | Selected Value |
Expressão do painel de registos resolvida |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
A variável de exemplo baseia-se na etiqueta do 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 que tenha uma consulta PromQL para depender de uma variável baseada em etiquetas, siga as orientações indicadas em Sintaxe geral.
Consola
Por exemplo, a seguinte consulta baseia-se na variável baseada em etiquetas my_label_based_variable
, que é resolvida numa expressão de filtro:
compute_googleapis_com:instance_cpu_utilization{ monitored_resource="gce_instance", ${my_label_based_variable} }
Também pode modificar a consulta para resolver apenas o valor de uma variável.
O exemplo seguinte usa uma expressão regular para comparar o valor
de uma consulta baseada em etiquetas com instance_id
:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Se tiver uma variável apenas com valor, omita a cláusula .value
. Por exemplo, para filtrar por zona usando uma variável apenas com valor, a consulta incluiria algo como o seguinte:
zone=~"${my_value_only_variable}"
API
Por exemplo, o JSON seguinte ilustra uma consulta que depende da variável baseada em etiquetas, my_label_based_variable
, a ser resolvida numa 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 },
Também pode modificar a consulta para resolver apenas o valor de uma variável.
O exemplo seguinte usa uma expressão regular para comparar o valor
de uma consulta baseada em etiquetas com 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 tiver uma variável apenas com valor, omita a cláusula .value
. Por exemplo, para filtrar por zona usando uma variável apenas com valor, a consulta incluiria algo como o seguinte:
zone=~\"${my_value_only_variable}\"
A tabela seguinte ilustra como as variáveis de exemplo são resolvidas pelo PromQL. Conforme mencionado anteriormente, quando apenas o valor de uma variável é usado, tem de usar uma expressão regular como o operador de comparação:
Sintaxe | Selected Value |
Expressão PromQL resolvida |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
A variável de exemplo baseia-se na etiqueta do 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 quiser atualizar um widget definido por 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 símbolo "@" antes do nome da variável, por exemplo:
@variable_name
. Para variáveis baseadas em etiquetas, acrescente .value
ao nome da variável, @my_label_based_variabe.value
.
Para consultas SQL, a substituição de variáveis baseia-se no BigQuery e é segura contra injeção de SQL. Para mais informações, consulte o artigo Executar consultas parametrizadas.
Consola
Uma vez que o SQL não interpreta o operador de carateres universais como "qualquer valor", recomendamos que use sempre uma declaração IF
quando usar variáveis numa consulta SQL. O exemplo seguinte ilustra a utilização de uma variável apenas 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 aos utilizadores selecionar vários valores, tem de converter o valor da variável num tipo de dados GoogleSQL através da função CAST
.
A seguinte consulta ilustra esta sintaxe:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
A declaração IF
apresentada nos exemplos anteriores é recomendada porque o SQL não interpreta o operador de carateres universais como "qualquer valor". Por conseguinte, se omitir a declaração IF
e selecionar o operador de carateres universais, o resultado da consulta é uma tabela vazia. No segundo exemplo, a função UNNEST
converte a matriz numa 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, de seguida, selecione a variável cuja cláusula
WHERE
quer atualizar. - Na caixa de diálogo apresentada, reveja o código gerado e, de seguida, clique em Copiar e fechar.
Cole o código copiado no painel Consulta e faça as edições necessárias.
Por exemplo, suponhamos que cria uma variável denominada
LogName
que gera uma lista de nomes de registos e produz o resultado numa tabela com uma única coluna denominadalog_name
. Em seguida, cria um gráfico, seleciona Inserir filtro de variável e, de seguida, seleciona a variávelLogName
. É gerado o seguinte código:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
Neste exemplo, tem de editar o código gerado e substituir
LogName =
porlog_name =
para que a junção de tabelas possa ocorrer:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Clique em Executar e, de seguida, em Aplicar.
Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.
API
Uma vez que o SQL não interpreta o operador de carateres universais como "qualquer valor", recomendamos que use sempre uma declaração IF
quando usar variáveis numa consulta SQL. O exemplo seguinte ilustra a utilização de uma variável apenas de valor cujo tipo de dados é uma string:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Por exemplo, o seguinte mostra uma representação JSON parcial de um gráfico que apresenta os resultados de uma consulta SQL. Para suportar a filtragem dos resultados
pelo nome de um registo, foi adicionada uma cláusula WHERE
que faz referência à variável
denominada 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 envia uma consulta para determinar a lista de
nomes de registos 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 aos utilizadores selecionar vários valores, tem de converter o valor da variável num tipo de dados GoogleSQL através da função CAST
.
A seguinte consulta ilustra esta sintaxe:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
A declaração IF
apresentada nos exemplos anteriores é recomendada porque o SQL não interpreta o operador de carateres universais como "qualquer valor". Por conseguinte, se omitir a declaração IF
e selecionar o operador de carateres universais, o resultado da consulta é uma tabela vazia. No segundo exemplo, a função UNNEST
converte a matriz numa tabela.
Gráficos com consultas de filtros de monitorização
Para atualizar um gráfico que tenha uma consulta sob a forma de um filtro de monitorização para depender de uma variável baseada em etiquetas, siga as orientações indicadas na secção Sintaxe geral.
Consola
Se usar a Google Cloud consola para criar os gráficos e usar a interface orientada por menus, pode atualizar a consulta do gráfico usando o campo Aplicar a gráficos da variável ou editando o widget e selecionando a variável baseada em etiquetas no menu Filtro. O menu Filtro apresenta todas as variáveis baseadas em etiquetas e todas as chaves de etiquetas.
Para atualizar a consulta de um gráfico de modo a depender 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 etiqueta. Por exemplo, pode selecionar zona.
- No menu Valor, selecione a variável apenas de valor.
- Clique em Aplicar.
- Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.
Por exemplo, o JSON seguinte ilustra uma consulta que depende de uma variável baseada em etiquetas, my_label_based_variable
, a ser resolvida numa 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 sob a forma de um filtro de monitorização não podem filtrar a série cronológica pelo valor numa variável baseada em etiquetas;
no entanto, pode filtrar por variáveis apenas de valor.
Por exemplo, a consulta seguinte mostra o valor do campo Filtros de uma consulta que filtra por zone
, com base no valor de uma variável apenas 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 seguinte ilustra uma consulta que depende de uma variável baseada em etiquetas, my_label_based_variable
, a ser resolvida numa 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 sob a forma de um filtro de monitorização não podem filtrar a série cronológica pelo valor numa variável baseada em etiquetas;
no entanto, pode filtrar por variáveis apenas de valor.
Por exemplo, a seguinte consulta mostra o campo "filter"
de uma consulta que
filtra por zone
, com base no valor de uma variável apenas 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 seguinte ilustra como as variáveis de exemplo são resolvidas pelo filtro de monitorização. Conforme mencionado anteriormente, quando apenas o valor de uma variável é usado, tem de usar uma expressão regular como o 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 baseia-se na etiqueta do recurso
|
${my_label_based_variable} |
* |
Omitido |
${my_label_based_variable.value} |
12345 |
Não suportado |
${my_label_based_variable.value} |
* |
Não suportado |
${my_value_based_variable} |
12345 |
"12345" |
${my_value_based_variable} |
* |
".*" |
Modifique um filtro ou uma variável fixada
Para alterar temporariamente o valor de qualquer filtro apresentado na barra de ferramentas do painel de controlo, clique no nome do filtro e introduza um valor ou faça uma seleção no menu.
Se o painel de controlo contiver uma tabela que apresenta dados de séries cronológicas, pode adicionar filtros temporários ou modificar filtros e variáveis permanentes através do botão filter_list Filtrar painel de controlo para este valor de uma célula. Quando selecionado, este botão aplica um novo filtro temporário ou atualiza o valor de um filtro ou uma variável existente. Os filtros e as variáveis existentes são atualizados quando a chave da etiqueta da coluna da tabela corresponde à chave da etiqueta de um filtro ou de uma variável.
Para alterar a configuração de um filtro ou uma variável fixada, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
- Na barra de ferramentas do painel de controlo, clique em settings Definições.
- Encontre o filtro ou a variável que quer modificar e expanda a respetiva definição.
- Depois de concluir as modificações, clique em Aplicar.
- Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.
Elimine um filtro ou uma variável fixada
Para eliminar um filtro fixo ou uma variável, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
- Na barra de ferramentas do painel de controlo, clique em settings Definições.
- Encontre o filtro ou a variável que quer remover e, de seguida, clique em Eliminar.
- Clique em Aplicar.
- Para guardar o painel de controlo modificado, clique em Guardar na barra de ferramentas.