

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Modelli e variabili
<a name="templates-and-variables"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 8.x di Grafana.**  
Per le aree di lavoro Grafana che supportano la versione 12.x di Grafana, vedere. [Funzionamento nella versione 12 di Grafana](using-grafana-v12.md)  
Per le aree di lavoro Grafana che supportano la versione 10.x di Grafana, vedere. [Funzionamento nella versione 10 di Grafana](using-grafana-v10.md)  
Per le aree di lavoro Grafana che supportano la versione 9.x di Grafana, vedere. [Funzionamento in Grafana versione 9](using-grafana-v9.md)

Una variabile è un segnaposto per un valore. È possibile utilizzare le variabili nelle query metriche e nei titoli dei pannelli. Le variabili ti danno la possibilità di creare dashboard più interattive e dinamiche. Invece di inserire elementi come nomi di server, applicazioni e sensori nelle query metriche, puoi utilizzare variabili al loro posto. 

Le variabili vengono visualizzate come elenchi a discesa nella parte superiore della dashboard. Quando modifichi il valore utilizzando l'elenco a discesa nella parte superiore della dashboard, le query metriche del pannello riflettono il nuovo valore. 

Queste possono essere particolarmente utili per gli amministratori che desiderano consentire agli spettatori di modificare rapidamente le visualizzazioni ma non vogliono concedere loro autorizzazioni di modifica complete. I visualizzatori Grafana possono utilizzare variabili. 

Utilizzando variabili e modelli, puoi creare dashboard da un'unica fonte. Se disponi di più sorgenti di dati o server identici, puoi creare un'unica dashboard e utilizzare le variabili per modificare ciò che stai visualizzando. Questo semplifica la manutenzione e la manutenzione. 

Per un elenco dei tipi di variabili supportati e le istruzioni per aggiungere ogni tipo di variabile, vedere [Tipi di variabili](variables-types.md)

## Modelli
<a name="templates"></a>

 Un *modello* è qualsiasi interrogazione che contiene una variabile. 

Ad esempio, se stavi amministrando una dashboard per monitorare diversi server, potresti creare una dashboard per ogni server. In alternativa, è possibile creare una dashboard e utilizzare pannelli con query basate su modelli, come illustrato nell'esempio seguente. 

```
wmi_system_threads{instance=~"$server"}
```

I valori delle variabili vengono sempre sincronizzati con l'URL utilizzando la sintassi. `var-<varname>=value` 

## Procedure ottimali variabili
<a name="variable-best-practices"></a>

Gli elenchi a discesa delle variabili vengono visualizzati nell'ordine in cui sono elencati nell'elenco delle variabili nelle **impostazioni della dashboard**.

Metti le variabili che cambierai spesso in alto, in modo che vengano mostrate per prime, all'estrema sinistra della dashboard.

## Sintassi variabile
<a name="variable-syntax"></a>

 I titoli dei pannelli e le query metriche possono visualizzare le variabili utilizzando due diverse sintassi: 
