Instalēšana no konteineriem

Pārskats

Šajā lapā ir aprakstīts, kā izvietot Zabbix, izmantojot Docker vai Docker Compose.

Docker Compose ir ātrākais veids, kā izvietot Zabbix. Tas nolasa konfigurācijas failu un automātiski palaiž visus konteinerus, kas veido pilnu Zabbix iestatījumu, pareizajā secībā.

Docker (manuāla izvietošana) sasniedz to pašu rezultātu, izvietojot katru komponentu soli pa solim.

Priekšnosacījumi

Pirms sākat, pārliecinieties, ka jūsu sistēmā ir instalēts Docker (1.12.0 vai jaunāka versija). Ja tas nav instalēts, sekojiet Docker instalēšanas ceļvedim. Izvietošanai ar Docker Compose ir nepieciešams arī Docker Compose (2.24.0 vai jaunāka versija).

Dažiem Zabbix komponentiem ir nepieciešams, lai hostā, kurā darbojas Docker, būtu atvērti noteikti porti (piemēram, 10051/TCP Zabbix serverim, 162/UDP SNMP slazdiem). Pilnu Zabbix komponentu izmantoto portu sarakstu skatiet sadaļā Prasības. Zabbix serverim un aģentam noklusējuma portu var mainīt, attiecīgajā konteinerā iestatot vides mainīgo ZBX_LISTENPORT.

Pieejamie Docker attēli

Zabbix nodrošina Docker attēlu katram Zabbix komponentam; tie visi ir publicēti Docker Hub. Katrs attēls tiek izmantots, lai izveidotu konteineru, kurā darbojas attiecīgais komponents.

Zabbix komponents Docker attēls
Aģents zabbix/zabbix-agent
Aģents 2 zabbix/zabbix-agent2
Serveris (MySQL) zabbix/zabbix-server-mysql
Serveris (PostgreSQL) zabbix/zabbix-server-pgsql
Tīmekļa saskarne (Apache + MySQL) zabbix/zabbix-web-apache-mysql
Tīmekļa saskarne (Apache + PostgreSQL) zabbix/zabbix-web-apache-pgsql
Tīmekļa saskarne (Nginx + MySQL) zabbix/zabbix-web-nginx-mysql
Tīmekļa saskarne (Nginx + PostgreSQL) zabbix/zabbix-web-nginx-pgsql
Starpniekserveris (SQLite3) zabbix/zabbix-proxy-sqlite3
Starpniekserveris (MySQL) zabbix/zabbix-proxy-mysql
Java gateway zabbix/zabbix-java-gateway
Tīmekļa pakalpojums zabbix/zabbix-web-service
SNMP slazdi zabbix/zabbix-snmptraps

Lai izmantotu SNMP slazdus, SNMP slazdu konteineram ir jāizmanto kopīgs sējums ar Zabbix servera vai starpniekservera konteineru (skatiet kā izmantot šo attēlu Docker Hub un tālāk redzamo piemēru).

Visi Zabbix komponentu attēli Docker Hub ir balstīti uz jaunākajām galvenajām atbalstīto operētājsistēmu versijām. Šie attēli tiek automātiski pārbūvēti, kad tiek atjaunināti pamatā esošie OS attēli.

Attēlu birkas

Katrs attēls atbalsta birkas, lai izvēlētos bāzes operētājsistēmu un Zabbix versiju:

zabbix/<image>:<os>-<version>

Atbalstītās <os> vērtības:

  • alpine - Alpine Linux
  • ubuntu - Ubuntu
  • centos - CentOS Stream
  • ol - Oracle Linux
  • ltsc2022 - Windows 11 LTSC 2022 (tikai Zabbix aģents)

