Ob für schnelle Tests oder den dauerhaften produktiven Einsatz: Mit Docker Compose lässt sich Zabbix flexibel, modular und wartbar installieren. In diesem Beitrag zeigen wir, wie Sie Zabbix mit minimalem Aufwand für Testzwecke einrichten oder eine skalierbare, wartungsfreundliche Umgebung für den langfristigen Betrieb schaffen können.
Docker Compose
version: '3.5'
services:
mysql-server:
image: mysql:8.0
networks:
- zbx_net
command:
- mysqld
- --character-set-server=utf8
- --collation-server=utf8_bin
- --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_USER=${MYSQL_USER:-zabbix}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-defaultpassword}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword}
- ZBX_JAVAGATEWAY=${ZBX_JAVAGATEWAY:-zabbix-java-gateway}
ports:
- "3306:3306"
volumes:
- zabbix_mysql_data:/var/lib/mysql:rw
restart: always
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:alpine-latest
networks:
- zbx_net
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "10051:10051"
volumes:
- zabbix_alertscripts:/usr/lib/zabbix/alertscripts:ro
- zabbix_externalscripts:/usr/lib/zabbix/externalscripts:ro
- zabbix_export:/var/lib/zabbix/export:rw
- zabbix_modules:/var/lib/zabbix/modules:ro
- zabbix_enc:/var/lib/zabbix/enc:ro
- zabbix_ssh_keys:/var/lib/zabbix/ssh_keys:ro
- zabbix_mibs:/var/lib/zabbix/mibs:ro
- zabbix_snmptraps:/var/lib/zabbix/snmptraps:rw
environment:
- DB_SERVER_HOST=${DB_SERVER_HOST:-mysql-server}
- MYSQL_DATABASE=${MYSQL_DATABASE:-zabbixdb}
- MYSQL_USER=${MYSQL_USER:-zabbix}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-defaultpassword}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword}
- ZBX_JAVAGATEWAY=${ZBX_JAVAGATEWAY:-zabbix-java-gateway}
depends_on:
- mysql-server
restart: always
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:alpine-latest
networks:
- zbx_net
ports:
- "10053:8080"
- "10054:8443"
volumes:
- zabbix_nginx_ssl:/etc/ssl/nginx:ro
- zabbix_nginx_modules:/usr/share/zabbix/modules/:ro
environment:
- ZBX_SERVER_HOST=${ZBX_SERVER_HOST:-zabbix-server-mysql}
- DB_SERVER_HOST=${DB_SERVER_HOST:-mysql-server}
- MYSQL_DATABASE=${MYSQL_DATABASE:-zabbixdb}
- MYSQL_USER=${MYSQL_USER:-zabbix}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-defaultpassword}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword}
depends_on:
- mysql-server
- zabbix-server-mysql
restart: always
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:alpine-6.0-latest
networks:
- zbx_net
ports:
- "10052:10052"
restart: always
networks:
zbx_net:
driver: bridge
volumes:
zabbix_mysql_data:
zabbix_alertscripts:
zabbix_externalscripts:
zabbix_export:
zabbix_modules:
zabbix_enc:
zabbix_ssh_keys:
zabbix_mibs:
zabbix_snmptraps:
zabbix_nginx_ssl:
zabbix_nginx_modules:
Enviroment
# MySQL configurations
MYSQL_USER=zabbix
MYSQL_PASSWORD=strongpassword123
MYSQL_ROOT_PASSWORD=supersecretrootpassword
# Zabbix configurations
DB_SERVER_HOST=mysql-server
MYSQL_DATABASE=zabbixdb
ZBX_JAVAGATEWAY=zabbix-java-gateway
ZBX_SERVER_HOST=zabbix-server-mysql
Mit dieser docker-compose
Datei setzt du eine komplette Zabbix-Umgebung auf, die aus mehreren Docker-Containern besteht. Hier ist eine Schritt-für-Schritt-Erklärung, was die Konfiguration bewirkt:
- MySQL-Server Container:
- Du nutzt das
mysql:8.0
Image, um die Datenbank für Zabbix bereitzustellen. - Die Netzwerkkonfiguration erfolgt über
zbx_net
, damit alle Dienste miteinander kommunizieren können. - Die MySQL-Datenbank wird mit UTF-8 konfiguriert, um internationale Zeichensätze zu unterstützen.
- Über Umgebungsvariablen wie
MYSQL_USER
undMYSQL_PASSWORD
definierst du den Benutzer, das Passwort sowie das Root-Passwort für die Datenbank. - Die Datenbankdaten werden in einem Volume (
zabbix_mysql_data
) gespeichert, damit die Daten auch nach einem Neustart des Containers erhalten bleiben.
- Du nutzt das
- Zabbix-Server mit MySQL:
- Hier verwendest du das
zabbix/zabbix-server-mysql
Image. Dieser Container ist der Kern deiner Zabbix-Installation. - Über die
extra_hosts
Einträge stellst du sicher, dass der Zabbix-Server im Netzwerk korrekt angesprochen werden kann. - Dieser Service kommuniziert mit dem MySQL-Server, weshalb du die Umgebungsvariablen wie
DB_SERVER_HOST
,MYSQL_DATABASE
usw. definierst. - Außerdem gibt es Volumes, die für spezielle Verzeichnisse wie
alertscripts
,externalscripts
und andere verwendet werden, um benutzerdefinierte Skripte und Erweiterungen flexibel zu nutzen. depends_on
sorgt dafür, dass der MySQL-Server zuerst gestartet wird, bevor der Zabbix-Server initialisiert.
- Hier verwendest du das
- Zabbix Web Frontend (Nginx):
- Das Web-Interface wird über
zabbix/zabbix-web-nginx-mysql
bereitgestellt und macht es dir leicht, Zabbix über einen Browser zu bedienen. - Ports
8080
und8443
sind für den Zugriff via HTTP und HTTPS verfügbar. - Wiederum sind die Umgebungsvariablen für die Datenbankkonfiguration erforderlich, damit das Web-Interface korrekt funktioniert.
- Es gibt ebenfalls Volumes für SSL-Zertifikate (
zabbix_nginx_ssl
) und Module.
- Das Web-Interface wird über
- Zabbix Java Gateway:
- Dieser Container (
zabbix/zabbix-java-gateway
) erweitert Zabbix um die Möglichkeit, Java-Anwendungen zu überwachen. - Du konfigurierst ihn mit dem
zbx_net
Netzwerk und öffnest Port10052
.
- Dieser Container (
- Netzwerk und Volumes:
- Die Dienste sind alle über das Netzwerk
zbx_net
verbunden, was die Kommunikation zwischen den Containern ermöglicht. - Die verschiedenen Volumes sorgen dafür, dass wichtige Daten und Konfigurationen auch bei einem Neustart der Container erhalten bleiben.
- Die Dienste sind alle über das Netzwerk
Schreibe einen Kommentar