Creare e gestire variabili e filtri bloccati

Questo documento descrive come bloccare i filtri a livello di dashboard in modo che siano permanenti. I filtri bloccati, che ti consentono di modificare i dati visualizzati da una dashboard senza dover modificare ogni widget, hanno uno stato predefinito e si applicano all'intera dashboard. La barra degli strumenti della dashboard visualizza ogni filtro bloccato, insieme a un menu che consente di modificare temporaneamente il valore del filtro.

Le variabili sono simili ai filtri bloccati, ma si applicano solo a widget specifici. Questo documento descrive come creare variabili e come applicarle con un widget. Una variabile può modificare la query del widget o controllarne la visibilità. La barra degli strumenti della dashboard mostra ogni variabile per nome, insieme a un menu che consente di modificare temporaneamente il valore della variabile. Per aiutarti a distinguere i filtri dalle variabili, nella barra degli strumenti il nome di una variabile è preceduto da un segno di dollaro $.

Questo documento descrive come utilizzare la console Google Cloud per creare variabili e filtri bloccati. Per informazioni sull'utilizzo dell'API Cloud Monitoring, consulta Creare e gestire le dashboard tramite API: filtri della dashboard.

Per informazioni su come aggiungere e modificare raggruppamenti e filtri temporanei, che si applicano solo alla sessione corrente, vedi Aggiungere filtri temporanei a una dashboard personalizzata.

Questa funzionalità è supportata solo per i progetti Google Cloud. Per le configurazioni di App Hub, seleziona il progetto host di App Hub.

Informazioni sui filtri bloccati

Un filtro bloccato contiene un'etichetta, uno o più valori predefiniti e un elenco di tutti i valori possibili. L'elenco di tutti i valori possibili viene ricavato dinamicamente dai dati delle serie temporali visualizzati nella dashboard. Per informazioni sulla struttura di un filtro, consulta DashboardFilter.

Non puoi applicare un filtro bloccato ai singoli widget. Vengono invece utilizzate le seguenti regole per determinare se il filtro bloccato può modificare i dati visualizzati dal widget:

  • Se il widget visualizza dati che includono la chiave di etichetta specificata da un filtro bloccato e se il widget non specifica un valore per quella chiave di etichetta, il filtro bloccato può modificare i dati visualizzati.

    Ad esempio, supponiamo di aggiungere il filtro bloccato cluster_name: mycluster. I grafici mostrano automaticamente solo le serie temporali con un'etichetta cluster_name con un valore mycluster. Analogamente, le query sui widget del riquadro dei log vengono modificate in resource.labels."cluster_name"="mycluster" e i grafici mostrano automaticamente solo le serie temporali che includono l'etichetta nel filtro bloccato.

  • Un filtro bloccato viene ignorato da un widget quando il widget include un filtro per la stessa chiave dell'etichetta o quando i dati visualizzati dal widget non contengono la chiave dell'etichetta specificata nel filtro bloccato.

Informazioni sulle variabili

Una variabile ha un nome e un tipo. Una variabile viene applicata a un determinato widget modificando la query in esso contenuta. Per informazioni sulla struttura di un filtro, consulta DashboardFilter.

Nella barra degli strumenti della dashboard, i nomi delle variabili sono preceduti da un segno di dollaro $. Se vedi anche un'icona Visibile, la variabile controlla la visibilità di almeno un widget.

