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:

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_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).

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.