Чтобы ускорить процедуру развёртывания и обновления, 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'.
В качестве альтернативы, вы можете выставить эту переменную в конфигурационном файле.
Компоненты Zabbix поставляются на основе образов Ubuntu, Alpine Linux и CentOS:
Все образы сконфигурированы на пересоздание в случае, если базовые образы были обновлены.
Каждый может следить на изменениями в Docker файлах, используя официальный репозиторий Zabbix на github.com. Вы можете создавать ответвления от проекта или свои собственные образы на основе официальных Docker файлов.
Все компоненты Zabbix доступны в следующих Docker репозиториях:
Дополнительно имеется поддержка SNMP трапов. Поставляется как дополнительный репозиторий (zabbix/zabbix-snmptraps) только на основе Ubuntu Trusty. Его можно привязать к Zabbix серверу и Zabbix прокси.
Каждый репозиторий компонентов Zabbix содержит следующие тэги:
latest
— последняя стабильная версия компонента Zabbix на основе образа Alpine Linuxalpine-latest
— последняя стабильная версия компонента Zabbix на основе образа Alpine Linuxubuntu-latest
— последняя стабильная версия компонента Zabbix на основе образа Ubuntualpine-6.0-latest
— последняя минорная версия компонента Zabbix 6.0 на основе образа Alpine Linuxubuntu-6.0-latest
— последняя минорная версия компонента Zabbix 6.0 на основе образа Ubuntualpine-6.0.*
— различные минорные версии компонента Zabbix 6.0 на основе образа Alpine Linux, где *
минорная версия компонента Zabbixubuntu-6.0.*
— различные минорные версии компонента Zabbix 6.0 на основе образа Ubuntu, где *
минорная версия компонента ZabbixПосле загрузки образов запустите контейнеры, выполнив команду docker run
с дополнительными аргументами для указания необходимых переменных окружения и/или точек монтирования. Ниже представлены некоторые примеры конфигурации.
Zabbix не должен запускаться в контейнерах как PID1/процесс init.
Все компоненты 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
4. Запустите контейнер 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
5. Запустите контейнер Zabbix Java Gateway:
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-60
6. Запустите контейнер веб-интерфейса 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 режиме.