Atbalstītās <version> vērtības:

  • latest - Jaunākā stabilā Zabbix versija Alpine Linux
  • <os>-latest - Jaunākā stabilā Zabbix versija izvēlētajā OS
  • <os>-trunk - Jaunākais izstrādes (nightly) būvējums izvēlētajā OS
  • <os>-X.X-latest - Jaunākais konkrētas Zabbix galvenās versijas Zabbix mazākais laidiens izvēlētajā OS
  • <os>-X.X.* - Konkrēts Zabbix mazākais laidiens izvēlētajā OS

Piemēri:

# Jaunākais stabilais Zabbix starpniekserveris (SQLite3) Alpine Linux:
docker pull zabbix/zabbix-proxy-sqlite3:latest

# Jaunākais stabilais Zabbix starpniekserveris (SQLite3) Ubuntu:
docker pull zabbix/zabbix-proxy-sqlite3:ubuntu-latest

# Jaunākais Zabbix serveris (MySQL) izstrādes (nightly) būvējums Ubuntu:
docker pull zabbix/zabbix-server-mysql:ubuntu-trunk

# Jaunākais Zabbix servera (MySQL) 8.0 mazākais laidiens Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-8.0-latest

# Zabbix servera (MySQL) versija 8.0.1 Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-8.0.1

Docker Compose

Docker Compose ir ātrākais veids, kā izvietot Zabbix. Tas nolasa konfigurācijas failu (Compose failu) un pārvalda visu iestatīšanas procesu — Docker attēlu lejupielādi, iekšējā tīkla izveidi starp konteineriem, krātuves iestatīšanu, datubāzes inicializēšanu un visu komponentu palaišanu pareizā secībā.

Oficiālo Zabbix Dockerfiles repozitorijs nodrošina gatavus Docker Compose failus un uz .env balstītu konfigurācijas sistēmu, kas atbalsta dažādas operētājsistēmas, datubāzu aizmugursistēmas un Zabbix komponentu konfigurāciju.

1. Klonējiet repozitoriju, pārejiet uz to un pārslēdzieties uz versiju 8.0:

git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
git checkout 8.0

2. (Neobligāti) Pielāgojiet izvietošanu, izmantojot vides mainīgos. Šo darbību var izlaist, lai izmantotu noklusējuma iestatījumus.

3. Izvietojiet noklusējuma iestatījumus — Zabbix serveri, lietotāja saskarni (kas darbojas ar NGINX) un datubāzes aizmugursistēmu (MySQL vai PostgreSQL), katru savā konteinerā ar Alpine Linux.

# Izmantojot MySQL kā datubāzi:
docker compose -f ./compose.yaml up -d

# Izmantojot PostgreSQL kā datubāzi:
docker compose -f ./compose_pgsql.yaml up -d

Kad konteineri ir palaisti un darbojas (parasti 1–3 minūšu laikā), Zabbix serveris tiek palaists un lietotāja saskarne kļūst pieejama pieteikšanās veikšanai.

Izmantojiet docker compose ps, lai pārbaudītu konteineru statusu. Visiem konteineriem (izņemot zabbix-docker-server-db-init-1 konteineru) jābūt statusam Up. Ja kādam konteineram tiek rādīts statuss Exited, pārbaudiet tā žurnālus, lai atrastu kļūdas, izmantojot docker logs -f <container-name>.

Vides mainīgie

Docker Compose darbību un Zabbix komponentu konfigurāciju var pielāgot, izmantojot vides mainīgos.

Compose līmeņa mainīgie (definēti .env failā) nosaka, kuri Docker attēli, porti un tīkla IP diapazoni tiek izmantoti.
Šos mainīgos var norādīt rindā pirms komandas docker compose vai rediģēt .env failu.

Piemēram, tālāk norādītā komanda izvieto pilnīgu Zabbix iestatījumu ar vairākiem konteineriem, izmantojot uz Ubuntu balstītu attēlu (noklusējuma Alpine Linux vietā) un publicējot lietotāja saskarni, izmantojot NGINX ar pielāgotiem HTTP (8282) un HTTPS (8443) portiem:

OS=ubuntu \
ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
ZABBIX_WEB_NGINX_HTTPS_PORT=8443 \
docker compose -f ./compose.yaml up -d