Le variabili possono essere basate su etichette o avere solo un valore:

  • Le variabili basate su etichette sono simili ai filtri bloccati. Queste variabili contengono una chiave di etichetta, uno o più valori di etichetta predefiniti e un elenco di tutti i valori di etichetta possibili. L'elenco di tutti i valori possibili viene ricavato dinamicamente dai dati delle serie temporali visualizzati nella dashboard.

  • Le variabili solo valore contengono uno o più valori predefiniti e possono elencare tutti i valori possibili. Se non specifichi un valore predefinito, l'operatore jolly (*) viene selezionato per il valore predefinito. Per definire l'insieme di tutti i valori possibili, fornisci un array di valori o scrivi una query SQL.

    Esistono tre tipi di variabili di solo valore: Personalizzata, Input di testo e Query SQL.

    • Personalizzato: da utilizzare quando vuoi elencare sia l'elenco di tutti i valori possibili sia impostare uno o più valori predefiniti. Ad esempio, puoi impostare l'elenco di tutti i valori possibili su prod, staging, dev e il valore predefinito su prod.

    • Input di testo: da utilizzare quando non conosci tutti i valori possibili. Ad esempio, potresti voler filtrare per URL, ma quando crei la variabile non conosci l'elenco esatto degli URL. Quando utilizzi il menu dei filtri per il widget, puoi inserire nuovi URL e salvare le modifiche per la sessione corrente o per la definizione della variabile.

    • Query SQL: da utilizzare quando vuoi generare l'elenco dei valori possibili utilizzando una query SQL. Queste variabili devono essere applicate ai grafici creati utilizzando Log Analytics.

      Per queste variabili, assicurati che il risultato della query sia una tabella con una colonna, che il tipo di dati di questa colonna sia stringa e che ogni riga della tabella contenga un valore stringa univoco:

      SELECT log_name
      FROM `TABLE_NAME_OF_LOG_VIEW`
      GROUP BY log_name
      

      La variabile deve eseguire una query sulla stessa tabella del grafico.

Per applicare una variabile a un widget, aggiorna la query emessa dal widget o la visibilità del widget. Puoi sempre modificare il widget per aggiornarne la query. Tuttavia, per le variabili basate su etichette e per alcuni tipi di widget, puoi aggiornare la query effettuando selezioni nel menu. Per controllare la visibilità, devi modificare il widget. Per ulteriori informazioni, consulta le seguenti sezioni di questo documento:

Prima di iniziare

Completa quanto segue per il progetto Google Cloud in cui vuoi configurare filtri e variabili:

Creare e bloccare un filtro

Per creare e bloccare un filtro che si applichi a tutti i widget della dashboard che supportano i filtri:

  1. Nella console Google Cloud, vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Nella barra degli strumenti della console Google Cloud, seleziona il tuo progetto Google Cloud. Per le configurazioni di App Hub, seleziona il progetto host di App Hub.
  3. Seleziona una dashboard, vai alla barra degli strumenti della dashboard e poi fai clic su Impostazioni.
  4. Nella sezione Filtri, fai clic su Aggiungi un filtro.
  5. Fai clic su Etichetta e seleziona un'etichetta. Ad esempio, puoi selezionare zone.
  6. Per consentire a un utente di selezionare più valori dal menu dei valori della variabile, seleziona Multipla selezione. Quando l'opzione Selezione multipla non è attivata, gli utenti possono selezionare soltanto un'opzione dal menu dei valori.
  7. Fai clic su Valore predefinito e poi seleziona il valore o i valori predefiniti per l'etichetta. Per trovare una corrispondenza per tutti i valori, seleziona *.

    Una volta creato, il filtro viene aggiunto alla barra degli strumenti della dashboard. Per modificare temporaneamente il valore del filtro, seleziona il filtro e poi effettua una selezione dal menu.

  8. Fai clic su Fine e poi su Applica.

  9. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

Crea una variabile

