Овај одељак описује како се имплементира Zabbix помоћу Docker или Docker Compose.
Zabbix званично пружа:
Од 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 прокси. |
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.
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:
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:
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):
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.
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:
Switch to the required version:
Compose configuration files and create and start containers:
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 компоненте и покренути их у режиму одвајања.