Variabili di ambiente
Panoramica
Le variabili d'ambiente consentono di configurare i componenti di Zabbix senza hardcodare 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 diverse configurazioni.
Nel caso più semplice, impostando il valore del parametro di configurazione DebugLevel del server Zabbix su una variabile d'ambiente, è 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 di ambiente, che non viene specificata all'avvio del componente, viene utilizzato il valore predefinito del parametro.
- Quando si usano comandi runtime (ad esempio, per aumentare il livello di log dell'agent), è necessario specificare tutte le variabili di ambiente precedentemente utilizzate. Questo perché i componenti Zabbix usano il proprio file di configurazione per eseguire i comandi runtime; se le variabili di ambiente vengono omesse, verranno utilizzati i valori predefiniti dei parametri di configurazione. Vedere Esempi.
- Il comando runtime
userparameter_reloadcomando runtime non supporta il ricaricamento delle variabili di ambiente. Durante il ricaricamento, le variabili vengono ignorate e vengono ricaricati solo i parametri con valori normali. - Le variabili di ambiente correnti del processo, utilizzate nei file di configurazione, vengono cancellate dopo l'avvio del componente Zabbix. Questo garantisce che i processi figlio (ad esempio, script remoti eseguiti da Zabbix) non possano accedere a queste variabili. Tuttavia, si noti che le variabili iniziali del processo possono ancora essere recuperate (ad esempio, tramite il file
/proc/<PID>/environ).
Sintassi
Le variabili di ambiente devono usare la seguente sintassi: ${alphanumerics/underscores}.
Il nome della variabile può includere solo lettere (a-z, A-Z), underscore (_) 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 saranno trattate come valori normali, il che può generare errori.
Sintassi corretta delle variabili:
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
Sintassi errata delle variabili:
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
In Windows, i nomi delle variabili di ambiente non fanno distinzione tra maiuscole e minuscole.
Esempi
I seguenti esempi mostrano come configurare e utilizzare le variabili di ambiente con i componenti di Zabbix.
Esempio 1: Configurazione e test di Zabbix agent
1. Impostare le variabili di ambiente nel file di configurazione di 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 agent con le variabili di ambiente:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
Quando si utilizzano comandi a runtime (ad esempio, per aumentare il livello di log di agent), è necessario specificare tutte le variabili di 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é agent usa il proprio file di configurazione per eseguire i comandi a runtime; se le variabili di ambiente vengono omesse, verranno utilizzati i valori predefiniti dei parametri di configurazione.
In alternativa, dopo aver impostato le variabili di ambiente nel file di configurazione di agent, è possibile renderle disponibili ai processi (ad esempio, usando 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 di Zabbix (ad esempio, Zabbix agent), puoi definire i parametri di configurazione usando variabili di ambiente e poi avviare il container con tali variabili.
1. Durante la preparazione dell'immagine, imposta le variabili di ambiente nel file di configurazione di agent:
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
2. Dopo aver creato l'immagine del container, avvia il container di agent (ad esempio, Docker) con le variabili di 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 usi i comandi di runtime (ad esempio, per aumentare il livello di log di agent), accedi alla shell del container ed esegui il comando di runtime:
docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase
Il comando di runtime userparameter_reload non supporta il ricaricamento delle variabili di ambiente.
Durante il ricaricamento, le variabili vengono ignorate e vengono ricaricati solo i parametri con valori normali.