Per creare una variabile che si applichi a widget della dashboard specifici:

  1. Nella console Google Cloud, vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Nella barra degli strumenti della console Google Cloud, seleziona il tuo progetto Google Cloud. Per le configurazioni di App Hub, seleziona il progetto host di App Hub.
  3. Seleziona una dashboard, vai alla barra degli strumenti della dashboard e poi fai clic su Impostazioni.
  4. Nella sezione Variabili, fai clic su Aggiungi una variabile.
  5. Seleziona il tipo di variabile e poi completa la finestra di dialogo.

    Per creare una variabile basata su etichetta, seleziona Etichetta. Utilizza questa opzione quando vuoi una variabile con una chiave e un valore di etichetta che possa essere utilizzata come un filtro. L'elenco di tutti i valori possibili viene ricavato dinamicamente dai dati delle serie temporali visualizzati nella dashboard. Il menu Applica ai grafici consente di selezionare i widget la cui query deve essere modificata dalla variabile. Puoi anche aggiornare la query modificando il widget.

    Per le variabili solo valore, hai le seguenti opzioni:

    • SQL: utilizza questa opzione quando vuoi che i risultati di una query SQL generino l'elenco di tutti i valori possibili.

      Inserisci uno o più valori predefiniti e una query SQL che genera l'elenco di tutti i valori possibili. Assicurati che il risultato della query sia una tabella con una colonna, che il tipo di dati di questa colonna sia stringa e che ogni riga della tabella contenga un valore di stringa univoco.

    • Personalizzato: utilizza questa opzione se vuoi specificare sia l'elenco di valori possibili sia un valore predefinito. Ad esempio, puoi impostare il campo Valori su prod, staging, dev e il Valore predefinito su prod.

    • Input di testo: utilizza questa opzione se vuoi specificare un elenco di valori da applicare come valori predefiniti.

  6. Fai clic su Fine e poi su Applica.

  7. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

  8. Applica la variabile ai widget. Se aggiorni la query di un widget, quando modifichi il valore della variabile, la query viene modificata e anche i dati visualizzati dal widget. Puoi anche utilizzare una variabile per controllare se un widget è visibile. Per ulteriori informazioni, consulta le seguenti sezioni di questo documento:

Impostare la visibilità di un widget

Quando un widget esegue query sui dati, puoi utilizzare una variabile per controllare se il widget è visibile in una dashboard. Ad esempio, supponiamo che una dashboard contenga widget che mostrano i dati per i tuoi sistemi di produzione e un altro insieme di widget che mostrano i dati per i tuoi sistemi di staging. Durante il debug durante lo sviluppo, potresti voler visualizzare solo i dati di staging. Configurando la visibilità dei widget della dashboard con una variabile, puoi passare dai dati di produzione, ai dati di staging e a tutti i dati.

Qualsiasi tipo di variabile può controllare se un widget è visibile o nascosto.

Per configurare la visibilità di un widget:

  1. Nella console Google Cloud, vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Seleziona una dashboard.
  3. Vai alla barra degli strumenti del widget di cui vuoi configurare la visibilità, quindi fai clic su Modifica.
  4. Nel riquadro Visualizza, espandi Visibilità dei widget.
  5. Seleziona una variabile e completa la finestra di dialogo.

  6. Fai clic su Fine e poi su Applica.

  7. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

    La dashboard viene aggiornata. Quando almeno un widget della dashboard è nascosto a causa dei controlli della visibilità, la dashboard mostra un banner. Per visualizzare tutti i widget, fai clic su Mostra tutti i widget.

Quando utilizzi una variabile per controllare la visibilità di almeno un widget nella dashboard, nella barra degli strumenti il nome della variabile è annotato con un'icona Visibile.

Limitazioni

Quando configuri la visibilità di un widget, si applicano le seguenti limitazioni:

  • I widget di organizzazione, come i gruppi comprimibili, le intestazioni di sezione e i widget con visualizzazione singola, sono sempre visibili.

  • Puoi eliminare una variabile a cui fanno riferimento i controlli della visibilità di un widget. L'azione di eliminazione della variabile rimuove anche qualsiasi riferimento alla variabile.

  • Non tutte le dashboard supportano la creazione di variabili. Tuttavia, se una dashboard contiene variabili, puoi utilizzarle per gestire la visibilità dei widget.

Aggiornare la query di un widget

