10 Umgebungsvariablen

Übersicht

Umgebungsvariablen ermöglichen die Konfiguration von Zabbix-Komponenten, ohne Werte fest in Konfigurationsdateien zu hinterlegen. Dadurch lassen sich Konfigurationen in dynamischen Umgebungen wie Docker einfach verwalten, in denen Variablen zur Laufzeit übergeben werden können, um unterschiedliche Setups anzupassen.

Im einfachsten Fall können Sie den Wert des Konfigurationsparameters DebugLevel des Zabbix-Servers auf eine Umgebungsvariable setzen und diese dann verwenden, um den Server beim Start zu konfigurieren:

# Zabbix-Server-Konfigurationsdatei:
DebugLevel=${NEW_DEBUG_LEVEL}

# Starten des Zabbix-Servers:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server

Umgebungsvariablen werden von den folgenden Zabbix-Komponenten unterstützt:

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. zum Erhöhen des Agent-Protokollierungsgrads) 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_reload unterstützt das Neuladen von Umgebungsvariablen nicht. Während des Neuladens werden Variablen ignoriert, und nur Parameter mit regulären Werten werden neu geladen.
  • Die aktuellen Umgebungsvariablen des Prozesses, die in Konfigurationsdateien verwendet wurden, werden gelöscht, nachdem die Zabbix-Komponente gestartet wurde. Dadurch wird sichergestellt, dass untergeordnete Prozesse (z. B. von Zabbix ausgeführte Remote-Skripte) nicht auf diese Variablen zugreifen können. Beachten Sie jedoch, dass die anfänglichen Variablen des Prozesses 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 wird bei Namen von Umgebungsvariablen die Groß-/Kleinschreibung nicht beachtet.

Beispiele

Die folgenden Beispiele zeigen, wie Sie Umgebungsvariablen mit Zabbix-Komponenten konfigurieren und verwenden können.

Beispiel 1: Konfigurieren und Testen des Zabbix-Agenten

1. Setzen Sie Umgebungsvariablen in der Konfigurationsdatei des Agenten:

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 Agenten mit Umgebungsvariablen:

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

Bei der Verwendung von runtime commands (z.B. um die Protokollierungsstufe des Agenten 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, nachdem Sie Umgebungsvariablen in der Konfigurationsdatei des Agenten gesetzt haben, diese den Prozessen zur Verfügung stellen (z. B. mit dem Befehl export). Dadurch wird das Risiko eines 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: Konfigurieren des Zabbix-Agenten 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 mit Hilfe von Umgebungsvariablen definieren und dann den Container mit diesen Variablen starten.

1. Setzen Sie bei der Erstellung des Images Umgebungsvariablen in der Konfigurationsdatei des Agenten:

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

2. Nach der Erstellung des Container-Images starten Sie den Agenten-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 commands verwenden (z. B. um die Protokollierungsstufe des Agenten zu erhöhen), rufen Sie die Container-Shell auf und führen Sie den Laufzeitbefehl:

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

Der Laufzeitbefehl userparameter_reload unterstützt nicht das Nachladen von Umgebungsvariablen. Während des Neuladens werden Variablen ignoriert, und nur Parameter mit regulären Werten werden neu geladen.