Zabbix biedt Docker images voor elk Zabbix component als draagbare en zelfstandige containers om de implementatie en updateprocedure te versnellen.
Zabbix componenten worden geleverd met ondersteuning voor MySQL en PostgreSQL databases, evenals ondersteuning voor Apache2 en Nginx webservers. Deze images zijn opgedeeld in verschillende containers.
Vanaf Zabbix 6.0 moeten deterministische triggers worden aangemaakt tijdens de installatie. Als binaire logging is ingeschakeld voor MySQL/MariaDB, is hiervoor supergebruikerstoegang vereist of moet de variabele/configuratieparameter log_bin_trust_function_creators = 1 worden ingesteld. Zie Database creatiescripts voor instructies over hoe deze variabele in te stellen.
Houd er rekening mee dat als u dit vanuit een console uitvoert, de variabele slechts tijdelijk wordt ingesteld en wordt verwijderd wanneer Docker opnieuw wordt gestart. In dat geval moet u uw SQL-service actief houden, alleen de zabbix-server-service stoppen door 'docker compose down zabbix-server' uit te voeren en vervolgens 'docker compose up -d zabbix-server'.
Als alternatief kunt u deze variabele in het configuratiebestand instellen.
Zabbix componenten worden geleverd op basis van Ubuntu, Alpine Linux en CentOS basisimages:
Alle images zijn geconfigureerd om de nieuwste images opnieuw op te bouwen als de basisimages worden bijgewerkt.
Iedereen kan Docker-bestandswijzigingen volgen via de officiële repository van Zabbix op github.com. Je kunt het project forkken of je eigen images maken op basis van de officiële Docker-bestanden.
Alle Zabbix-componenten zijn beschikbaar in de volgende Docker-repositories:
Daarnaast is er ondersteuning voor SNMP-traps. Dit wordt geleverd als een extra repository (zabbix/zabbix-snmptraps) alleen gebaseerd op Ubuntu Trusty. Het kan worden gekoppeld aan Zabbix-server en Zabbix-proxy.
Elke repository van Zabbix-componenten bevat de volgende tags:
latest
- de nieuwste stabiele versie van een Zabbix-component gebaseerd op de Alpine Linux-imagealpine-latest
- de nieuwste stabiele versie van een Zabbix-component gebaseerd op de Alpine Linux-imageubuntu-latest
- de nieuwste stabiele versie van een Zabbix-component gebaseerd op de Ubuntu-imagealpine-6.0-latest
- de nieuwste kleine versie van een Zabbix 6.0-component gebaseerd op de Alpine Linux-imageubuntu-6.0-latest
- de nieuwste kleine versie van een Zabbix 6.0-component gebaseerd op de Ubuntu-imagealpine-6.0.*
- verschillende kleine versies van een Zabbix 6.0-component gebaseerd op de Alpine Linux-image, waarbij *
staat voor de kleine versie van het Zabbix-componentubuntu-6.0.*
- verschillende kleine versies van een Zabbix 6.0-component gebaseerd op de Ubuntu-image, waarbij *
staat voor de kleine versie van het Zabbix-componentAfter downloading the images, start the containers by executing docker run
command followed by additional arguments to specify required environment variables and/or mount points. Some configuration examples are provided below.
Zabbix must not be run as PID1/as an init process in containers.
Alle Zabbix-componentimages bieden omgevingsvariabelen om de configuratie te beheren. Deze omgevingsvariabelen worden vermeld in elke componentrepository. Deze omgevingsvariabelen zijn opties uit de Zabbix-configuratiebestanden, maar met een andere benaming. Bijvoorbeeld, ZBX_LOGSLOWQUERIES
komt overeen met LogSlowQueries
in de configuratiebestanden van Zabbix-server en Zabbix-proxy.
Sommige configuratieopties mogen niet worden gewijzigd. Bijvoorbeeld, PIDFile
en LogType
.
Sommige componenten hebben specifieke omgevingsvariabelen die niet bestaan in de officiële Zabbix-configuratiebestanden:
Variabele | Componenten | Beschrijving |
---|---|---|
DB_SERVER_HOST |
Server Proxy Web-interface |
Deze variabele is het IP-adres of de DNS-naam van de MySQL- of PostgreSQL-server. Standaardwaarde is mysql-server of postgres-server voor respectievelijk MySQL of PostgreSQL. |
DB_SERVER_PORT |
Server Proxy Web-interface |
Deze variabele is de poort van de MySQL- of PostgreSQL-server. Standaardwaarde is '3306' of '5432' respectievelijk. |
MYSQL_USER |
Server Proxy Web-interface |
Gebruiker voor MySQL-database. Standaardwaarde is 'zabbix'. |
MYSQL_PASSWORD |
Server Proxy Web-interface |
Wachtwoord voor MySQL-database. Standaardwaarde is 'zabbix'. |
MYSQL_DATABASE |
Server Proxy Web-interface |
Naam van de Zabbix-database. Standaardwaarde is 'zabbix' voor de Zabbix-server en 'zabbix_proxy' voor de Zabbix-proxy. |
POSTGRES_USER |
Server Web-interface |
Gebruiker voor PostgreSQL-database. Standaardwaarde is 'zabbix'. |
POSTGRES_PASSWORD |
Server Web-interface |
Wachtwoord voor PostgreSQL-database. Standaardwaarde is 'zabbix'. |
POSTGRES_DB |
Server Web-interface |
Naam van de Zabbix-database. Standaardwaarde is 'zabbix'. |
PHP_TZ |
Web-interface | Tijdzone in PHP-formaat. De volledige lijst met ondersteunde tijdzones is beschikbaar op php.net. Standaardwaarde is 'Europe/Riga'. |
ZBX_SERVER_NAME |
Web-interface | Zichtbare naam van de Zabbix-installatie in de rechterbovenhoek van de webinterface. Standaardwaarde is 'Zabbix Docker' |
ZBX_JAVAGATEWAY_ENABLE |
Server Proxy |
Schakelt communicatie met de Zabbix Java-gateway in om Java-gerelateerde controles te verzamelen. Standaardwaarde is "false" |
ZBX_ENABLE_SNMP_TRAPS |
Server Proxy |
Schakelt de SNMP-trapfunctie in. Het vereist een zabbix-snmptraps instantie en een gedeelde volume /var/lib/zabbix/snmptraps naar de Zabbix-server of Zabbix-proxy. |
De images bieden de mogelijkheid om enkele koppelingspunten te gebruiken. Deze koppelingspunten verschillen en zijn afhankelijk van het type Zabbix-component:
Volume | Beschrijving |
---|---|
Zabbix-agent | |
/etc/zabbix/zabbix_agentd.d | Dit volume maakt het mogelijk om *.conf bestanden op te nemen en Zabbix-agent uit te breiden met de UserParameter -functie |
/var/lib/zabbix/modules | Dit volume maakt het laden van aanvullende modules mogelijk en breidt Zabbix-agent uit met behulp van de LoadModule-functie |
/var/lib/zabbix/enc | Dit volume wordt gebruikt om TLS-gerelateerde bestanden op te slaan. Deze bestandsnamen worden gespecificeerd met behulp van de omgevingsvariabelen ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE en ZBX_TLSPSKFILE |
Zabbix-server | |
/usr/lib/zabbix/alertscripts | Dit volume wordt gebruikt voor aangepaste waarschuwingsscripts. Het is de parameter AlertScriptsPath in zabbix_server.conf |
/usr/lib/zabbix/externalscripts | Dit volume wordt gebruikt voor externe controles. Het is de parameter ExternalScripts in zabbix_server.conf |
/var/lib/zabbix/modules | Dit volume maakt het laden van aanvullende modules mogelijk en breidt Zabbix-server uit met behulp van de LoadModule-functie |
/var/lib/zabbix/enc | Dit volume wordt gebruikt om TLS-gerelateerde bestanden op te slaan. Deze bestandsnamen worden gespecificeerd met behulp van de omgevingsvariabelen ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE en ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | Dit volume wordt gebruikt als locatie van SSL-clientcertificaatbestanden voor clientauthenticatie. Het is de parameter SSLCertLocation in zabbix_server.conf |
/var/lib/zabbix/ssl/keys | Dit volume wordt gebruikt als locatie van SSL-privésleutelbestanden voor clientauthenticatie. Het is de parameter SSLKeyLocation in zabbix_server.conf |
/var/lib/zabbix/ssl/ssl_ca | Dit volume wordt gebruikt als locatie van certificaatautoriteit (CA)-bestanden voor verificatie van SSL-servercertificaten. Het is de parameter SSLCALocation in zabbix_server.conf |
/var/lib/zabbix/snmptraps | Dit volume wordt gebruikt als locatie van het bestand snmptraps.log . Het kan worden gedeeld door de zabbix-snmptraps-container en worden overgenomen met behulp van de Docker-optie volumes\_from bij het maken van een nieuwe instantie van Zabbix-server. De functie voor het verwerken van SNMP-traps kan worden ingeschakeld met een gedeeld volume en door de omgevingsvariabele ZBX_ENABLE_SNMP_TRAPS om te schakelen naar 'true' |
/var/lib/zabbix/mibs | Dit volume maakt het toevoegen van nieuwe MIB-bestanden mogelijk. Het ondersteunt geen submappen, alle MIB-bestanden moeten worden geplaatst in /var/lib/zabbix/mibs |
Zabbix-proxy | |
/usr/lib/zabbix/externalscripts | Dit volume wordt gebruikt voor externe controles. Het is de parameter ExternalScripts in zabbix_proxy.conf |
/var/lib/zabbix/db_data/ | Het volume maakt het opslaan van databasebestanden op externe apparaten mogelijk. Alleen ondersteund voor Zabbix-proxy met SQLite3 |
/var/lib/zabbix/modules | Dit volume maakt het laden van aanvullende modules mogelijk en breidt Zabbix-server uit met behulp van de LoadModule-functie |
/var/lib/zabbix/enc | Dit volume wordt gebruikt om TLS-gerelateerde bestanden op te slaan. Deze bestandsnamen worden gespecificeerd met behulp van de omgevingsvariabelen ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE en ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | Dit volume wordt gebruikt als locatie van SSL-clientcertificaatbestanden voor clientauthenticatie. Het is de parameter SSLCertLocation in zabbix_proxy.conf |
/var/lib/zabbix/ssl/keys | Dit volume wordt gebruikt als locatie van SSL-privésleutelbestanden voor clientauthenticatie. Het is de parameter SSLKeyLocation in zabbix_proxy.conf |
/var/lib/zabbix/ssl/ssl_ca | Dit volume wordt gebruikt als locatie van certificaatautoriteit (CA)-bestanden voor verificatie van SSL-servercertificaten. Het is de parameter SSLCALocation in zabbix_proxy.conf |
/var/lib/zabbix/snmptraps | Dit volume wordt gebruikt als locatie van het bestand snmptraps.log . Het kan worden gedeeld door de zabbix-snmptraps-container en worden overgenomen met behulp van de Docker-optie volumes\_from bij het maken van een nieuwe instantie van Zabbix-server. De functie voor het verwerken van SNMP-traps kan worden ingeschakeld met een gedeeld volume en door de omgevingsvariabele ZBX_ENABLE_SNMP_TRAPS om te schakelen naar 'true' |
/var/lib/zabbix/mibs | Dit volume maakt het toevoegen van nieuwe MIB-bestanden mogelijk. Het ondersteunt geen submappen, alle MIB-bestanden moeten worden geplaatst in /var/lib/zabbix/mibs |
Zabbix-webinterface gebaseerd op Apache2 webserver | |
/etc/ssl/apache2 | Dit volume maakt het mogelijk om HTTPS in te schakelen voor de Zabbix-webinterface. Het volume moet de twee bestanden ssl.crt en ssl.key bevatten die zijn voorbereid voor Apache2 SSL-verbindingen |
Zabbix-webinterface gebaseerd op Nginx webserver | |
/etc/ssl/nginx | Dit volume maakt het mogelijk om HTTPS in te schakelen voor de Zabbix-webinterface. Het volume moet de twee bestanden ssl.crt , ssl.key en dhparam.pem bevatten die zijn voorbereid voor Nginx SSL-verbindingen |
Zabbix-snmptraps | |
/var/lib/zabbix/snmptraps | Dit volume bevat het logbestand snmptraps.log met de naam van ontvangen SNMP-traps |
/var/lib/zabbix/mibs | Dit volume maakt het toevoegen van nieuwe MIB-bestanden mogelijk. Het ondersteunt geen submappen, alle MIB-bestanden moeten worden geplaatst in /var/lib/zabbix/mibs |
Voor aanvullende informatie kunt u de officiële Zabbix-repositories op Docker Hub gebruiken.
Deze voorbeelden laten zien hoe je Zabbix-server en gerelateerde componenten kunt draaien in Docker- of Podman-containers.
Voorbeeld 1: Zabbix-server met MySQL-database, Zabbix-webinterface en Zabbix Java-gateway.
Maak een toegewijd netwerk voor Zabbix-componentcontainers:
Start een lege MySQL-serverinstantie:
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 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
Start een Zabbix Java Gateway-instantie:
Start een Zabbix-serverinstantie en koppel deze aan de gemaakte MySQL-serverinstantie:
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 MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-6.0-latest
Start een Zabbix-webinterface en koppel deze aan de gemaakte MySQL-server en Zabbix-serverinstanties:
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 MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest
Voorbeeld 2: Zabbix-server met PostgreSQL-database, Zabbix-webinterface en SNMP-trapfunctionaliteit.
Maak een toegewijd netwerk voor Zabbix-componentcontainers:
Start een lege PostgreSQL-serverinstantie:
Start een Zabbix snmptraps-instantie:
Start een Zabbix-serverinstantie en koppel deze aan de gemaakte PostgreSQL-serverinstantie:
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 \
-d zabbix/zabbix-server-pgsql:alpine-6.0-latest
Start een Zabbix-webinterface en koppel deze aan de gemaakte PostgreSQL-server en Zabbix-serverinstanties:
```bash docker run --name zabbix-web-nginx-pgsql -t
-e ZBX_SERVER_HOST="zabbix-server-pgsql"
-e DB_SERVER_HOST="postgres-server"
-e POSTGRES_USER="zabbix"
-
e POSTGRES_PASSWORD="zabbix_pwd"
-e POSTGRES_DB="zabbix"
--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-6.0-latest ```
Voorbeeld 3: Zabbix-server met MySQL-database, Zabbix-webinterface en Zabbix Java-gateway met Podman op Red Hat 8.
Maak een nieuwe pod met de naam zabbix
en de blootgestelde poorten (webinterface, Zabbix-server trapper):
(optioneel) Start de Zabbix-agentcontainer op de locatie van de zabbix
-pod:
Maak een ./mysql/
-map op de host en start Oracle MySQL-server 8.0:
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=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
Start de Zabbix-servercontainer:
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 MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="127.0.0.1" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-server-mysql-60
Start de Zabbix Java Gateway-container:
Start de Zabbix-webinterface-container:
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 MYSQL_ROOT_PASSWORD="root_pwd" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-web-mysql-60
In deze voorbeelden wordt het gebruik van Docker en Podman gedemonstreerd om Zabbix-server en gerelateerde componenten te starten met verschillende database-opties en functionaliteiten. Volg de instructies voor het gewenste scenario om Zabbix in te stellen en te draaien.
Zabbix provides Docker Compose files for defining and running multi-container Zabbix components in Docker. These Compose files are available in the Zabbix Docker official repository on GitHub: https://github.com/zabbix/zabbix-docker. These files are provided as examples and serve as a starting point for setting up Zabbix components using Docker Compose. Different versions of the Compose files are available to support various configurations.
Here's a list of the available Docker Compose files along with their descriptions:
docker-compose_v3_alpine_mysql_latest.yaml
: Runs the latest version of Zabbix 6.0 components on Alpine Linux with MySQL database support.docker-compose_v3_alpine_mysql_local.yaml
: Locally builds the latest version of Zabbix 6.0 and runs Zabbix components on Alpine Linux with MySQL database support.docker-compose_v3_alpine_pgsql_latest.yaml
: Runs the latest version of Zabbix 6.0 components on Alpine Linux with PostgreSQL database support.docker-compose_v3_alpine_pgsql_local.yaml
: Locally builds the latest version of Zabbix 6.0 and runs Zabbix components on Alpine Linux with PostgreSQL database support.docker-compose_v3_centos_mysql_latest.yaml
: Runs the latest version of Zabbix 6.0 components on CentOS 8 with MySQL database support.docker-compose_v3_centos_mysql_local.yaml
: Locally builds the latest version of Zabbix 6.0 and runs Zabbix components on CentOS 8 with MySQL database support.docker-compose_v3_centos_pgsql_latest.yaml
: Runs the latest version of Zabbix 6.0 components on CentOS 8 with PostgreSQL database support.docker-compose_v3_centos_pgsql_local.yaml
: Locally builds the latest version of Zabbix 6.0 and runs Zabbix components on CentOS 8 with PostgreSQL database support.docker-compose_v3_ubuntu_mysql_latest.yaml
: Runs the latest version of Zabbix 6.0 components on Ubuntu 20.04 with MySQL database support.docker-compose_v3_ubuntu_mysql_local.yaml
: Locally builds the latest version of Zabbix 6.0 and runs Zabbix components on Ubuntu 20.04 with MySQL database support.docker-compose_v3_ubuntu_pgsql_latest.yaml
: Runs the latest version of Zabbix 6.0 components on Ubuntu 20.04 with PostgreSQL database support.docker-compose_v3_ubuntu_pgsql_local.yaml
: Locally builds the latest version of Zabbix 6.0 and runs Zabbix components on Ubuntu 20.04 with PostgreSQL database support.It's important to note that these Docker Compose files are designed to work with version 3 of Docker Compose. You can use these files as a starting point and customize them according to your specific needs and configurations.
Compose-bestanden zijn geconfigureerd om lokale opslag op een hostmachine te ondersteunen. Docker Compose maakt een zbx_env
-map aan in de map met het compose-bestand wanneer je Zabbix-componenten uitvoert met behulp van het compose-bestand. De map zal dezelfde structuur bevatten als hierboven beschreven in de Volumes sectie en de map voor database-opslag.
Er zijn ook volumes in alleen-lezen modus voor de bestanden /etc/localtime
en /etc/timezone
.
In dezelfde map met compose-bestanden op github.com kun je bestanden vinden met standaardomgevingsvariabelen voor elk component in het compose-bestand. Deze omgevingsbestanden hebben namen zoals .env_<type van component>
.
De onderstaande commando's zijn voor Docker Compose V2. Als je Docker Compose V1 gebruikt, vervang dan docker compose -f
door docker-compose -f
.
Voorbeeld 1
Dit commando zal de nieuwste Zabbix 6.0-images downloaden voor elk Zabbix-component en ze in de detach-modus uitvoeren.
Vergeet niet om de .env_<type van component>
bestanden te downloaden van de officiële Zabbix-repository op github.com met compose-bestanden.
Voorbeeld 2
Dit commando zal de basisafbeelding Ubuntu 20.04 (focal) downloaden, vervolgens lokaal Zabbix 6.0-componenten bouwen en ze in de detach-modus uitvoeren.