This is a translation of the original English documentation page. Help us make it better.

5 Инсталација из контејнера

Преглед

Овај одељак описује како се имплементира Zabbix помоћу Docker или Docker Compose.

Zabbix званично пружа:

  • Одвојене Docker слике за сваку Zabbix компоненту да би се покретале као преносиве и самодовољне контејнере.
  • Compose датотеке за дефинисање и покретање вишеконтејнерских Zabbix компоненти у Docker-у.

Од Zabbix-а 6.0, детерминистички окидачи морају бити креирани током инсталације. Ако је бинарно логговање омогућено за MySQL/MariaDB, ово захтева привилегије суперкорисника или подешавање параметра променљиве/конфигурације log_bin_trust_function_creators = 1. Погледајте Скрипте за креирање базе података за упутства како да подесите променљиву.
Имајте на уму да ако се извршава из конзоле, променљива ће бити подешена само привремено и биће одбачена када се Docker поново покрене. У овом случају, наставите са радом SQL сервиса, зауставите само zabbix-server сервис покретањем 'docker compose down zabbix-server', а затим 'docker compose up -d zabbix-server'.
Алтернативно, можете подесити ову променљиву у конфигурационом фајлу.

Изворне датотеке

Изворне Docker датотеке се чувају у Zabbix званичном репозиторијуму на GitHub-у, где можете да пратите најновије измене датотека или да направите своје слике.

Докер

Zabbix пружа слике засноване на различитим основним OS сликама. Да бисте добили листу подржаних основних слика оперативног система за одређену Zabbix компоненту, погледајте опис компоненте у Docker Hub. Све Zabbix слике су конфигурисане да поново изграде најновије слике ако се основне слике ажурирају.

Инсталација

Да бисте добили слику Zabbix компоненте, покрените:

docker pull zabbix/zabbix-server-mysql

Замените zabbix/zabbix-server-mysql именом потребног Docker репозиторијума.

Ова команда ће преузети најновију стабилну верзију Zabbix компоненте засновану на Alpine Linux оперативном систему. Можете додати tags имену репозиторијума да бисте добили слику засновану на другом оперативном систему или на одређеној главној или споредној верзији Zabbix.

Следећи репозиторијуми су доступни у Docker Hub:

Component Docker repository
Zabbix agent zabbix/zabbix-agent
Zabbix server
with MySQL support zabbix/zabbix-server-mysql
with PostgreSQL support zabbix/zabbix-server-pgsql
Zabbix web interface
базирано на Apache2 веб серверу са MySQL подршком zabbix/zabbix-web-apache-mysql
базирано на Apache2 веб серверу са PostgreSQL подршком zabbix/zabbix-web-apache-pgsql
базирано на Nginx веб серверу са MySQL подршком zabbix/zabbix-web-nginx-mysql
базирано на Nginx веб серверу са PostgreSQL подршком zabbix/zabbix-web-nginx-pgsql
Zabbix прокси
са SQLite3 подршком zabbix/zabbix-proxy-sqlite3
са MySQL подршком zabbix/zabbix-proxy-mysql
Zabbix Java gateway zabbix/zabbix-java-gateway

Подршка за SNMP трапове је обезбеђена у посебном репозиторијуму zabbix/zabbix-snmptraps. Може се повезати са Zabbix сервером и Zabbix проксијем.

Ознаке

Званичне слике Zabbix компоненти могу да садрже следеће ознаке:

Tag Description Example
latest Најновија стабилна верзија Zabbix компоненте заснована на Alpine Linux слици. zabbix-agent:latest
<OS>-trunk Најновија ноћна верзија Zabbix верзије која се тренутно развија на одређеном оперативном систему.

<OS> - основни оперативни систем. Подржане вредности:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (само агент);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (само агент);
ubuntu - Ubuntu
zabbix agent:ubuntu-trunk
<OS>-latest Најновија стабилна верзија Zabbix компоненте на одређеном оперативном систему.

<OS> - основни оперативни систем. Подржане вредности:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (само агент);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (само агент);
ubuntu - Ubuntu
zabbix-agent:ol-latest
<OS>-X.X-latest Најновија споредна верзија Zabbix компоненте одређене главне верзије и оперативног система.

<OS> - основни оперативни систем. Подржане вредности:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (само агент);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (само агент);
ubuntu - Ubuntu

X.X - главна верзија Zabbix-а (нпр. 6.0, 7.0, 7.2).
zabbix-agent:alpine-7.2-latest
<OS>-X.X.* Најновија споредна верзија Zabbix компоненте одређене главне верзије и оперативног система.