+  `$varname`Questa sintassi è più facile da leggere, come nell'esempio seguente:. `apps.frontend.$server.requests.count` Tuttavia, non è possibile utilizzare una variabile al centro di una parola. 
+  `${var_name}`Utilizzate questa sintassi quando desiderate interpolare una variabile al centro di un'espressione. 
+  `${var_name:<format>}`Questo formato offre un maggiore controllo sul modo in cui Grafana interpola i valori. Per ulteriori informazioni, consulta [Opzioni avanzate di formato variabile](#advanced-variable-format-options). 

 Prima che le query vengano inviate alla fonte di dati, la query viene *interpolata*, il che significa che la variabile viene sostituita con il suo valore corrente. Durante l'interpolazione, è possibile che il valore della variabile venga *ignorato per renderlo* conforme alla sintassi del linguaggio di interrogazione e del luogo in cui viene utilizzato. Ad esempio, una variabile utilizzata in un'espressione regex in una query Prometheus verrà escapata da regex. Leggi l'argomento della documentazione specifico sulla fonte di dati per i dettagli sulla fuga di valore durante l'interpolazione. 

 Per informazioni sulla sintassi avanzata per sovrascrivere la formattazione predefinita dell'origine dati, consulta. [Opzioni avanzate di formato variabile](#advanced-variable-format-options) 

## Altre opzioni variabili
<a name="other-variable-options"></a>

Questa sezione spiega le altre opzioni variabili disponibili.

### Inserimento delle opzioni di selezione delle variabili
<a name="enter-variable-selection-options"></a>

È possibile utilizzare **le opzioni di selezione** per gestire le selezioni di opzioni variabili. Tutte le opzioni di selezione sono opzionali e sono disattivate per impostazione predefinita. 

#### Multi-value
<a name="multi-value"></a>

Se attivi questa opzione, l'elenco a discesa delle variabili supporta la selezione di più opzioni contemporaneamente. Per ulteriori informazioni, consulta [Formattazione di variabili multivalore](#formatting-multi-value-variables). 

#### Opzione Includi tutto
<a name="include-all-option"></a>

L'area di lavoro Grafana aggiunge un'`All`opzione all'elenco a discesa delle variabili. Se un utente finale seleziona questa opzione, vengono selezionate tutte le opzioni variabili. 

#### Personalizza tutti i valori
<a name="custom-all-value"></a>

Questa opzione è visibile solo se è selezionata l'**opzione Includi tutto**. 

Per definire il valore dell'`All`opzione, inserisci la sintassi regex, glob o Lucene nel campo **Custom** all value. 

Per impostazione predefinita, il `All` valore include tutte le opzioni nell'espressione combinata. Questa operazione può diventare molto lunga e causare problemi di prestazioni. A volte può essere meglio specificare un valore all personalizzato, ad esempio un'espressione regolare di tipo wild card. 

Quando utilizzi la sintassi personalizzata regex, glob o Lucene nell'opzione **Custom all value**, non viene mai ignorata, quindi devi considerare quale sia un valore valido per la tua origine dati. 

### Opzioni avanzate di formato variabile
<a name="advanced-variable-format-options"></a>

 La formattazione dell'interpolazione delle variabili dipende dall'origine dei dati, ma ci sono alcune situazioni in cui potresti voler modificare la formattazione predefinita. 

 Ad esempio, l'impostazione predefinita per l'origine dati MySQL consiste nell'unire più valori separati da virgole da virgole:. `'server01','server02'` In alcuni casi, potresti voler avere una stringa separata da virgole senza virgolette:. `server01,server02` Per fare ciò, usa le seguenti opzioni avanzate di formattazione delle variabili. 

#### Sintassi generale
<a name="general-syntax"></a>

 Sintassi: `${var_name:option}` 

Se viene specificata un'opzione di formattazione non valida, `glob` è l'opzione predefinita o di riserva. 

#### CSV
<a name="variables-csv"></a>

 Formatta le variabili con più valori come una stringa separata da virgole. 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:csv}'
Interpolation result: 'test1,test2'
```

#### Distribuito - OpenTSDB
<a name="distributed---opentsdb"></a>

 Formatta le variabili con più valori in formato personalizzato per OpenTSDB. 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:distributed}'
Interpolation result: 'test1,servers=test2'
```

#### Virgolette doppie
<a name="doublequote"></a>

 Formatta le variabili a valore singolo e multivalore in una stringa separata da virgole, scappa `"` in ogni valore da e cita ogni valore con`\"`. `"` 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:doublequote}'
Interpolation result: '"test1","test2"'
```

#### Glob - Grafite
<a name="glob---graphite"></a>

 Formatta le variabili con più valori in un glob (per le query Graphite). 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:glob}'
Interpolation result: '{test1,test2}'
```

#### JSON
<a name="json"></a>

 Formatta le variabili con più valori come una stringa separata da virgole. 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:json}'
Interpolation result: '["test1", "test2"]'
```

#### Lucene - OpenSearch
<a name="lucene---opensearch"></a>

 Formatta le variabili con più valori in formato Lucene per. OpenSearch 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:lucene}'
Interpolation result: '("test1" OR "test2")'
```

#### Codice percentuale
<a name="percentencode"></a>

 Formatta le variabili a valore singolo e multivalore da utilizzare nei parametri URL. 

```
servers = ['foo()bar BAZ', 'test2']
String to interpolate: '${servers:percentencode}'
Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'
```

#### Pipeline
<a name="pipe"></a>

 Formatta le variabili con più valori in una stringa separata da un tubo. 

```
servers = ['test1.', 'test2']
String to interpolate: '${servers:pipe}'
Interpolation result: 'test1.|test2'
```

#### Raw
<a name="raw"></a>

 Disattiva la formattazione specifica dell'origine dati, ad esempio le virgolette singole in una query SQL. 

```
servers = ['test1.', 'test2']
String to interpolate: '${var_name:raw}'
Interpolation result: '{test.1,test2}'
```

#### Espressione regolare
<a name="regex"></a>

 Formatta le variabili con più valori in una stringa regex. 

```
servers = ['test1.', 'test2']
String to interpolate: '${servers:regex}'
Interpolation result: '(test1\.|test2)'
```

#### Citazione singola
<a name="singlequote"></a>

 Formatta le variabili a valore singolo e multiplo in una stringa separata da virgole, scade `'` in ogni valore per e cita ogni valore con. `\'` `'` 

