Umgebungsvariablen
Übersicht
Umgebungsvariablen ermöglichen die Konfiguration von Zabbix-Komponenten, ohne Werte in Konfigurationsdateien fest zu kodieren. Dadurch lassen sich Konfigurationen in dynamischen Umgebungen wie Docker einfach verwalten, in denen Variablen zur Laufzeit übergeben werden können, um sich an unterschiedliche Setups anzupassen.
Im einfachsten Fall können Sie den Wert des Konfigurationsparameters DebugLevel des Zabbix Server auf eine Umgebungsvariable setzen und diese dann verwenden, um den Server beim Start zu konfigurieren:
# Zabbix Server-Konfigurationsdatei:
DebugLevel=${NEW_DEBUG_LEVEL}
# Zabbix Server starten:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server
Umgebungsvariablen werden von den folgenden Zabbix-Komponenten unterstützt:
- Server
- Proxy
- Agent (UNIX oder Windows)
- Agent 2 (UNIX oder Windows), einschließlich Plugins
- Webdienst
- Zabbix sender (bei Verwendung der Option -c, --config)
Wichtige Hinweise
- Wenn ein Konfigurationsparameter auf eine Umgebungsvariable gesetzt ist, die beim Starten der Komponente nicht angegeben wird, wird der Standardwert des Parameters verwendet.
- Bei der Verwendung von Laufzeitbefehlen (z. B. um den Log-Level des Agent zu erhöhen) müssen alle zuvor verwendeten Umgebungsvariablen angegeben werden. Der Grund dafür ist, dass Zabbix-Komponenten ihre Konfigurationsdatei verwenden, um Laufzeitbefehle auszuführen; wenn Umgebungsvariablen weggelassen werden, werden die Standardwerte der Konfigurationsparameter verwendet. Siehe Beispiele.
- Der Laufzeitbefehl
userparameter_reloadunterstützt das erneute Laden von Umgebungsvariablen nicht. Beim Neuladen werden Variablen ignoriert, und nur Parameter mit regulären Werten werden neu geladen. - Die aktuellen Umgebungsvariablen des Prozesses, die in Konfigurationsdateien verwendet wurden, werden nach dem Start der Zabbix-Komponente gelöscht. Dadurch wird sichergestellt, dass Kindprozesse (z. B. von Zabbix ausgeführte Remote-Skripte) nicht auf diese Variablen zugreifen können. Beachten Sie jedoch, dass die anfänglichen Prozessvariablen weiterhin abgerufen werden können (z. B. über die Datei
/proc/<PID>/environ).
Syntax
Umgebungsvariablen müssen die folgende Syntax verwenden: ${alphanumerics/underscores}.
Der Variablenname darf nur Buchstaben (a-z, A-Z), Unterstriche (_) und Ziffern (0-9) enthalten und darf nicht mit einer Ziffer beginnen.
Variablen, die nicht der erforderlichen Syntax entsprechen oder mit einem regulären Wert kombiniert werden, werden als reguläre Werte behandelt, was zu Fehlern führen kann.
Korrekte Variablensyntax:
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
Falsche Variablensyntax:
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
Unter Windows sind die Namen von Umgebungsvariablen nicht groß-/kleinschreibungsempfindlich.
Beispiele
Die folgenden Beispiele zeigen, wie Umgebungsvariablen mit Zabbix-Komponenten konfiguriert und verwendet werden.
Beispiel 1: Konfigurieren und Testen des Zabbix Agent
1. Legen Sie Umgebungsvariablen in der Konfigurationsdatei des Agent fest:
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
2. Testen Sie die Konfigurationsdatei:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
3. Starten Sie den Agent mit Umgebungsvariablen:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
Wenn Sie Laufzeitbefehle verwenden (z. B. um die Protokollstufe des Agent zu erhöhen), müssen alle zuvor verwendeten Umgebungsvariablen angegeben werden:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
Dies liegt daran, dass der Agent seine Konfigurationsdatei verwendet, um Laufzeitbefehle auszuführen; wenn Umgebungsvariablen weggelassen werden, werden die Standardwerte der Konfigurationsparameter verwendet.
Alternativ können Sie die Umgebungsvariablen nach dem Festlegen in der Konfigurationsdatei des Agent für Prozesse verfügbar machen (z. B. durch Verwendung des Befehls export).
Dadurch wird das Risiko unerwarteten Verhaltens aufgrund fehlender oder falsch gesetzter Variablen verringert.
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
Beispiel 2: Konfiguration des Zabbix Agent für einen Container
Wenn Sie Ihr eigenes benutzerdefiniertes Image für Zabbix-Komponenten (z. B. Zabbix Agent) erstellen und konfigurieren, können Sie Konfigurationsparameter mithilfe von Umgebungsvariablen definieren und den Container anschließend mit diesen Variablen starten.
1. Beim Vorbereiten des Images setzen Sie Umgebungsvariablen in der Konfigurationsdatei des Agent:
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
2. Nachdem Sie das Container-Image erstellt haben, starten Sie den Agent-Container (z. B. Docker) mit Umgebungsvariablen:
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. Wenn Sie Runtime-Befehle verwenden (z. B. um den Protokollierungsgrad des Agent zu erhöhen), greifen Sie auf die Shell des Containers zu und führen Sie den Runtime-Befehl aus:
docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase
Der Runtime-Befehl userparameter_reload unterstützt das Neuladen von Umgebungsvariablen nicht.
Beim Neuladen werden Variablen ignoriert, und nur Parameter mit regulären Werten werden neu geladen.