5 Installation aus Containern
Übersicht
Diese Seite beschreibt, wie Zabbix mit Docker oder Docker Compose bereitgestellt wird.
Docker Compose ist der schnellste Weg, Zabbix bereitzustellen. Es liest eine Konfigurationsdatei und startet automatisch alle Container, aus denen ein vollständiges Zabbix-Setup besteht, in der richtigen Reihenfolge.
Docker (manuelle Bereitstellung) erreicht dasselbe Ergebnis, indem jede Komponente Schritt für Schritt bereitgestellt wird.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Docker (1.12.0 oder höher) auf Ihrem System installiert ist. Falls nicht, folgen Sie der Docker-Installationsanleitung. Für die Bereitstellung mit Docker Compose ist außerdem Docker Compose (2.24.0 oder höher) erforderlich.
Einige Zabbix-Komponenten erfordern, dass bestimmte Ports auf dem Host, auf dem Docker ausgeführt wird, geöffnet sind (z. B. 10051/TCP für den Zabbix-Server, 162/UDP für SNMP-Traps).
Eine vollständige Liste der von Zabbix-Komponenten verwendeten Ports finden Sie unter Anforderungen.
Für Zabbix-Server und Agent kann der Standardport durch Festlegen der Umgebungsvariable ZBX_LISTENPORT im jeweiligen Container geändert werden.
Verfügbare Docker-Images
Zabbix stellt für jede Zabbix-Komponente ein Docker-Image bereit, die alle auf Docker Hub veröffentlicht sind. Jedes Image wird verwendet, um einen Container zu erstellen, der diese Komponente ausführt.
| Zabbix-Komponente | Docker-Image |
|---|---|
| Agent | zabbix/zabbix-agent |
| Agent 2 | zabbix/zabbix-agent2 |
| Server (MySQL) | zabbix/zabbix-server-mysql |
| Server (PostgreSQL) | zabbix/zabbix-server-pgsql |
| Web-Frontend (Apache + MySQL) | zabbix/zabbix-web-apache-mysql |
| Web-Frontend (Apache + PostgreSQL) | zabbix/zabbix-web-apache-pgsql |
| Web-Frontend (Nginx + MySQL) | zabbix/zabbix-web-nginx-mysql |
| Web-Frontend (Nginx + PostgreSQL) | zabbix/zabbix-web-nginx-pgsql |
| Proxy (SQLite3) | zabbix/zabbix-proxy-sqlite3 |
| Proxy (MySQL) | zabbix/zabbix-proxy-mysql |
| Java gateway | zabbix/zabbix-java-gateway |
| Web service | zabbix/zabbix-web-service |
| SNMP traps | zabbix/zabbix-snmptraps |
Um SNMP traps zu verwenden, muss der SNMP-traps-Container ein Volume mit dem Zabbix-Server- oder Proxy-Container gemeinsam nutzen (siehe how to use this image auf Docker Hub und das Beispiel unten).
Alle Zabbix-Komponenten-Images auf Docker Hub basieren auf den neuesten Hauptversionen der unterstützten Betriebssysteme. Diese Images werden automatisch neu erstellt, wenn die zugrunde liegenden OS-Images aktualisiert werden.
Image-Tags
Jedes Image unterstützt Tags zur Auswahl des Basisbetriebssystems und der Zabbix-Version:
zabbix/<image>:<os>-<version>
Unterstützte <os>-Werte:
alpine- Alpine Linuxubuntu- Ubuntucentos- CentOS Streamol- Oracle Linuxltsc2022- Windows 11 LTSC 2022 (nur Zabbix Agent)
Unterstützte <version>-Werte:
latest- Neueste stabile Zabbix-Version auf Alpine Linux<os>-latest- Neueste stabile Zabbix-Version auf dem ausgewählten Betriebssystem<os>-trunk- Neuester Entwicklungs- (Nightly-) Build auf dem ausgewählten Betriebssystem<os>-X.X-latest- Neueste Zabbix-Nebenversion einer bestimmten Zabbix-Hauptversion auf dem ausgewählten Betriebssystem<os>-X.X.*- Bestimmte Zabbix-Nebenversion auf dem ausgewählten Betriebssystem
Beispiele:
# Neuester stabiler Zabbix Proxy (SQLite3) auf Alpine Linux:
docker pull zabbix/zabbix-proxy-sqlite3:latest
# Neuester stabiler Zabbix Proxy (SQLite3) auf Ubuntu:
docker pull zabbix/zabbix-proxy-sqlite3:ubuntu-latest
# Neuester Entwicklungs- (Nightly-) Build von Zabbix Server (MySQL) auf Ubuntu:
docker pull zabbix/zabbix-server-mysql:ubuntu-trunk
# Neueste 7.4-Nebenversion von Zabbix Server (MySQL) auf Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4-latest
# Version 7.4.1 von Zabbix Server (MySQL) auf Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4.1
Docker Compose
Docker Compose ist der schnellste Weg, Zabbix bereitzustellen. Es liest eine Konfigurationsdatei (Compose-Datei) und übernimmt die gesamte Einrichtung - das Herunterladen von Docker-Images, das Erstellen eines internen Netzwerks zwischen Containern, das Einrichten des Speichers, das Initialisieren der Datenbank und das Starten aller Komponenten in der richtigen Reihenfolge.
Das Repository offizielle Zabbix Dockerfiles stellt sofort verwendbare Docker-Compose-Dateien und ein auf .env basierendes Konfigurationssystem bereit, das verschiedene Betriebssysteme, Datenbank-Backends und die Konfiguration von Zabbix-Komponenten unterstützt.
1. Klonen Sie das Repository, wechseln Sie in das Verzeichnis und schalten Sie auf Version 7.4 um:
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
git checkout 7.4
2. (Optional) Passen Sie die Bereitstellung mit Umgebungsvariablen an. Dieser Schritt kann bei einer Standardinstallation übersprungen werden.
3. Stellen Sie die Standardinstallation bereit - Zabbix Server, Weboberfläche (auf Nginx laufend) und ein Datenbank-Backend (MySQL oder PostgreSQL), wobei jede Komponente in einem eigenen Container unter Alpine Linux ausgeführt wird.
# Mit MySQL als Datenbank:
docker compose -f ./compose.yaml up -d
# Mit PostgreSQL als Datenbank:
docker compose -f ./compose_pgsql.yaml up -d
Nachdem die Container gestartet und betriebsbereit sind (in der Regel innerhalb von 1-3 Minuten), wird der Zabbix Server gestartet und die Weboberfläche ist unter http://localhost verfügbar.
Verwenden Sie docker compose ps, um den Status der Container zu prüfen.
Alle Container (außer dem Container zabbix-docker-server-db-init-1) sollten den Status Up haben.
Wenn bei einem Container Exited angezeigt wird, prüfen Sie die Protokolle auf Fehler mit docker logs -f <container-name>.
Umgebungsvariablen
Das Verhalten von Docker Compose und die Konfiguration von Zabbix-Komponenten können beide über Umgebungsvariablen angepasst werden.
Variablen auf Compose-Ebene (definiert in der .env-Datei) steuern, welche Docker-Images, Ports und Netzwerk-IP-Bereiche verwendet werden.
Sie können diese Variablen inline vor dem docker compose-Befehl verwenden oder die .env-Datei bearbeiten.
Zum Beispiel stellt der folgende Befehl ein vollständiges Zabbix-Setup mit mehreren Containern bereit, das ein auf Ubuntu basierendes Image verwendet (anstelle des standardmäßigen Alpine Linux) und die Weboberfläche über Nginx auf benutzerdefinierten HTTP- (8282) und HTTPS- (8443) Ports bereitstellt:
OS=ubuntu \
ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
ZABBIX_WEB_NGINX_HTTPS_PORT=8443 \
docker compose -f ./compose.yaml up -d
Variablen auf Komponentenebene (definiert in den Dateien env_vars/.env_<component>) steuern die Konfiguration der Zabbix-Komponenten.
Bearbeiten Sie die jeweilige .env_<component>-Datei, bevor Sie den docker compose-Befehl ausführen.
Zum Beispiel können Sie die Anzahl der passiven Poller des Zabbix-Servers und die Cache-Einstellungen anpassen sowie die Zeitzone der Weboberfläche konfigurieren, indem Sie die folgenden Variablen bearbeiten:
# env_vars/.env_srv
ZBX_STARTPOLLERS=20
ZBX_CACHESIZE=64M
ZBX_HISTORYCACHESIZE=32M
# env_vars/.env_web
PHP_TZ=Europe/Paris
Umgebungsvariablen auf Komponentenebene entsprechen Konfigurationsparametern der Zabbix-Komponenten, verwenden jedoch eine andere Namenskonvention (z. B. entspricht ZBX_STARTPOLLERS StartPollers).
Einige Variablen sind Docker-spezifisch, und einige Konfigurationsparameter können nicht geändert werden (z. B. PIDFile und LogType).
Wenn Sie Umgebungsvariablen verwenden, lesen Sie bitte den Abschnitt Environment variables in der Beschreibung des jeweiligen Docker-Images auf Docker Hub.
Volumes
Docker Compose speichert persistente Daten im Verzeichnis zbx_env/, das zusammen mit der Compose-Datei erstellt wird.
Dieses Verzeichnis bewahrt die Daten der Komponenten über Container-Neustarts und Updates hinweg.
Der Inhalt von zbx_env/ ist für das Image jeder Komponente vordefiniert. Zum Beispiel:
zbx_env/etc/- wird vom Zabbix web frontend container verwendetzbx_env/usr/undzbx_env/var/- werden vom Zabbix Server-Container verwendet
Weitere Informationen zu den einzelnen Volumes finden Sie im Abschnitt Allowed volumes in der Beschreibung des Docker-Images jeder Komponente auf Docker Hub.
Makefile
Das Zabbix-Dockerfiles-Repository stellt außerdem eine Makefile als Abkürzung für gängige Docker-Compose-Aufgaben bereit.
Anstelle des vollständigen Befehls docker compose können Sie kürzere make-Befehle verwenden (führen Sie make help aus, um die verfügbaren Optionen anzuzeigen):
# Standardbereitstellung (Zabbix Server, Weboberfläche, MySQL, alles auf Alpine Linux)
make up
# Benutzerdefinierte Bereitstellung (Zabbix Server, Weboberfläche mit benutzerdefinierten Nginx-Ports, PostgreSQL, alles auf Ubuntu)
make up \
OS=ubuntu \
DB=pgsql \
ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
ZABBIX_WEB_NGINX_HTTPS_PORT=8443
Beim Stoppen oder Entfernen von Containern geben Sie immer denselben Datenbanktyp an, der bereitgestellt wurde (z. B. make down DB=pgsql).
Standardmäßig startet make up nur einen minimalen Satz von Diensten (Zabbix Server, Weboberfläche und Datenbank).
Dadurch bleibt die Einrichtung schlank und es werden keine Komponenten gestartet, die möglicherweise nicht benötigt werden.
Um zusätzliche Komponenten einzubeziehen, können Sie die folgenden Compose-Profile verwenden:
# Standardbereitstellung + Zabbix Agent, Java gateway, Webdienst und SNMP-Traps:
make up COMPOSE_PROFILES=full
# COMPOSE_PROFILES=full + Zabbix Proxy (MySQL und SQLite3):
make up COMPOSE_PROFILES=all
Docker (manuelle Bereitstellung)
Verwenden Sie die manuelle Bereitstellung, wenn Sie Zabbix Schritt für Schritt bereitstellen, einzelne Komponenten ausführen, sie in eine vorhandene Umgebung integrieren oder eine alternative Container-Laufzeitumgebung wie Podman verwenden möchten.
Um beispielsweise einen Zabbix Proxy bereitzustellen, führen Sie den folgenden Befehl aus:
docker run --name zabbix-proxy-sqlite3 \
-e ZBX_SERVER_HOST=192.0.2.1 \
-e ZBX_PROXYMODE=0 \
-e ZBX_HOSTNAME=zabbix-proxy-sqlite3 \
-v zabbix-proxy-data:/var/lib/zabbix/db_data \
--init \
-d \
zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest
Dieser Befehl:
-
Ruft das Docker-Image
zabbix/zabbix-proxy-sqlite3:alpine-7.4-latestab. -
Erstellt und startet einen Container
zabbix-proxy-sqlite3, der auf dem Docker-Image basiert (mit den Flags--initund-d). -
Konfiguriert den Zabbix Proxy-Parameter
Serverüber die UmgebungsvariableZBX_SERVER_HOST. Dieser Parameter gibt die IP-Adresse des Zabbix Servers an, von dem der Proxy Konfigurationsdaten abruft und an den er gesammelte Daten sendet. Beachten Sie, dass andere für den Betrieb eines aktiven Proxys erforderliche Variablen Standardwerte verwenden und weggelassen werden können.
Umgebungsvariablen entsprechen Zabbix-Komponenten-Konfigurationsparametern mit einer anderen Benennungskonvention (z. B. entspricht ZBX_SERVER_HOST Server).
Einige Variablen sind Docker-spezifisch, und einige Konfigurationsparameter können nicht geändert werden (z. B. PIDFile und LogType).
Wenn Sie Umgebungsvariablen verwenden, lesen Sie bitte den Abschnitt Environment variables in der Beschreibung des jeweiligen Docker-Images auf Docker Hub.
- Verbindet einen von Docker verwalteten Speicherort (z. B.
/var/lib/docker/volumes/zabbix-proxy-data/) mit dem Verzeichnis/var/lib/zabbixdes Containers, sodass die Daten des Zabbix Proxy dauerhaft gespeichert werden, auch wenn der Container entfernt wird.
Weitere Informationen zu den einzelnen Volumes finden Sie im Abschnitt Allowed volumes in der Beschreibung des jeweiligen Docker-Images auf Docker Hub.
Nachdem Sie den Zabbix Proxy-Container bereitgestellt haben, können Sie in Ihrer Zabbix-Frontend die Proxy hinzufügen und Hosts konfigurieren, die von diesem Proxy überwacht werden sollen.
Die folgenden Beispiele decken drei weitere Bereitstellungsszenarien ab:
- Zabbix Server (MySQL) mit Java gateway
- Zabbix Server (PostgreSQL) mit SNMP-Traps
- Zabbix Server (MySQL) mit Java gateway auf RHEL 8–10
Weitere Beispiele finden Sie in der Beschreibung des jeweiligen Docker-Images auf Docker Hub.
Zabbix-Server (MySQL) mit Java gateway bereitstellen
Dieses Beispiel zeigt, wie ein Zabbix-Server mit einem MySQL-Backend, einem Java gateway für JMX-Monitoring und einer webbasierten Oberfläche auf Nginx-Basis bereitgestellt wird.
1. Erstellen Sie ein dediziertes Docker-Netzwerk, damit alle Container der Zabbix-Komponenten sich gegenseitig über ihren Containernamen erreichen können:
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
2. Starten Sie einen leeren MySQL-Server-Container (ersetzen Sie zabbix_pwd und root_pwd durch starke Passwörter und verwenden Sie diese Werte in den folgenden Schritten):
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
--restart unless-stopped \
-d mysql:8.0-oracle \
--character-set-server=utf8mb4 --collation-server=utf8mb4_bin
3. Verfolgen Sie die MySQL-Protokolle und warten Sie, bis MySQL für Verbindungen bereit ist (mit Ctrl+C beenden Sie die Protokollausgabe):
docker logs -f mysql-server
# ... [Server] /usr/sbin/mysqld: ready for connections. ...
4. Starten Sie einen Zabbix Java gateway-Container:
docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-7.4-latest
5. Aktivieren Sie log_bin_trust_function_creators im MySQL-Server-Container.
Dadurch werden die Sicherheitsbeschränkungen für gespeicherte Funktionen vorübergehend gelockert; die Einstellung wird in späteren Schritten wieder deaktiviert.
So kann der Zabbix-Datenbankbenutzer gespeicherte Funktionen ohne die Berechtigung SUPER erstellen, die MySQL bei aktiviertem Binary Logging benötigt (Standard seit MySQL 8.0).
Führen Sie den folgenden Befehl aus:
docker exec -it mysql-server mysql -u root -p'root_pwd' \
-e "SET GLOBAL log_bin_trust_function_creators = 1;"
6. Starten Sie einen Zabbix-Server-Container und verbinden Sie ihn mit den Containern des Java gateway und des MySQL-Servers:
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
--init \
-d zabbix/zabbix-server-mysql:alpine-7.4-latest
7. Verfolgen Sie die Zabbix-Server-Protokolle und warten Sie, bis der Zabbix-Server das Initialisieren des Datenbankschemas abgeschlossen hat (mit Ctrl+C beenden Sie die Protokollausgabe):
docker logs -f zabbix-server-mysql
# ... [info]: ** Creating 'zabbix' schema in MySQL
# ... [info]: ** Database schema successfully created!
8. Deaktivieren Sie log_bin_trust_function_creators im MySQL-Server-Container.
Dadurch wird die Sicherheitsbeschränkung wieder aktiviert, die Nicht-SUPER-Benutzern das Erstellen gespeicherter Funktionen untersagt.
Führen Sie den folgenden Befehl aus:
docker exec -it mysql-server mysql -u root -p'root_pwd' \
-e "SET GLOBAL log_bin_trust_function_creators = 0;"
9. Starten Sie einen Container für die Zabbix-Weboberfläche und verbinden Sie ihn mit den Containern des Zabbix-Servers und des MySQL-Servers:
docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e PHP_TZ="Europe/Riga" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest
Nachdem die Container gestartet und betriebsbereit sind, wird der Zabbix-Server gestartet und die Weboberfläche ist unter http://localhost verfügbar.
Verwenden Sie docker ps, um den Status der Container zu prüfen.
Alle Container sollten den Status Up haben.
Falls einer Exited anzeigt, prüfen Sie die Protokolle auf Fehler mit docker logs -f <container-name>.
Zabbix-Server (PostgreSQL) mit SNMP-Traps bereitstellen
Dieses Beispiel zeigt, wie ein Zabbix-Server mit einem PostgreSQL-Backend, SNMP-Traps und einer webbasierten Oberfläche auf Nginx-Basis bereitgestellt wird.
1. Erstellen Sie ein dediziertes Docker-Netzwerk, damit alle Container der Zabbix-Komponenten sich gegenseitig über ihren Containernamen erreichen können:
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
2. Starten Sie einen leeren PostgreSQL-Server-Container (ersetzen Sie zabbix_pwd durch ein starkes Passwort und verwenden Sie diesen Wert in den folgenden Schritten):
docker run --name postgres-server -t \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
--restart unless-stopped \
-d postgres:latest
3. Starten Sie einen Zabbix-SNMP-Traps-Container:
docker run --name zabbix-snmptraps -t \
-v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
-v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
--network=zabbix-net \
-p 162:1162/udp \
--restart unless-stopped \
-d zabbix/zabbix-snmptraps:alpine-7.4-latest
4. Starten Sie einen Zabbix-Server-Container und verbinden Sie ihn mit den Containern des PostgreSQL-Servers und der SNMP-Traps:
docker run --name zabbix-server-pgsql -t \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
--network=zabbix-net \
-p 10051:10051 \
--volumes-from zabbix-snmptraps \
--restart unless-stopped \
--init \
-d zabbix/zabbix-server-pgsql:alpine-7.4-latest
5. Verfolgen Sie die Zabbix-Server-Protokolle und warten Sie, bis der Zabbix-Server das Initialisieren des Datenbankschemas abgeschlossen hat (mit Ctrl+C beenden Sie die Protokollausgabe):
docker logs -f zabbix-server-pgsql
# ... [info]: ** Creating 'zabbix' schema in PostgreSQL
# ... [info]: ** Database schema successfully created!
6. Starten Sie einen Container für die Zabbix-Weboberfläche und verbinden Sie ihn mit den Containern des Zabbix-Servers und des PostgreSQL-Servers:
docker run --name zabbix-web-nginx-pgsql -t \
-e ZBX_SERVER_HOST="zabbix-server-pgsql" \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_DB="zabbix" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e PHP_TZ="Europe/Riga" \
--network=zabbix-net \
-p 443:8443 \
-p 80:8080 \
-v /etc/ssl/nginx:/etc/ssl/nginx:ro \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-pgsql:alpine-7.4-latest
Nachdem die Container gestartet und betriebsbereit sind, wird der Zabbix-Server gestartet und die Weboberfläche ist unter http://localhost verfügbar.
Verwenden Sie docker ps, um den Status der Container zu prüfen.
Alle Container sollten den Status Up haben.
Falls einer Exited anzeigt, prüfen Sie die Protokolle auf Fehler mit docker logs -f <container-name>.
Zabbix-Server (MySQL) mit Java gateway auf RHEL 8–10 bereitstellen
Dieses Beispiel zeigt, wie ein Zabbix-Server mit einem MySQL-Backend, einem Java gateway für JMX-Monitoring und einer webbasierten Oberfläche auf Nginx-Basis bereitgestellt wird, alles unter Red Hat Enterprise Linux 8, 9 oder 10.
Unter Red Hat Enterprise Linux ist Podman anstelle von Docker die empfohlene Container-Laufzeitumgebung. Podman funktioniert ähnlich wie Docker, benötigt jedoch keinen im Hintergrund als root laufenden Dienst, was es besser an Red-Hat-Umgebungen anpasst.
1. Erstellen Sie einen neuen Pod mit dem Namen zabbix und freigegebenen Ports für die Zabbix-Weboberfläche und den Zabbix-Server-Trapper:
podman pod create --name zabbix -p 80:8080 -p 10051:10051
2. (Optional) Starten Sie einen Zabbix-Agent-Container im Pod zabbix:
podman run --name zabbix-agent \
-e ZBX_SERVER_HOST="127.0.0.1,localhost" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-agent-74:latest
3. Erstellen Sie auf dem RHEL-Host ein Verzeichnis ./mysql/:
mkdir -p ./mysql
4. Starten Sie einen leeren MySQL-Server-Container (ersetzen Sie zabbix_pwd und root_pwd durch starke Passwörter und verwenden Sie diese Werte in den folgenden Schritten):
podman run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v ./mysql/:/var/lib/mysql/:Z \
--restart=always \
--pod=zabbix \
-d mysql:8.0 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_bin
5. Verfolgen Sie die MySQL-Protokolle und warten Sie, bis MySQL für Verbindungen bereit ist (mit Ctrl+C beenden Sie die Protokollausgabe):
podman logs -f mysql-server
# ... [Server] /usr/sbin/mysqld: ready for connections. ...
6. Starten Sie einen Zabbix Java gateway-Container:
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-74
7. Aktivieren Sie log_bin_trust_function_creators im MySQL-Server-Container.
Dadurch werden die Sicherheitsbeschränkungen für gespeicherte Funktionen vorübergehend gelockert; die Einstellung wird in späteren Schritten wieder deaktiviert.
So kann der Zabbix-Datenbankbenutzer gespeicherte Funktionen ohne die Berechtigung SUPER erstellen, die MySQL bei aktiviertem Binary Logging benötigt (Standard seit MySQL 8.0).
Führen Sie den folgenden Befehl aus:
podman exec -it mysql-server mysql -u root -p'root_pwd' \
-e "SET GLOBAL log_bin_trust_function_creators = 1;"
8. Starten Sie einen Zabbix-Server-Container und verbinden Sie ihn mit den Containern des Java gateway und des MySQL-Servers:
podman run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e ZBX_JAVAGATEWAY="127.0.0.1" \
--restart=always \
--init \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-server-mysql-74
9. Verfolgen Sie die Zabbix-Server-Protokolle und warten Sie, bis der Zabbix-Server das Initialisieren des Datenbankschemas abgeschlossen hat (mit Ctrl+C beenden Sie die Protokollausgabe):
podman logs -f zabbix-server-mysql
# ... [info]: ** Creating 'zabbix' schema in MySQL
# ... [info]: ** Database schema successfully created!
10. Deaktivieren Sie log_bin_trust_function_creators im MySQL-Server-Container.
Dadurch wird die Sicherheitsbeschränkung wieder aktiviert, die Nicht-SUPER-Benutzern das Erstellen gespeicherter Funktionen untersagt.
Führen Sie den folgenden Befehl aus:
podman exec -it mysql-server mysql -u root -p'root_pwd' \
-e "SET GLOBAL log_bin_trust_function_creators = 0;"
11. Starten Sie einen Container für die Zabbix-Weboberfläche und verbinden Sie ihn mit den Containern des Zabbix-Servers und des MySQL-Servers:
podman run --name zabbix-web-mysql -t \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e PHP_TZ="Europe/Riga" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-web-mysql-74
Der Pod zabbix stellt den Port 80/TCP (HTTP) vom Container zabbix-web-mysql auf dem Hostsystem über 8080/TCP bereit.
Nachdem die Container gestartet und betriebsbereit sind, wird der Zabbix-Server gestartet und die Weboberfläche ist unter http://localhost verfügbar.
Verwenden Sie docker ps, um den Status der Container zu prüfen.
Alle Container sollten den Status Up haben.
Falls einer Exited anzeigt, prüfen Sie die Protokolle auf Fehler mit docker logs -f <container-name>.