Komponentu līmeņa mainīgie (definēti failos env_vars/.env_<component>) nosaka Zabbix komponentu konfigurāciju.
Pirms komandas docker compose palaišanas rediģējiet attiecīgo .env_<component> failu.

Piemēram, varat pielāgot Zabbix servera pasīvo aptaujātāju skaitu un kešatmiņas iestatījumus, kā arī konfigurēt lietotāja saskarnes laika joslu, rediģējot tālāk norādītos mainīgos:

# env_vars/.env_srv
ZBX_STARTPOLLERS=20
ZBX_CACHESIZE=64M
ZBX_HISTORYCACHESIZE=32M

# env_vars/.env_web
PHP_TZ=Europe/Paris

Komponentu līmeņa vides mainīgie atbilst Zabbix komponentu konfigurācijas parametriem, taču izmanto citu nosaukumu stilu (piemēram, ZBX_STARTPOLLERS atbilst StartPollers).
Daži mainīgie ir specifiski Docker, un dažus konfigurācijas parametrus nevar mainīt (piemēram, PIDFile un LogType).
Izmantojot vides mainīgos, skatiet sadaļu Environment variables katra komponenta Docker attēla aprakstā Docker Hub.

Sējumi

Docker Compose glabā pastāvīgos datus zbx_env/ direktorijā, kas tiek izveidota līdzās Compose failam. Šī direktorija saglabā komponentu datus starp konteineru restartēšanām un atjauninājumiem.

zbx_env/ saturs ir iepriekš noteikts katra komponenta attēlam. Piemēram:

Papildinformāciju par katru sējumu skatiet sadaļā Allowed volumes katra komponenta Docker attēla aprakstā Docker Hub.

Makefile

Zabbix Dockerfiles repozitorijā ir pieejams arī Makefile, kas kalpo kā saīsinājums biežāk izmantotajiem Docker Compose uzdevumiem. Pilnās docker compose komandas vietā varat izmantot īsākas make komandas (izpildiet make help, lai skatītu pieejamās opcijas):

# Noklusējuma izvietošana (Zabbix serveris, tīmekļa saskarne, MySQL — viss Alpine Linux vidē)
make up

# Pielāgota izvietošana (Zabbix serveris, tīmekļa saskarne ar pielāgotiem NGINX portiem, PostgreSQL — viss Ubuntu vidē)
make up \
  OS=ubuntu \
  DB=pgsql \
  ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
  ZABBIX_WEB_NGINX_HTTPS_PORT=8443

Apturot vai noņemot konteinerus, vienmēr norādiet to pašu datubāzes tipu, kas tika izmantots izvietošanā (piemēram, make down DB=pgsql).

Pēc noklusējuma make up palaiž tikai minimālo pakalpojumu kopu (Zabbix serveri, tīmekļa saskarni un datubāzi). Tas ļauj saglabāt iestatījumu vieglu un novērš tādu komponentu palaišanu, kas var nebūt nepieciešami. Lai iekļautu papildu komponentus, varat izmantot tālāk norādītos Compose profilus:

# Noklusējuma izvietošana + Zabbix aģents, Java gateway, tīmekļa pakalpojums un SNMP slazdi:
make up COMPOSE_PROFILES=full

# COMPOSE_PROFILES=full + Zabbix starpniekserveris (MySQL un SQLite3):
make up COMPOSE_PROFILES=all

Docker (manuāla izvietošana)

Izmantojiet manuālu izvietošanu, ja vēlaties izvietot Zabbix soli pa solim, palaist atsevišķus komponentus, integrēt tos ar esošu vidi vai izmantot alternatīvu konteineru izpildlaiku, piemēram, Podman.

Piemēram, lai izvietotu Zabbix starpniekserveri, palaidiet šādu komandu:

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-8.0-latest

