This section describes how to deploy Zabbix with Docker or Docker Compose.
Zabbix officially provides:
Zabbix предоставляет образы Docker для каждого компонента Zabbix в виде переносимых и самодостаточных контейнеров для ускорения процедур развертывания и обновления.
Компоненты Zabbix поставляются с поддержкой баз данных MySQL и PostgreSQL, веб-серверов Apache2 и Nginx. Эти образы разделены на несколько отдельных образов.
Начиная с версии 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'.
В качестве альтернативы, вы можете выставить эту переменную в конфигурационном файле.
Official Zabbix component images may contain the following tags:
Tag | Description | Example |
---|---|---|
latest | The latest stable version of a Zabbix component based on Alpine Linux image. | zabbix-agent:latest |
<OS>-trunk | The latest nightly build of the Zabbix version that is currently being developed on a specific operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu |
zabbix agent:ubuntu-trunk |
<OS>-latest | The latest stable version of a Zabbix component on a specific operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu |
zabbix-agent:ol-latest |
<OS>-X.X-latest | The latest minor version of a Zabbix component of a specific major version and operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; centos - CentOS (only for Zabbix 4.0) ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu X.X - the major Zabbix version (supported: 4.0, 5.0, 6.0, 6.2). |
zabbix-agent:alpine-6.0-latest |
<OS>-X.X.* | The latest minor version of a Zabbix component of a specific major version and operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; centos - CentOS (only for Zabbix 4.0) ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu X.X - the major Zabbix version (supported: 4.0, 5.0, 6.0, 6.2). * - the Zabbix minor version |
zabbix-agent:alpine-6.4.1 |
Каждый может следить на изменениями в Docker файлах, используя официальный репозиторий Zabbix на github.com. Вы можете создавать ответвления от проекта или свои собственные образы на основе официальных Docker файлов.
Все компоненты Zabbix предусматривают наличие переменных окружения для управления конфигурацией. Эти переменные окружения перечислены в репозиториях каждого из компонентов. Переменные окружения являются параметрами из файлов конфигурации Zabbix, но с другим методом наименования. Например,ZBX_LOGSLOWQUERIES
идентичен LogSlowQueries
из файлов конфигурации Zabbix сервера и Zabbix прокси.
Некоторые параметры конфигурации недоступны для изменения. Например, PIDFile
и LogType
.
У некоторых компонентов есть специфические переменные окружения, отсутствующие в официальных файлах конфигурации Zabbix:
Переменная | Компоненты | Описание |
---|---|---|
DB_SERVER_HOST |
Сервер Прокси Веб-интерфейс |
Переменная является IP адресом или DNS именем MySQL или PostgreSQL сервера. По умолчанию, значение mysql-server или postgres-server для MySQL или PostgreSQL соответственно |
DB_SERVER_PORT |
Сервер Прокси Веб-интерфейс |
Переменная является портом MySQL или PostgreSQL сервера. По умолчанию, значение '3306' или '5432' соответственно. |
MYSQL_USER |
Сервер Прокси Веб-интерфейс |
Имя пользователя базы данных MySQL. По умолчанию, значение 'zabbix'. |
MYSQL_PASSWORD |
Сервер Прокси Веб-интерфейс |
Пароль пользователя базы данных MySQL. По умолчанию, значение 'zabbix'. |
MYSQL_DATABASE |
Сервер Прокси Веб-интерфейс |
Имя базы данных Zabbix. По умолчанию, значение 'zabbix' для Zabbix сервера и 'zabbix_proxy' для Zabbix прокси. |
POSTGRES_USER |
Сервер Веб-интерфейс |
Имя пользователя базы данных PostgreSQL. По умолчанию, значение 'zabbix'. |
POSTGRES_PASSWORD |
Сервер Веб-интерфейс |
Пароль пользователя базы данных PostgreSQL. По умолчанию, значение 'zabbix'. |
POSTGRES_DB |
Сервер Веб-интерфейс |
Имя базы данных Zabbix. По умолчанию, значение 'zabbix'. |
PHP_TZ |
Веб-интерфейс | Часовой пояс в PHP формате. Полный список поддерживаемых часовых поясов доступен на php.net. По умолчанию,значение 'Europe/Riga'. |
ZBX_SERVER_NAME |
Веб-интерфейс | Видимое имя Zabbix инсталляции в правом верхнем углу веб-интерфейса. По умолчанию, значение 'Zabbix Docker' |
ZBX_JAVAGATEWAY_ENABLE |
Сервер Прокси |
Включает обмен данными с Zabbix Java gateway для сбора проверок относящихся к Java. По умолчанию, значение "false" |
ZBX_ENABLE_SNMP_TRAPS |
Сервер Прокси |
Включение функции SNMP трапов. Переменной требуется экземпляр zabbix-snmptraps и разделяемый с Zabbix сервером или Zabbix прокси том /var/lib/zabbix/snmptraps. |
Образы позволяют использовать некоторые точки монтирования. Данные точки монтирования имеют отличия и зависят от типа Zabbix компонента:
Том | Описание |
---|---|
Zabbix агент | |
/etc/zabbix/zabbix_agentd.d | Том позволяет включать *.conf файлы и расширять Zabbix агент, используя функционал UserParameter |
/var/lib/zabbix/modules | Том позволяет подгружать дополнительные модули и расширять Zabbix агент используя функционал загружаемых модулей |
/var/lib/zabbix/enc | Том используется для хранения файлов, связанных с TLS. Имена данных файлов указываются при помощи переменных окружения ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE и ZBX_TLSPSKFILE |
Zabbix сервер | |
/usr/lib/zabbix/alertscripts | Том используется для пользовательских скриптов оповещения. Яляется параметром AlertScriptsPath в zabbix_server.conf |
/usr/lib/zabbix/externalscripts | Том используется для внешних проверок. Является параметром ExternalScripts в zabbix_server.conf |
/var/lib/zabbix/modules | Том позволяет подгружать дополнительные модули и расширять Zabbix сервер используя функционал загружаемых модулей |
/var/lib/zabbix/enc | Том используется для хранения файлов, связанных с TLS. Имена данных файлов указываются при помощи переменных окружения ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE и ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | Том используется для размещения файлов клиентских SSL сертификатов для аутентификации клиентов. Является параметром SSLCertLocation в zabbix_server.conf |
/var/lib/zabbix/ssl/keys | Том используется для размещения файлов закрытых SSL ключей (private keys) для аутентификации клиентов. Является параметром SSLKeyLocation в zabbix_server.conf |
/var/lib/zabbix/ssl/ssl_ca | Том используется для размещения файлов центра сертификации (CA) для верификации SSL сертификатов сервера. Яляется параметром SSLCALocation в zabbix_server.conf |
/var/lib/zabbix/snmptraps | Том используется для размещения snmptraps.log файла. Этот том может быть использован совместно с контейнером zabbix-snmptraps и унаследован, используя Docker опцию volumes_from при создании нового экземпляра Zabbix сервера. Функцию обработки SNMP трапов можно включить, используя совместный том и переключив переменную окружения ZBX_ENABLE_SNMP_TRAPS в 'true' |
/var/lib/zabbix/mibs | Том позволяет добавлять новые MIB файлы. Не поддерживает подпапки, все MIB файлы должны быть помещены в /var/lib/zabbix/mibs |
Zabbix прокси | |
/usr/lib/zabbix/externalscripts | Том используется для внешних проверок. Является параметром ExternalScripts в zabbix_proxy.conf |
/var/lib/zabbix/db_data/ | Том позволяет хранить файлы базы данных на внешних устройствах. Поддерживается только для Zabbix proxy с базой SQLite3 |
/var/lib/zabbix/modules | Том позволяет подгружать дополнительные модули и расширять Zabbix прокси, используя функционал загружаемых модулей |
/var/lib/zabbix/enc | Том используется для хранения файлов, связанных с TLS. Имена данных файлов указываются при помощи переменных окружения ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE и ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | Том используется для размещения файлов клиентских SSL сертификатов для аутентификации клиентов. Является параметром SSLCertLocation в zabbix_proxy.conf |
/var/lib/zabbix/ssl/keys | Том используется для размещения файлов закрытых SSL ключей (private keys) для аутентификации клиентов. Является параметром SSLKeyLocation в zabbix_proxy.conf |
/var/lib/zabbix/ssl/ssl_ca | Том используется для размещения файлов центра сертификации (CA) для верификации SSL сертификатов сервера. Является параметром SSLCALocation в zabbix_proxy.conf |
/var/lib/zabbix/snmptraps | Том используется для размещения snmptraps.log файла. Этот том может быть использован совместно с контейнером zabbix-snmptraps и унаследован, используя Docker опцию volumes_from при создании нового экземпляра Zabbix прокси. Функцию обработки SNMP трапов можно включить, используя совместный том и переключив переменную окружения ZBX_ENABLE_SNMP_TRAPS в 'true' |
/var/lib/zabbix/mibs | Том позволяет добавлять новые MIB файлы. Не поддерживает подпапки, все MIB файлы должны быть помещены в /var/lib/zabbix/mibs |
веб-интерфейс Zabbix на основе веб-сервера Apache2 | |
/etc/ssl/apache2 | Том позволяет активировать HTTPS для веб-интерфейса Zabbix. Том должен содержать два файла ssl.crt и ssl.key , подготовленные для SSL соединений Apache2 |
веб-интерфейс Zabbix на основе веб-сервера Nginx | |
/etc/ssl/nginx | Том позволяет активировать HTTPS для веб-интерфейса Zabbix. Том должен содержать три файла ssl.crt , ssl.key и dhparam.pem , подготовленные для SSL соединений Nginx |
Zabbix snmptraps | |
/var/lib/zabbix/snmptraps | Том содержит имя файл журнала snmptraps.log с полученными SNMP трапами |
/var/lib/zabbix/mibs | Том позволяет добавлять новые MIB файлы. Не поддерживает подпапки, все MIB файлы должны быть помещены в /var/lib/zabbix/mibs |
Для получения дополнительной информации обратитесь к официальным репозиториям Zabbix в Docker Hub.
Пример 1
В этом примере продемонстрировано, как запустить Zabbix сервер с поддержкой базы данных MySQL, веб-интерфейсом Zabbix на основе веб-сервера Nginx и Zabbix Java gateway.
1. Создайте выделенную сеть для контейнеров с компонентами Zabbix:
2. Запустите пустой экземпляр MySQL сервера
# 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
3. Запустите экземпляр Zabbix Java gateway
# docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-6.0-latest
4. Запустите экземпляр Zabbix сервера и слинкуйте этот экземпляр с уже созданным экземпляром MySQL сервера
# 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
Экземпляр Zabbix сервера открывает порт 10051/TCP (Zabbix траппер) на узле.
5. Запустите экземпляр веб-интерфейса Zabbix и слинкуйте этот экземпляр с уже созданными экземплярами MySQL сервера и Zabbix сервера
# 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
Экземпляр веб-интерфейса Zabbix открывает 80/TCP порт (HTTP) на узле.
Пример 2
В этом примере продемонстрировано, как запустить Zabbix сервер с поддержкой базы данных PostgreSQL, веб-интерфейсом Zabbix на основе веб-сервера Nginx и с функцией приёма SNMP трапов.
1. Создайте выделенную сеть для контейнеров с компонентами Zabbix:
2. Запустите пустой экземпляр PostgreSQL сервера
# 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. Запустите экземпляр Zabbix snmptraps
# 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-6.0-latest
Экземпляр Zabbix snmptrap открывает порт 162/UDP (SNMP трапы) на узле.
4. Запустите экземпляр Zabbix сервера и слинкуйте этот экземпляр с уже созданным экземпляром PostgreSQL сервера
# 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
Экземпляр Zabbix сервера открывает порт 10051/TCP (Zabbix траппер) к узлу.
5. Запустите экземпляр веб-интерфейса Zabbix и слинкуйте этот экземпляр с уже созданным экземплярами PostgreSQL сервера и Zabbix сервера
# 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
Экземпляр веб-интерфейса Zabbix открывает порт 443/TCP (HTTPS) на узле.
Папка /etc/ssl/nginx должна содержать сертификат с требуемым именем.
Пример 3
В этом примере продемонстрировано, как запустить Zabbix сервер с поддержкой базы данных MySQL, веб-интерфейсом Zabbix на основе веб-сервера Nginx и Zabbix Java gateway на Red Hat 8, используя podman
.
1. Создайте новую капсулу (pod) с именем zabbix
и откройте порты (веб-интерфейс, траппер Zabbix сервера):
2. (опционально) Запустите контейнер Zabbix агента в капсуле (pod) zabbix
:
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-60:latest
3. Создайте директорию ./mysql/
на узле и запустите Oracle MySQL сервер версии 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
3. Запустите контейнер Zabbix сервера:
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
4. Запустите контейнер Zabbix Java Gateway:
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-60
5. Запустите контейнер веб-интерфейса Zabbix:
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
Капсула (pod) zabbix
открывает порт 80/TCP (HTTP) на узле через порт 8080/TCP контейнера zabbix-web-mysql
.
Zabbix также поставляет файлы конфигурации для определения и запуска нескольких контейнеров с Zabbix компонентами в Docker. Данные файлы конфигурации доступны в официальном Zabbix docker репозитории на github.com: https://github.com/zabbix/zabbix-docker. Эти файлы конфигурации добавлены в качестве примера и перегружены. Например, в них содержится прокси с поддержкой MySQL и SQLite3.
Имеется несколько различных версий файлов конфигурации:
Имя файла | Описание |
---|---|
docker-compose_v3_alpine_mysql_latest.yaml |
Файл конфигурации запускает последнюю версию компонентов Zabbix 6.0 на Alpine Linux с поддержкой базы данных MySQL. |
docker-compose_v3_alpine_mysql_local.yaml |
Файл конфигурации собирает локально последнюю версию компонентов Zabbix 6.0 и запускает компоненты Zabbix на Alpine Linux с поддержкой базы данных MySQL. |
docker-compose_v3_alpine_pgsql_latest.yaml |
Файл конфигурации запускает последнюю версию компонентов Zabbix 6.0 на Alpine Linux с поддержкой базы данных PostgreSQL. |
docker-compose_v3_alpine_pgsql_local.yaml |
Файл конфигурации собирает локально последнюю версию компонентов Zabbix 6.0 и запускает компоненты Zabbix на Alpine Linux с поддержкой базы данных PostgreSQL. |
docker-compose_v3_centos_mysql_latest.yaml |
Файл конфигурации запускает последнюю версию компонентов Zabbix 6.0 на CentOS 8 с поддержкой базы данных MySQL. |
docker-compose_v3_centos_mysql_local.yaml |
Файл конфигурации собирает локально последнюю версию компонентов Zabbix 6.0 и запускает компоненты Zabbix на CentOS 8 с поддержкой базы данных MySQL. |
docker-compose_v3_centos_pgsql_latest.yaml |
Файл конфигурации запускает последнюю версию компонентов Zabbix 6.0 на CentOS 8 с поддержкой базы данных PostgreSQL. |
docker-compose_v3_centos_pgsql_local.yaml |
Файл конфигурации собирает локально последнюю версию компонентов Zabbix 6.0 и запускает компоненты Zabbix на CentOS 8 с поддержкой базы данных PostgreSQL. |
docker-compose_v3_ubuntu_mysql_latest.yaml |
Файл конфигурации запускает последнюю версию компонентов Zabbix 6.0 на Ubuntu 20.04 с поддержкой базы данных MySQL. |
docker-compose_v3_ubuntu_mysql_local.yaml |
Файл конфигурации собирает локально последнюю версию компонентов Zabbix 6.0 и запускает компоненты Zabbix на Ubuntu 20.04 с поддержкой базы данных MySQL. |
docker-compose_v3_ubuntu_pgsql_latest.yaml |
Файл конфигурации запускает последнюю версию компонентов Zabbix 6.0 на Ubuntu 20.04 с поддержкой базы данных PostgreSQL. |
docker-compose_v3_ubuntu_pgsql_local.yaml |
Файл конфигурации собирает локально последнюю версию компонентов Zabbix 6.0 и запускает компоненты Zabbix на Ubuntu 20.04 с поддержкой базы данных PostgreSQL. |
Доступные Docker файлы конфигурации поддерживают версию 3 Docker Compose.
Файлы конфигурации Compose сконфигурированы для поддержки локального хранилища на узле. Docker Compose создаст директорию zbx_env
в директории с файлом конфигурации compose, когда вы запустите компоненты Zabbix с его помощью. Директория будет содержать структуру, описанную в разделе Тома выше и директорию для хранения базы данных.
Также в файлах конфигурации compose имеются тома с доступом только на чтение для файлов /etc/localtime
и /etc/timezone
.
В той же директории с файлами конфигурации compose на github.com вы можете найти файлы с переменными окружения по умолчанию для каждого компонента из файлов конфигурации compose. Эти файлы окружения называются приблизительно так: .env_<тип компоненты>
.
Ниже указаны команды для Docker Compose V2. Если вы используете Docker Compose V1, замените docker compose -f
строкой docker-compose -f
Пример 1
Эта команда загрузит последние образы Zabbix 6.0 для каждого из компонентов Zabbix и запустит их в detach режиме.
Не забудьте загрузить .env_<тип компонента>
файлы с официального репозитория Zabbix на github.com с файлами конфигурации.
Пример 2
Эта команда загрузит образ на основе Ubuntu 20.04 (focal), затем локально соберёт компоненты Zabbix 6.0 и запустит их в detach режиме.