Questa sezione descrive come includere nella query le variabili emesse dal widget. Di conseguenza, quando modifichi il valore della variabile, la query viene modificata e anche i dati visualizzati dal widget:

  • Per i grafici che utilizzano query SQL, PromQL o MQL e per i widget del riquadro dei log, devi modificare il widget e la query. Questa sezione descrive come apportare queste modifiche.

  • Per i grafici configurati utilizzando i menu o la modalità di filtro diretto, Monitoraggio modifica la query quando selezioni il widget utilizzando il menu Applica ai grafici. In alternativa, puoi modificare il widget, andare al campo Filtro e selezionare la variabile.

Per scoprire come aggiornare la query di un widget con una variabile basata su etichetta o una variabile solo valore, consulta le seguenti sezioni:

Creare filtri e variabili

ConsoleAPI

Per informazioni su come utilizzare la console Google Cloud per creare filtri bloccati e variabili, consulta i seguenti documenti:

Per definire filtri e variabili bloccati, utilizza la struttura di dati dashboardFilters.

  • Per creare una variabile, imposta il valore del campo templateVariable sul nome della variabile. Ometti questo campo o imposta il valore su una stringa vuota quando vuoi creare un filtro bloccato.
  • Per creare un filtro bloccato o una variabile basata su etichetta, devi specificare il campo labelKey. Ometti questo campo se vuoi una variabile solo con valore.
  • Imposta il valore predefinito per il filtro o la variabile. La configurazione di questo campo determina se un utente può selezionare esattamente un'opzione dal menu di valori o se può selezionare più valori.

    • Per impostare un singolo valore predefinito e limitare gli utenti alla selezione di esattamente un'opzione nel menu dei valori, imposta il campo valueType su STRING e imposta anche il campo stringValue:
    "valueType": "STRING",
    "stringValue": "my-default-value",
    
    • Per impostare almeno un valore predefinito e consentire agli utenti di selezionare più opzioni nel menu dei valori, imposta il campo valueType su STRING_ARRAY e anche il campo stringArrayValue. Nell'esempio seguente, sono presenti tre valori predefiniti.
    "valueType": "STRING_ARRAY",
    "stringArrayValue": {
      "values": [ "a", "b", "c" ]
    },
    
  • (Facoltativo) Per specificare l'elenco di tutti i valori possibili per una variabile solo valore, imposta il campo stringArray o il campo timeSeriesQuery. Se specifichi una query, deve essere una query di analisi.

Ad esempio, considera il seguente oggetto 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",
  ...
}

Il JSON precedente definisce un filtro bloccato e due variabili:

  • Il filtro bloccato ha la chiave dell'etichetta zone, che viene visualizzata nella barra degli strumenti. I campi valueType e stringValue specificano il singolo valore predefinito. Per ulteriori informazioni, consulta la pagina dei riferimenti API per la struttura di dati dashboardFilters.

  • La variabile basata su etichette ha il nome my_label_based_variable e la sua chiave di etichetta è instance_id. Il valore predefinito per questa variabile è impostato su un ID istanza specifico. Puoi anche configurare il valore predefinito utilizzando un array. Nella barra degli strumenti, il filtro viene visualizzato con il nome my_label_based_variable.

  • La variabile solo valore è denominata my_value_only_variable. Questa voce non specifica un valore predefinito, pertanto l'operatore jolly (*) viene applicato automaticamente. Inoltre, questa variabile utilizza una query SQL per generare l'elenco dei possibili valori per la variabile.

Tieni presente che l'oggetto dashboardFilters non elenca i widget a cui si applica la variabile. Aggiorna invece la query di un widget in modo che dipenda da una variabile.

Sintassi generale per il dereferenziamento di una variabile

Per tutti i widget, ad eccezione di quelli definiti da SQL, utilizza la seguente sintassi per applicare una variabile a una query:

  • Per applicare una variabile basata su etichette e risolvere la chiave e il valore dell'etichetta in un'espressione di filtro valida per il linguaggio di query, utilizza ${my_label_based_variable}.

  • Per applicare solo il valore di una variabile basata su etichette, utilizza ${my_label_based_variable.value}. Il confronto deve utilizzare un'espressione regolare.

  • Per applicare solo il valore di una variabile di solo valore, utilizza ${my_value_only_variable}. Per le variabili di solo valore, non includere una clausola .value. Il confronto deve utilizzare un'espressione regolare.