```
servers = ['test1', 'test2']
String to interpolate: '${servers:singlequote}'
Interpolation result: "'test1','test2'"
```

#### Sqlstring
<a name="sqlstring"></a>

 Formatta le variabili a valore singolo e multivalore in una stringa separata da virgole, scade `'` in ogni valore per e cita ogni valore con. `''` `'` 

```
servers = ["test'1", "test2"]
String to interpolate: '${servers:sqlstring}'
Interpolation result: "'test''1','test2'"
```

#### Testo
<a name="text"></a>

 Formatta le variabili a valore singolo e multivalore nella loro rappresentazione testuale. Per una singola variabile, restituirà solo la rappresentazione del testo. Per le variabili multivalore, restituirà la rappresentazione del testo combinata con`+`. 

```
servers = ["test1", "test2"]
String to interpolate: '${servers:text}'
Interpolation result: "test1 + test2"
```

### Formattazione di variabili multivalore
<a name="formatting-multi-value-variables"></a>

L'interpolazione di una variabile con più valori selezionati è complicata in quanto non è semplice formattare i valori multipli in una stringa valida nel contesto dato in cui viene utilizzata la variabile. Grafana cerca di risolvere questo problema abilitando ogni plug-in di origine dati a comunicare al motore di interpolazione dei modelli quale formato utilizzare per più valori. 

**Nota**  
 L'opzione **Personalizza tutti i valori** sulla variabile deve essere vuota affinché Grafana formatti tutti i valori in un'unica stringa. Se lo lasci vuoto, la Grafana concatena (somma) tutti i valori della query. `value1,value2,value3`Qualcosa del genere. Se viene utilizzato un `all` valore personalizzato, il valore sarà invece qualcosa come `*` o`all`. 

#### Multi-value variabili con una fonte di dati Graphite
<a name="multi-value-variables-with-a-graphite-data-source"></a>

 Graphite utilizza espressioni globulari. **Una variabile con più valori, in questo caso, verrebbe interpolata come `{host1,host2,host3}` se il valore della variabile corrente fosse *host1, host2 e host3*.** 

#### Multi-value variabili con un'origine dati Prometheus o InfluxDB
<a name="multi-value-variables-with-a-prometheus-or-influxdb-data-source"></a>

 InfluxDB e Prometheus utilizzano espressioni regex, quindi la stessa variabile verrebbe interpolata come. `(host1|host2|host3)` Ogni valore verrebbe inoltre escluso dall'espressione regolare. In caso contrario, un valore con un carattere di controllo regex interromperebbe l'espressione regex. 

#### Multi-value variabili con una fonte di dati elastica
<a name="multi-value-variables-with-an-elastic-data-source"></a>

Amazon OpenSearch utilizza la sintassi delle query Lucene, quindi la stessa variabile verrebbe formattata come. `("host1" OR "host2" OR "host3")` In questo caso, è necessario escludere ogni valore in modo che il valore contenga solo le parole di controllo e le virgolette di Lucene. 

#### Risoluzione dei problemi di formattazione
<a name="formatting-troubles"></a>

 L'escape e la formattazione automatici possono causare problemi. Può essere difficile comprendere la logica alla base di un problema, specialmente per InfluxDB e Prometheus, dove l'uso della sintassi regex richiede che la variabile venga utilizzata nel contesto dell'operatore regex. 

 Se non vuoi che Grafana esegua questa operazione di escape e formattazione automatica delle espressioni regolari, devi eseguire una delle seguenti operazioni:
