[comment]: # translation:outdated

[comment]: # ({39c4b215-26ad891b})
# 10 Variabili d'ambiente

[comment]: # ({/39c4b215-26ad891b})

[comment]: # ({5b980b7e-72128caf})
#### Panoramica

Le variabili d'ambiente consentono di configurare i componenti di Zabbix senza codificare rigidamente i valori nei file di configurazione.
Questo semplifica la gestione delle configurazioni in ambienti dinamici, come Docker, dove le variabili possono essere passate in fase di esecuzione per adattarsi a configurazioni diverse.

Nel caso più semplice, impostando il valore del parametro di configurazione [DebugLevel](/manual/appendix/config/zabbix_server#debuglevel) del server Zabbix su una variabile d'ambiente, è quindi possibile usarla per configurare il server all'avvio:

```bash
# File di configurazione del server Zabbix:
DebugLevel=${NEW_DEBUG_LEVEL}

# Avvio del server Zabbix:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server
```

Le variabili d'ambiente sono supportate dai seguenti componenti di Zabbix:

-   [Server](/manual/appendix/config/zabbix_server)
-   [Proxy](/manual/appendix/config/zabbix_proxy)
-   Agent ([UNIX](/manual/appendix/config/zabbix_agentd) o [Windows](/manual/appendix/config/zabbix_agentd_win))
-   Agent 2 ([UNIX](/manual/appendix/config/zabbix_agent2) o [Windows](/manual/appendix/config/zabbix_agent2_win)), inclusi i [plugin](/manual/appendix/config/zabbix_agent2_plugins)
-   [Web service](/manual/appendix/config/zabbix_web_service)
-   Zabbix sender (quando si utilizza l'opzione [-c, --config](/manpages/zabbix_sender#options))

[comment]: # ({/5b980b7e-72128caf})

[comment]: # ({8d252f3a-7598ffff})
#### Note importanti

-   Quando un parametro di configurazione è impostato su una variabile d'ambiente che non viene specificata all'avvio del componente, viene utilizzato il valore predefinito del parametro.
-   Quando si usano i [comandi runtime](/manual/concepts/agent#runtime-control) (ad esempio, per aumentare il livello di log dell'agent), devono essere specificate tutte le variabili d'ambiente usate in precedenza. Questo perché i componenti Zabbix usano il proprio file di configurazione per eseguire i comandi runtime; se le variabili d'ambiente vengono omesse, verranno usati i valori predefiniti dei parametri di configurazione. Vedere [Esempi](#examples).
-   Il [comando runtime](/manual/concepts/agent#runtime-control) `userparameter_reload` non supporta il ricaricamento delle variabili d'ambiente. Durante il ricaricamento, le variabili vengono ignorate e vengono ricaricati solo i parametri con valori regolari.
-   Le variabili d'ambiente correnti del processo, utilizzate nei file di configurazione, vengono eliminate dopo l'avvio del componente Zabbix. Questo garantisce che i processi figli (ad esempio, gli script remoti eseguiti da Zabbix) non possano accedere a queste variabili. Tuttavia, si noti che le variabili iniziali del processo possono comunque essere recuperate (ad esempio, tramite il file `/proc/<PID>/environ`).

[comment]: # ({/8d252f3a-7598ffff})

[comment]: # ({c33cd6ee-5d8ec091})
#### Sintassi

Le variabili d'ambiente devono utilizzare la seguente sintassi: ${alphanumerics/underscores}.

Il nome della variabile può includere solo lettere (a-z, A-Z), caratteri di sottolineatura (\_), e cifre (0-9), e non deve iniziare con una cifra.

Le variabili che non corrispondono alla sintassi richiesta o che sono combinate con un valore normale verranno trattate come valori normali, il che può produrre errori.

Sintassi corretta delle variabili:

```ini
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
```

Sintassi non corretta delle variabili:

```ini
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
```

::: noteclassic
In Windows, i nomi delle variabili d'ambiente non distinguono tra maiuscole e minuscole.
:::

[comment]: # ({/c33cd6ee-5d8ec091})

[comment]: # ({b319b360-c638a080})
#### Esempi

Gli esempi seguenti mostrano come configurare e utilizzare le variabili d'ambiente con i componenti di Zabbix.

[comment]: # ({/b319b360-c638a080})

[comment]: # ({78b82896-0382a339})
##### Esempio 1: configurazione e test di Zabbix agent

1\. Impostare le variabili d'ambiente nel file di configurazione dell'agent:

```ini
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
```

2\. Testare il file di configurazione:

```bash
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
```

3\. Avviare l'agent con le variabili d'ambiente:

```bash
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
```

Quando si utilizzano i [comandi runtime](/manual/concepts/agent#runtime-control) (ad esempio, per aumentare il livello di log dell'agent), è necessario specificare tutte le variabili d'ambiente usate in precedenza:

```bash
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
```

Questo perché l'agent utilizza il proprio file di configurazione per eseguire i comandi runtime; se le variabili d'ambiente vengono omesse, verranno utilizzati i valori predefiniti dei parametri di configurazione.

In alternativa, dopo aver impostato le variabili d'ambiente nel file di configurazione dell'agent, è possibile renderle disponibili ai processi (ad esempio, utilizzando il comando `export`).
Questo riduce il rischio di comportamenti imprevisti dovuti a variabili mancanti o impostate in modo errato.

```bash
export ZBX_HOSTNAME="New Zabbix agent"
export ServerActive=127.0.0.1
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
```

[comment]: # ({/78b82896-0382a339})

[comment]: # ({6e772927-6852ff3f})
##### Esempio 2: configurazione di Zabbix agent per un container

Se stai creando e configurando una tua immagine personalizzata per i componenti Zabbix (ad esempio, Zabbix agent), puoi definire i parametri di configurazione usando variabili d'ambiente e quindi avviare il container con tali variabili.

1\. Durante la preparazione dell'immagine, imposta le variabili d'ambiente nel file di configurazione dell'agent:

```ini
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
```

2\. Dopo aver creato l'immagine del container, avvia il container dell'agent (ad esempio, Docker) con le variabili d'ambiente:

```bash
docker run --name my-zabbix-agent -e ZBX_HOSTNAME="new-hostname" -e BUFSZ=1000 -e LISTENPORT=20050 -e _UsrPar01="key1,ls" -e _UsrPar02="key2,pwd" --init -d my-zabbix-agent:latest
```

3\. Quando utilizzi i [comandi runtime](/manual/concepts/agent#runtime-control) (ad esempio, per aumentare il livello di log dell'agent), accedi alla shell del container ed esegui il comando runtime:

```bash
docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase
```

::: noteimportant
Il comando runtime `userparameter_reload` non supporta il ricaricamento delle variabili d'ambiente.
Durante il ricaricamento, le variabili vengono ignorate e vengono ricaricati solo i parametri con valori normali.
:::

[comment]: # ({/6e772927-6852ff3f})