<OS> - основни оперативни систем. Подржане вредности:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (само агент);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (само агент);
ubuntu - Ubuntu

X.X - главна верзија Zabbix-а (нпр. 6.0, 7.0, 7.2).

* - споредна верзија Zabbix-а
zabbix-agent:alpine-7.2.1

Почетна конфигурација

Након преузимања слика, покрените контејнере извршавањем команде docker run, након чега следе додатни аргументи за навођење потребних променљивих окружења и/или тачака монтирања. Неки примери конфигурације су дати у наставку.

Да би се омогућила комуникација између Zabbix компоненти, неки портови, као што су 10051/TCP за Zabbix сервер (трапер), 10050/TCP за Zabbix агент, 162/UDP за SNMP хватања и 80/TCP за Zabbix веб интерфејс, биће изложени хост машини. Комплетна листа подразумеваних портова које користе Zabbix компоненте доступна је на страници Захтеви. За Zabbix сервер и агент, подразумевани порт се може променити подешавањем ZBX_LISTENPORT променљива окружења.

Променљиве окружења

Све слике Zabbix компоненти пружају променљиве окружења за контролу конфигурације. Подржане променљиве окружења су наведене у репозиторијуму компоненти.

Ове променљиве окружења су опције из Zabbix конфигурационих датотека, али са различитим начином именовања. На пример, ZBX_LOGSLOWQUERIES је једнако LogSlowQueries из Zabbix server или Zabbix proxy конфигурационих датотека.

Неке опције конфигурације (нпр. PIDFile и LogType) се не могу мењати.

Следеће променљиве окружења су специфичне за Docker компоненте и не постоје у Zabbix конфигурационим датотекама:

Variable Components Default value Description
DB_SERVER_HOST Сервер
Прокси
Веб интерфејс
mysql-server за MYSQL
postgres-server за PostgreSQL
IP или DNS име MySQL или PostgreSQL сервера.
DB_SERVER_PORT Сервер
Прокси
Веб интерфејс
3306 за MYSQL
5432 за PostgreSQL
Порт MySQL или PostgreSQL сервера.
MYSQL_USER Сервер
Прокси
Веб-интерфејс
zabbix Корисник MySQL базе података.
MYSQL_PASSWORD Сервер
Прокси
Веб интерфејс
zabbix Лозинка за MySQL базу података.
MYSQL_DATABASE Сервер
Прокси
Веб интерфејс
zabbix за Zabbix сервер
zabbix_proxy за Zabbix прокси
Име Zabbix базе података.
POSTGRES_USER Сервер
Веб интерфејс
zabbix Корисник PostgreSQL базе података.
POSTGRES_PASSWORD Сервер
Веб интерфејс
zabbix Лозинка за PostgreSQL базу података.
POSTGRES_DB Сервер
Веб интерфејс
zabbix за Zabbix сервер
zabbix_proxy за Zabbix прокси
Име Zabbix базе података.
PHP_TZ Веб-интерфејс Европа/Рига Временска зона у PHP формату. Комплетна листа подржаних временских зона је доступна на php.net.
ZBX_SERVER_NAME Веб интерфејс Zabbix Docker Видљиво име Zabbix инсталације у горњем десном углу веб интерфејса.
ZBX_JAVAGATEWAY_ENABLE Сервер
Прокси
false Омогућава комуникацију са Zabbix Java gateway-ом ради прикупљања провера везаних за Java.
ZBX_ENABLE_SNMP_TRAPS Сервер
Прокси
false Омогућава функцију SNMP trap-а. Потребна је инстанца zabbix-snmptraps и дељени волумен /var/lib/zabbix/snmptraps за Zabbix сервер или Zabbix прокси.
Volumes

The images allow to mount volumes using the following mount points:

Volume Description
Zabbix agent
/etc/zabbix/zabbix_agentd.d The volume allows to include *.conf files and extend Zabbix agent using the UserParameter feature
/var/lib/zabbix/modules The volume allows to load additional modules and extend Zabbix agent using the LoadModule feature
/var/lib/zabbix/enc The volume is used to store TLS-related files. These file names are specified using ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE and ZBX_TLSPSKFILE environment variables
Zabbix server
/usr/lib/zabbix/alertscripts The volume is used for custom alert scripts. It is the AlertScriptsPath parameter in zabbix_server.conf
/usr/lib/zabbix/externalscripts The volume is used by external checks. It is the ExternalScripts parameter in zabbix_server.conf
/var/lib/zabbix/modules The volume allows to load additional modules and extend Zabbix server using the LoadModule feature
/var/lib/zabbix/enc The volume is used to store TLS related files. These file names are specified using ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE and ZBX_TLSPSKFILE environment variables
/var/lib/zabbix/ssl/certs The volume is used as location of SSL client certificate files for client authentication. It is the SSLCertLocation parameter in zabbix_server.conf
/var/lib/zabbix/ssl/keys The volume is used as location of SSL private key files for client authentication. It is the SSLKeyLocation parameter in zabbix_server.conf
/var/lib/zabbix/ssl/ssl_ca The volume is used as location of certificate authority (CA) files for SSL server certificate verification. It is the SSLCALocation parameter in zabbix_server.conf
/var/lib/zabbix/snmptraps The volume is used as location of snmptraps.log file. It could be shared by zabbix-snmptraps container and inherited using the volumes_from Docker option while creating a new instance of Zabbix server. SNMP trap processing feature could be enabled by using shared volume and switching the ZBX_ENABLE_SNMP_TRAPS environment variable to 'true'
/var/lib/zabbix/mibs The volume allows to add new MIB files. It does not support subdirectories, all MIBs must be placed in /var/lib/zabbix/mibs
Zabbix proxy
/usr/lib/zabbix/externalscripts The volume is used by external checks. It is the ExternalScripts parameter in zabbix_proxy.conf
/var/lib/zabbix/db_data/ The volume allows to store database files on external devices. Supported only for Zabbix proxy with SQLite3
/var/lib/zabbix/modules The volume allows to load additional modules and extend Zabbix server using the LoadModule feature
/var/lib/zabbix/enc The volume is used to store TLS related files. These file names are specified using ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE and ZBX_TLSPSKFILE environment variables
/var/lib/zabbix/ssl/certs The volume is used as location of SSL client certificate files for client authentication. It is the SSLCertLocation parameter in zabbix_proxy.conf
/var/lib/zabbix/ssl/keys The volume is used as location of SSL private key files for client authentication. It is the SSLKeyLocation parameter in zabbix_proxy.conf
/var/lib/zabbix/ssl/ssl_ca The volume is used as location of certificate authority (CA) files for SSL server certificate verification. It is the SSLCALocation parameter in zabbix_proxy.conf
/var/lib/zabbix/snmptraps The volume is used as location of snmptraps.log file. It could be shared by the zabbix-snmptraps container and inherited using the volumes_from Docker option while creating a new instance of Zabbix server. SNMP trap processing feature could be enabled by using shared volume and switching the ZBX_ENABLE_SNMP_TRAPS environment variable to 'true'
/var/lib/zabbix/mibs The volume allows to add new MIB files. It does not support subdirectories, all MIBs must be placed in /var/lib/zabbix/mibs
Zabbix web interface based on Apache2 web server
/etc/ssl/apache2 The volume allows to enable HTTPS for Zabbix web interface. The volume must contain the two ssl.crt and ssl.key files prepared for Apache2 SSL connections
Zabbix web interface based on Nginx web server
/etc/ssl/nginx The volume allows to enable HTTPS for Zabbix web interface. The volume must contain the two ssl.crt, ssl.key files and dhparam.pem prepared for Nginx SSL connections
Zabbix snmptraps
/var/lib/zabbix/snmptraps The volume contains the snmptraps.log log file named with received SNMP traps
/var/lib/zabbix/mibs The volume allows to add new MIB files. It does not support subdirectories, all MIBs must be placed in /var/lib/zabbix/mibs

For additional information, see Zabbix official repositories in Docker Hub.

Examples

Example 1

The example demonstrates how to run Zabbix server with MySQL database support, Zabbix web interface based on the Nginx web server and Zabbix Java gateway.

1. Create network dedicated for Zabbix component containers:

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

2. Start empty MySQL server instance

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=utf8 --collation-server=utf8_bin \
             --default-authentication-plugin=mysql_native_password

3. Start Zabbix Java gateway instance

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

4. Start Zabbix server instance and link the instance with created MySQL server instance

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

5. Start Zabbix web interface and link the instance with created MySQL server and Zabbix server instances

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

Example 2

The example demonstrates how to run Zabbix server with PostgreSQL database support, Zabbix web interface based on the Nginx web server and SNMP trap feature.

1. Create network dedicated for Zabbix component containers:

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

2. Start empty PostgreSQL server instance

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. Start Zabbix snmptraps instance

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.0-latest

4. Start Zabbix server instance and link the instance with created PostgreSQL server instance

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

5. Start Zabbix web interface and link the instance with created PostgreSQL server and Zabbix server instances

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

Example 3

The example demonstrates how to run Zabbix server with MySQL database support, Zabbix web interface based on the Nginx web server and Zabbix Java gateway using podman on Red Hat 8.

