Questo documento descrive come creare e gestire
dashboard personalizzate e i widget su queste dashboard utilizzando
la risorsa Dashboard
nell'API Cloud Monitoring.
Gli esempi riportati di seguito illustrano come gestire i dashboard utilizzando
curl
per richiamare l'API e mostrano come utilizzare Google Cloud CLI.
Sebbene tu possa anche gestire le dashboard personalizzate tramite la
Google Cloud console, l'API ti offre un modo programmatico per gestire più dashboard contemporaneamente.
L'endpoint supporta i seguenti metodi per la gestione e la configurazione dei dashboard:
dashboards.create
: crea una dashboarddashboards.delete
: elimina una dashboard specificatadashboards.list
: recupera un elenco di tutte le dashboard in un determinato progettodashboards.get
: recupera una dashboard specificatadashboards.patch
: aggiorna la struttura di una dashboard specificata
Puoi richiamare l'API direttamente utilizzando l'utilità curl
o Google Cloud CLI.
Non puoi recuperare, modificare o eliminare le dashboard predefinite.
Questa funzionalità è supportata solo per i progetti Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
Informazioni sulle dashboard
Quando crei un dashboard, devi specificare i componenti, o widget, che vuoi visualizzare e il layout di questi widget. Puoi anche aggiungere etichette e filtri alla dashboard. Le etichette possono aiutarti a trovare una dashboard o indicare il tipo di contenuti presenti.
Layout della dashboard
I layout definiscono l'ordine dei componenti di un dashboard. L'API fornisce i seguenti layout:
GridLayout
: divide lo spazio disponibile in colonne verticali di larghezza uguale e dispone un insieme di widget utilizzando una strategia di priorità per le righe.MosaicLayout
: divide lo spazio disponibile in una griglia. Ogni widget può occupare uno o più blocchi della griglia.RowLayout
: divide lo spazio disponibile in righe e dispone un insieme di widget orizzontalmente in ogni riga.ColumnLayout
: divide lo spazio disponibile in colonne verticali e dispone un insieme di widget verticalmente in ogni colonna.
Ad esempio, di seguito viene mostrata la rappresentazione JSON di una dashboard in
RowLayout
con tre widget 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"
}
}
]
}
]
}
}
Widget delle dashboard
Un widget contiene un singolo componente della dashboard e la configurazione di come
presentare il componente nella dashboard. Una dashboard può avere più di un
widget. Esistono diversi tipi di Widget
oggetti:
Il widget
XyChart
mostra i dati sugli assi X e Y.Questo widget mostra un set di dati che può essere dati delle serie temporali o generati da una query SQL. Questo widget ti consente di associare i dati rappresentati nel grafico all'asse Y sinistro o destro. Quando vengono rappresentati graficamente più tipi di metriche, puoi utilizzare entrambi gli assi Y. Il widget
XyChart
supporta i seguenti stili di visualizzazione:- Grafici a linee
- Grafici a barre
- Grafici ad area in pila
- Mappe termiche
Widget che mostrano i dati di una dimensione, ad esempio l'ultimo valore:
PieChart
: mostra i valori più recenti di una raccolta di serie temporali, in cui ogni serie temporale contribuisce con una sezione alla torta.Scorecard
: mostra il valore più recente di una serie temporale e il modo in cui questo valore si rapporta a una o più soglie.TimeSeriesTable
: mostra il valore più recente o un valore aggregato per ogni serie temporale. Le tabelle supportano la personalizzazione. Ad esempio, puoi assegnare un codice colore alle celle e configurare i nomi delle colonne e l'allineamento dei dati.
Widget che mostrano informazioni sulle criterio di avviso o sugli incidenti:
AlertChart
: mostra un riepilogo di una criterio di avviso a una sola condizione. Questo widget mostra i dati come un grafico a linee, la soglia e il numero di incidenti aperti.IncidentList
: mostra un elenco di incidenti. Puoi configurare il widget in modo che mostri gli incidenti per criteri di avviso specifici o per tipi di risorse specifici.
Widget che mostrano voci di log ed errori:
ErrorReportingPanel
: mostra i gruppi di errori archiviati nel Google Cloud progetto selezionato.LogsPanel
: mostra le voci di log con ambito progetto archiviate nel progetto Google Cloud corrente. Puoi configurare il widget in modo che mostri le voci di log memorizzate nei progetti Google Cloud accessibili tramite l'ambito delle metriche corrente.
Widget di testo e organizzazione:
CollapsibleGroup
: mostra una raccolta di widget. Puoi comprimere la visualizzazione di un gruppo.SingleViewGroup
: mostra un widget in una raccolta di widget. Puoi selezionare il widget da visualizzare.SectionHeader
: crea un divisore orizzontale nella dashboard e una voce nel sommario della dashboard.Text
: mostra contenuti di testo, come testo non elaborato o una stringa Markdown.
Per includere i widget di testo e dell'organizzazione in una dashboard, quest'ultima deve avere un
MosaicLayout
.
Oltre a questi oggetti, puoi anche aggiungere un segnaposto vuoto a una dashboard.
Ad esempio, di seguito è riportata la rappresentazione JSON di un widget
XyChart
il cui asse Y destro è configurato:
{
"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"
}
}
}
]
}
}
Etichette della dashboard
Le etichette possono aiutarti a gestire e organizzare le dashboard. Ad esempio, potresti
aggiungere un'etichetta denominata prod
per indicare che la dashboard mostra
dati delle serie temporali e dati di log per le risorse di produzione. In alternativa,
puoi aggiungere l'etichetta playbook
per indicare che la dashboard
contiene informazioni utili per la risoluzione dei problemi relativi agli errori.
L'aggiunta di etichette a una dashboard è facoltativa.
Ad esempio, di seguito viene mostrato un oggetto Dashboard
che
specifica l'etichetta denominata playbook
.
{
"displayName": "Example",
"mosaicLayout": {
"columns": 12,
"tiles": [
...
]
},
"dashboardFilters": [],
"labels": {
"playbook": ""
}
}
Come illustrato nell'esempio precedente, il campo labels
è implementato come
map
, dove i campi key
e value
sono entrambi stringhe. Quando aggiungi un'etichetta a un dashboard, imposta key
sul nome dell'etichetta e imposta il campo value
su una stringa vuota.
Filtri e variabili della dashboard
Quando progetti una dashboard, potresti identificare diversi modi per visualizzare i dati che mostra. Ad esempio, supponiamo che una dashboard mostri dati delle serie temporali per le tue istanze di macchine virtuali (VM). Potresti voler visualizzare i dati delle serie temporali per tutte le VM e solo quelli che si trovano in una zona specifica. In questa situazione, ti consigliamo di creare un filtro bloccato o una variabile e poi impostare il valore predefinito di questo filtro sulla zona più visualizzata.
I filtri bloccati vengono applicati a tutti i widget della dashboard che supportano l'etichetta specificata nel filtro, a meno che il widget non contenga un filtro con la stessa chiave etichetta.
Ad esempio, quando un grafico include il filtro zone = us-central1-a
, ignora un filtro bloccato la cui chiave etichetta è zone
. Analogamente,
questo filtro viene ignorato dai grafici che non hanno un'etichetta con
una chiave di zone
.
Le variabili sono come i filtri bloccati, ma si applicano solo a widget specifici. Le variabili possono essere basate su etichette, come i filtri bloccati, oppure
possono avere solo un valore. Le variabili solo con valori contengono uno o più
valori predefiniti e un elenco di tutti i valori possibili. Se non specifichi
un valore predefinito, il valore predefinito è l'operatore jolly (*)
.
Per definire l'insieme di tutti i valori possibili, fornisci una matrice di
valori o scrivi una query SQL.
Per i widget che eseguono query sui dati, puoi includere una variabile nella query del widget e puoi utilizzare una variabile per controllare la visibilità del widget. Quando la query dipende da una variabile, i dati richiesti dal widget cambiano quando modifichi il valore della variabile. Di conseguenza, cambiano anche i dati visualizzati. Quando utilizzi una variabile per controllare la visibilità di un widget, nella barra degli strumenti viene visualizzata un'icona visibility Visibile. Per le limitazioni relative alla visibilità, vedi Impostare la visibilità di un widget.
Sia per i filtri che per le variabili bloccati, la barra degli strumenti della dashboard mostra
ogni variabile, insieme a un menu che consente di modificare temporaneamente il valore
della variabile. La stessa struttura dei dati viene utilizzata per rappresentare i filtri
e le variabili bloccati. Per aiutarti a distinguere i filtri dalle variabili, nella
barra degli strumenti della dashboard, il nome di una variabile è preceduto dal simbolo del dollaro $
.
Per ulteriori informazioni, vedi DashboardFilter
.
Per un esempio che mostra come controllare la visibilità di un widget utilizzando una variabile, vedi Dashboard con visibilità dei widget configurata.
Per scoprire come aggiornare la query di un widget con una variabile basata su etichetta o una variabile solo con valori, consulta le sezioni seguenti:
- Sintassi generale per dereferenziare una variabile
- Widget del pannello dei log
- Grafici con query PromQL
- Grafici con query SQL
- Grafici con query MQL
Grafici con query di filtro di Monitoring
Quando utilizzi l'interfaccia basata su menu per creare un grafico che mostra dati delle serie temporali, le tue selezioni vengono convertite in un filtro di Monitoring.
Creare filtri e variabili
Console
Per informazioni su come utilizzare la console Google Cloud per creare filtri e variabili bloccati, consulta i seguenti documenti:
API
Per definire filtri e variabili bloccati, utilizza la struttura dei 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 etichette, devi specificare
il campo
labelKey
. Ometti questo campo quando vuoi una variabile solo con valori. 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 la selezione degli utenti a una sola opzione nel menu dei valori, imposta il campo
valueType
comeSTRING
e anche il campostringValue
:
"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
comeSTRING_ARRAY
e imposta anche il campostringArrayValue
. Nell'esempio seguente, sono presenti tre valori predefiniti.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Per impostare un singolo valore predefinito e limitare la selezione degli utenti a una sola opzione nel menu dei valori, imposta il campo
(Facoltativo) Per specificare l'elenco di tutti i valori possibili per una variabile solo valori, imposta il campo
stringArray
o il campotimeSeriesQuery
. 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 sulla barra degli strumenti. I campivalueType
estringValue
specificano il singolo valore predefinito. Per maggiori informazioni, consulta la pagina dei riferimenti API per la struttura dei datidashboardFilters
.La variabile basata su etichette ha il nome
my_label_based_variable
e la relativa chiave di etichetta èinstance_id
. Il valore predefinito di 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 nomemy_label_based_variable
.La variabile solo valore è denominata
my_value_only_variable
. Questa voce non specifica un valore predefinito, quindi viene applicato automaticamente il carattere jolly(*)
. 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. Invece, aggiorni la query di un widget in modo che dipenda
da una variabile.
Sintassi generale per dereferenziare 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 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 pannello dei log, aggiorna il riquadro delle query. La sintassi di questi widget segue quella specificata in Sintassi generale.
Console
Ad esempio, la seguente query utilizza un'espressione regolare per confrontare
il valore del campo jsonPayload.message
con un valore stringa che include
il valore di una variabile basata su etichette:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Come altro esempio, considera una variabile solo con valori,
value_only_severity_variable
, e supponi che nel menu dei valori siano selezionati tre
valori: ERROR
, INFO
e NOTICE
.
Successivamente, aggiungi quanto segue al riquadro delle query del widget del pannello dei log:
severity =~ "${value_only_severity_variable}"
Di seguito è illustrato il modulo visualizzato:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Ad esempio, il seguente JSON mostra come aggiornare la query di un widget del pannello dei log con una variabile basata su etichetta:
"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 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, considera una variabile solo con valori, value_only_severity_variable
, e supponi che nel menu siano selezionati tre valori: ERROR
, INFO
e NOTICE
.
Successivamente, aggiungi quanto segue al riquadro delle query del widget del pannello 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 pannello 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 vengono risolte le variabili di esempio 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 | Selected Value |
Espressione del riquadro dei log risolta |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
La variabile di esempio si basa sull'etichetta della risorsa
|
${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 in modo che dipenda da una variabile basata su etichette, segui le indicazioni riportate in Sintassi generale.
Console
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 valori, ometti la clausola .value
. Ad esempio,
per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerebbe
qualcosa di simile a quanto segue:
zone=~"${my_value_only_variable}"
API
Ad esempio, il seguente JSON illustra una query che si basa sulla variabile basata su etichetta, my_label_based_variable
, che viene 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 valori, ometti la clausola .value
. Ad esempio,
per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerebbe
qualcosa di simile a quanto segue:
zone=~\"${my_value_only_variable}\"
La seguente tabella mostra 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 | Selected Value |
Espressione PromQL risolta |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
La variabile di esempio si basa sull'etichetta della risorsa
|
${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 da SQL in modo che dipenda da una variabile,
aggiorna la clausola WHERE
in modo che faccia riferimento al valore della variabile.
Per tutte le variabili, aggiungi il prefisso "@" al nome della variabile, 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 è sicura contro l'iniezione SQL. Per maggiori informazioni, consulta la sezione Esecuzione di query con parametri.
Console
Poiché SQL non interpreta l'operatore jolly come "qualsiasi valore", ti
consigliamo di utilizzare sempre un'istruzione IF
quando utilizzi
variabili in una query SQL. Il seguente esempio 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 cast
del valore della variabile a 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 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:
- Modifica il widget.
- Nella barra degli strumenti, seleziona Inserisci filtro variabile e poi la variabile di cui vuoi aggiornare la clausola
WHERE
. - Nella finestra di dialogo che si apre, esamina il codice generato e fai clic su Copia e chiudi.
Incolla il codice copiato nel riquadro Query e apporta le modifiche necessarie.
Ad esempio, supponiamo di creare una variabile denominata
LogName
che genera un elenco di nomi di log e restituisce il risultato in una tabella con una sola colonna denominatalog_name
. Successivamente, crea un grafico, seleziona Inserisci filtro variabile e poi seleziona la variabileLogName
. Viene generato il seguente codice:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
In questo esempio, devi modificare il codice generato e sostituire
LogName =
conlog_name =
, in modo che possa verificarsi l'unione delle tabelle:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Fai clic su Esegui e poi su Applica.
Per salvare la dashboard modificata, fai clic su Salva nella barra degli strumenti.
API
Poiché SQL non interpreta l'operatore jolly come "qualsiasi valore", ti
consigliamo di utilizzare sempre un'istruzione IF
quando utilizzi
variabili in una query SQL. Il seguente esempio 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 filtraggio dei risultati
in base al nome di un log, è stata aggiunta una clausola WHERE
che fa riferimento alla variabile
denominata 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 dei
possibili nomi dei 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 cast
del valore della variabile a 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 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,
aggiungi una barra verticale, (|)
, e poi segui le indicazioni riportate in
Sintassi generale.
Quando utilizzi l'interfaccia basata su menu per creare un grafico che mostra dati delle serie temporali, le tue selezioni vengono convertite in un filtro di Monitoring
Console
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 valori, ometti la clausola .value
. Ad esempio,
per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerebbe
qualcosa di simile a quanto segue:
resource.zone=~'${my_value_only_variable}'
API
Ad esempio, il seguente JSON illustra una query che si basa su una variabile basata su etichetta, my_label_based_variable
, che viene 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 valori, ometti la clausola .value
. Ad esempio,
per filtrare in base alla zona utilizzando una variabile di solo valore, la query includerebbe
qualcosa di simile a quanto segue:
resource.zone=~'${my_value_only_variable}'
La tabella seguente mostra come le variabili di esempio vengono risolte da MQL. Come accennato in precedenza, quando viene utilizzato solo il valore di una variabile, devi utilizzare un'espressione regolare come operatore di confronto:
Sintassi | Selected Value |
Espressione MQL risolta |
---|---|---|
${my_label_based_variable} |
12345 |
filter (resource.instance_id == '12345')
La variabile di esempio si basa sull'etichetta della risorsa
|
${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 di filtri di monitoraggio
Per aggiornare un grafico con una query sotto forma di filtro di monitoraggio in modo che dipenda da una variabile basata su etichette, segui le indicazioni riportate in Sintassi generale.
Console
Se utilizzi la console Google Cloud per creare i grafici e se utilizzi l'interfaccia basata sui menu, puoi aggiornare la query del grafico utilizzando il campo Applica ai grafici della variabile o modificando il widget e selezionando la variabile basata sulle etichette dal menu Filtro. Il menu Filtro 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 sul valore, svolgi le seguenti operazioni:
- Modifica il grafico.
- Nel riquadro della query, fai clic su Aggiungi filtro e seleziona una chiave dell'etichetta. Ad esempio, potresti selezionare zona.
- Nel menu Valore, seleziona la variabile solo valore.
- Fai clic su Applica.
- 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
, che viene 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 la serie temporale in base al valore di 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 filtra 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})
API
Ad esempio, il seguente JSON illustra una query che si basa su una variabile basata su etichetta, my_label_based_variable
, che viene 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 la serie temporale in base al valore di 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 in base a 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 seguente tabella mostra come le variabili di esempio vengono risolte dal filtro Monitoring. Come accennato in precedenza, quando viene utilizzato solo il valore di una variabile, devi utilizzare un'espressione regolare come operatore di confronto:
Sintassi | Selected Value |
Espressione di filtro risolta |
---|---|---|
${my_label_based_variable} |
12345 |
resource.instance_id == "12345"
La variabile di esempio si basa sull'etichetta della risorsa
|
${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} |
* |
".*" |
Prima di iniziare
Completa i seguenti passaggi nel progetto Google Cloud in cui vuoi creare o gestire dashboard:
-
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: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
- Completa i passaggi descritti in Recuperare la dashboard per scaricare la definizione della dashboard originale.
- Modifica il JSON restituito per rimuovere i campi
etag
ename
e modifica il valore del campodisplayName
. - Esegui il comando per creare la dashboard.
- Installa e configura Terraform per il tuo progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
Utilizza la risorsa Terraform
google_monitoring_dashboard
.Nel comando, imposta i seguenti campi:
dashboard_json
: la rappresentazione JSON della dashboard, utilizzando il formatoDashboards
.Per esempi di questo formato, puoi elencare le dashboard utilizzando Explorer API oppure puoi aprire una dashboard nella console Google Cloud e visualizzare le rappresentazioni JSON.
parent
: il nome completo del progetto. Ad esempio, puoi impostare questo campo su"projects/PROJECT_ID"
, dove PROJECT_ID è l'ID del tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
${PROJECT_ID}
: una variabile di ambiente che memorizza l'ID progetto in cui creare la dashboard. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.- PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
- DASHBOARD_ID: l'ID della dashboard.
${PROJECT_ID}
: una variabile di ambiente che memorizza l'ID progetto in cui creare la dashboard. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.${DASHBOARD_ID}
: una variabile di ambiente che memorizza l'ID della dashboard.- PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
${PROJECT_ID}
: una variabile di ambiente che memorizza l'ID progetto in cui creare la dashboard. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.- PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
${PROJECT_ID}
: una variabile di ambiente che memorizza l'ID progetto in cui creare la dashboard. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.- PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
- DASHBOARD_ID: l'ID della dashboard.
${PROJECT_ID}
: una variabile di ambiente che memorizza l'ID progetto in cui creare la dashboard. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.${DASHBOARD_ID}
: una variabile di ambiente che memorizza l'ID della dashboard.- PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
- DASHBOARD_ID: l'ID della dashboard.
- Installa e configura Terraform per il tuo progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
Utilizza la risorsa Terraform
google_monitoring_dashboard
.Nel comando, imposta i seguenti campi:
dashboard_json
: la rappresentazione JSON della dashboard, utilizzando il formatoDashboards
.parent
: il nome completo del progetto. Ad esempio, puoi impostare questo campo su"projects/PROJECT_ID"
, dove PROJECT_ID è l'ID del tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
${PROJECT_ID}
: una variabile di ambiente che memorizza l'ID progetto in cui creare la dashboard. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.${DASHBOARD_ID}
: una variabile di ambiente che memorizza l'ID della dashboard.
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
Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
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.
Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .
Crea una dashboard
Per creare una nuova dashboard personalizzata, richiama il metodo
dashboards.create
e fornisci il layout e i widget da visualizzare nella dashboard.Il campo
name
è facoltativo. Il valore del campo Nome ha la seguente struttura:"name": "projects/PROJECT_ID_OR_NUMBER/dashboards/DASHBOARD_ID"
Quando crei un dashboard, l'API genera automaticamente il componente DASHBOARD_ID. Se vuoi specificare un DASHBOARD_ID personalizzato, puoi specificare il campo
name
dell'oggettoDashboard
.gcloud
Per creare un dashboard in un progetto, utilizza il comando
gcloud monitoring dashboards create
.gcloud monitoring dashboards create --config-from-file=my-dashboard.json --project=PROJECT_ID
Prima di eseguire il comando precedente, sostituisci quanto segue:
Ad esempio, se vuoi duplicare una dashboard:
Per ulteriori informazioni, consulta il riferimento
gcloud monitoring dashboards create
.Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base. Per saperne di più, consulta la documentazione di riferimento del fornitore Terraform.
Per creare una dashboard utilizzando Terraform:
REST
Per creare una nuova dashboard, invia una richiesta
POST
all'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
Prima di eseguire il comando precedente, configura quanto segue:
Gli esempi creano un dashboard di esempio utilizzando il file
my-dashboard.json
. Puoi gestire la dashboard tramite la consoleGoogle Cloud .Per ulteriori configurazioni della dashboard, vedi Esempi di dashboard e layout.
Eliminare le dashboard
Per eliminare una dashboard personalizzata, richiama il metodo
dashboards.delete
e specifica la dashboard da eliminare.gcloud
Per eliminare una dashboard personalizzata, utilizza
gcloud monitoring dashboards delete
e specifica l'ID completo della dashboard da eliminare:gcloud monitoring dashboards delete DASHBOARD_ID --project=PROJECT_ID
Prima di eseguire il comando precedente, sostituisci quanto segue:
Per ulteriori informazioni, consulta il riferimento
gcloud monitoring dashboards delete
.Terraform
Puoi eliminare le risorse utilizzando Terraform. Per informazioni sull'eliminazione delle risorse, consulta il comando Terraform destroy.
REST
Per eliminare una dashboard personalizzata, invia una richiesta
DELETE
all'endpointDashboard
, qualificato con l'ID della dashboard da eliminare.curl -H "Authorization: Bearer $ACCESS_TOKEN" -X DELETE https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Prima di eseguire il comando precedente, configura quanto segue:
In caso di esito positivo, il metodo restituisce una risposta vuota. In caso contrario, restituisce un errore.
Elenco dashboard
Per elencare tutte le dashboard personalizzate appartenenti a un progetto, richiama il metodo
dashboards.list
e specifica l'ID progetto.gcloud
Per elencare tutte le dashboard personalizzate di un progetto, utilizza il comando
gcloud monitoring dashboards list
:gcloud monitoring dashboards list --project=PROJECT_ID
Prima di eseguire il comando precedente, sostituisci quanto segue:
Per ulteriori informazioni, consulta il riferimento
gcloud monitoring dashboards list
.Terraform
Non puoi utilizzare Terraform per inviare una query al tuo progetto con la risposta che sia un elenco di dashboard. Tuttavia, puoi visualizzare queste dashboard utilizzando la console Google Cloud .
REST
Per elencare tutte le dashboard personalizzate di un progetto, invia l'ID progetto all'endpoint
Dashboard
.curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards
Prima di eseguire il comando precedente, configura quanto segue:
Gli esempi restituiscono le dashboard personalizzate associate al tuo progetto.
Impaginare la risposta dell'elenco
Il metodo
dashboards.list
supporta la paginazione, che consente di visualizzare i risultati una pagina alla volta anziché tutti insieme.gcloud
Per specificare il numero di risorse per pagina, passa il flag
--page-size
con il comando. Ad esempio:gcloud monitoring dashboards list --page-size=1 --project=PROJECT_ID
Prima di eseguire il comando precedente, sostituisci quanto segue:
Terraform
Non puoi utilizzare Terraform per inviare una query al tuo progetto con la risposta che sia un elenco paginato di dashboard. Tuttavia, puoi visualizzare queste dashboard utilizzando la console Google Cloud .
REST
Per la pagina iniziale dell'elenco dei risultati, specifica il parametro della query
pageSize
con la richiesta:curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards?page_size=1
Prima di eseguire il comando precedente, configura quanto segue:
Il metodo restituisce la prima pagina dell'elenco e
nextPageToken
. Ad esempio:{ "dashboards" : [ { "displayName" : "Grid Layout Example", "gridLayout" : { "widgets" : [ { ... }, { ... }, { ... }, ] } } ] }, "nextPageToken": "ChYqFDEyMzkzMzUwNzg0OTE1MDI4MjM3"
Per ogni pagina rimanente, devi includere il
nextPageToken
corrispondente nella richiesta.Ottieni dashboard
Per ottenere una dashboard personalizzata specifica per un progetto, richiama il metodo
dashboards.get
, qualificato con l'ID dashboard.gcloud
Per ottenere una dashboard personalizzata specifica, utilizza il comando
gcloud monitoring dashboards describe
e specifica l'ID della dashboard:gcloud monitoring dashboards describe DASHBOARD_ID --format=json --project=PROJECT_ID
Prima di eseguire il comando precedente, sostituisci quanto segue:
Il comando restituisce la dashboard richiesta:
{ "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" }
Per ulteriori informazioni, consulta il riferimento
gcloud monitoring dashboards describe
.Terraform
Non puoi utilizzare Terraform per inviare una query al tuo progetto con la risposta che è una dashboard individuale. Tuttavia, puoi visualizzare queste dashboard utilizzando la console Google Cloud .
REST
Per ottenere una dashboard personalizzata specifica, invia l'ID dashboard all'endpoint
Dashboard
.curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}
Prima di eseguire il comando precedente, configura quanto segue:
Nell'espressione precedente,
${DASHBOARD_ID}
è una variabile di ambiente che memorizza il nome completo della dashboard.Il metodo restituisce una risposta simile al seguente esempio:
{ "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" }
Aggiornamento dashboard
Per aggiornare una dashboard personalizzata esistente, richiama il metodo
dashboards.patch
. Per ottenere il valore corrente dietag
, puoi richiamare il metododashboards.get
e trovarlo nella risposta.gcloud
Per aggiornare una dashboard personalizzata, utilizza
gcloud monitoring dashboards update
, specifica l'ID della dashboard da aggiornare e fornisci le modifiche alla dashboard.gcloud monitoring dashboards update DASHBOARD_ID --config-from-file=my-updated-dashboard.json --project=PROJECT_ID
Prima di eseguire il comando precedente, sostituisci quanto segue:
Per ulteriori informazioni, consulta il riferimento
gcloud monitoring dashboards update
.L'esempio precedente aggiorna una dashboard personalizzata esistente utilizzando il file
my-updated-dashboard.json
. La risposta, che include un nuovo valoreetag
, è una copia dell'elenco delle dashboard aggiornato.Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base. Per saperne di più, consulta la documentazione di riferimento del fornitore Terraform.
Per aggiornare una dashboard utilizzando Terraform:
REST
Per aggiornare una dashboard personalizzata, invia una richiesta
PATCH
all'endpointDashboard
e fornisci l'oggettoDashboard
rivisto e il valoreetag
dell'ultima rispostadashboards.get
.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}
Prima di eseguire il comando precedente, configura quanto segue:
L'esempio precedente aggiorna una dashboard personalizzata esistente utilizzando il file
my-updated-dashboard.json
. La risposta, che include un nuovo valoreetag
, è una copia dell'elenco delle dashboard aggiornato.Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-14 UTC.
-