Widget del riquadro dei log

Per applicare una variabile a un widget del riquadro dei log, aggiorna il riquadro delle query. La sintassi di questi widget segue quella specificata in Sintassi generale.

ConsoleAPI

Ad esempio, la seguente query utilizza un'espressione regolare per confrontare il valore del campo jsonPayload.message con un valore di stringa che include il valore di una variabile basata su etichette:

jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"

Come altro esempio, prendi in considerazione una variabile solo valore, value_only_severity_variable, e supponiamo che nel menu dei valori siano selezionati tre valori: ERROR, INFO e NOTICE. Aggiungi quanto segue al riquadro delle query del widget del riquadro dei log:

severity =~ "${value_only_severity_variable}"

Di seguito è illustrata la forma visualizzata:

severity =~ "^(ERROR|INFO|NOTICE)$"

Ad esempio, il seguente JSON illustra come aggiornare la query di un widget del riquadro dei log con una variabile basata su etichette:

"logsPanel": {
  "filter": "${my_label_based_variable}",
  "resourceNames": [
    "projects/1234512345"
  ]
},

Ad esempio, la seguente query utilizza un'espressione regolare per confrontare il valore del campo jsonPayload.message con un valore di stringa che include il valore di una variabile basata su etichette:

"logsPanel": {
  "filter": "resource.type=\"gce_instance\"\n
             resource.labels.project_id=~\"${my_label_based_variable.value}\"\n",
  "resourceNames": [
    "projects/012345"
  ]
}

Come altro esempio, prendi in considerazione una variabile solo valore, value_only_severity_variable, e supponiamo che nel menu siano selezionati tre valori: ERROR, INFO e NOTICE. Aggiungi quanto segue al riquadro delle query del widget del riquadro dei log:

"logsPanel": {
  "filter": "severity =~ \"${value_only_severity_variable}\"\n",
  ...
}

Di seguito è illustrata la query eseguita dal widget del riquadro dei log:

severity =~ "^(ERROR|INFO|NOTICE)$"

Se hai configurato una query per il riquadro dei log e poi selezioni il pulsante per aprire Esplora log, le variabili vengono risolte prima dell'apertura di Esplora log.

La tabella seguente illustra come le variabili di esempio vengono risolte dal riquadro dei log. Come accennato in precedenza, quando viene utilizzato solo il valore di una variabile, devi utilizzare un'espressione regolare come operatore di confronto:

Sintassi Valore
selezionato
Espressione del riquadro dei log risolti
${my_label_based_variable} 12345 resource.labels."instance_id"="12345"

La variabile di esempio si basa sull'etichetta della risorsa instance_id.

${my_label_based_variable} * ""
${my_label_based_variable.value}
${my_value_based_variable}
12345 12345
${my_label_based_variable.value}
${my_value_based_variable}
* .*

Grafici con query PromQL

Per aggiornare un grafico con una query PromQL che dipende da una variabile basata su etichette, segui le indicazioni riportate in Sintassi generale.

ConsoleAPI

Ad esempio, la seguente query si basa sulla variabile basata su etichette my_label_based_variable, che viene risolta in un'espressione di filtro:

compute_googleapis_com:instance_cpu_utilization{
    monitored_resource="gce_instance", ${my_label_based_variable} }

Puoi anche modificare la query per risolvere solo il valore di una variabile. L'esempio seguente utilizza un'espressione regolare per confrontare il valore di una query basata su etichette con instance_id:

compute_googleapis_com:instance_cpu_utilization{
    instance_id=~"${my_label_based_variable.value}"
}