Šī komanda:

  • Lejupielādē zabbix/zabbix-proxy-sqlite3:alpine-8.0-latest Docker attēlu.

  • Izveido un palaiž zabbix-proxy-sqlite3 konteineru, kas balstīts uz Docker attēlu (ar --init un -d karodziņiem).

  • Konfigurē Zabbix starpniekservera Server parametru, izmantojot vides mainīgo ZBX_SERVER_HOST. Šis parametrs norāda Zabbix servera IP adresi, no kura starpniekserveris iegūs konfigurācijas datus un uz kuru tas nosūtīs savāktos datus. Ņemiet vērā, ka citi mainīgie, kas nepieciešami aktīvam starpniekservera darbības režīmam, izmanto noklusējuma vērtības un tos var neiekļaut.

Vides mainīgie atbilst Zabbix komponentu konfigurācijas parametriem, izmantojot atšķirīgu nosaukumu veidošanas stilu (piem., ZBX_SERVER_HOST atbilst Server). Daži mainīgie ir specifiski Docker, un dažus konfigurācijas parametrus nevar mainīt (piem., PIDFile un LogType). Izmantojot vides mainīgos, lūdzu, skatiet sadaļu Environment variables katra komponenta Docker attēla aprakstā Docker Hub.

  • Pievieno Docker pārvaldītu krātuves vietu (piem., /var/lib/docker/volumes/zabbix-proxy-data/) konteinera /var/lib/zabbix direktorijam, lai Zabbix starpniekservera dati tiktu saglabāti pastāvīgi, pat ja konteiners tiek noņemts.

Lai iegūtu vairāk informācijas par katru sējumu, skatiet sadaļu Allowed volumes katra komponenta Docker attēla aprakstā Docker Hub.

Pēc Zabbix starpniekservera konteinera izvietošanas varat turpināt ar starpniekservera pievienošanu savā Zabbix lietotāja saskarnē un hosts konfigurēšanu, lai tos uzraudzītu šis starpniekserveris.

Tālāk redzamie piemēri aptver trīs papildu izvietošanas scenārijus:

  • Zabbix serveris (MySQL) ar Java gateway
  • Zabbix serveris (PostgreSQL) ar SNMP trapiem
  • Zabbix serveris (MySQL) ar Java gateway uz RHEL 8–10

Lai iegūtu vairāk piemēru, lūdzu, skatiet katra komponenta Docker attēla aprakstu Docker Hub.

Zabbix servera (MySQL) izvietošana ar Java gateway

Šajā piemērā parādīts, kā izvietot Zabbix serveri ar MySQL aizmugursistēmu, Java gateway JMX uzraudzībai un NGINX bāzētu tīmekļa saskarni.

1. Izveidojiet īpašu Docker tīklu, lai visi Zabbix komponentu konteineri varētu sasniegt cits citu pēc konteineru nosaukumiem:

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

2. Palaidiet tukšu MySQL servera konteineru (aizstājiet zabbix_pwd un root_pwd ar drošām parolēm un izmantojiet šīs vērtības turpmākajās darbībās):

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.4-oracle \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_bin

3. Sekojiet MySQL žurnāliem un gaidiet, līdz MySQL ir gatavs pieņemt savienojumus (izmantojiet Ctrl+C, lai izietu no žurnāliem):

docker logs -f mysql-server

# ... [Server] /usr/sbin/mysqld: ready for connections. ...

4. Palaidiet Zabbix Java gateway konteineru:

docker run --name zabbix-java-gateway -t \
  --network=zabbix-net \
  --restart unless-stopped \
  -d zabbix/zabbix-java-gateway:alpine-8.0-latest

5. MySQL servera konteinerā iespējojiet log_bin_trust_function_creators. Tas īslaicīgi atvieglo drošības ierobežojumus saglabātajām funkcijām; turpmākajās darbībās šis iestatījums tiks atspējots. Tas ļauj Zabbix datubāzes lietotājam izveidot saglabātās funkcijas bez SUPER privilēģijas, kas MySQL ir nepieciešama, ja ir iespējota binārā reģistrēšana (pēc noklusējuma kopš MySQL 8.0). Izpildiet šo komandu:

