10 Variabili d'ambiente
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 del server Zabbix su una variabile d'ambiente, è quindi possibile usarla per configurare il server all'avvio:
# 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
- Proxy
- Agent (UNIX o Windows)
- Agent 2 (UNIX o Windows), inclusi i plugin
- Web service
- Zabbix sender (quando si utilizza l'opzione -c, --config)
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 (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.
- Il comando runtime
userparameter_reloadnon 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).
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:
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
Sintassi non corretta delle variabili:
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
In Windows, i nomi delle variabili d'ambiente non distinguono tra maiuscole e minuscole.
Esempi
Gli esempi seguenti mostrano come configurare e utilizzare le variabili d'ambiente con i componenti di Zabbix.
Esempio 1: configurazione e test di Zabbix agent
1. Impostare le variabili d'ambiente nel file di configurazione dell'agent:
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
2. Testare il file di configurazione:
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:
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 (ad esempio, per aumentare il livello di log dell'agent), è necessario specificare tutte le variabili d'ambiente usate in precedenza:
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.
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
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:
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:
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 (ad esempio, per aumentare il livello di log dell'agent), accedi alla shell del container ed esegui il comando runtime:
docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase
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.