Se hai una variabile solo con valore, ometti la clausola .value. Ad esempio, per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerà qualcosa di simile al seguente:

zone=~"${my_value_only_variable}"

Ad esempio, il seguente JSON illustra una query che si basa sulla variabile basata su etichetta my_label_based_variable, risolta in un'espressione di filtro:

"timeSeriesQuery": {
  "prometheusQuery": "avg_over_time(
    compute_googleapis_com:instance_cpu_utilization{
      monitored_resource=\"gce_instance\",
      ${my_label_based_variable}
      }[${__interval}])",
  "unitOverride": "",
  "outputFullDuration": false
},

Puoi anche modificare la query per risolvere solo il valore di una variabile. L'esempio seguente utilizza un'espressione regolare per confrontare il valore di una query basata su etichette 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
},

Se hai una variabile solo con valore, ometti la clausola .value. Ad esempio, per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerà qualcosa di simile al seguente:

zone=~\"${my_value_only_variable}\"

La tabella seguente illustra come le variabili di esempio vengono risolte da PromQL. Come accennato in precedenza, quando viene utilizzato solo il valore di una variabile, devi utilizzare un'espressione regolare come operatore di confronto:

Sintassi Valore
selezionato
Espressione PromQL risolta
${my_label_based_variable} 12345 instance_id == '12345'

La variabile di esempio si basa sull'etichetta della risorsa instance_id.

${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}
* .+

Grafici con query SQL

Quando vuoi aggiornare un widget definito in SQL in modo che dipenda da una variabile, aggiornate la clausola WHERE in modo che faccia riferimento al valore della variabile. Per tutte le variabili, anteponi al nome della variabile il segno "at", ad esempio: @variable_name. Per le variabili basate sulle etichette, aggiungi .value al nome della variabile, @my_label_based_variabe.value.

Per le query SQL, la sostituzione delle variabili si basa su BigQuery ed è protetta da SQL injection. Per ulteriori informazioni, consulta la sezione Eseguire query con parametri.

ConsoleAPI

Poiché SQL non interpreta l'operatore jolly come "qualsiasi valore", ti consigliamo di utilizzare sempre un'istruzione IF quando utilizzi le variabili in una query SQL. L'esempio seguente illustra l'utilizzo di una variabile solo valore il cui tipo di dati è una stringa:

WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)

Quando l'opzione di menu per la variabile consente agli utenti di selezionare più valori, devi eseguire il casting del valore della variabile in un tipo di dati GoogleSQL utilizzando la funzione CAST. La seguente query illustra questa sintassi:

IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE,
   severity IN UNNEST(@my_value_only_variable))

L'istruzione IF mostrata negli esempi precedenti è consigliata perché SQL non interpreta l'operatore jolly come "qualsiasi valore". Pertanto, se ometti l'istruzione IF e selezioni l'operatore con caratteri jolly, il risultato della query è una tabella vuota. Nel secondo esempio, la funzione UNNEST converte l'array in una tabella.

Per aggiungere una clausola WHERE formattata correttamente:

  1. Modifica il widget.
  2. Nella barra degli strumenti, seleziona Inserisci filtro variabile e poi la variabile di cui vuoi aggiornare la clausola WHERE.
  3. Nella finestra di dialogo visualizzata, controlla il codice generato e fai clic su Copia e chiudi.
  4. Incolla il codice copiato nel riquadro Query e apporta le modifiche necessarie.

    Ad esempio, supponiamo di creare una variabile denominata LogName che generi un elenco di nomi di log e invii il risultato in una tabella con una singola colonna denominata LogName.log_name A questo punto, crea un grafico, seleziona Inserisci filtro variabile e poi seleziona la variabile LogName. Viene generato il seguente codice:

    WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
    

    In questo esempio, devi modificare il codice generato e sostituire LogName = con log_name =, in modo che l'unione delle tabelle possa avvenire:

    WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
    
  5. Fai clic su Esegui e poi su Applica.

  6. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