docker exec -it mysql-server mysql -u root -p'root_pwd' \
  -e "SET GLOBAL log_bin_trust_function_creators = 1;"

6. Palaidiet Zabbix servera konteineru un savienojiet to ar Java Gateway un MySQL servera konteineriem:

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-8.0-latest

7. Sekojiet Zabbix servera žurnāliem un gaidiet, līdz Zabbix serveris pabeidz datubāzes shēmas inicializāciju (izmantojiet Ctrl+C, lai izietu no žurnāliem):

docker logs -f zabbix-server-mysql

# ... [info]: ** Creating 'zabbix' schema in MySQL
# ... [info]: ** Database schema successfully created!

8. MySQL servera konteinerā atspējojiet log_bin_trust_function_creators. Tādējādi tiek atkārtoti ieviests drošības ierobežojums, kas neļauj lietotājiem bez SUPER privilēģijas izveidot saglabātās funkcijas. Izpildiet šo komandu:

docker exec -it mysql-server mysql -u root -p'root_pwd' \
  -e "SET GLOBAL log_bin_trust_function_creators = 0;"

9. Palaidiet Zabbix tīmekļa saskarnes konteineru un savienojiet to ar Zabbix servera un MySQL servera konteineriem:

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-8.0-latest

Kad konteineri ir palaisti un darbojas, Zabbix serveris tiek startēts un tīmekļa saskarne kļūst pieejama pieteikšanās veikšanai.

Izmantojiet docker ps, lai pārbaudītu konteineru statusu. Visiem konteineriem jābūt statusam Up. Ja kādam konteineram tiek rādīts statuss Exited, pārbaudiet tā žurnālus, izmantojot docker logs -f <container-name>.

Zabbix servera (PostgreSQL) izvietošana ar SNMP trapēm

Šajā piemērā parādīts, kā izvietot Zabbix serveri ar PostgreSQL aizmugursistēmu, SNMP trapēm un NGINX bāzētu tīmekļa saskarni.

1. Izveidojiet īpašu Docker tīklu, lai visi Zabbix komponentu konteineri varētu sasniegt cits citu pēc konteineru nosaukumiem:

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

2. Palaidiet tukšu PostgreSQL servera konteineru (aizstājiet zabbix_pwd ar drošu paroli un izmantojiet šo vērtību turpmākajās darbībās):

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. Palaidiet Zabbix SNMP trašu konteineru:

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-8.0-latest

4. Palaidiet Zabbix servera konteineru un savienojiet to ar PostgreSQL servera un SNMP trašu konteineriem:

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-8.0-latest

5. Sekojiet Zabbix servera žurnāliem un gaidiet, līdz Zabbix serveris pabeidz datubāzes shēmas inicializāciju (izmantojiet Ctrl+C, lai izietu no žurnāliem):

docker logs -f zabbix-server-pgsql

# ... [info]: ** Creating 'zabbix' schema in PostgreSQL
# ... [info]: ** Database schema successfully created!

6. Palaidiet Zabbix tīmekļa saskarnes konteineru un savienojiet to ar Zabbix servera un PostgreSQL servera konteineriem:

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-8.0-latest

Kad konteineri ir palaisti un darbojas, Zabbix serveris tiek startēts un tīmekļa saskarne kļūst pieejama pieteikšanās veikšanai.

Izmantojiet docker ps, lai pārbaudītu konteineru statusu. Visiem konteineriem jābūt statusam Up. Ja kādam konteineram tiek rādīts statuss Exited, pārbaudiet tā žurnālus, izmantojot docker logs -f <container-name>.

Zabbix servera (MySQL) izvietošana ar Java gateway operētājsistēmā RHEL 8–10

Šajā piemērā parādīts, kā izvietot Zabbix serveri ar MySQL aizmugursistēmu, Java gateway JMX uzraudzībai un NGINX bāzētu tīmekļa saskarni, kas darbojas Red Hat Enterprise Linux 8, 9 vai 10.

