Variables d'environnement

Vue d'ensemble

Les variables d'environnement permettent de configurer les composants Zabbix sans coder en dur les valeurs dans les fichiers de configuration. Cela facilite la gestion des configurations dans des environnements dynamiques, tels que Docker, où des variables peuvent être transmises au moment de l'exécution afin d'adapter le système à différentes configurations.

Dans le cas le plus simple, en définissant la valeur du paramètre de configuration DebugLevel du serveur Zabbix sur une variable d'environnement, vous pouvez ensuite l'utiliser pour configurer le serveur au démarrage :

# Fichier de configuration du serveur Zabbix :
DebugLevel=${NEW_DEBUG_LEVEL}

# Démarrage du serveur Zabbix :
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server

Les variables d'environnement sont prises en charge par les composants Zabbix suivants :

Notes importantes

  • Lorsqu'un paramètre de configuration est défini sur une variable d'environnement, qui n'est pas spécifiée lors de l'exécution du composant, la valeur par défaut du paramètre est utilisée.
  • Lors de l'utilisation de commandes d'exécution (par exemple, pour augmenter le niveau de journalisation de l'agent), toutes les variables d'environnement précédemment utilisées doivent être spécifiées. En effet, les composants Zabbix utilisent leur fichier de configuration pour exécuter les commandes d'exécution ; si des variables d'environnement sont omises, les valeurs par défaut des paramètres de configuration seront utilisées. Voir Exemples.
  • La commande d'exécution userparameter_reload commande d'exécution ne prend pas en charge le rechargement des variables d'environnement. Lors du rechargement, les variables sont ignorées, et seuls les paramètres avec des valeurs normales sont rechargés.
  • Les variables d'environnement actuelles du processus, qui ont été utilisées dans les fichiers de configuration, sont effacées après le démarrage du composant Zabbix. Cela garantit que les processus enfants (par exemple, les scripts distants exécutés par Zabbix) ne peuvent pas accéder à ces variables. Toutefois, notez que les variables initiales du processus peuvent toujours être récupérées (par exemple, via le fichier /proc/<PID>/environ).

Syntaxe

Les variables d'environnement doivent utiliser la syntaxe suivante : ${alphanumerics/underscores}.

Le nom de la variable peut uniquement inclure des lettres (a-z, A-Z), des underscores (_), et des chiffres (0-9), et ne doit pas commencer par un chiffre.

Les variables qui ne correspondent pas à la syntaxe requise ou qui sont combinées avec une valeur normale seront traitées comme des valeurs normales, ce qui peut provoquer des erreurs.

Syntaxe correcte des variables :

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

Syntaxe incorrecte des variables :

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

Sous Windows, les noms des variables d'environnement ne sont pas sensibles à la casse.

Exemples

Les exemples suivants montrent comment configurer et utiliser des variables d'environnement avec les composants Zabbix.

Exemple 1: Configuration et test de l'agent Zabbix

1. Définissez les variables d'environnement dans le fichier de configuration de l'agent :

Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}

2. Testez le fichier de configuration :

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

3. Démarrez l'agent avec les variables d'environnement :

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

Lors de l'utilisation de commandes d'exécution (par exemple, pour augmenter le niveau de journalisation de l'agent), toutes les variables d'environnement précédemment utilisées doivent être spécifiées :

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

En effet, l'agent utilise son fichier de configuration pour exécuter les commandes d'exécution ; si les variables d'environnement sont omises, les valeurs par défaut des paramètres de configuration seront utilisées.

Sinon, après avoir défini les variables d'environnement dans le fichier de configuration de l'agent, vous pouvez les rendre disponibles aux processus (par exemple, en utilisant la commande export). Cela réduit le risque de comportement inattendu dû à des variables manquantes ou mal définies.

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
Exemple 2 : Configuration de Zabbix agent pour un conteneur

Si vous créez et configurez votre propre image personnalisée pour les composants Zabbix (par exemple, Zabbix agent), vous pouvez définir des paramètres de configuration à l'aide de variables d'environnement, puis démarrer le conteneur avec ces variables.

1. Lors de la préparation de l'image, définissez les variables d'environnement dans le fichier de configuration de l'agent :

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

2. Après avoir construit l'image du conteneur, démarrez le conteneur de l'agent (par exemple, Docker) avec des variables d'environnement :

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. Lors de l'utilisation de commandes d'exécution (par exemple, pour augmenter le niveau de journalisation de l'agent), accédez au shell du conteneur et exécutez la commande d'exécution :

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

La commande d'exécution userparameter_reload ne prend pas en charge le rechargement des variables d'environnement. Lors du rechargement, les variables sont ignorées, et seuls les paramètres avec des valeurs normales sont rechargés.