Poiché SQL non interpreta l'operatore jolly come "qualsiasi valore", ti consigliamo di utilizzare sempre un'istruzione IF quando utilizzi le variabili in una query SQL. L'esempio seguente illustra l'utilizzo di una variabile solo valore il cui tipo di dati è una stringa:

WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)

Ad esempio, di seguito è riportata una rappresentazione JSON parziale di un grafico che mostra i risultati di una query SQL. Per supportare il filtro dei risultati in base al nome di un log, è stata aggiunta una clausola WHERE che fa riferimento alla variabile chiamata 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 variabile LogName esegue anche una query per determinare l'elenco di possibili nomi di log:

"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 l'opzione di menu per la variabile consente agli utenti di selezionare più valori, devi eseguire il casting del valore della variabile in un tipo di dati GoogleSQL utilizzando la funzione CAST. La seguente query illustra questa sintassi:

IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE,
   severity IN UNNEST(@my_value_only_variable))

L'istruzione IF mostrata negli esempi precedenti è consigliata perché SQL non interpreta l'operatore jolly come "qualsiasi valore". Pertanto, se ometti l'istruzione IF e selezioni l'operatore con caratteri jolly, il risultato della query è una tabella vuota. Nel secondo esempio, la funzione UNNEST converte l'array in una tabella.

Grafici con query MQL

A un grafico con una query MQL per utilizzare una variabile basata su etichetta, appendi una barra verticale, (|), e poi segui le indicazioni riportate in Sintassi generale.

Quando utilizzi l'interfaccia basata su menu per creare un grafico che mostri i dati delle serie temporali, le tue selezioni vengono convertite in un filtro di monitoraggio.

ConsoleAPI

Ad esempio, la seguente query si basa su una variabile basata su etichette, my_label_based_variable, che viene risolta in un'espressione di filtro:

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| every 1m
| ${my_label_based_variable}

Puoi anche modificare la query per risolvere solo il valore di una variabile. L'esempio seguente utilizza un'espressione regolare per confrontare il valore di una query basata su etichette con 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 hai una variabile solo con valore, ometti la clausola .value. Ad esempio, per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerà qualcosa di simile al seguente:

resource.zone=~'${my_value_only_variable}'

Ad esempio, il seguente JSON illustra una query che si basa su una variabile basata su etichetta, my_label_based_variable, risolta in un'espressione di 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
},

Puoi anche modificare la query per risolvere solo il valore di una variabile. L'esempio seguente utilizza un'espressione regolare per confrontare il valore di una query basata su etichette con 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 hai una variabile solo con valore, ometti la clausola .value. Ad esempio, per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerà qualcosa di simile al seguente:

resource.zone=~'${my_value_only_variable}'

La tabella seguente illustra come le variabili di esempio vengono risolte dall'MQL. Come accennato in precedenza, quando viene utilizzato solo il valore di una variabile, devi utilizzare un'espressione regolare come operatore di confronto:

Sintassi Valore
selezionato
Espressione MQL risolta
${my_label_based_variable} 12345 filter (resource.instance_id == '12345')

La variabile di esempio si basa sull'etichetta della risorsa instance_id.

${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}
* .*

Grafici con query sui filtri di monitoraggio

Per aggiornare un grafico che ha una query nella forma di un filtro di monitoraggio in modo che dipenda da una variabile basata su etichette, segui le indicazioni riportate in Sintassi generale.

ConsoleAPI

Se utilizzi la console Google Cloud per creare i grafici e se utilizzi l'interfaccia basata su menu, puoi aggiornare la query del grafico utilizzando il campo Applica ai grafici della variabile o modificando il widget e selezionando la variabile basata su etichetta dal menu Filtro. Il menu Filtra elenca tutte le variabili basate su etichette e tutte le chiavi di etichetta.