+ Disattivate le opzioni dell'opzione **Multi-value****Includi** tutto.
+ Utilizzate il [formato variabile non elaborato] ({{< relref «advanced-variable-format-options.md \#raw" >}}).

### Filtraggio delle variabili con regex
<a name="filter-variables-with-regex"></a>

 Utilizzando l'opzione Regex Query, è possibile filtrare l'elenco di opzioni restituite dalla variabile query o modificare le opzioni restituite. 

Questa sezione mostra come utilizzare regex per filtrare e modificare i valori nell'elenco a discesa delle variabili. 

 Utilizzando l'opzione Regex Query, si filtra l'elenco di opzioni restituite dalla query Variable o si modificano le opzioni restituite. Per ulteriori informazioni, vedete [Espressioni regolari](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions). 

 Esempi di filtraggio in base al seguente elenco di opzioni: 

```
backend_01
backend_02
backend_03
backend_04
```

#### Filtraggio in modo che vengano restituite solo le opzioni che terminano con `01` o `02`
<a name="filter-so-that-only-the-options-that-end-with-01-or-02-are-returned"></a>

 Regex: 

```
/.*[01|02]/
```

 Risultato: 

```
backend_01
backend_02
```

#### Filtraggio e modifica delle opzioni utilizzando un gruppo di acquisizione regex per restituire parte del testo
<a name="filter-and-modify-the-options-using-a-regex-capture-group-to-return-part-of-the-text"></a>

 Regex: 

```
/.*(01|02)/
```

 Risultato: 

```
01
02
```

#### Filtraggio e modifica - Esempio di Prometheus
<a name="filter-and-modify---prometheus-example"></a>

 Elenco di opzioni: 

```
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000
up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000
up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
```

 Regex: 

```
/.*instance="([^"]*).*/
```

 Risultato: 

```
demo.robustperception.io:9090
demo.robustperception.io:9093
demo.robustperception.io:9100
```

#### Filtraggio e modifica utilizzando testo denominato e gruppi di acquisizione di valori
<a name="filter-and-modify-using-named-text-and-value-capture-groups"></a>

Utilizzando gruppi di acquisizione denominati, è possibile acquisire parti separate di «testo» e «valore» dalle opzioni restituite dalla query variabile. L'elenco a discesa delle variabili può contenere un nome descrittivo per ogni valore che può essere selezionato. 

 Ad esempio, quando si esegue una query sulla metrica `node_hwmon_chip_names` Prometheus, è più intuitivo del valore. `chip_name` `chip` Inizia con il seguente risultato della query variabile. 

```
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1
```

 Passalo attraverso la seguente Regex. 

```
/chip_name="(?<text>[^"]+)|chip="(?<value>[^"]+)/g
```

 Viene prodotto il seguente elenco a discesa. 

```
Display Name          Value
------------          -------------------------
enp216s0f0np0         0000:d7:00_0_0000:d8:00_0
enp216s0f0np1         0000:d7:00_0_0000:d8:00_1
enp216s0f0np2         0000:d7:00_0_0000:d8:00_2
enp216s0f0np3         0000:d7:00_0_0000:d8:00_3
```

 **Nota:** sono supportati solo `text` i nomi dei gruppi di `value` acquisizione. 

### Pannelli o righe ripetuti
<a name="repeat-panels-or-rows"></a>

 Puoi creare dashboard dinamici utilizzando variabili *modello*. Tutte le variabili delle query si espandono fino al valore corrente della variabile prima che la query venga inviata al database. Con le variabili, puoi riutilizzare un'unica dashboard per tutti i tuoi servizi. 

 Le variabili del modello possono essere molto utili per modificare dinamicamente le query su un'intera dashboard. *Se vuoi che Grafana crei dinamicamente nuovi pannelli o righe in base ai valori che hai selezionato, puoi usare la funzione Ripeti.* 

#### Pannelli ripetuti
<a name="repeating-panels"></a>

 Se hai una variabile con `Multi-value` o `Include all value` opzioni attivate, puoi scegliere un pannello e fare in modo che Grafana ripeta quel pannello per ogni valore selezionato. Puoi trovare la funzione *Ripeti* nella *scheda Generale* in modalità di modifica del pannello. 

 `direction`Controlla come sono disposti i pannelli. 

Se si sceglie`horizontal`, i pannelli vengono disposti uno accanto all'altro. Grafana regola automaticamente la larghezza di ogni pannello ripetuto in modo da riempire l'intera riga. Attualmente, non è possibile mescolare altri pannelli su una riga con un pannello ripetuto. 

 Imposta `Max per row` per indicare a Grafana quanti pannelli per riga desideri al massimo. *Il valore predefinito è 4.* 

Se si sceglie`vertical`, i pannelli sono disposti dall'alto verso il basso in una colonna. La larghezza dei pannelli ripetuti è la stessa del primo pannello (il modello originale) che viene ripetuto. 

Apportate modifiche solo al primo pannello (il modello originale). Affinché le modifiche abbiano effetto su tutti i pannelli, devi avviare una ricostruzione dinamica della dashboard. Puoi farlo modificando il valore della variabile (ovvero la base per la ripetizione) o ricaricando la dashboard. 

**Nota**  
I pannelli ripetuti richiedono che le variabili abbiano uno o più elementi selezionati. Non è possibile ripetere un pannello zero volte per nasconderlo.

#### Righe ripetute
<a name="repeating-rows"></a>

 Come visto sopra, con i pannelli, puoi anche ripetere le righe se hai delle variabili impostate con `Multi-value` o un'opzione di `Include all value` selezione. 

 Per attivare questa funzione, devi prima aggiungere una nuova *riga* utilizzando il menu *Aggiungi pannello*. Quindi fai una pausa sul titolo della riga e scegli il pulsante a forma di ingranaggio per accedere al pannello di `Row Options` configurazione. È quindi possibile selezionare la variabile per la quale si desidera ripetere la riga. 

 È consigliabile utilizzare una variabile anche nel titolo della riga. 