10 Variables d'environnement

Aperçu

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ù les variables peuvent être transmises au moment de l'exécution pour s'adapter à 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 :

Remarques 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 des 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. Cela s'explique par le fait que les composants Zabbix utilisent leur 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. Voir Exemples.
  • 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 ayant 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 ne peut contenir que des lettres (a-z, A-Z), des traits de soulignement (_), 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 produire 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 des 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

Cela s'explique par le fait que 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 incorrectement 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 l'agent Zabbix pour un conteneur

Si vous créez et configurez votre propre image personnalisée pour des composants Zabbix (par exemple, l'agent Zabbix), 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 créé 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 des 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.