1. Create new pod with name zabbix and exposed ports (web-interface, Zabbix server trapper):

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

2. (optional) Start Zabbix agent container in zabbix pod location:

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

3. Create ./mysql/ directory on host and 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

4. Start Zabbix server container:

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

5. Start Zabbix Java Gateway container:

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

6. Start Zabbix web-interface 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-70

Pod zabbix exposes 80/TCP port (HTTP) to host machine from 8080/TCP of zabbix-web-mysql container.

Docker Compose

Alternatively, Zabbix can be installed using Docker Compose plugin. Compose files for defining and running multi-container Zabbix components are available in the official Zabbix Docker repository on GitHub.

Official Zabbix compose files support version 3 of Docker Compose.

These compose files are added as examples; they are overloaded. For example, they contain proxies with both MySQL and SQLite3 support.

To obtain Docker compose files provided by Zabbix, clone the repository:

git clone https://github.com/zabbix/zabbix-docker.git

Switch to the required version:

git checkout 7.0

Compose configuration files and create and start containers:

docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up

Replace docker-compose_v3_alpine_mysql_latest.yaml in the command above with the required configuration file.

The following options are available:

File name Description
docker-compose_v3_alpine_mysql_latest.yaml The compose file runs the latest version of Zabbix 7.0 components on Alpine Linux with MySQL database support.
docker-compose_v3_alpine_mysql_local.yaml The compose file locally builds the latest version of Zabbix 7.0 and runs Zabbix components on Alpine Linux with MySQL database support.
docker-compose_v3_alpine_pgsql_latest.yaml The compose file runs the latest version of Zabbix 7.0 components on Alpine Linux with PostgreSQL database support.
docker-compose_v3_alpine_pgsql_local.yaml The compose file locally builds the latest version of Zabbix 7.0 and runs Zabbix components on Alpine Linux with PostgreSQL database support.
docker-compose_v3_ol_mysql_latest.yaml The compose file runs the latest version of Zabbix 7.0 components on Oracle Linux with MySQL database support.
docker-compose_v3_ol_mysql_local.yaml The compose file locally builds the latest version of Zabbix 7.0 and runs Zabbix components on Oracle Linux with MySQL database support.
docker-compose_v3_ol_pgsql_latest.yaml The compose file runs the latest version of Zabbix 7.0 components on Oracle Linux with PostgreSQL database support.
docker-compose_v3_ol_pgsql_local.yaml The compose file locally builds the latest version of Zabbix 7.0 and runs Zabbix components on Oracle Linux with PostgreSQL database support.
docker-compose_v3_ubuntu_mysql_latest.yaml The compose file runs the latest version of Zabbix 7.0 components on Ubuntu 20.04 with MySQL database support.
docker-compose_v3_ubuntu_mysql_local.yaml The compose file locally builds the latest version of Zabbix 7.0 and runs Zabbix components on Ubuntu 20.04 with MySQL database support.
docker-compose_v3_ubuntu_pgsql_latest.yaml The compose file runs the latest version of Zabbix 7.0 components on Ubuntu 20.04 with PostgreSQL database support.
docker-compose_v3_ubuntu_pgsql_local.yaml The compose file locally builds the latest version of Zabbix 7.0 and runs Zabbix components on Ubuntu 20.04 with PostgreSQL database support.

Складиштење

Compose датотеке су конфигурисане да подржавају локално складиштење на машини домаћина. Docker Compose ће креирати директоријум zbx_env у директоријуму са compose датотеком када покренете Zabbix компоненте користећи compose датотеку. Директоријум ће садржати исту структуру као што је описано у секцији Volumes и директоријуму за складиштење базе података.

Постоје и томови у режиму само за читање за датотека /etc/localtime и /etc/timezone.

Променљиве окружења

Променљиве датотеке имају следећу структуру именовања: .env_<type of component> и налазе се у env_vars директоријуму. Погледајте променљиве окружења за детаље о именовању променљивих и доступном избору.

Примери

Пример 1

git checkout 7.2 docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

Команда ће преузети најновије Zabbix 7.2 слике за сваку Zabbix компоненту и покренути их у режиму одвајања.

Не заборавите да преузмете .env_<type of component> датотеке са званичног Zabbix репозиторијума github.com са compose датотекама.

Пример 2

git checkout 7.2 docker compose -f ./docker-compose_v3_ubuntu_mysql_local.yaml up -d

Команда ће преузети основну слику Ubuntu 22.04 (jammy), затим локално изградити Zabbix 7.2 компоненте и покренути их у режиму одвајања.