Red Hat Enterprise Linux vidē ieteicamais konteineru izpildlaiks ir Podman, nevis Docker. Podman darbojas līdzīgi Docker, taču tam nav nepieciešams fonā darbojošs pakalpojums ar root tiesībām, tāpēc tas ir piemērotāks Red Hat vidēm.

1. Izveidojiet jaunu pod ar nosaukumu zabbix un atveriet portus Zabbix tīmekļa saskarnei un Zabbix servera trapperim:

podman pod create --name zabbix -p 80:8080 -p 10051:10051

2. (Neobligāti) Palaidiet Zabbix aģenta konteineru poda zabbix atrašanās vietā:

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-80:latest

3. RHEL hosts izveidojiet direktoriju ./mysql/:

mkdir -p ./mysql

4. Palaidiet tukšu MySQL servera konteineru (aizstājiet zabbix_pwd un root_pwd ar drošām parolēm un izmantojiet šīs vērtības turpmākajās darbībās):

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.4 \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_bin

5. Sekojiet MySQL žurnāliem un gaidiet, līdz MySQL ir gatavs pieņemt savienojumus (izmantojiet Ctrl+C, lai izietu no žurnāliem):

podman logs -f mysql-server

# ... [Server] /usr/sbin/mysqld: ready for connections. ...

6. Palaidiet Zabbix Java gateway konteineru:

podman run --name zabbix-java-gateway -t \
  --restart=always \
  --pod=zabbix \
  -d registry.connect.redhat.com/zabbix/zabbix-java-gateway-80

7. MySQL servera konteinerā iespējojiet log_bin_trust_function_creators. Tas īslaicīgi atvieglo drošības ierobežojumus saglabātajām funkcijām; turpmākajās darbībās šis iestatījums tiks atspējots. Tas ļauj Zabbix datubāzes lietotājam izveidot saglabātās funkcijas bez SUPER privilēģijas, kas MySQL ir nepieciešama, ja ir iespējota binārā reģistrēšana (pēc noklusējuma kopš MySQL 8.0). Izpildiet šo komandu:

podman exec -it mysql-server mysql -u root -p'root_pwd' \
  -e "SET GLOBAL log_bin_trust_function_creators = 1;"

8. Palaidiet Zabbix servera konteineru un savienojiet to ar Java Gateway un MySQL servera konteineriem:

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-80

9. Sekojiet Zabbix servera žurnāliem un gaidiet, līdz Zabbix serveris pabeidz datubāzes shēmas inicializāciju (izmantojiet Ctrl+C, lai izietu no žurnāliem):

podman logs -f zabbix-server-mysql

# ... [info]: ** Creating 'zabbix' schema in MySQL
# ... [info]: ** Database schema successfully created!

10. MySQL servera konteinerā atspējojiet log_bin_trust_function_creators. Tādējādi tiek atkārtoti ieviests drošības ierobežojums, kas neļauj lietotājiem bez SUPER privilēģijas izveidot saglabātās funkcijas. Izpildiet šo komandu:

podman exec -it mysql-server mysql -u root -p'root_pwd' \
  -e "SET GLOBAL log_bin_trust_function_creators = 0;"

11. Palaidiet Zabbix tīmekļa saskarnes konteineru un savienojiet to ar Zabbix servera un MySQL servera konteineriem:

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-80

Pods zabbix resursdatordatoram atver 80/TCP portu (HTTP), izmantojot 8080/TCP portu no zabbix-web-mysql konteinera.

Kad konteineri ir palaisti un darbojas, Zabbix serveris tiek startēts un tīmekļa saskarne kļūst pieejama pieteikšanās veikšanai.

Izmantojiet docker ps, lai pārbaudītu konteineru statusu. Visiem konteineriem jābūt statusam Up. Ja kādam konteineram tiek rādīts statuss Exited, pārbaudiet tā žurnālus, izmantojot docker logs -f <container-name>.