[comment]: # translation:outdated

[comment]: # ({39c4b215-26ad891b})
# 10 Umgebungsvariablen

[comment]: # ({/39c4b215-26ad891b})

[comment]: # ({5b980b7e-72128caf})
#### Ü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](/manual/appendix/config/zabbix_server#debuglevel) des Zabbix-Servers auf eine Umgebungsvariable setzen und diese dann verwenden, um den Server beim Start zu konfigurieren:

```bash
# 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:

-   [Server](/manual/appendix/config/zabbix_server)
-   [Proxy](/manual/appendix/config/zabbix_proxy)
-   Agent ([UNIX](/manual/appendix/config/zabbix_agentd) oder [Windows](/manual/appendix/config/zabbix_agentd_win))
-   Agent 2 ([UNIX](/manual/appendix/config/zabbix_agent2) oder [Windows](/manual/appendix/config/zabbix_agent2_win)), einschließlich [Plugins](/manual/appendix/config/zabbix_agent2_plugins)
-   [Web-Service](/manual/appendix/config/zabbix_web_service)
-   Zabbix-Sender (bei Verwendung der [-c, --config option](/manpages/zabbix_sender#options))

[comment]: # ({/5b980b7e-72128caf})

[comment]: # ({8d252f3a-7598ffff})
#### 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](/manual/concepts/agent#runtime-control) (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](#examples).
-   Der [Laufzeitbefehl](/manual/concepts/agent#runtime-control) `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`).

[comment]: # ({/8d252f3a-7598ffff})

[comment]: # ({c33cd6ee-5d8ec091})
#### 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:

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

Falsche Variablensyntax:

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

::: noteclassic
Unter Windows wird bei Namen von Umgebungsvariablen die Groß-/Kleinschreibung nicht beachtet.
:::

[comment]: # ({/c33cd6ee-5d8ec091})

[comment]: # ({b319b360-c638a080})
#### Beispiele

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

[comment]: # ({/b319b360-c638a080})

[comment]: # ({78b82896-0382a339})
##### Beispiel 1: Konfigurieren und Testen des Zabbix-Agenten

1\. Setzen Sie Umgebungsvariablen in der Konfigurationsdatei des Agenten:

```ini
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
```

2\. Testen Sie die Konfigurationsdatei:

```bash
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:

```bash
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](/manual/concepts/agent#runtime-control) (z.B. um die Protokollierungsstufe des Agenten zu erhöhen), müssen alle zuvor verwendeten Umgebungsvariablen angegeben werden:

```bash
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.

```bash
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
```

[comment]: # ({/78b82896-0382a339})

[comment]: # ({6e772927-6852ff3f})
##### 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:

```ini
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:

```bash
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](/manual/concepts/agent#runtime-control) verwenden (z. B. um die Protokollierungsstufe des Agenten zu erhöhen), rufen Sie die Container-Shell auf und führen Sie den Laufzeitbefehl:

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

::: noteimportant
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.
:::

[comment]: # ({/6e772927-6852ff3f})