Per aggiornare la query di un grafico in modo che dipenda da una variabile basata su valore:

  1. Modifica il grafico.
  2. Nel riquadro della query, fai clic su Aggiungi filtro e seleziona una chiave di etichetta. Ad esempio, puoi selezionare zona.
  3. Nel menu Valore, seleziona la variabile solo valore.
  4. Fai clic su Applica.
  5. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

Ad esempio, il seguente JSON illustra una query che si basa su una variabile basata su etichetta, my_label_based_variable, risolta in un'espressione di filtro:

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance" ${my_label_based_variable}"

I widget che utilizzano una query sotto forma di filtro di monitoraggio non possono filtrare le serie temporali in base al valore in una variabile basata su etichette. Tuttavia, puoi filtrare in base a variabili di solo valore. Ad esempio, la seguente query mostra il valore del campo Filtri di una query che applica un filtro in base a zone, in base al valore di una variabile di solo valore:

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance"
resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})

Ad esempio, il seguente JSON illustra una query che si basa su una variabile basata su etichetta, my_label_based_variable, risolta in un'espressione di 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
},

I widget che utilizzano una query sotto forma di filtro di monitoraggio non possono filtrare le serie temporali in base al valore in una variabile basata su etichette. Tuttavia, puoi filtrare in base a variabili di solo valore. Ad esempio, la seguente query mostra il campo "filter" di una query che filtra per zone in base al valore di una variabile solo valore:

"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
          resource.type=\"gce_instance\"
          resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"

La tabella seguente illustra come le variabili di esempio vengono risolte dal filtro Monitoraggio. Come accennato in precedenza, quando viene utilizzato solo il valore di una variabile, devi utilizzare un'espressione regolare come operatore di confronto:

Sintassi Valore
selezionato
Espressione di filtro risolta
${my_label_based_variable} 12345 resource.instance_id == "12345"

La variabile di esempio si basa sull'etichetta della risorsa instance_id.

${my_label_based_variable} * Omessa
${my_label_based_variable.value} 12345 Non supportata
${my_label_based_variable.value} * Non supportata
${my_value_based_variable} 12345 "12345"
${my_value_based_variable} * ".*"

Modificare un filtro o una variabile bloccati

Per modificare temporaneamente il valore di qualsiasi filtro visualizzato nella barra degli strumenti della dashboard, fai clic sul nome del filtro e inserisci un valore o effettua una selezione dal menu.

Se la dashboard contiene una tabella che mostra i dati delle serie temporali, puoi aggiungere filtri temporanei o modificare filtri e variabili permanenti utilizzando il pulsante Filtra dashboard in base a questo valore di una cella. Se selezionato, questo pulsante applica un nuovo filtro temporaneo o aggiorna il valore di un filtro o di una variabile esistente. I filtri e le variabili esistenti vengono aggiornati quando la chiave dell'etichetta per la colonna della tabella corrisponde alla chiave dell'etichetta per un filtro o una variabile.

Per modificare la configurazione di un filtro bloccato o di una variabile:

  1. Nella console Google Cloud, vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Nella barra degli strumenti della console Google Cloud, seleziona il tuo progetto Google Cloud. Per le configurazioni di App Hub, seleziona il progetto host di App Hub.
  3. Nella barra degli strumenti della dashboard, fai clic su Impostazioni.
  4. Trova il filtro o la variabile che vuoi modificare ed espandi la relativa definizione.
  5. Dopo aver completato le modifiche, fai clic su Applica.
  6. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

Eliminare un filtro o una variabile bloccati

Per eliminare un filtro bloccato o una variabile:

  1. Nella console Google Cloud, vai alla pagina  Dashboard:

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Nella barra degli strumenti della console Google Cloud, seleziona il tuo progetto Google Cloud. Per le configurazioni di App Hub, seleziona il progetto host di App Hub.
  3. Nella barra degli strumenti della dashboard, fai clic su Impostazioni.
  4. Individua il filtro o la variabile da rimuovere, quindi fai clic su Elimina.
  5. Fai clic su Applica.
  6. Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.

Passaggi successivi